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.
(** * Theorems about the homotopical interval. *)Require Import Basics.Overture Basics.PathGroupoids.Require Import Types.Paths.LocalOpen Scope path_scope.ModuleExport Interval.Private Inductiveinterval : Type0 :=
| zero : interval
| one : interval.Axiomseg : zero = one.Definitioninterval_ind (P : interval -> Type)
(a : P zero) (b : P one) (p : seg # a = b)
: forallx:interval, P x
:= funx => (match x return _ -> P x with
| zero => fun_ => a
| one => fun_ => b
end) p.Axiominterval_ind_beta_seg : forall (P : interval -> Type)
(a : P zero) (b : P one) (p : seg # a = b),
apD (interval_ind P a b p) seg = p.EndInterval.Definitioninterval_rec (P : Type) (ab : P) (p : a = b)
: interval -> P
:= interval_ind (fun_ => P) a b (transport_const _ _ @ p).
P: Type a, b: P p: a = b
ap (interval_rec P a b p) seg = p
P: Type a, b: P p: a = b
ap (interval_rec P a b p) seg = p
P: Type a, b: P p: a = b
transport_const seg a @ ap (interval_rec P a b p) seg =
transport_const seg a @ p
P: Type a, b: P p: a = b
apD (interval_ind (fun_ : interval => P) a b (transport_const seg a @ p))
seg =
transport_const seg a @ p
exact (interval_ind_beta_seg (fun_ => P) _ _ _).Defined.(** ** The interval is contractible. *)