f8d472c9f1
After this commit it behaves like 'unfold f'. That is, it will unfold f even if it fails to fold recursive applications. Now, only 'esimp[f]' will not unfold f-applications when it cannot fold the recursive applications. This commit also closes #692. It is part of a series of commits that addresses this issue. closes #692
37 lines
1.1 KiB
Text
37 lines
1.1 KiB
Text
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,
|
|
{
|
|
rewrite [↑e_closure.elim, ↑ap_e_closure_elim_h, ap_con (ap h)],
|
|
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
|