Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.3. 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.
(* -*- mode: coq; mode: visual-line -*- *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Local Open Scope path_scope. (** * Theorems about the 2-sphere [S^2]. *) (* ** Definition of the 2-sphere. *) Module Export TwoSphere. Private Inductive TwoSphere : Type0 := | base : TwoSphere. Axiom surf : idpath base = idpath base. Definition TwoSphere_ind (P : TwoSphere -> Type) (b : P base) (s : idpath b = transport2 P surf b) : forall (x : TwoSphere), P x := fun x => match x with base => fun _ => b end s. Axiom TwoSphere_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 _)^. End TwoSphere. (* ** The non-dependent eliminator *) Definition TwoSphere_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 => 1 end^) @ (match transport2 (fun _ : TwoSphere => P) surf b as p in (_ = a) return (p @ 1 = (p @ 1) @ 1) with | 1 => 1 end @ 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 => 1 end^) @ (match transport2 (fun _ : TwoSphere => P) surf b as p in (_ = a) return (p @ 1 = (p @ 1) @ 1) with | 1 => 1 end @ 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 => 1 end^ @ (match transport2 (fun _ : TwoSphere => P) surf b as p in (_ = a) return (p @ 1 = (p @ 1) @ 1) with | 1 => 1 end @ 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 => 1 end^ @ match transport2 (fun _ : TwoSphere => P) surf b as p in (_ = a) return (p @ 1 = (p @ 1) @ 1) with | 1 => 1 end) @ 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) @ (1 @ 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) @ ((concat_p1 (transport2 (fun _ : TwoSphere => P) surf b @ 1) @ (concat_p1 (transport2 (fun _ : TwoSphere => P) surf b @ 1))^) @ 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) @ (concat_p1 (transport2 (fun _ : TwoSphere => P) surf b @ 1) @ ((concat_p1 (transport2 (fun _ : TwoSphere => P) surf b @ 1))^ @ 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) @ concat_p1 (transport2 (fun _ : TwoSphere => P) surf b @ 1)) @ ((concat_p1 (transport2 (fun _ : TwoSphere => P) surf b @ 1))^ @ 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) = (((transport2_const surf b @@ s) @ concat_p1 (transport2 (fun _ : TwoSphere => P) surf b @ 1)) @ ((concat_p1 (transport2 (fun _ : TwoSphere => P) surf b @ 1))^ @ whiskerR (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) @ 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 @ 1))^ @ whiskerR (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) @ 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
f_ap. Defined.