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]
From HoTT Require Import PropResizing.PropResizing. From HoTT Require Import Spaces.Card Spaces.Nat.Core. (** * Definition of Power types *) (* The definition is only used in Hartogs.v to allow defining a coercion, and one place below. Everywhere else we prefer to write out the definition for clarity. *) Definition power_type (A : Type) : Type := A -> HProp. (** * Iterated powers *)
PR: PropResizing
X: Type

IsHSet X -> Injection X (X -> HProp)
PR: PropResizing
X: Type

IsHSet X -> Injection X (X -> HProp)
PR: PropResizing
X: Type
HX: IsHSet X

Injection X (X -> HProp)
PR: PropResizing
X: Type
HX: IsHSet X
f:= fun x y : X => Build_HProp (resize_hprop (x = y)): X -> X -> HProp

Injection X (X -> HProp)
PR: PropResizing
X: Type
HX: IsHSet X
f:= fun x y : X => Build_HProp (resize_hprop (x = y)): X -> X -> HProp

abstract_algebra.IsInjective f
PR: PropResizing
X: Type
HX: IsHSet X
f:= fun x y : X => Build_HProp (resize_hprop (x = y)): X -> X -> HProp
x, x': X
H: f x = f x'

x = x'
PR: PropResizing
X: Type
HX: IsHSet X
f:= fun x y : X => Build_HProp (resize_hprop (x = y)): X -> X -> HProp
x, x': X
H: f x = f x'

resize_hprop (x = x')
PR: PropResizing
X: Type
HX: IsHSet X
f:= fun x y : X => Build_HProp (resize_hprop (x = y)): X -> X -> HProp
x, x': X
H: f x = f x'

f x x'
PR: PropResizing
X: Type
HX: IsHSet X
f:= fun x y : X => Build_HProp (resize_hprop (x = y)): X -> X -> HProp
x, x': X
H: f x = f x'

f x' x'
PR: PropResizing
X: Type
HX: IsHSet X
f:= fun x y : X => Build_HProp (resize_hprop (x = y)): X -> X -> HProp
x, x': X
H: f x = f x'

resize_hprop (x' = x')
PR: PropResizing
X: Type
HX: IsHSet X
f:= fun x y : X => Build_HProp (resize_hprop (x = y)): X -> X -> HProp
x, x': X
H: f x = f x'

x' = x'
reflexivity. Qed. Definition power_iterated X n := nat_iter n power_type X. Definition power_iterated_shift X n : power_iterated (X -> HProp) n = (power_iterated X n -> HProp) := (nat_iter_succ_r _ _ _)^.
UA: Univalence
X: HSet

IsHSet (X -> HProp)
UA: Univalence
X: HSet

IsHSet (X -> HProp)
UA: Univalence
X: HSet

is_mere_relation (X -> HProp) paths
UA: Univalence
X: HSet
p, q: X -> HProp

IsHProp (p = q)
UA: Univalence
X: HSet
p, q: X -> HProp

forall x y : p = q, x = y
UA: Univalence
X: HSet
p, q: X -> HProp
H, H': p = q

H = H'
UA: Univalence
X: HSet
p, q: X -> HProp
H, H': p = q
f: p == q -> p = q
g: p = q -> p == q
Hfg: (fun x : p = q => f (g x)) == idmap
Hgf: (fun x : p == q => g (f x)) == idmap

H = H'
UA: Univalence
X: HSet
p, q: X -> HProp
H, H': p = q
f: p == q -> p = q
g: p = q -> p == q
Hfg: (fun x : p = q => f (g x)) == idmap
Hgf: (fun x : p == q => g (f x)) == idmap

f (g H) = f (g H')
UA: Univalence
X: HSet
p, q: X -> HProp
H, H': p = q
f: p == q -> p = q
g: p = q -> p == q
Hfg: (fun x : p = q => f (g x)) == idmap
Hgf: (fun x : p == q => g (f x)) == idmap

g H = g H'
UA: Univalence
X: HSet
p, q: X -> HProp
H, H': p = q
f: p == q -> p = q
g: p = q -> p == q
Hfg: (fun x : p = q => f (g x)) == idmap
Hgf: (fun x : p == q => g (f x)) == idmap

g H == g H'
UA: Univalence
X: HSet
p, q: X -> HProp
H, H': p = q
f: p == q -> p = q
g: p = q -> p == q
Hfg: (fun x : p = q => f (g x)) == idmap
Hgf: (fun x : p == q => g (f x)) == idmap
x: X

g H x = g H' x
apply path_ishprop. Qed.
UA: Univalence
X: HSet
n: nat

IsHSet (power_iterated X n)
UA: Univalence
X: HSet
n: nat

IsHSet (power_iterated X n)
UA: Univalence
X: HSet
n: nat

forall x : Type, IsHSet x -> IsHSet (power_type x)
UA: Univalence
X: HSet
n: nat
IsHSet X
UA: Univalence
X: HSet
n: nat

forall x : Type, IsHSet x -> IsHSet (power_type x)
UA: Univalence
X: HSet
n: nat
Y: Type
HS: IsHSet Y

IsHSet (power_type Y)
rapply hset_power.
UA: Univalence
X: HSet
n: nat

IsHSet X
exact _. Defined.
UA: Univalence
PR: PropResizing
X: HSet
n: nat

Injection X (power_iterated X n)
UA: Univalence
PR: PropResizing
X: HSet
n: nat

Injection X (power_iterated X n)
UA: Univalence
PR: PropResizing
X: HSet

Injection X (power_iterated X 0)
UA: Univalence
PR: PropResizing
X: HSet
n: nat
IHn: Injection X (power_iterated X n)
Injection X (power_iterated X n.+1)
UA: Univalence
PR: PropResizing
X: HSet

Injection X (power_iterated X 0)
reflexivity.
UA: Univalence
PR: PropResizing
X: HSet
n: nat
IHn: Injection X (power_iterated X n)

Injection X (power_iterated X n.+1)
UA: Univalence
PR: PropResizing
X: HSet
n: nat
IHn: Injection X (power_iterated X n)

Injection (power_iterated X n) (power_iterated X n.+1)
UA: Univalence
PR: PropResizing
X: HSet
n: nat
IHn: Injection X (power_iterated X n)

IsHSet (power_iterated X n)
exact _. Qed.
X, Y: Type

infinite X -> Injection X Y -> infinite Y
X, Y: Type

infinite X -> Injection X Y -> infinite Y
apply Injection_trans. Qed.
UA: Univalence
PR: PropResizing
X: HSet
n: nat

infinite X -> infinite (power_iterated X n)
UA: Univalence
PR: PropResizing
X: HSet
n: nat

infinite X -> infinite (power_iterated X n)
UA: Univalence
PR: PropResizing
X: HSet
n: nat
H: infinite X

infinite (power_iterated X n)
UA: Univalence
PR: PropResizing
X: HSet
n: nat
H: infinite X

Injection X (power_iterated X n)
apply Injection_power_iterated. Qed.