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 empty type *)Require Import Basics.Overture Basics.Equivalences Basics.Trunc.Local Set Universe Minimization ToSet.LocalOpen Scope path_scope.(** ** Unpacking *)(** ** Eta conversion *)(** ** Paths *)(** ** Transport *)(** ** Functorial action *)(** ** Equivalences *)(** ** Universal mapping properties *)
H: Funext A: Empty -> Type
Contr (forallx : Empty, A x)
H: Funext A: Empty -> Type
Contr (forallx : Empty, A x)
H: Funext A: Empty -> Type
forally : foralle : Empty, A e, Empty_ind A = y
intros f; apply path_forall@{Set u u}; intros x; elim x.Defined.
T: Type falso: Empty
T
T: Type falso: Empty
T
case falso.Defined.Instanceisequiv_empty_rec@{u} `{Funext} (A : Type@{u})
: IsEquiv@{Set u} (fun (_ : Unit) => @Empty_rec A) | 0
:= isequiv_adjointify@{Set u} _
(fun_ => tt)
(funf => path_forall@{Set u u} _ _ (funx => Empty_rec x))
(funx => match x with tt => idpath end).Definitionequiv_empty_rec@{u} `{Funext} (A : Type@{u})
: Unit <~> ((Empty -> A) : Type@{u})
:= (Build_Equiv@{Set u} _ _ (fun (_ : Unit) => @Empty_rec A) _).(** ** Behavior with respect to truncation *)
n: trunc_index
IsTrunc n.+1 Empty
n: trunc_index
IsTrunc n.+1 Empty
n: trunc_index
IsHProp Empty
n: trunc_index
forallxy : Empty, Contr (x = y)
intros [].Defined.
T: Type f: T -> Empty
IsEquiv f
T: Type f: T -> Empty
IsEquiv f
T: Type f: T -> Empty
forallx : T,
match
f x as fals return (f (Empty_ind (fun_ : Empty => T) fals) = fals)
withend =
ap f match f x return (Empty_ind (fun_ : Empty => T) (f x) = x) withend
T: Type f: T -> Empty t: T
match
f t as fals return (f (Empty_ind (fun_ : Empty => T) fals) = fals)
withend =
ap f match f t return (Empty_ind (fun_ : Empty => T) (f t) = t) withend
exact (Empty_rec (f t)).Defined.Definitionequiv_to_empty {T : Type} (f : T -> Empty) : T <~> Empty
:= Build_Equiv T Empty f _.(** ** Paths *)(** We could probably prove some theorems about non-existing paths in [Empty], but this is really quite useless. As soon as an element of [Empty] is hypothesized, we can prove whatever we like with a simple elimination. *)