Built with Alectryon. 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.
Require Import HoTT.Basics.Require Import HoTT.Basics.Require Import Types.Universe.Require Import HSet.Require Import HIT.epi HIT.unique_choice.LocalOpen Scope path_scope.(** We prove that [epi + mono <-> IsEquiv] *)Sectioniso.Context `{Univalence}.VariablesXY : HSet.Variablef : X -> Y.
H: Univalence X, Y: HSet f: X -> Y injf: IsInjective f
forally : Y, atmost1P (funx : X => f x = y)
H: Univalence X, Y: HSet f: X -> Y injf: IsInjective f
forally : Y, atmost1P (funx : X => f x = y)
H: Univalence X, Y: HSet f: X -> Y injf: IsInjective f y: Y x, x': X p: f x = y q: f x' = y
x = x'
H: Univalence X, Y: HSet f: X -> Y injf: IsInjective f y: Y x, x': X p: f x = y q: f x' = y
f x = f x'
exact (p @ q^).Defined.
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f
IsEquiv f
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f
IsEquiv f
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f
IsEquiv f
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f
IsEquiv f
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f H_unique_choice: {f0 : Y -> X & forallx : Y, (fun (y : Y) (x0 : X) => f x0 = y) x (f0 x)}
IsEquiv f
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f H_unique_choice: {f0 : Y -> X & forallx : Y, (fun (y : Y) (x0 : X) => f x0 = y) x (f0 x)}
(funx : Y => f (H_unique_choice.1 x)) == idmap
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f H_unique_choice: {f0 : Y -> X & forallx : Y, (fun (y : Y) (x0 : X) => f x0 = y) x (f0 x)}
(funx : X => H_unique_choice.1 (f x)) == idmap
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f H_unique_choice: {f0 : Y -> X & forallx : Y, (fun (y : Y) (x0 : X) => f x0 = y) x (f0 x)}
(funx : Y => f (H_unique_choice.1 x)) == idmap
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f H_unique_choice: {f0 : Y -> X & forallx0 : Y, (fun (y : Y) (x1 : X) => f x1 = y) x0 (f0 x0)} x: Y
f (H_unique_choice.1 x) = x
apply H_unique_choice.2.
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f H_unique_choice: {f0 : Y -> X & forallx : Y, (fun (y : Y) (x0 : X) => f x0 = y) x (f0 x)}
(funx : X => H_unique_choice.1 (f x)) == idmap
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f H_unique_choice: {f0 : Y -> X & forallx0 : Y, (fun (y : Y) (x1 : X) => f x1 = y) x0 (f0 x0)} x: X
H_unique_choice.1 (f x) = x
H: Univalence X, Y: HSet f: X -> Y epif: isepi f monof: ismono f surjf: ReflectiveSubuniverse.IsConnMap
(Modality.modality_to_reflective_subuniverse (Core.Tr (-1))) f injf: IsInjective f H_unique_choice: {f0 : Y -> X & forallx0 : Y, (fun (y : Y) (x1 : X) => f x1 = y) x0 (f0 x0)} x: X