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]
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: forallxy : A, IsEquiv (ap f)
IsEquiv f
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: forallxy : A, IsEquiv (ap f)
IsEquiv f
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f
IsEquiv f
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f
IsConnMap (Tr (-1)) f
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f
forallb : B, merely (hfiber f b)
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B
Trunc (-1) (hfiber f b)
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B p: Tr (-1) (hfiber (Trunc_functor 0 f) (tr b))
Trunc (-1) (hfiber f b)
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B
Tr (-1) (hfiber (Trunc_functor 0 f) (tr b)) ->
Trunc (-1) (hfiber f b)
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B
hfiber (Trunc_functor 0 f) (tr b) -> hfiber f b
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B
forallproj1 : Tr 0 A,
Trunc_functor 0 f proj1 = tr b -> hfiber f b
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B
foralla : A,
(funaa : Trunc 0 A =>
Trunc_functor 0 f aa = tr b -> hfiber f b) (tr a)
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B a: A p: Trunc_functor 0 f (tr a) = tr b
hfiber f b
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B a: A p: Tr (-1) (f a = b)
hfiber f b
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B a: A p: f a = b
hfiber f b
H: Univalence A, B: Type f: A -> B i: IsConnMap (Tr (-1)) (Trunc_functor 0 f) ii: IsEmbedding f b: B a: A p: f a = b
f a = b
exact p.Defined.(** 8.8.2 *)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x))
IsEquiv f
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x))
IsEquiv f
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x))
forallxy : A, IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x)) x, y: A
IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x)) x, y: A
f x = f y -> IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x)) x, y: A p: f x = f y
IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x)) x, y: A p: tr (f x) = tr (f y)
IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x)) x, y: A p: tr x = tr y
IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x)) x, y: A p: Tr (-1) (x = y)
IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x)) x, y: A p: x = y
IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (fmap loops (pmap_from_point f x)) x: A
IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (funp : x = x => 1 @ (ap f p @ 1)) x: A
IsEquiv (ap f)
H: Univalence A, B: Type f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forallx : A,
IsEquiv (funp : x = x => 1 @ (ap f p @ 1)) x: A
(funp : x = x => 1 @ (ap f p @ 1)) == ap f
exact (fun_ => concat_1p _ @ concat_p1 _).Defined.(** When the types are 0-connected and the map is pointed, just one [loops_functor] needs to be checked. *)
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
IsEquiv f
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
IsEquiv f
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
IsEquiv (Trunc_functor 0 f)
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
forallx : A,
IsEquiv (fmap loops (pmap_from_point f x))
(** The pi_0 condition is trivial because [A] and [B] are 0-connected. *)
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
forallx : A,
IsEquiv (fmap loops (pmap_from_point f x))
(** Since [A] is 0-connected, it's enough to check the [loops_functor] condition for the basepoint. *)
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
IsEquiv (fmap loops (pmap_from_point f pt))
(** The [loops_functor] condition for [pmap_from_point f _] is equivalent to the [loops_functor] condition for [f] with its given pointing. *)
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
loops [A, pt] <~> loops [B, f pt]
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
?f == fmap loops (pmap_from_point f pt)
H: Univalence A, B: pType H0: IsConnected (Tr 0%nat) A H1: IsConnected (Tr 0%nat) B f: A ->* B e: IsEquiv (fmap loops f)
ua: Univalence A, B: Type f: A -> B n: trunc_index H0: IsTrunc n A H1: IsTrunc n B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))
IsEquiv f
ua: Univalence A, B: Type f: A -> B n: trunc_index H0: IsTrunc n A H1: IsTrunc n B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))
IsEquiv f
ua: Univalence n: trunc_index
forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f
ua: Univalence
forallAB : Type,
Contr A ->
Contr B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f
forallAB : Type,
IsTrunc n.+1 A ->
IsTrunc n.+1 B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f
forallAB : Type,
IsTrunc n.+1 A ->
IsTrunc n.+1 B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))
IsEquiv f
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))
forallx : A,
IsEquiv (fmap loops (pmap_from_point f x))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A
IsEquiv (fmap loops (pmap_from_point f x))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A
IsEquiv (ap f)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A
ap f == fmap loops (pmap_from_point f x)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A
ap f == fmap loops (pmap_from_point f x)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A p: x = x
ap f p = 1 @ (ap f p @ 1)
symmetry; exact (concat_1p _ @ concat_p1 _).
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A
IsEquiv (ap f)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x)
IsEquiv (ap f)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x)
IsEquiv (ap f)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x)
IsEquiv (Trunc_functor 0 (ap f))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x)
forall (x0 : x = x) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point (ap f) x0))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x)
IsEquiv (Trunc_functor 0 (ap f))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) h2: IsEquiv (fmap (Pi 1) (pmap_from_point f x))
IsEquiv (Trunc_functor 0 (ap f))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) h2: IsEquiv
(Trunc_functor 0
(funp : x = x => 1 @ (ap f p @ 1)))
IsEquiv (Trunc_functor 0 (ap f))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) h2: IsEquiv
(Trunc_functor 0
(funp : x = x => 1 @ (ap f p @ 1)))
Trunc_functor 0 (funp : x = x => 1 @ (ap f p @ 1)) ==
Trunc_functor 0 (ap f)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) h2: IsEquiv
(Trunc_functor 0
(funp : x = x => 1 @ (ap f p @ 1))) p: x = x
1 @ (ap f p @ 1) = ap f p
exact (concat_1p _ @ concat_p1 _).
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x)
forall (x0 : x = x) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point (ap f) x0))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
forallp : x = x,
IsEquiv (fmap (Pi k.+1) (pmap_from_point (ap f) p))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
forall (y : A) (q : x = y),
IsEquiv (fmap (Pi k.+1) (pmap_from_point (ap f) q))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat h3: forall (y : A) (q : x = y),
IsEquiv
(fmap (Pi k.+1) (pmap_from_point (ap f) q))
forallp : x = x,
IsEquiv (fmap (Pi k.+1) (pmap_from_point (ap f) p))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
forall (y : A) (q : x = y),
IsEquiv (fmap (Pi k.+1) (pmap_from_point (ap f) q))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat y: A q: x = y
IsEquiv (fmap (Pi k.+1) (pmap_from_point (ap f) q))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
IsEquiv (fmap (Pi k.+1) (pmap_from_point (ap f) 1))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
Pi k.+1 [x = x, 1] -> Pi k.+1 [f x = f x, ap f 1]
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
IsEquiv ?f
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
?f == fmap (Pi k.+1) (pmap_from_point (ap f) 1)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
IsEquiv
(fmap (Pi k.+1) (fmap loops (pmap_from_point f x)))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
fmap (Pi k.+1) (fmap loops (pmap_from_point f x)) ==
fmap (Pi k.+1) (pmap_from_point (ap f) 1)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
fmap (Pi k.+1) (fmap loops (pmap_from_point f x)) ==
fmap (Pi k.+1) (pmap_from_point (ap f) 1)
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
fmap loops (pmap_from_point f x) ==
pmap_from_point (ap f) 1
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
?p pt =
dpoint_eq (fmap loops (pmap_from_point f x)) @
(dpoint_eq (pmap_from_point (ap f) 1))^
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
fmap loops (pmap_from_point f x) ==
pmap_from_point (ap f) 1
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat p: [x = x, 1]
1 @ (ap f p @ 1) = ap f p
exact (concat_1p _ @ concat_p1 _).
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
((funp : [x = x, 1] =>
concat_1p (ap f p @ 1) @ concat_p1 (ap f p)
:
fmap loops (pmap_from_point f x) p =
pmap_from_point (ap f) 1 p)
:
fmap loops (pmap_from_point f x) ==
pmap_from_point (ap f) 1) pt =
dpoint_eq (fmap loops (pmap_from_point f x)) @
(dpoint_eq (pmap_from_point (ap f) 1))^
reflexivity.
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
IsEquiv
(fmap (Pi k.+1) (fmap loops (pmap_from_point f x)))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
IsEquiv (fmap (Pi k.+2) (pmap_from_point f x))
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
IsEquiv (pi_loops k.+1 [A, x])
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat
IsEquiv (pi_loops k.+1 [B, f x])
ua: Univalence n: trunc_index IHn: forallAB : Type,
IsTrunc n A ->
IsTrunc n B ->
forallf : A -> B,
IsEquiv (Trunc_functor 0 f) ->
(forall (x : A) (k : nat), IsEquiv (fmap (Pi k.+1) (pmap_from_point f x))) ->
IsEquiv f A, B: Type H0: IsTrunc n.+1 A H1: IsTrunc n.+1 B f: A -> B i: IsEquiv (Trunc_functor 0 f) ii: forall (x : A) (k : nat),
IsEquiv (fmap (Pi k.+1) (pmap_from_point f x)) x: A h0: IsTrunc n (x = x) h1: IsTrunc n (f x = f x) k: nat