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]
Require Import Spaces.Int Spaces.Circle.Require Import Colimits.Coeq HIT.Flattening Truncations.Core Truncations.Connectedness.LocalOpen Scope path_scope.(** * Quotients by free actions of [Int] *)(** We will show that if [Int] acts freely on a set, then the set-quotient of that action can be defined without a 0-truncation, giving it a universal property for mapping into all types. *)SectionFreeIntAction.Context `{Univalence}.Context (R : Type) `{IsHSet R}.(** A free action by [Int] is the same as a single auto-equivalence [f] (the action of [1]) whose iterates are all pointwise distinct. *)Context (f : R <~> R)
(f_free : forall (r : R) (nm : Int),
(int_iter f n r = int_iter f m r) -> (n = m)).(** We can then define the quotient to be the coequalizer of [f] and the identity map. This gives it the desired universal property for all types; it remains to show that this definition gives a set. *)LetRmodZ := Coeq f idmap.(** Together, [R] and [f] define a fibration over [Circle]. By the flattening lemma, its total space is equivalent to the quotient. *)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
IsHSet RmodZ
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
IsHSet RmodZ
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
Wtil Unit Unit idmap idmap (unit_name R) (unit_name f) <~>
RmodZ
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
{z : Circle & Circle_rec Type R (path_universe f) z} <~>
{w : Coeq idmap idmap &
Coeq_rec Type (unit_name R)
(unit_name (path_universe f)) w}
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
IsHSet
{z : Circle & Circle_rec Type R (path_universe f) z}
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
Wtil Unit Unit idmap idmap (unit_name R) (unit_name f) <~>
RmodZ
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
Wtil Unit Unit idmap idmap (unit_name R) (unit_name f) ->
RmodZ
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
RmodZ ->
Wtil Unit Unit idmap idmap (unit_name R) (unit_name f)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
(funx : RmodZ => ?Goal4 (?Goal5 x)) == idmap
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
(funx : Wtil Unit Unit idmap idmap
(unit_name R)
(unit_name f) =>
?Goal5 (?Goal4 x)) == idmap
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
Wtil Unit Unit idmap idmap (unit_name R) (unit_name f) ->
RmodZ
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
foralla : Unit, unit_name R a -> RmodZ
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
forall (b : Unit) (y : unit_name R (idmap b)),
?cct' (idmap b) y = ?cct' (idmap b) (unit_name f b y)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
foralla : Unit, unit_name R a -> RmodZ
intros u r; exact (coeq r).
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
forall (b : Unit) (y : unit_name R (idmap b)),
(fun (u : Unit) (r : unit_name R u) => coeq r)
(idmap b) y =
(fun (u : Unit) (r : unit_name R u) => coeq r)
(idmap b) (unit_name f b y)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type u: Unit r: unit_name R (idmap u)
coeq r = coeq (f r)
exact ((cglue r)^).
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
RmodZ ->
Wtil Unit Unit idmap idmap (unit_name R) (unit_name f)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
R ->
Wtil Unit Unit idmap idmap (unit_name R) (unit_name f)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
forallb : R, ?coeq' (f b) = ?coeq' (idmap b)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
R ->
Wtil Unit Unit idmap idmap (unit_name R) (unit_name f)
exact (cct tt).
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
forallb : R, cct tt (f b) = cct tt (idmap b)
intros r; exact ((ppt tt r)^).
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
(funx : RmodZ =>
Wtil_rec RmodZ
(fun (u : Unit) (r : unit_name R u) => coeq r)
(fun (u : Unit) (r : unit_name R (idmap u)) =>
(cglue r)^
:
(fun (u0 : Unit) (r0 : unit_name R u0) => coeq r0)
(idmap u) r =
(fun (u0 : Unit) (r0 : unit_name R u0) => coeq r0)
(idmap u) (unit_name f u r))
(Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^) x)) == idmap
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type b: R
transport
(funw : Coeq f idmap =>
Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^))
(Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^) w) = w) (cglue b) 1 =
1
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type b: R
(ap
(funx : Coeq f idmap =>
Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^))
(Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^) x)) (cglue b))^ @
cglue b = 1
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type b: R
cglue b =
ap
(funx : Coeq f idmap =>
Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^))
(Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^) x)) (cglue b)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type b: R
cglue b =
ap
(Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)))
(ap
(Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^)) (cglue b))
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type b: R
cglue b =
ap
(Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)))
(ppt tt b)^
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type b: R
(ap
(Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)))
(ppt tt b))^ = cglue b
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
(funx : Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f) =>
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^)
(Wtil_rec RmodZ
(fun (u : Unit) (r : unit_name R u) => coeq r)
(fun (u : Unit) (r : unit_name R (idmap u)) =>
(cglue r)^
:
(fun (u0 : Unit) (r0 : unit_name R u0) =>
coeq r0) (idmap u) r =
(fun (u0 : Unit) (r0 : unit_name R u0) =>
coeq r0) (idmap u) (unit_name f u r)) x)) ==
idmap
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
forall (a : Unit) (x : R),
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^) (coeq x) = cct a x
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
forall (b : Unit) (y : R),
transport
(funw : Wtil Unit Unit idmap idmap
(unit_name R)
(unit_name f) =>
Coeq_rec
(Wtil Unit Unit idmap idmap
(unit_name R) (unit_name f))
(cct tt) (funr : R => (ppt tt r)^)
(Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)) w) = w)
(ppt b y) (?Goal4 b y) =
?Goal4 b (f y)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
forall (a : Unit) (x : R),
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^) (coeq x) = cct a x
intros [] ?; reflexivity.
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
forall (b : Unit) (y : R),
transport
(funw : Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f) =>
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^)
(Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)) w) = w)
(ppt b y)
((funa : Unit =>
match
a as u
return
(forallx : R,
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^) (coeq x) =
cct u x)
with
| tt => funx : R => 1end) b y) =
(funa : Unit =>
match
a as u
return
(forallx : R,
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^) (coeq x) = cct u x)
with
| tt => funx : R => 1end) b (f y)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type r: R
transport
(funw : Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f) =>
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^)
(Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)) w) = w)
(ppt tt r) 1 = 1
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type r: R
(ap
(funx : Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f) =>
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^)
(Wtil_rec RmodZ
(unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)) x))
(ppt tt r))^ @ ppt tt r = 1
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type r: R
ppt tt r =
ap
(funx : Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f) =>
Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^)
(Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)) x))
(ppt tt r)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type r: R
ppt tt r =
ap
(Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^))
(ap
(Wtil_rec RmodZ (unit_name (funr : R => coeq r))
(unit_name (funr : R => (cglue r)^)))
(ppt tt r))
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type r: R
ppt tt r =
ap
(Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^)) (cglue r)^
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type r: R
ppt tt r =
(ap
(Coeq_rec
(Wtil Unit Unit idmap idmap (unit_name R)
(unit_name f)) (cct tt)
(funr : R => (ppt tt r)^)) (cglue r))^
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type r: R
ppt tt r = ((ppt tt r)^)^
symmetry; apply inv_V.
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
{z : Circle & Circle_rec Type R (path_universe f) z} <~>
{w : Coeq idmap idmap &
Coeq_rec Type (unit_name R)
(unit_name (path_universe f)) w}
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle
Circle_rec Type R (path_universe f) x <~>
Coeq_rec Type (unit_name R)
(unit_name (path_universe f)) x
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle
Circle_rec Type R (path_universe f) x =
Coeq_rec Type (unit_name R)
(unit_name (path_universe f)) x
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
transport
(funx : Circle =>
Circle_rec Type R (path_universe f) x =
Coeq_rec Type (unit_name R)
(unit_name (path_universe f)) x) loop 1 = 1
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
(ap
(funx : Circle =>
Circle_rec Type R (path_universe f) x) loop)^ @
ap
(Coeq_rec Type (unit_name R)
(unit_name (path_universe f))) loop = 1
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
ap
(Coeq_rec Type (unit_name R)
(unit_name (path_universe f))) loop =
ap
(funx : Circle =>
Circle_rec Type R (path_universe f) x) loop
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
ap
(Coeq_rec Type (unit_name R)
(unit_name (path_universe f))) loop =
path_universe f
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
ap
(Coeq_rec Type (unit_name R)
(unit_name (path_universe f))) (cglue tt) =
path_universe f
exact (Coeq_rec_beta_cglue _ _ _ _).
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
IsHSet
{z : Circle & Circle_rec Type R (path_universe f) z}
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type
is_mere_relation
{z : Circle & Circle_rec Type R (path_universe f) z}
paths
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type xu, yv: {z : Circle &
Circle_rec Type R (path_universe f) z}
IsHProp (xu = yv)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type xu, yv: {z : Circle &
Circle_rec Type R (path_universe f) z}
IsHProp
{p : xu.1 = yv.1 &
transport
(funz : Circle =>
Circle_rec Type R (path_universe f) z) p xu.2 =
yv.2}
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle u: Circle_rec Type R (path_universe f) x y: Circle v: Circle_rec Type R (path_universe f) y
IsHProp
{p : x = y &
transport
(funz : Circle =>
Circle_rec Type R (path_universe f) z) p u = v}
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle u: Circle_rec Type R (path_universe f) x y: Circle v: Circle_rec Type R (path_universe f) y
forallx0y0 : {p : x = y &
transport
(funz : Circle =>
Circle_rec Type R (path_universe f) z) p u =
v}, x0 = y0
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle u: Circle_rec Type R (path_universe f) x y: Circle v: Circle_rec Type R (path_universe f) y p: x = y r: transport
(funz : Circle =>
Circle_rec Type R (path_universe f) z) p u = v q: x = y s: transport
(funz : Circle =>
Circle_rec Type R (path_universe f) z) q u = v
(p; r) = (q; s)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v
(p; r) = (q; s)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v
forallz : Circle, IsHSet (P z)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v X: forallz : Circle, IsHSet (P z)
(p; r) = (q; s)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v
forallz : Circle, IsHSet (P z)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v
IsHSet (P base)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v
transport (funx : Circle => IsHSet (P x)) loop ?Goal1 =
?Goal1
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v
IsHSet (P base)
exact _.
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v
transport (funx : Circle => IsHSet (P x)) loop
IsHSet0 = IsHSet0
apply path_ishprop.
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v X: forallz : Circle, IsHSet (P z)
(p; r) = (q; s)
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p: x = y r: transport (funz : Circle => P z) p u = v q: x = y s: transport (funz : Circle => P z) q u = v X: forallz : Circle, IsHSet (P z)
p = q
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p, q: x = y X: forallz : Circle, IsHSet (P z) t: transport (funz : Circle => P z) p u =
transport (funz : Circle => P z) q u
p = q
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p, q: x = y X: forallz : Circle, IsHSet (P z) t: transport (funz : Circle => P z) p u =
transport (funz : Circle => P z) q u xb: merely (base = x)
p = q
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p, q: x = y X: forallz : Circle, IsHSet (P z) t: transport (funz : Circle => P z) p u =
transport (funz : Circle => P z) q u xb: merely (base = x) yb: merely (base = y)
p = q
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type x: Circle P:= Circle_rec Type R (path_universe f): Circle -> Type u: P x y: Circle v: P y p, q: x = y X: forallz : Circle, IsHSet (P z) t: transport (funz : Circle => P z) p u =
transport (funz : Circle => P z) q u yb: base = y xb: base = x
p = q
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type P:= Circle_rec Type R (path_universe f): Circle -> Type u, v: P base p, q: base = base X: forallz : Circle, IsHSet (P z) t: transport (funz : Circle => P z) p u =
transport (funz : Circle => P z) q u
p = q
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type P:= Circle_rec Type R (path_universe f): Circle -> Type u, v: P base X: forallz : Circle, IsHSet (P z)
forallpq : base = base,
transport (funz : Circle => P z) p u =
transport (funz : Circle => P z) q u -> p = q
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type P:= Circle_rec Type R (path_universe f): Circle -> Type u, v: P base X: forallz : Circle, IsHSet (P z) n: Int
forallq : base = base,
transport (funz : Circle => P z)
(equiv_loopCircle_int^-1 n) u =
transport (funz : Circle => P z) q u ->
equiv_loopCircle_int^-1 n = q
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type P:= Circle_rec Type R (path_universe f): Circle -> Type u, v: P base X: forallz : Circle, IsHSet (P z) n, m: Int
transport (funz : Circle => P z)
(equiv_loopCircle_int^-1 n) u =
transport (funz : Circle => P z)
(equiv_loopCircle_int^-1 m) u ->
equiv_loopCircle_int^-1 n = equiv_loopCircle_int^-1 m
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type u, v: Circle_rec Type R (path_universe f) base X: forallz : Circle,
IsHSet (Circle_rec Type R (path_universe f) z) n, m: Int
transport
(funz : Circle =>
Circle_rec Type R (path_universe f) z)
(equiv_loopCircle_int^-1 n) u =
transport
(funz : Circle =>
Circle_rec Type R (path_universe f) z)
(equiv_loopCircle_int^-1 m) u ->
equiv_loopCircle_int^-1 n = equiv_loopCircle_int^-1 m
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type u, v: Circle_rec Type R (path_universe f) base X: forallz : Circle,
IsHSet (Circle_rec Type R (path_universe f) z) n, m: Int
int_iter f n u = int_iter f m u ->
equiv_loopCircle_int^-1 n = equiv_loopCircle_int^-1 m
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type u, v: Circle_rec Type R (path_universe f) base X: forallz : Circle,
IsHSet (Circle_rec Type R (path_universe f) z) n, m: Int p: int_iter f n u = int_iter f m u
equiv_loopCircle_int^-1 n = equiv_loopCircle_int^-1 m
H: Univalence R: Type IsHSet0: IsHSet R f: R <~> R f_free: forall (r : R) (nm : Int),
int_iter f n r = int_iter f m r -> n = m RmodZ:= Coeq f idmap: Type u, v: Circle_rec Type R (path_universe f) base X: forallz : Circle,
IsHSet (Circle_rec Type R (path_universe f) z) n, m: Int p: int_iter f n u = int_iter f m u
n = m
exact (f_free u n m p).Qed.(** TODO: Prove that this [RmodZ] is equivalent to the set-quotient of [R] by a suitably defined equivalence relation. *)EndFreeIntAction.