Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.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.
(** * Natural isomorphisms *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import NaturalTransformation.Composition.Core.Require Import Functor.Composition.Core.Require Import Category.Morphisms.Require Import FunctorCategory.Core.Require Import NaturalTransformation.Paths.Require Import Basics.Tactics.Set Universe Polymorphism.Set Implicit Arguments.Generalizable All Variables.Set Asymmetric Patterns.LocalOpen Scope category_scope.LocalOpen Scope natural_transformation_scope.LocalOpen Scope morphism_scope.Local Ltaciso_whisker_t :=
path_natural_transformation;
tryrewrite <- composition_of, <- identity_of;
try f_ap;
match goal with
| [ H : IsIsomorphism _
|- context[components_of ?T0?x o components_of ?T1?x] ]
=> change (T0 x o T1 x)
with (components_of ((T0 : morphism (_ -> _) _ _)
o (T1 : morphism (_ -> _) _ _))%morphism
x);
progressrewrite ?(@left_inverse _ _ _ _ H), ?(@right_inverse _ _ _ _ H)
end;
reflexivity.Sectioncomposition.Context `{Funext}.(** ** Natural isomorphism respects composition *)#[export] Instanceisisomorphism_compose
`(T' : @NaturalTransformation C D F' F'')
`(T : @NaturalTransformation C D F F')
`{@IsIsomorphism (C -> D) F' F'' T'}
`{@IsIsomorphism (C -> D) F F' T}
: @IsIsomorphism (C -> D) F F'' (T' o T)%natural_transformation
:= @isisomorphism_compose (C -> D) _ _ T' _ _ T _.(** ** Left whiskering preserves natural isomorphisms *)
H: Funext C, D, E: PreCategory F: Functor D E G, G': Functor C D T: NaturalTransformation G G' H0: IsIsomorphism T
IsIsomorphism (F oL T)
H: Funext C, D, E: PreCategory F: Functor D E G, G': Functor C D T: NaturalTransformation G G' H0: IsIsomorphism T
H: Funext C, D: PreCategory F, F', F'': Functor C D T': F' = F'' T: F = F'
((idtoiso (C -> D) T' : morphism (C -> D) F' F'')
o (idtoiso (C -> D) T : morphism (C -> D) F F'))%natural_transformation =
(idtoiso (C -> D) (T @ T') : morphism (C -> D) F F'')
H: Funext C, D: PreCategory F, F', F'': Functor C D T': F' = F'' T: F = F'
((idtoiso (C -> D) T' : morphism (C -> D) F' F'')
o (idtoiso (C -> D) T : morphism (C -> D) F F'))%natural_transformation =
(idtoiso (C -> D) (T @ T') : morphism (C -> D) F F'')
path_natural_transformation; path_induction; simpl; auto with morphism.Defined.(** ** left whiskering respects [idtoiso] *)
H: Funext C, D, E: PreCategory F: Functor D E G, G': Functor C D T: G = G'
F oL (idtoiso (C -> D) T : morphism (C -> D) G G') =
(idtoiso (C -> E) (ap (compose F) T)
:
morphism (C -> E) (F o G)%functor (F o G')%functor)
H: Funext C, D, E: PreCategory F: Functor D E G, G': Functor C D T: G = G'
F oL (idtoiso (C -> D) T : morphism (C -> D) G G') =
(idtoiso (C -> E) (ap (compose F) T)
:
morphism (C -> E) (F o G)%functor (F o G')%functor)
path_natural_transformation; path_induction; simpl; auto with functor.Defined.(** ** right whiskering respects [idtoiso] *)
H: Funext C, D, E: PreCategory F, F': Functor D E T: F = F' G: Functor C D
(idtoiso (D -> E) T : morphism (D -> E) F F') oR G =
(idtoiso (C -> E)
(ap (funH : Functor D E => (H o G)%functor) T)
:
morphism (C -> E) (F o G)%functor (F' o G)%functor)
H: Funext C, D, E: PreCategory F, F': Functor D E T: F = F' G: Functor C D
(idtoiso (D -> E) T : morphism (D -> E) F F') oR G =
(idtoiso (C -> E)
(ap (funH : Functor D E => (H o G)%functor) T)
:
morphism (C -> E) (F o G)%functor (F' o G)%functor)
path_natural_transformation; path_induction; simpl; auto with functor.Defined.Endcomposition.Arguments isisomorphism_compose {H C D F' F''} T' {F} T {H0 H1}.Arguments iso_whisker_l {H} C D E F G G' T {H0}.Arguments iso_whisker_r {H} C D E F F' T G {H0}.(** ** Equalities induced by isomorphisms of objects *)Sectionobject_isomorphisms.
C: PreCategory s, d: C m: morphism C s d H: IsIsomorphism m D: PreCategory F, G: Functor C D T: NaturalTransformation F G
(G _1 m)^-1 o (T d o F _1 m) = T s
C: PreCategory s, d: C m: morphism C s d H: IsIsomorphism m D: PreCategory F, G: Functor C D T: NaturalTransformation F G
(G _1 m)^-1 o (T d o F _1 m) = T s
C: PreCategory s, d: C m: morphism C s d H: IsIsomorphism m D: PreCategory F, G: Functor C D T: NaturalTransformation F G
T d o F _1 m = G _1 m o T s
apply commutes.Qed.
C: PreCategory s, d: C m: morphism C s d H: IsIsomorphism m D: PreCategory F, G: Functor C D T: NaturalTransformation F G
G _1 m o T s o (F _1 m)^-1 = T d
C: PreCategory s, d: C m: morphism C s d H: IsIsomorphism m D: PreCategory F, G: Functor C D T: NaturalTransformation F G
G _1 m o T s o (F _1 m)^-1 = T d
C: PreCategory s, d: C m: morphism C s d H: IsIsomorphism m D: PreCategory F, G: Functor C D T: NaturalTransformation F G
G _1 m o T s = T d o F _1 m
C: PreCategory s, d: C m: morphism C s d H: IsIsomorphism m D: PreCategory F, G: Functor C D T: NaturalTransformation F G
T d o F _1 m = G _1 m o T s
apply commutes.Qed.Definitionpath_components_of_isomorphic
`(m : @Isomorphic C s d)
D (F G : Functor C D) (T : NaturalTransformation F G)
: (G _1 m)^-1 o (T d o F _1 m) = T s
:= @path_components_of_isisomorphism _ _ _ m m D F G T.Definitionpath_components_of_isomorphic'
`(m : @Isomorphic C s d)
D (F G : Functor C D) (T : NaturalTransformation F G)
: (G _1 m o T s) o (F _1 m)^-1 = T d
:= @path_components_of_isisomorphism' _ _ _ m m D F G T.Endobject_isomorphisms.