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.
(** * Attributes of Functoriality of functor composition *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import Functor.Composition.Functorial.Core.Require Import NaturalTransformation.Composition.Core.Require Import NaturalTransformation.Isomorphisms.Require Import Functor.Attributes.Require Import FunctorCategory.Core.Require Import Category.Morphisms.Require Import NaturalTransformation.Paths.Require Import HoTT.Truncations.Core.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.(** ** Precomposition with an essentially surjective functor is faithful *)Sectionfaithfull_precomposition_essential_surjective.(** Quoting the HoTT Book: Lemma. If [A], [B], [C] are precategories and [H : A → B] is an essentially surjective functor, then [(– ∘ H) : (B → C) → (A → C)] is faithful. *)Context `{fs : Funext}.VariablesABC : PreCategory.VariableH : Functor A B.Context `{H_is_essentially_surjective : IsEssentiallySurjective A B H}.
fs: Funext A, B, C: PreCategory H: Functor A B H_is_essentially_surjective: IsEssentiallySurjective
H F, G: Functor B C T, U: NaturalTransformation F G a: A b: B f: H _0 a <~=~> b H': T oR H = U oR H
T b = U b
fs: Funext A, B, C: PreCategory H: Functor A B H_is_essentially_surjective: IsEssentiallySurjective
H F, G: Functor B C T, U: NaturalTransformation F G a: A b: B f: H _0 a <~=~> b H': T oR H = U oR H
T b = U b
fs: Funext A, B, C: PreCategory H: Functor A B H_is_essentially_surjective: IsEssentiallySurjective
H F, G: Functor B C T, U: NaturalTransformation F G a: A b: B f: H _0 a <~=~> b H': T oR H = U oR H
T b = U b
fs: Funext A, B, C: PreCategory H: Functor A B H_is_essentially_surjective: IsEssentiallySurjective
H F, G: Functor B C T, U: NaturalTransformation F G a: A b: B f: H _0 a <~=~> b H': forallx : A,
T (H _0 x)%object = U (H _0 x)%object
T b = U b
fs: Funext A, B, C: PreCategory H: Functor A B H_is_essentially_surjective: IsEssentiallySurjective
H F, G: Functor B C T, U: NaturalTransformation F G a: A b: B f: H _0 a <~=~> b H': forallx : A,
T (H _0 x)%object = U (H _0 x)%object
G _1 f o T (H _0 a)%object o (F _1 f)^-1 =
G _1 f o U (H _0 a)%object o (F _1 f)^-1
fs: Funext A, B, C: PreCategory H: Functor A B H_is_essentially_surjective: IsEssentiallySurjective
H F, G: Functor B C T, U: NaturalTransformation F G a: A b: B f: H _0 a <~=~> b H': forallx : A,
T (H _0 x)%object = U (H _0 x)%object
G _1 f o U (H _0 a)%object o (F _1 f)^-1 =
G _1 f o U (H _0 a)%object o (F _1 f)^-1
reflexivity.Qed.
fs: Funext A, B, C: PreCategory H: Functor A B H_is_essentially_surjective: IsEssentiallySurjective
H
IsFaithful ((compose_functor A B C) _0 H)%object
fs: Funext A, B, C: PreCategory H: Functor A B H_is_essentially_surjective: IsEssentiallySurjective
H
IsFaithful ((compose_functor A B C) _0 H)%object
repeatmatch goal with
| _ => eapply isfaithful_precomposition_essentially_surjective_helper;
eassumption
| _ => intro
| _ => progresshnfin *
| _ => progresssimplin *
| _ => apply path_forall
| _ => progress strip_truncations
| [ H : _ |- _ ] => apply ap10 in H
| _ => progress path_natural_transformation
| [ H : sig _ |- _ ] => destruct H
| [ H : _, t : _ |- _ ]
=> generalize dependent (H t); clear H
end.Qed.Endfaithfull_precomposition_essential_surjective.