2013-09-07 00:58:45 +00:00
|
|
|
Set: pp::colors
|
|
|
|
Set: pp::unicode
|
|
|
|
Assumed: C
|
|
|
|
Assumed: D
|
|
|
|
Assumed: R
|
|
|
|
Proved: R2
|
|
|
|
Set: lean::pp::implicit
|
2014-01-05 20:05:08 +00:00
|
|
|
import "kernel"
|
|
|
|
import "Nat"
|
|
|
|
variable C {A B : Type} (H : @eq Type A B) (a : A) : B
|
2014-01-08 08:38:39 +00:00
|
|
|
variable D {A A' : Type} {B : A → Type} {B' : A' → Type} (H : @eq Type (∀ x : A, B x) (∀ x : A', B' x)) :
|
2013-12-22 01:02:16 +00:00
|
|
|
@eq Type A A'
|
2014-01-08 08:38:39 +00:00
|
|
|
variable R {A A' : Type}
|
|
|
|
{B : A → Type}
|
|
|
|
{B' : A' → Type}
|
|
|
|
(H : @eq Type (∀ x : A, B x) (∀ x : A', B' x))
|
|
|
|
(a : A) :
|
2013-12-22 01:02:16 +00:00
|
|
|
@eq Type (B a) (B' (@C A A' (@D A A' (λ x : A, B x) (λ x : A', B' x) H) a))
|
2014-01-05 20:05:08 +00:00
|
|
|
theorem R2 (A1 A2 B1 B2 : Type) (H : @eq Type (A1 → B1) (A2 → B2)) (a : A1) : @eq Type B1 B2 :=
|
2013-12-22 01:02:16 +00:00
|
|
|
@R A1 A2 (λ x : A1, B1) (λ x : A2, B2) H a
|