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.
(** * Exponential laws about the terminal category *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import InitialTerminalCategory.Core. Require Import Basics.Trunc ExponentialLaws.Tactics. Require Import Basics.Tactics. Set Universe Polymorphism. Set Implicit Arguments. Generalizable All Variables. Set Asymmetric Patterns. Local Open Scope functor_scope. (** ** [Cยน โ‰… C] *) Section law1. Context `{Funext}. Context `{IsInitialCategory zero}. Context `{IsTerminalCategory one}. Local Notation "0" := zero : category_scope. Local Notation "1" := one : category_scope. Variable C : PreCategory.
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory
c: Functor 1 C

Functors.from_terminal C (c _0 (center 1%category)) = c
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory
c: Functor 1 C

Functors.from_terminal C (c _0 (center 1%category)) = c
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory
c: Functor 1 C

{HO : (fun _ : 1%category => (c _0 (center 1%category))%object) = c & transport (fun GO : 1%category -> C => forall s d : 1%category, morphism 1 s d -> morphism C (GO s) (GO d)) HO (fun (s d : 1%category) (_ : morphism 1 s d) => 1%morphism) = morphism_of c}
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory
c: Functor 1 C

transport (fun GO : 1%category -> C => forall s d : 1%category, morphism 1 s d -> morphism C (GO s) (GO d)) (path_forall (fun _ : 1%category => (c _0 (center 1%category))%object) (fun x : 1%category => (c _0 x)%object) (fun x : 1%category => ap c (contr x))) (fun (s d : 1%category) (_ : morphism 1 s d) => 1%morphism) = morphism_of c
abstract ( exp_laws_t; simpl; rewrite <- identity_of; f_ap; symmetry; apply contr ). Defined.
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory

(functor C o inverse C = 1) * (inverse C o functor C = 1)
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory

(functor C o inverse C = 1) * (inverse C o functor C = 1)
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory

{HO : (fun c : Functor 1 C => Functors.from_terminal C (c _0 (center 1%category))) = idmap & transport (fun GO : Functor 1 C -> Functor 1 C => forall s d : Functor 1 C, Core.NaturalTransformation s d -> Core.NaturalTransformation (GO s) (GO d)) HO (fun (s d : Functor 1 C) (m : Core.NaturalTransformation s d) => Core.Build_NaturalTransformation (Functors.from_terminal C (s _0 (center 1%category))) (Functors.from_terminal C (d _0 (center 1%category))) (fun _ : 1%category => Core.components_of m (center 1%category)) (fun (s0 d0 : 1%category) (_ : morphism 1 s0 d0) => right_identity C (s _0 (center 1%category)) (d _0 (center 1%category)) (Core.components_of m (center 1%category)) @ (left_identity C (s _0 (center 1%category)) (d _0 (center 1%category)) (Core.components_of m (center 1%category)))^)) = (fun s d : Functor 1 C => idmap)}
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory

transport (fun GO : Functor 1 C -> Functor 1 C => forall s d : Functor 1 C, Core.NaturalTransformation s d -> Core.NaturalTransformation (GO s) (GO d)) (path_forall (fun c : Functor 1 C => Functors.from_terminal C (c _0 (center 1%category))) idmap helper) (fun (s d : Functor 1 C) (m : Core.NaturalTransformation s d) => Core.Build_NaturalTransformation (Functors.from_terminal C (s _0 (center 1%category))) (Functors.from_terminal C (d _0 (center 1%category))) (fun _ : 1%category => Core.components_of m (center 1%category)) (fun (s0 d0 : 1%category) (_ : morphism 1 s0 d0) => right_identity C (s _0 (center 1%category)) (d _0 (center 1%category)) (Core.components_of m (center 1%category)) @ (left_identity C (s _0 (center 1%category)) (d _0 (center 1%category)) (Core.components_of m (center 1%category)))^)) = (fun s d : Functor 1 C => idmap)
H: Funext
zero: PreCategory
H0: IsInitialCategory 0
one: PreCategory
Contr0: Contr 1%category
H1: forall s d : 1%category, Contr (morphism 1 s d)
H2: IsTerminalCategory 1
C: PreCategory

transport (fun GO : Functor 1 C -> Functor 1 C => forall s d : Functor 1 C, Core.NaturalTransformation s d -> Core.NaturalTransformation (GO s) (GO d)) (path_forall (fun c : Functor 1 C => Functors.from_terminal C (c _0 (center 1%category))) idmap (fun c : Functor 1 C => path_functor_uncurried (Functors.from_terminal C (c _0 (center 1%category))) c (path_forall (fun _ : 1%category => (c _0 (center 1%category))%object) (fun x : 1%category => (c _0 x)%object) (fun x : 1%category => ap c (contr x)); helper_subproof c))) (fun (s d : Functor 1 C) (m : Core.NaturalTransformation s d) => Core.Build_NaturalTransformation (Functors.from_terminal C (s _0 (center 1%category))) (Functors.from_terminal C (d _0 (center 1%category))) (fun _ : 1%category => Core.components_of m (center 1%category)) (fun (s0 d0 : 1%category) (_ : morphism 1 s0 d0) => right_identity C (s _0 (center 1%category)) (d _0 (center 1%category)) (Core.components_of m (center 1%category)) @ (left_identity C (s _0 (center 1%category)) (d _0 (center 1%category)) (Core.components_of m (center 1%category)))^)) = (fun s d : Functor 1 C => idmap)
exp_laws_t. Qed. End law1.