Built with Alectryon. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
Require Import Basics.Overture Basics.Tactics Basics.PathGroupoids.Require Import Basics.Overture Basics.Tactics Basics.PathGroupoids.LocalOpen Scope path_scope.(** * Theorems about the 2-sphere [S^2]. *)(* ** Definition of the 2-sphere. *)ModuleExport TwoSphere.Private InductiveTwoSphere : Type0 :=
| base : TwoSphere.Axiomsurf : idpath base = idpath base.DefinitionTwoSphere_ind (P : TwoSphere -> Type)
(b : P base) (s : idpath b = transport2 P surf b)
: forall (x : TwoSphere), P x
:= funx => match x with base => fun_ => b end s.AxiomTwoSphere_ind_beta_surf : forall (P : TwoSphere -> Type)
(b : P base) (s : idpath b = transport2 P surf b),
apD02 (TwoSphere_ind P b s) surf = s @ (concat_p1 _)^.EndTwoSphere.(* ** The non-dependent eliminator *)DefinitionTwoSphere_rec (P : Type) (b : P) (s : idpath b = idpath b)
: TwoSphere -> P
:= TwoSphere_ind (fun_ => P) b (s @ (transport2_const surf b) @ (concat_p1 _)).
P: Type b: P s: 1 = 1
ap02 (TwoSphere_rec P b s) surf = s
P: Type b: P s: 1 = 1
ap02 (TwoSphere_rec P b s) surf = s
P: Type b: P s: 1 = 1
transport2_const surf b @@ ap02 (TwoSphere_rec P b s) surf =
transport2_const surf b @@ s
P: Type b: P s: 1 = 1
apD_const (TwoSphere_rec P b s) 1 @
(transport2_const surf b @@ ap02 (TwoSphere_rec P b s) surf) =
apD_const (TwoSphere_rec P b s) 1 @ (transport2_const surf b @@ s)
P: Type b: P s: 1 = 1
(apD_const (TwoSphere_rec P b s) 1 @
(transport2_const surf b @@ ap02 (TwoSphere_rec P b s) surf)) @
(concat_p_pp (transport2 (fun_ : TwoSphere => P) surf b)
(transport_const 1 b) (ap (TwoSphere_rec P b s) 1))^ =
(apD_const (TwoSphere_rec P b s) 1 @ (transport2_const surf b @@ s)) @
(concat_p_pp (transport2 (fun_ : TwoSphere => P) surf b)
(transport_const 1 b) (ap (TwoSphere_rec P b s) 1))^
P: Type b: P s: 1 = 1
((apD_const (TwoSphere_rec P b s) 1 @
(transport2_const surf b @@ ap02 (TwoSphere_rec P b s) surf)) @
(concat_p_pp (transport2 (fun_ : TwoSphere => P) surf b)
(transport_const 1 b) (ap (TwoSphere_rec P b s) 1))^) @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b)
(apD_const (fun_ : TwoSphere => b) 1)^ =
((apD_const (TwoSphere_rec P b s) 1 @ (transport2_const surf b @@ s)) @
(concat_p_pp (transport2 (fun_ : TwoSphere => P) surf b)
(transport_const 1 b) (ap (TwoSphere_rec P b s) 1))^) @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b)
(apD_const (fun_ : TwoSphere => b) 1)^
P: Type b: P s: 1 = 1
apD02 (TwoSphere_rec P b s) surf =
((apD_const (TwoSphere_rec P b s) 1 @ (transport2_const surf b @@ s)) @
(concat_p_pp (transport2 (fun_ : TwoSphere => P) surf b)
(transport_const 1 b) (ap (TwoSphere_rec P b s) 1))^) @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b)
(apD_const (fun_ : TwoSphere => b) 1)^
P: Type b: P s: 1 = 1
((s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) @
(concat_p1 (transport2 (fun_ : TwoSphere => P) surf b))^ =
((apD_const (TwoSphere_rec P b s) 1 @ (transport2_const surf b @@ s)) @
(concat_p_pp (transport2 (fun_ : TwoSphere => P) surf b)
(transport_const 1 b) (ap (TwoSphere_rec P b s) 1))^) @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b)
(apD_const (fun_ : TwoSphere => b) 1)^
P: Type b: P s: 1 = 1
((s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) @
(concat_p1 (transport2 (fun_ : TwoSphere => P) surf b))^ =
((apD_const (TwoSphere_rec P b s) 1 @ (transport2_const surf b @@ s)) @
(concat_p_pp (transport2 (fun_ : TwoSphere => P) surf b)
(transport_const 1 b) (ap (TwoSphere_rec P b s) 1))^) @
(concat_p_pp (transport2 (fun_ : TwoSphere => P) surf b) 1
(apD
(TwoSphere_ind (fun_ : TwoSphere => P) b
((s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)))
1) @
whiskerR (concat_p1 (transport2 (fun_ : TwoSphere => P) surf b))
(apD
(TwoSphere_ind (fun_ : TwoSphere => P) b
((s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)))
1))
P: Type b: P s: 1 = 1
((s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) @
(concat_p1 (transport2 (fun_ : TwoSphere => P) surf b))^ =
((1 @ (transport2_const surf b @@ s)) @
match
transport2 (fun_ : TwoSphere => P) surf b as p in (_ = a)
return (p @ 1 = (p @ 1) @ 1)
with
| 1 => 1end^) @
(match
transport2 (fun_ : TwoSphere => P) surf b as p in (_ = a)
return (p @ 1 = (p @ 1) @ 1)
with
| 1 => 1end @ whiskerR (concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) 1)
P: Type b: P s: 1 = 1
((s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) @
(concat_p1 (transport2 (fun_ : TwoSphere => P) surf b))^ =
((transport2_const surf b @@ s) @
match
transport2 (fun_ : TwoSphere => P) surf b as p in (_ = a)
return (p @ 1 = (p @ 1) @ 1)
with
| 1 => 1end^) @
(match
transport2 (fun_ : TwoSphere => P) surf b as p in (_ = a)
return (p @ 1 = (p @ 1) @ 1)
with
| 1 => 1end @ whiskerR (concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) 1)
P: Type b: P s: 1 = 1
((s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) @
(concat_p1 (transport2 (fun_ : TwoSphere => P) surf b))^ =
(transport2_const surf b @@ s) @
(match
transport2 (fun_ : TwoSphere => P) surf b as p in (_ = a)
return (p @ 1 = (p @ 1) @ 1)
with
| 1 => 1end^ @
(match
transport2 (fun_ : TwoSphere => P) surf b as p in (_ = a)
return (p @ 1 = (p @ 1) @ 1)
with
| 1 => 1end @ whiskerR (concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) 1))
P: Type b: P s: 1 = 1
((s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) @
(concat_p1 (transport2 (fun_ : TwoSphere => P) surf b))^ =
(transport2_const surf b @@ s) @
((match
transport2 (fun_ : TwoSphere => P) surf b as p in (_ = a)
return (p @ 1 = (p @ 1) @ 1)
with
| 1 => 1end^ @
match
transport2 (fun_ : TwoSphere => P) surf b as p in (_ = a)
return (p @ 1 = (p @ 1) @ 1)
with
| 1 => 1end) @
whiskerR (concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)) 1)
(s @ transport2_const surf b) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b) =
((transport2_const surf b @@ s) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1)) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b)
P: Type b: P s: 1 = 1
s @ transport2_const surf b =
(transport2_const surf b @@ s) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1)
P: Type b: P s: 1 = 1
whiskerL 1 s @ transport2_const surf b =
(transport2_const surf b @@ s) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1)
P: Type b: P s: 1 = 1
whiskerL 1 s @
(((concat_p1 (1 @ 1))^ @ whiskerR (transport2_const surf b) 1) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1)) =
(transport2_const surf b @@ s) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1)
P: Type b: P s: 1 = 1
whiskerL 1 s @
((1 @ whiskerR (transport2_const surf b) 1) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1)) =
(transport2_const surf b @@ s) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1)
P: Type b: P s: 1 = 1
(whiskerL 1 s @ (1 @ whiskerR (transport2_const surf b) 1)) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1) =
(transport2_const surf b @@ s) @
concat_p1 (transport2 (fun_ : TwoSphere => P) surf b @ 1)
P: Type b: P s: 1 = 1
whiskerL 1 s @ (1 @ whiskerR (transport2_const surf b) 1) =
transport2_const surf b @@ s
P: Type b: P s: 1 = 1
whiskerL 1 s @ whiskerR (transport2_const surf b) 1 =
transport2_const surf b @@ s
P: Type b: P s: 1 = 1
whiskerR (transport2_const surf b) 1 @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b @ transport_const 1 b) s =
transport2_const surf b @@ s
P: Type b: P s: 1 = 1
transport2_const surf b @@ s =
whiskerR (transport2_const surf b) 1 @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b @ transport_const 1 b) s
P: Type b: P s: 1 = 1
(transport2_const surf b @ 1) @@ s =
whiskerR (transport2_const surf b) 1 @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b @ transport_const 1 b) s
P: Type b: P s: 1 = 1
(transport2_const surf (transport (fun_ : TwoSphere => P) 1 b) @ 1) @@
(1 @ s) =
whiskerR (transport2_const surf b) 1 @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b @ transport_const 1 b) s
P: Type b: P s: 1 = 1
(transport2_const surf (transport (fun_ : TwoSphere => P) 1 b) @@ 1) @
(1 @@ s) =
whiskerR (transport2_const surf b) 1 @
whiskerL (transport2 (fun_ : TwoSphere => P) surf b @ transport_const 1 b) s