2014-01-05 20:05:08 +00:00
|
|
|
variables A B C : (Type U)
|
|
|
|
variable P : A -> Bool
|
|
|
|
variable F1 : A -> B -> C
|
|
|
|
variable F2 : A -> B -> C
|
2014-01-16 23:07:51 +00:00
|
|
|
variable H : forall (a : A) (b : B), (F1 a b) = (F2 a b)
|
2014-01-05 20:05:08 +00:00
|
|
|
variable a : A
|
2014-01-06 03:10:21 +00:00
|
|
|
check eta (F2 a)
|
2014-01-09 01:25:14 +00:00
|
|
|
check funext (fun a : A,
|
2014-01-06 03:10:21 +00:00
|
|
|
(trans (symm (eta (F1 a)))
|
2014-01-09 01:25:14 +00:00
|
|
|
(trans (funext (fun (b : B), H a b))
|
2014-01-06 03:10:21 +00:00
|
|
|
(eta (F2 a)))))
|
2013-12-16 06:00:26 +00:00
|
|
|
|
2014-01-09 01:25:14 +00:00
|
|
|
check funext (fun a, (funext (fun b, H a b)))
|
2013-12-16 06:00:26 +00:00
|
|
|
|
2014-01-09 01:25:14 +00:00
|
|
|
theorem T1 : F1 = F2 := funext (fun a, (funext (fun b, H a b)))
|
|
|
|
theorem T2 : (fun (x1 : A) (x2 : B), F1 x1 x2) = F2 := funext (fun a, (funext (fun b, H a b)))
|
|
|
|
theorem T3 : F1 = (fun (x1 : A) (x2 : B), F2 x1 x2) := funext (fun a, (funext (fun b, H a b)))
|
|
|
|
theorem T4 : (fun (x1 : A) (x2 : B), F1 x1 x2) = (fun (x1 : A) (x2 : B), F2 x1 x2) := funext (fun a, (funext (fun b, H a b)))
|
2014-01-05 20:05:08 +00:00
|
|
|
print environment 4
|
2014-01-09 16:33:52 +00:00
|
|
|
set_option pp::implicit true
|
2014-01-05 20:05:08 +00:00
|
|
|
print environment 4
|