alternative version of pushout flattening
This commit is contained in:
parent
f51dac9045
commit
7a5bb0c2fe
1 changed files with 36 additions and 0 deletions
|
@ -886,3 +886,39 @@ namespace pushout
|
||||||
|
|
||||||
|
|
||||||
end pushout
|
end pushout
|
||||||
|
|
||||||
|
namespace pushout
|
||||||
|
/- alternative version of the flattening lemma -/
|
||||||
|
-- should be moved to main library
|
||||||
|
section
|
||||||
|
open sigma sigma.ops
|
||||||
|
|
||||||
|
universe variables u₁ u₂ u₃ u₄
|
||||||
|
parameters {TL : Type.{u₁}} {BL : Type.{u₂}} {TR : Type.{u₃}}
|
||||||
|
(f : TL → BL) (g : TL → TR) (P : pushout f g → Type.{u₄})
|
||||||
|
|
||||||
|
local abbreviation F : sigma (λ x, P (inl (f x))) → sigma (P ∘ inl) :=
|
||||||
|
λ z, ⟨ f z.1 , z.2 ⟩
|
||||||
|
|
||||||
|
local abbreviation G : sigma (λ x, P (inl (f x))) → sigma (P ∘ inr) :=
|
||||||
|
λ z, ⟨ g z.1 , transport P (glue z.1) z.2 ⟩
|
||||||
|
|
||||||
|
local abbreviation Pglue : Π x, P (inl (f x)) ≃ P (inr (g x)) :=
|
||||||
|
λ x, equiv.mk (transport P (glue x)) (is_equiv_tr P (glue x))
|
||||||
|
|
||||||
|
protected definition flattening' : sigma P ≃ pushout F G :=
|
||||||
|
begin
|
||||||
|
assert H : Π w, P w ≃ pushout.elim_type (P ∘ inl) (P ∘ inr) Pglue w,
|
||||||
|
{ intro w, induction w with x x x,
|
||||||
|
{ exact erfl }, { exact erfl },
|
||||||
|
{ apply equiv_pathover, intro pfx pgx q,
|
||||||
|
apply pathover_of_tr_eq,
|
||||||
|
apply eq.trans (ap10 (elim_type_glue.{u₁ u₂ u₃ u₄}
|
||||||
|
(P ∘ inl) (P ∘ inr) Pglue x) pfx), -- why do we need explicit universes here?
|
||||||
|
exact tr_eq_of_pathover q } },
|
||||||
|
apply equiv.trans (sigma_equiv_sigma_right H),
|
||||||
|
exact pushout.flattening f g (P ∘ inl) (P ∘ inr) Pglue
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end pushout
|
||||||
|
|
Loading…
Add table
Reference in a new issue