test(tests/lean): add Jeremy's proof to test suite
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
b6985bd713
commit
72c607846a
2 changed files with 33 additions and 0 deletions
25
tests/lean/j1.lean
Normal file
25
tests/lean/j1.lean
Normal file
|
@ -0,0 +1,25 @@
|
|||
import tactic
|
||||
import macros
|
||||
|
||||
definition bracket (A : Type) : Bool :=
|
||||
∀ p : Bool, (A → p) → p
|
||||
|
||||
rewrite_set basic
|
||||
add_rewrite imp_truel imp_truer imp_id eq_id : basic
|
||||
set_option simp_tac::assumptions false
|
||||
|
||||
theorem bracket_eq (x : Bool) : bracket x = x
|
||||
:= boolext
|
||||
(assume H : ∀ p : Bool, (x → p) → p,
|
||||
(have ((x → x) → x) = x : by simp basic) ◂ H x)
|
||||
(assume H : x,
|
||||
take p,
|
||||
assume Hxp : x → p,
|
||||
Hxp H)
|
||||
|
||||
add_rewrite bracket_eq eq_id
|
||||
|
||||
theorem coerce (a b : Bool) (H : @eq Type a b) : @eq Bool a b
|
||||
:= calc a = bracket a : by simp
|
||||
... = bracket b : @subst Type a b (λ x : Type, bracket a = bracket x) (refl (bracket a)) H
|
||||
... = b : by simp
|
8
tests/lean/j1.lean.expected.out
Normal file
8
tests/lean/j1.lean.expected.out
Normal file
|
@ -0,0 +1,8 @@
|
|||
Set: pp::colors
|
||||
Set: pp::unicode
|
||||
Imported 'tactic'
|
||||
Imported 'macros'
|
||||
Defined: bracket
|
||||
Set: simp_tac::assumptions
|
||||
Proved: bracket_eq
|
||||
Proved: coerce
|
Loading…
Reference in a new issue