2015-07-12 17:17:22 +00:00
|
|
|
import algebra.e_closure
|
|
|
|
|
|
|
|
open eq
|
|
|
|
|
|
|
|
namespace relation
|
|
|
|
section
|
|
|
|
parameters {A : Type}
|
|
|
|
(R : A → A → Type)
|
|
|
|
|
|
|
|
local abbreviation T := e_closure R
|
|
|
|
|
|
|
|
variables ⦃a a' : A⦄ {s : R a a'} {r : T a a}
|
|
|
|
parameter {R}
|
|
|
|
|
|
|
|
theorem ap_ap_e_closure_elim_h₁ {B C D : Type} {f : A → B}
|
|
|
|
{g : B → C} (h : C → D)
|
|
|
|
(e : Π⦃a a' : A⦄, R a a' → f a = f a')
|
|
|
|
{e' : Π⦃a a' : A⦄, R a a' → g (f a) = g (f a')}
|
|
|
|
(p : Π⦃a a' : A⦄ (s : R a a'), ap g (e s) = e' s) (t : T a a')
|
|
|
|
: square (ap (ap h) (ap_e_closure_elim_h e p t))
|
|
|
|
(ap_e_closure_elim_h e (λa a' s, ap_compose h g (e s)) t)
|
|
|
|
(ap_compose h g (e_closure.elim e t))⁻¹
|
|
|
|
(ap_e_closure_elim_h e' (λa a' s, (ap (ap h) (p s))⁻¹) t) :=
|
|
|
|
begin
|
|
|
|
induction t,
|
|
|
|
apply sorry,
|
|
|
|
apply sorry,
|
|
|
|
{
|
2015-07-29 12:17:16 +00:00
|
|
|
rewrite [▸*, ap_con (ap h)],
|
2015-07-12 17:17:22 +00:00
|
|
|
refine (transpose !ap_compose_inv)⁻¹ᵛ ⬝h _,
|
|
|
|
rewrite [con_inv,inv_inv,-inv2_inv],
|
|
|
|
exact !ap_inv2 ⬝v square_inv2 v_0
|
|
|
|
},
|
|
|
|
apply sorry
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end relation
|