lean2/tests/lean/j1.lean
Leonardo de Moura ba9a8f9d98 feat(frontends/lean): add 'show' expression syntax sugar
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-02-06 07:50:22 -08:00

24 lines
694 B
Text

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
theorem bracket_eq (x : Bool) : bracket x = x
:= boolext
(assume H : ∀ p : Bool, (x → p) → p,
(show ((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