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.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
From HoTT Require Import HIT.unique_choice.From HoTT Require Import Spaces.Card.From HoTT.Sets Require Import Ordinals.LocalOpen Scope hprop_scope.(** * Set-theoretic formulation of the axiom of choice (AC) *)MonomorphicAxiomChoice : Type0.Existing ClassChoice.DefinitionChoice_type :=
forall (XY : HSet) (R : X -> Y -> HProp), (forallx, hexists (R x)) -> hexists (funf => forallx, R x (f x)).AxiomAC : forall `{Choice}, Choice_type.Instanceis_global_axiom_propresizing : IsGlobalAxiom Choice := {}.(** * The well-ordering theorem implies AC *)
LEM: ExcludedMiddle H: forallX : HSet,
hexists (funA : Ordinal => InjectsInto X A) X, Y: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0)
hexists (funf : X -> Y => forallx : X, R x (f x))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0)
hexists (funf : X -> Y => forallx : X, R x (f x))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0)
{A : Ordinal & InjectsInto Y A} ->
hexists (funf : X -> Y => forallx : X, R x (f x))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A
hexists (funf : X -> Y => forallx : X, R x (f x))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A
Injection Y A ->
hexists (funf : X -> Y => forallx : X, R x (f x))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f
hexists (funf : X -> Y => forallx : X, R x (f x))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f
{f : X -> Y & forallx : X, R x (f x)}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f
X -> Y
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f
forallx : X, R x (?f x)
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f
X -> Y
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X
Y
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X
hexists
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y')))
Y
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X
hexists
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type}
hexists
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type}
merely
{a : A &
Build_HProp
(merely {y : Y & ((f y = a) * R x y)%type})}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type}
{a : A &
(Build_HProp (merely {y : Y & (f y = a) * R x y}) *
(forallb : A,
Build_HProp (merely {y : Y & (f y = b) * R x y}) ->
a < b \/ a = b))%type} ->
hexists
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type}
merely
{a : A &
Build_HProp
(merely {y : Y & ((f y = a) * R x y)%type})}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type}
{x0 : Y & R x x0} ->
merely
{a : A &
Build_HProp
(merely {y : Y & ((f y = a) * R x y)%type})}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y Hy: R x y
merely
{a : A &
Build_HProp
(merely {y : Y & ((f y = a) * R x y)%type})}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y Hy: R x y
{a : A &
Build_HProp
(merely {y : Y & ((f y = a) * R x y)%type})}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y Hy: R x y
Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type})
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y Hy: R x y
{y0 : Y & ((f y0 = f y) * R x y0)%type}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y Hy: R x y
((f y = f y) * R x y)%type
bysplit.
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type}
{a : A &
(Build_HProp (merely {y : Y & (f y = a) * R x y}) *
(forallb : A,
Build_HProp (merely {y : Y & (f y = b) * R x y}) ->
a < b \/ a = b))%type} ->
hexists
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} a: A H1: Build_HProp
(merely {y : Y & ((f y = a) * R x y)%type}) H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
a < b \/ a = b
hexists
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} a: A H1: Build_HProp
(merely {y : Y & ((f y = a) * R x y)%type}) H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
a < b \/ a = b
{y : Y & ((f y = a) * R x y)%type} ->
hexists
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y
hexists
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y
{y : Y &
merely
(R x y *
(forally' : Y, R x y' -> f y < f y' \/ f y = f y'))}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y
merely
(R x y *
(forally' : Y, R x y' -> f y < f y' \/ f y = f y'))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y
(R x y *
(forally' : Y, R x y' -> f y < f y' \/ f y = f y'))%type
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y
forally' : Y, R x y' -> f y < f y' \/ f y = f y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y y': Y Hy': R x y'
f y < f y' \/ f y = f y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y y': Y Hy': R x y'
Build_HProp
(merely {y : Y & ((f y = f y') * R x y)%type})
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y y': Y Hy': R x y'
{y : Y & ((f y = f y') * R x y)%type}
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HAR: merely
{a : A &
(funa0 : A => Build_HProp (merely {y : Y & ((f y = a0) * R x y)%type})) a} ->
merely
{a : A &
((funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) a *
(forallb : A,
(funa0 : A => Build_HProp (merely {y : Y & (f y = a0) * R x y})) b ->
a < b \/ a = b))%type} y: Y H2: forallb : A,
Build_HProp
(merely {y : Y & ((f y = b) * R x y)%type}) ->
f y < b \/ f y = b H1: Build_HProp
(merely {y0 : Y & ((f y0 = f y) * R x y0)%type}) Hy: R x y y': Y Hy': R x y'
((f y' = f y') * R x y')%type
split; trivial.
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y')))
Y
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y')))
forallx0 : Y, IsHProp (?P x0)
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y')))
hunique ?P
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y')))
forallx0 : Y,
IsHProp
((funy : Y =>
trunctype_type
(merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))) x0)
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y')))
atmost1P
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y')))
atmost1P
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0))
y = y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0))
R x y *
(forally' : Y, R x y' -> f y < f y' \/ f y = f y') ->
y = y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y'
y = y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y'
R x y' *
(forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0) -> y = y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y' H3: R x y' H4: forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0
y = y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y' H3: R x y' H4: forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0
f y = f y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y' H3: R x y' H4: forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0
(f y < f y') + (f y = f y') -> f y = f y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y' H3: R x y' H4: forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0 H5: f y < f y'
f y = f y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y' H3: R x y' H4: forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0 H5: f y < f y'
(f y' < f y) + (f y' = f y) -> f y = f y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y' H3: R x y' H4: forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0 H5: f y < f y' H6: f y' < f y
f y = f y'
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y' H3: R x y' H4: forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0 H5: f y < f y' H6: f y' < f y
Empty
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X HR': hexists
(funy : Y =>
merely (R x y * (forally' : Y, R x y' -> f y < f y' \/ f y = f y'))) y, y': Y Hy: merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')) Hy': merely (R x y' * (forally'0 : Y, R x y'0 -> f y' < f y'0 \/ f y' = f y'0)) H1: R x y H2: forally' : Y, R x y' -> f y < f y' \/ f y = f y' H3: R x y' H4: forally'0 : Y,
R x y'0 -> f y' < f y'0 \/ f y' = f y'0 H5: f y < f y' H6: f y' < f y
f y < f y
apply (ordinal_transitivity _ (f y')); trivial.
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f
forallx : X,
R x
((funx0 : X =>
letHR' :=
letHAR :=
ordinal_has_minimal_hsolutions A
(funa : A =>
Build_HProp
(merely
{y : Y & ((f y = a) * R x0 y)%type}))
in
merely_destruct
(HAR
(merely_destruct (HR x0)
(funX0 : {x1 : Y & R x0 x1} =>
(fun (y : Y) (Hy : R x0 y) =>
tr (f y; tr (y; (1%path, Hy)))) X0.1
X0.2)))
(funX0 : {a : A &
(Build_HProp
(merely
{y : Y & (f y = a) * R x0 y}) *
(forallb : A,
Build_HProp
(merely
{y : Y & (... = b) * R x0 y}) ->
a < b \/ a = b))%type} =>
(fun (a : A)
(proj2 : Build_HProp
(merely
{y : Y &
((f y = a) * R x0 y)%type}) *
(forallb : A,
Build_HProp
(merely
{y : Y & (... * ...)%type}) ->
a < b \/ a = b)) =>
(fun
(H1 : Build_HProp
(merely
{y : Y &
((...) * R x0 y)%type}))
(H2 : forallb : A,
Build_HProp
(merely {y : Y & (...)%type}) ->
a < b \/ a = b) =>
merely_destruct H1
(funX1 : {y : Y & ((...) * R x0 y)%type}
=>
(fun (y : Y) (proj3 : ... * ...) =>
(... => ...) (fst proj3) (snd proj3))
X1.1 X1.2)) (fst proj2) (snd proj2))
X0.1 X0.2) inlets :=
iota
(funy : Y =>
merely
(R x0 y *
(forally' : Y,
R x0 y' -> f y < f y' \/ f y = f y')))
(funx1 : Y =>
istrunc_truncation (-1)
(R x0 x1 *
(forally' : Y,
R x0 y' -> f x1 < f y' \/ f x1 = f y')))
(HR',
(fun (yy' : Y)
(Hy : merely
(R x0 y *
(forally'0 : Y,
R x0 y'0 ->
f y < f y'0 \/ f y = f y'0)))
(Hy' : merely
(R x0 y' *
(forally'0 : Y,
R x0 y'0 ->
f y' < f y'0 \/ f y' = f y'0)))
=>
merely_destruct Hy
(funX0 : R x0 y *
(forally'0 : Y,
R x0 y'0 ->
f y < f y'0 \/ f y = f y'0) =>
(fun (H1 : R x0 y)
(H2 : forally'0 : Y,
R x0 y'0 ->
f y < f y'0 \/ f y = f y'0) =>
merely_destruct Hy'
(funX1 : R x0 y' * (...) =>
(fun ... ... => Hf y y' ...) (fst X1)
(snd X1))) (fst X0) (snd X0)))
:
atmost1P
(funy : Y =>
merely
(R x0 y *
(forally' : Y,
R x0 y' -> f y < f y' \/ f y = f y'))))
in
(fun (y : Y)
(_ : (funy0 : Y =>
trunctype_type
(merely
(R x0 y0 *
(forally' : Y,
R x0 y' ->
f y0 < f y' \/ f y0 = f y')))) y)
=> y) s.1 s.2) x)
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X
R x
((funx : X =>
letHR' :=
letHAR :=
ordinal_has_minimal_hsolutions A
(funa : A =>
Build_HProp
(merely
{y : Y & ((f y = a) * R x y)%type}))
in
merely_destruct
(HAR
(merely_destruct (HR x)
(funX0 : {x0 : Y & R x x0} =>
(fun (y : Y) (Hy : R x y) =>
tr (f y; tr (y; (1%path, Hy)))) X0.1
X0.2)))
(funX0 : {a : A &
(Build_HProp
(merely {y : Y & (f y = a) * R x y}) *
(forallb : A,
Build_HProp
(merely
{y : Y & (f y = b) * R x y}) ->
a < b \/ a = b))%type} =>
(fun (a : A)
(proj2 : Build_HProp
(merely
{y : Y &
((f y = a) * R x y)%type}) *
(forallb : A,
Build_HProp
(merely
{y : Y &
((...) * R x y)%type}) ->
a < b \/ a = b)) =>
(fun
(H1 : Build_HProp
(merely
{y : Y &
((... = a) * R x y)%type}))
(H2 : forallb : A,
Build_HProp
(merely
{y : Y & (... * ...)%type}) ->
a < b \/ a = b) =>
merely_destruct H1
(funX1 : {y : Y &
((... = a) * R x y)%type} =>
(fun (y : Y) (proj3 : (...) * R x y) =>
(fun ... =>
internal_paths_rew ... ... fst H1 H2)
(fst proj3) (snd proj3)) X1.1 X1.2))
(fst proj2) (snd proj2)) X0.1 X0.2) inlets :=
iota
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y')))
(funx0 : Y =>
istrunc_truncation (-1)
(R x x0 *
(forally' : Y,
R x y' -> f x0 < f y' \/ f x0 = f y')))
(HR',
(fun (yy' : Y)
(Hy : merely
(R x y *
(forally'0 : Y,
R x y'0 ->
f y < f y'0 \/ f y = f y'0)))
(Hy' : merely
(R x y' *
(forally'0 : Y,
R x y'0 ->
f y' < f y'0 \/ f y' = f y'0)))
=>
merely_destruct Hy
(funX0 : R x y *
(forally'0 : Y,
R x y'0 ->
f y < f y'0 \/ f y = f y'0) =>
(fun (H1 : R x y)
(H2 : forally'0 : Y,
R x y'0 ->
f y < f y'0 \/ f y = f y'0) =>
merely_destruct Hy'
(funX1 : R x y' * (forall ..., ...) =>
(fun (H3 : ...) (H4 : ...) =>
Hf y y' (...)) (fst X1) (snd X1)))
(fst X0) (snd X0)))
:
atmost1P
(funy : Y =>
merely
(R x y *
(forally' : Y,
R x y' -> f y < f y' \/ f y = f y'))))
in
(fun (y : Y)
(_ : (funy0 : Y =>
trunctype_type
(merely
(R x y0 *
(forally' : Y,
R x y' ->
f y0 < f y' \/ f y0 = f y')))) y)
=> y) s.1 s.2) x)
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X
R x
(iota
(funy : Y =>
Trunc (-1)
(R x y *
(forally' : Y,
R x y' ->
Trunc (-1) ((f y < f y') + (f y = f y')))))
(funx0 : Y =>
istrunc_truncation (-1)
(R x x0 *
(forally' : Y,
R x y' ->
Trunc (-1) ((f x0 < f y') + (f x0 = f y')))))
(merely_destruct
(ordinal_has_minimal_hsolutions A
(funa : ordinal_carrier A =>
Build_HProp
(Trunc (-1)
{y : Y & ((f y = a) * R x y)%type}))
(merely_destruct (HR x)
(funX0 : {x0 : Y & R x x0} =>
tr (f X0.1; tr (X0.1; (1%path, X0.2))))))
(funX0 : {a : ordinal_carrier A &
(Trunc (-1)
{y : Y & (f y = a) * R x y} *
(forallb : ordinal_carrier A,
Trunc (-1)
{y : Y & (f y = b) * R x y} ->
Trunc (-1) ((a < b) + (a = b))))%type}
=>
merely_destruct (fst X0.2)
(funX1 : {y : Y &
((f y = X0.1) * R x y)%type} =>
internal_paths_rew
(funa : ordinal_carrier A =>
Trunc (-1)
{y : Y & ((f y = a) * R x y)%type} ->
(forallb : ordinal_carrier A,
Trunc (-1)
{y : Y & ((f y = b) * R x y)%type} ->
Trunc (-1) ((a < b) + (a = b))) ->
R x X1.1 ->
Trunc (-1)
{y : Y &
Trunc (-1)
(R x y *
(forally' : Y,
R x y' -> Trunc (-1) (... + ...)))})
(fun
(_ : Trunc (-1)
{y : Y &
((f y = f X1.1) * R x y)%type})
(H2 : forallb : ordinal_carrier A,
Trunc (-1)
{y : Y &
((f y = b) * R x y)%type} ->
Trunc (-1)
((f X1.1 < b) + (f X1.1 = b)))
(Hy : R x X1.1) =>
tr
(X1.1;
tr
(Hy,
fun (y' : Y) (Hy' : R x y') =>
H2 (f y') (tr (y'; (1%path, Hy'))))))
(fst X1.2) (fst X0.2) (snd X0.2)
(snd X1.2))),
fun (yy' : Y)
(Hy : Trunc (-1)
(R x y *
(forally'0 : Y,
R x y'0 ->
Trunc (-1)
((f y < f y'0) + (f y = f y'0)))))
(Hy' : Trunc (-1)
(R x y' *
(forally'0 : Y,
R x y'0 ->
Trunc (-1)
((f y' < f y'0) + (f y' = f y'0)))))
=>
merely_destruct Hy
(funX0 : R x y *
(forally'0 : Y,
R x y'0 ->
Trunc (-1)
((f y < f y'0) + (f y = f y'0))) =>
merely_destruct Hy'
(funX1 : R x y' *
(forally'0 : Y,
R x y'0 ->
Trunc (-1)
((f y' < f y'0) + (f y' = f y'0)))
=>
Hf y y'
(merely_destruct (snd X0 y' (fst X1))
(funX2 : (f y < f y') + (f y = f y')
=>
match X2 with
| inl l =>
merely_destruct
(snd X1 y (fst X0))
(funX3 : (f y' < f y) +
(f y' = f y) =>
match X3 with
| inl l0 =>
Empty_rec
(irreflexive_ordinal_relation
(...) lt (...) (...)
(...))
| inr p =>
internal_paths_rew_r
(fun ... => ... = t)
1%path p
end)
| inr p => p
end)))))).1
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X y: Y Hy: Trunc (-1)
(R x y *
(forally' : Y,
R x y' ->
Trunc (-1) ((f y < f y') + (f y = f y'))))
R x y
LEM: ExcludedMiddle Y: HSet H: hexists (funA : Ordinal => InjectsInto Y A) X: HSet R: X -> Y -> HProp HR: forallx : X, hexists (funx0 : Y => R x x0) A: Ordinal HA: InjectsInto Y A f: Y -> A Hf: IsInjective f x: X y: Y Hy: Trunc (-1)
(R x y *
(forally' : Y,
R x y' ->
Trunc (-1) ((f y < f y') + (f y = f y'))))
R x y *
(forally' : Y,
R x y' -> Trunc (-1) ((f y < f y') + (f y = f y'))) ->
R x y