2015-04-04 04:20:19 +00:00
|
|
|
/-
|
|
|
|
Copyright (c) 2015 Floris van Doorn. All rights reserved.
|
|
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
Authors: Floris van Doorn
|
|
|
|
|
2015-04-07 01:01:08 +00:00
|
|
|
Declaration of suspension
|
2015-04-04 04:20:19 +00:00
|
|
|
-/
|
|
|
|
|
|
|
|
import .pushout
|
|
|
|
|
2015-04-27 21:34:55 +00:00
|
|
|
open pushout unit eq equiv equiv.ops
|
2015-04-04 04:20:19 +00:00
|
|
|
|
2015-04-11 00:33:33 +00:00
|
|
|
definition suspension (A : Type) : Type := pushout (λ(a : A), star.{0}) (λ(a : A), star.{0})
|
2015-04-04 04:20:19 +00:00
|
|
|
|
|
|
|
namespace suspension
|
2015-04-19 21:56:24 +00:00
|
|
|
variable {A : Type}
|
2015-04-04 04:20:19 +00:00
|
|
|
|
|
|
|
definition north (A : Type) : suspension A :=
|
|
|
|
inl _ _ star
|
|
|
|
|
|
|
|
definition south (A : Type) : suspension A :=
|
|
|
|
inr _ _ star
|
|
|
|
|
2015-04-19 21:56:24 +00:00
|
|
|
definition merid (a : A) : north A = south A :=
|
2015-04-04 04:20:19 +00:00
|
|
|
glue _ _ a
|
|
|
|
|
2015-04-19 21:56:24 +00:00
|
|
|
protected definition rec {P : suspension A → Type} (PN : P !north) (PS : P !south)
|
2015-05-22 08:35:38 +00:00
|
|
|
(Pm : Π(a : A), PN =[merid a] PS) (x : suspension A) : P x :=
|
2015-04-04 04:20:19 +00:00
|
|
|
begin
|
2015-04-05 05:46:44 +00:00
|
|
|
fapply (pushout.rec_on _ _ x),
|
2015-04-04 04:20:19 +00:00
|
|
|
{ intro u, cases u, exact PN},
|
|
|
|
{ intro u, cases u, exact PS},
|
2015-04-07 01:01:08 +00:00
|
|
|
{ exact Pm},
|
2015-04-04 04:20:19 +00:00
|
|
|
end
|
|
|
|
|
2015-04-19 21:56:24 +00:00
|
|
|
protected definition rec_on [reducible] {P : suspension A → Type} (y : suspension A)
|
2015-05-22 08:35:38 +00:00
|
|
|
(PN : P !north) (PS : P !south) (Pm : Π(a : A), PN =[merid a] PS) : P y :=
|
2015-05-19 05:35:18 +00:00
|
|
|
suspension.rec PN PS Pm y
|
2015-04-04 04:20:19 +00:00
|
|
|
|
2015-04-27 21:34:55 +00:00
|
|
|
theorem rec_merid {P : suspension A → Type} (PN : P !north) (PS : P !south)
|
2015-05-22 08:35:38 +00:00
|
|
|
(Pm : Π(a : A), PN =[merid a] PS) (a : A)
|
|
|
|
: apdo (suspension.rec PN PS Pm) (merid a) = Pm a :=
|
2015-04-28 01:30:20 +00:00
|
|
|
!rec_glue
|
2015-04-05 05:46:44 +00:00
|
|
|
|
2015-04-19 21:56:24 +00:00
|
|
|
protected definition elim {P : Type} (PN : P) (PS : P) (Pm : A → PN = PS)
|
2015-04-07 01:01:08 +00:00
|
|
|
(x : suspension A) : P :=
|
2015-05-22 08:35:38 +00:00
|
|
|
suspension.rec PN PS (λa, pathover_of_eq (Pm a)) x
|
2015-04-05 05:46:44 +00:00
|
|
|
|
2015-04-19 21:56:24 +00:00
|
|
|
protected definition elim_on [reducible] {P : Type} (x : suspension A)
|
2015-04-07 01:01:08 +00:00
|
|
|
(PN : P) (PS : P) (Pm : A → PN = PS) : P :=
|
2015-05-19 05:35:18 +00:00
|
|
|
suspension.elim PN PS Pm x
|
2015-04-05 05:46:44 +00:00
|
|
|
|
2015-04-27 21:34:55 +00:00
|
|
|
theorem elim_merid {P : Type} (PN : P) (PS : P) (Pm : A → PN = PS) (a : A)
|
2015-05-19 05:35:18 +00:00
|
|
|
: ap (suspension.elim PN PS Pm) (merid a) = Pm a :=
|
2015-04-27 21:34:55 +00:00
|
|
|
begin
|
2015-05-22 08:35:38 +00:00
|
|
|
apply eq_of_fn_eq_fn_inv !(pathover_constant (merid a)),
|
|
|
|
rewrite [▸*,-apdo_eq_pathover_of_eq_ap,↑suspension.elim,rec_merid],
|
2015-04-27 21:34:55 +00:00
|
|
|
end
|
2015-04-05 05:46:44 +00:00
|
|
|
|
2015-04-19 21:56:24 +00:00
|
|
|
protected definition elim_type (PN : Type) (PS : Type) (Pm : A → PN ≃ PS)
|
|
|
|
(x : suspension A) : Type :=
|
2015-05-19 05:35:18 +00:00
|
|
|
suspension.elim PN PS (λa, ua (Pm a)) x
|
2015-04-19 21:56:24 +00:00
|
|
|
|
|
|
|
protected definition elim_type_on [reducible] (x : suspension A)
|
|
|
|
(PN : Type) (PS : Type) (Pm : A → PN ≃ PS) : Type :=
|
2015-05-19 05:35:18 +00:00
|
|
|
suspension.elim_type PN PS Pm x
|
2015-04-19 21:56:24 +00:00
|
|
|
|
2015-04-27 21:34:55 +00:00
|
|
|
theorem elim_type_merid (PN : Type) (PS : Type) (Pm : A → PN ≃ PS)
|
2015-05-19 05:35:18 +00:00
|
|
|
(x : suspension A) (a : A) : transport (suspension.elim_type PN PS Pm) (merid a) = Pm a :=
|
|
|
|
by rewrite [tr_eq_cast_ap_fn,↑suspension.elim_type,elim_merid];apply cast_ua_fn
|
2015-04-19 21:56:24 +00:00
|
|
|
|
2015-04-07 01:01:08 +00:00
|
|
|
end suspension
|
2015-05-07 20:35:14 +00:00
|
|
|
|
|
|
|
attribute suspension.north suspension.south [constructor]
|
2015-05-21 03:37:43 +00:00
|
|
|
attribute suspension.elim suspension.rec [unfold-c 6] [recursor 6]
|
2015-05-07 20:35:14 +00:00
|
|
|
attribute suspension.elim_type [unfold-c 5]
|
|
|
|
attribute suspension.rec_on suspension.elim_on [unfold-c 3]
|
|
|
|
attribute suspension.elim_type_on [unfold-c 2]
|