feat(hott): rename ppi_gen to ppi

This commit is contained in:
Floris van Doorn 2017-07-20 22:04:05 +01:00
parent 9e3611fe3e
commit 27cde0aeae
3 changed files with 25 additions and 17 deletions

View file

@ -84,12 +84,20 @@ namespace pointed
end pointed end pointed
/- pointed maps -/ /- pointed maps -/
structure ppi_gen {A : Type*} (P : A → Type) (x₀ : P pt) := structure ppi {A : Type*} (P : A → Type) (x₀ : P pt) :=
(to_fun : Π a : A, P a) (to_fun : Π a : A, P a)
(resp_pt : to_fun (Point A) = x₀) (resp_pt : to_fun (Point A) = x₀)
definition ppi {A : Type*} (P : A → Type*) : Type := definition ppi_const [constructor] {A : Type*} (P : A → Type*) : ppi P pt :=
ppi_gen P pt ppi.mk (λa, pt) idp
definition pppi' [reducible] {A : Type*} (P : A → Type*) : Type :=
ppi P pt
definition pppi [constructor] [reducible] {A : Type*} (P : A → Type*) : Type* :=
pointed.MK (pppi' P) (ppi_const P)
notation `Π*` binders `, ` r:(scoped P, pppi P) := r
-- We could try to define pmap as a special case of ppi -- We could try to define pmap as a special case of ppi
-- definition pmap (A B : Type*) := @ppi A (λa, B) -- definition pmap (A B : Type*) := @ppi A (λa, B)
@ -98,24 +106,24 @@ structure pmap (A B : Type*) :=
(resp_pt : to_fun (Point A) = Point B) (resp_pt : to_fun (Point A) = Point B)
namespace pointed namespace pointed
definition ppi.mk [constructor] [reducible] {A : Type*} {P : A → Type*} (f : Πa, P a) definition pppi.mk [constructor] [reducible] {A : Type*} {P : A → Type*} (f : Πa, P a)
(p : f pt = pt) : ppi P := (p : f pt = pt) : pppi P :=
ppi_gen.mk f p ppi.mk f p
definition ppi.to_fun [unfold 3] [coercion] [reducible] {A : Type*} {P : A → Type*} (f : ppi P) definition pppi.to_fun [unfold 3] [coercion] [reducible] {A : Type*} {P : A → Type*} (f : pppi' P)
(a : A) : P a := (a : A) : P a :=
ppi_gen.to_fun f a ppi.to_fun f a
definition ppi.resp_pt [unfold 3] [reducible] {A : Type*} {P : A → Type*} (f : ppi P) : definition pppi.resp_pt [unfold 3] [reducible] {A : Type*} {P : A → Type*} (f : pppi P) :
f pt = pt := f pt = pt :=
ppi_gen.resp_pt f ppi.resp_pt f
abbreviation respect_pt [unfold 3] := @pmap.resp_pt abbreviation respect_pt [unfold 3] := @pmap.resp_pt
notation `map₊` := pmap notation `map₊` := pmap
infix ` →* `:28 := pmap infix ` →* `:28 := pmap
attribute pmap.to_fun ppi_gen.to_fun [coercion] attribute pmap.to_fun ppi.to_fun [coercion]
-- notation `Π*` binders `, ` r:(scoped P, ppi _ P) := r -- notation `Π*` binders `, ` r:(scoped P, ppi _ P) := r
-- definition pmap.mk [constructor] {A B : Type*} (f : A → B) (p : f pt = pt) : A →* B := -- definition pmxap.mk [constructor] {A B : Type*} (f : A → B) (p : f pt = pt) : A →* B :=
-- ppi.mk f p -- ppi.mk f p
-- definition pmap.to_fun [coercion] [unfold 3] {A B : Type*} (f : A →* B) : A → B := f -- definition pmap.to_fun [coercion] [unfold 3] {A B : Type*} (f : A →* B) : A → B := f
@ -123,7 +131,7 @@ end pointed open pointed
/- pointed homotopies -/ /- pointed homotopies -/
definition phomotopy {A B : Type*} (f g : A →* B) : Type := definition phomotopy {A B : Type*} (f g : A →* B) : Type :=
ppi_gen (λa, f a = g a) (respect_pt f ⬝ (respect_pt g)⁻¹) ppi (λa, f a = g a) (respect_pt f ⬝ (respect_pt g)⁻¹)
-- structure phomotopy {A B : Type*} (f g : A →* B) : Type := -- structure phomotopy {A B : Type*} (f g : A →* B) : Type :=
-- (homotopy : f ~ g) -- (homotopy : f ~ g)
@ -135,12 +143,12 @@ namespace pointed
infix ` ~* `:50 := phomotopy infix ` ~* `:50 := phomotopy
definition phomotopy.mk [reducible] [constructor] (h : f ~ g) definition phomotopy.mk [reducible] [constructor] (h : f ~ g)
(p : h pt ⬝ respect_pt g = respect_pt f) : f ~* g := (p : h pt ⬝ respect_pt g = respect_pt f) : f ~* g :=
ppi_gen.mk h (eq_con_inv_of_con_eq p) ppi.mk h (eq_con_inv_of_con_eq p)
definition to_homotopy [coercion] [unfold 5] [reducible] (p : f ~* g) : Πa, f a = g a := p definition to_homotopy [coercion] [unfold 5] [reducible] (p : f ~* g) : Πa, f a = g a := p
definition to_homotopy_pt [unfold 5] [reducible] (p : f ~* g) : definition to_homotopy_pt [unfold 5] [reducible] (p : f ~* g) :
p pt ⬝ respect_pt g = respect_pt f := p pt ⬝ respect_pt g = respect_pt f :=
con_eq_of_eq_con_inv (ppi_gen.resp_pt p) con_eq_of_eq_con_inv (ppi.resp_pt p)
end pointed end pointed

View file

@ -335,7 +335,7 @@ namespace pointed
(h : f ~* g) : P h := (h : f ~* g) : P h :=
begin begin
induction h with h p, induction h with h p,
refine transport (λp, P (ppi_gen.mk h p)) _ (H h (con_eq_of_eq_con_inv p)), refine transport (λp, P (ppi.mk h p)) _ (H h (con_eq_of_eq_con_inv p)),
apply to_left_inv !eq_con_inv_equiv_con_eq p apply to_left_inv !eq_con_inv_equiv_con_eq p
end end

View file

@ -16,7 +16,7 @@ ppi.mk (λa, pt) idp
definition my_pconst [constructor] (A B : Type*) : ppi (λ(a : A), B) := definition my_pconst [constructor] (A B : Type*) : ppi (λ(a : A), B) :=
!my_ppi_const !my_ppi_const
example {A : Type*} (P : A → Type*) (a : A) : ppi_gen.to_fun (my_ppi_const P) a = pt := example {A : Type*} (P : A → Type*) (a : A) : ppi.to_fun (my_ppi_const P) a = pt :=
begin esimp, end begin esimp, end
example {A B : Type*} (a : A) : my_pconst A B a = pt := example {A B : Type*} (a : A) : my_pconst A B a = pt :=