feat(hott): add symmetry of pushouts and pointed pushouts
This commit is contained in:
parent
d8d3b0c0b2
commit
aa5e188179
3 changed files with 44 additions and 1 deletions
|
|
@ -17,7 +17,7 @@ namespace pointed
|
|||
|
||||
end pointed
|
||||
|
||||
open pointed
|
||||
open pointed Pointed
|
||||
|
||||
namespace pushout
|
||||
section
|
||||
|
|
@ -39,6 +39,18 @@ namespace pushout
|
|||
definition prec {P : Pushout → Type} (Pinl : Π x, P (pinl x)) (Pinr : Π x, P (pinr x))
|
||||
(H : Π x, Pinl (f x) =[pglue x] Pinr (g x)) : (Π y, P y) :=
|
||||
pushout.rec Pinl Pinr H
|
||||
end
|
||||
|
||||
section
|
||||
variables {TL BL TR : Type*} (f : TL →* BL) (g : TL →* TR)
|
||||
|
||||
protected definition psymm : Pushout f g ≃* Pushout g f :=
|
||||
begin
|
||||
fapply pequiv.mk,
|
||||
{ fapply pmap.mk, exact !pushout.transpose,
|
||||
exact ap inr (respect_pt f)⁻¹ ⬝ !glue⁻¹ ⬝ ap inl (respect_pt g) },
|
||||
{ esimp, apply equiv.to_is_equiv !pushout.symm },
|
||||
end
|
||||
|
||||
end
|
||||
end pushout
|
||||
|
|
|
|||
|
|
@ -200,4 +200,31 @@ namespace pushout
|
|||
end
|
||||
end
|
||||
|
||||
-- Commutativity of pushouts
|
||||
section
|
||||
variables {TL BL TR : Type} (f : TL → BL) (g : TL → TR)
|
||||
|
||||
protected definition transpose [constructor] : pushout f g → pushout g f :=
|
||||
begin
|
||||
intro x, induction x, apply inr a, apply inl a, apply !glue⁻¹
|
||||
end
|
||||
|
||||
--TODO prove without krewrite?
|
||||
protected definition transpose_involutive (x : pushout f g) :
|
||||
pushout.transpose g f (pushout.transpose f g x) = x :=
|
||||
begin
|
||||
induction x, apply idp, apply idp,
|
||||
apply eq_pathover, refine _ ⬝hp !ap_id⁻¹,
|
||||
refine !(ap_compose (pushout.transpose _ _)) ⬝ph _, esimp[pushout.transpose],
|
||||
krewrite [elim_glue, ap_inv, elim_glue, inv_inv], apply hrfl
|
||||
end
|
||||
|
||||
protected definition symm : pushout f g ≃ pushout g f :=
|
||||
begin
|
||||
fapply equiv.MK, do 2 exact !pushout.transpose,
|
||||
do 2 (intro x; apply pushout.transpose_involutive),
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end pushout
|
||||
|
|
|
|||
|
|
@ -353,6 +353,10 @@ namespace pointed
|
|||
attribute pequiv.to_pmap [coercion]
|
||||
attribute pequiv.is_equiv_to_pmap [instance]
|
||||
|
||||
definition pequiv.mk' (to_pmap : A →* B) [is_equiv_to_pmap : is_equiv to_pmap] :
|
||||
pequiv A B :=
|
||||
pequiv.mk to_pmap is_equiv_to_pmap
|
||||
|
||||
definition equiv_of_pequiv [constructor] (f : A ≃* B) : A ≃ B :=
|
||||
equiv.mk f _
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue