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.
(** * Functors involving functor categories involving the terminal category *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import InitialTerminalCategory.Core InitialTerminalCategory.Functors InitialTerminalCategory.NaturalTransformations. Require Import HoTT.Basics HoTT.Types. Set Universe Polymorphism. Set Implicit Arguments. Generalizable All Variables. Set Asymmetric Patterns. Local Open Scope functor_scope. 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. (** ** [CĀ¹ ā†’ C] *) Definition functor : Functor (1 -> C) C := Build_Functor (1 -> C) C (fun F => F (center _)) (fun s d m => m (center _)) (fun _ _ _ _ _ => idpath) (fun _ => idpath).
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
s, d: C
m: morphism C s d

morphism (1 -> C) (from_terminal C s) (from_terminal C d)
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
s, d: C
m: morphism C s d

morphism (1 -> C) (from_terminal C s) (from_terminal C d)
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
s, d: C
m: morphism C s d

forall (s0 d0 : 1%category) (m0 : morphism 1 s0 d0), (m o (from_terminal C s) _1 m0)%morphism = ((from_terminal C d) _1 m0 o m)%morphism
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
s, d: C
m: morphism C s d
s0, d0: 1%category
m0: morphism 1 s0 d0

(m o 1)%morphism = (1 o m)%morphism
etransitivity; [ apply right_identity | symmetry; apply left_identity ]. Defined. Global Arguments inverse_morphism_of / _ _ _. (** ** [C ā†’ 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

Functor C (1 -> 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

Functor C (1 -> C)
refine (Build_Functor C (1 -> C) (@Functors.from_terminal _ _ _ _ _) inverse_morphism_of _ _ ); abstract (path_natural_transformation; trivial). Defined. End law1. 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. Global Instance: IsTerminalCategory (C -> 1) := {}. (** ** [1Ė£ ā†’ 1] *) Definition functor' : Functor (C -> 1) 1 := Functors.to_terminal _. (** ** [1 ā†’ 1Ė£] *) Definition inverse' : Functor 1 (C -> 1) := Functors.to_terminal _. (** ** [1Ė£ ā‰… 1] *) Definition law' : functor' o inverse' = 1 /\ inverse' o functor' = 1 := center _. End law1'.