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.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
(** Definition by factoring through a surjection. *)Sectionsurjective_factor.Context `{Funext}.Context {ABC} `{IsHSet C} `(f : A -> C) `(g : A -> B) {Esurj : IsSurjection g}.Variable (Eg : forallxy, g x = g y -> f x = f y).
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y
forallb : B,
IsHProp {c : C & foralla : A, g a = b -> f a = c}
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y
forallb : B,
IsHProp {c : C & foralla : A, g a = b -> f a = c}
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y b: B
IsHProp {c : C & foralla : A, g a = b -> f a = c}
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y b: B
forallxy : C,
(foralla : A, g a = b -> f a = x) ->
(foralla : A, g a = b -> f a = y) -> x = y
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y b: B c1, c2: C E1: foralla : A, g a = b -> f a = c1 E2: foralla : A, g a = b -> f a = c2
c1 = c2
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y b: B c1, c2: C E1: foralla : A, g a = b -> f a = c1 E2: foralla : A, g a = b -> f a = c2
hfiber g b -> c1 = c2
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y c1, c2: C a: A E1: foralla0 : A, g a0 = g a -> f a0 = c1 E2: foralla0 : A, g a0 = g a -> f a0 = c2
c1 = c2
path_via (f a).Qed.Definitionsurjective_factor_aux :=
@conn_map_elim
_ _ _ _ Esurj (funb => existsc : C, foralla, g a = b -> f a = c)
ishprop_surjective_factor_aux
(funa => exist (func => foralla, _ -> _ = c) (f a) (funa' => Eg a' a)).Definitionsurjective_factor : B -> C
:= funb => (surjective_factor_aux b).1.
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y
f == surjective_factor o g
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y
f == surjective_factor o g
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y a: A
f a = surjective_factor (g a)
H: Funext A, B, C: Type IsHSet0: IsHSet C f: A -> C g: A -> B Esurj: IsConnMap (Tr (-1)) g Eg: forallxy : A, g x = g y -> f x = f y a: A