2014-01-05 20:05:08 +00:00
|
|
|
variable f {A : Type} (a b : A) : A
|
|
|
|
variable N : Type
|
|
|
|
variable n1 : N
|
|
|
|
variable n2 : N
|
2014-01-09 16:33:52 +00:00
|
|
|
set_option lean::pp::implicit true
|
2014-01-05 19:03:35 +00:00
|
|
|
print f n1 n2
|
|
|
|
print f (fun x : N -> N, x) (fun y : _, y)
|
2014-01-05 20:05:08 +00:00
|
|
|
variable EqNice {A : Type} (lhs rhs : A) : Bool
|
|
|
|
infix 50 === : EqNice
|
2014-01-05 19:03:35 +00:00
|
|
|
print n1 === n2
|
2014-01-05 20:05:08 +00:00
|
|
|
check f n1 n2
|
2014-01-06 03:10:21 +00:00
|
|
|
check @congr
|
2014-01-05 19:03:35 +00:00
|
|
|
print f n1 n2
|
2014-01-05 20:05:08 +00:00
|
|
|
variable a : N
|
|
|
|
variable b : N
|
|
|
|
variable c : N
|
|
|
|
variable g : N -> N
|
|
|
|
axiom H1 : a = b && b = c
|
|
|
|
theorem Pr : (g a) = (g c) :=
|
2014-01-09 16:33:52 +00:00
|
|
|
congr (refl g) (trans (and_eliml H1) (and_elimr H1))
|
2014-01-05 20:05:08 +00:00
|
|
|
print environment 2
|