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 HFiber.Require Import Truncations.Require Import Universes.BAut.LocalOpen Scope trunc_scope.LocalOpen Scope path_scope.(** * Rigid types *)ClassIsRigid (A : Type) :=
path_aut_rigid : forallfg : A <~> A, f == g.(** Assuming funext, rigidity is equivalent to contractibility of [A <~> A]. *)
H: Funext A: Type H0: IsRigid A
Contr (A <~> A)
H: Funext A: Type H0: IsRigid A
Contr (A <~> A)
H: Funext A: Type H0: IsRigid A
forally : A <~> A, 1%equiv = y
intros f; apply path_equiv, path_arrow, path_aut_rigid.Defined.(** Assuming univalence, rigidity is equivalent to contractibility of [BAut A]. *)
H: Univalence A: Type H0: IsRigid A
Contr (BAut A)
H: Univalence A: Type H0: IsRigid A
Contr (BAut A)
H: Univalence A: Type H0: IsRigid A
Contr (BAut A)
H: Univalence A: Type H0: IsRigid A
In (Tr 0) (BAut A)
H: Univalence A: Type H0: IsRigid A
is_mere_relation (BAut A) paths
H: Univalence A: Type H0: IsRigid A
IsHProp (point (BAut A) = point (BAut A))
exact (istrunc_equiv_istrunc (n := -1) (A <~> A)
(path_baut (point (BAut A)) (point (BAut A)))).Defined.
H: Univalence A: Type Contr0: Contr (BAut A)
IsRigid A
H: Univalence A: Type Contr0: Contr (BAut A)
IsRigid A
H: Univalence A: Type Contr0: Contr (BAut A)
forallfg : A <~> A, f == g
H: Univalence A: Type Contr0: Contr (BAut A) f: point (BAut A) = point (BAut A)
forallg : A <~> A,
(path_baut (point (BAut A)) (point (BAut A)))^-1 f ==
g
H: Univalence A: Type Contr0: Contr (BAut A) f, g: point (BAut A) = point (BAut A)
(path_baut (point (BAut A)) (point (BAut A)))^-1 f ==
(path_baut (point (BAut A)) (point (BAut A)))^-1 g
apply ap10, ap, ap, path_contr.Defined.(** ** HProps are rigid *)
A: Type IsHProp0: IsHProp A
IsRigid A
A: Type IsHProp0: IsHProp A
IsRigid A
intros f g x; apply path_ishprop.Defined.(** ** Equivalences of BAut *)(** Under a truncatedness/connectedness assumption, multiplying by a rigid type doesn't change the automorphism oo-group. *)(** A lemma: a "monoid homomorphism up to homotopy" between endomorphism monoids restricts to automorphism groups. *)
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f
X <~> X -> Y <~> Y
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f
X <~> X -> Y <~> Y
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f
forallfg : X -> X,
(funx : X => g (f x)) == idmap ->
(funx : Y => M g (M f x)) == idmap
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f MS: forallfg : X -> X,
g o f == idmap -> M g o M f == idmap
X <~> X -> Y <~> Y
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f
forallfg : X -> X,
(funx : X => g (f x)) == idmap ->
(funx : Y => M g (M f x)) == idmap
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M f (M g x) = x
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M f (M g x) = M (f o g) x
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M (f o g) x = x
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M f (M g x) = M (f o g) x
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M (f o g) x = M f (M g x)
exact (MC g f x).
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M (f o g) x = x
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M (f o g) x = M idmap x
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M idmap x = x
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M (f o g) x = M idmap x
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
(funx : X => f (g x)) == idmap
intros y; apply s.
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f g, f: X -> X s: (funx : X => f (g x)) == idmap x: Y
M idmap x = x
apply Mid.
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f MS: forallfg : X -> X,
g o f == idmap -> M g o M f == idmap
X <~> X -> Y <~> Y
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f MS: forallfg : X -> X,
g o f == idmap -> M g o M f == idmap
forallf : X -> X, IsEquiv f -> IsEquiv (M f)
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f MS: forallfg : X -> X,
g o f == idmap -> M g o M f == idmap ME: forallf : X -> X, IsEquiv f -> IsEquiv (M f)
X <~> X -> Y <~> Y
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f MS: forallfg : X -> X,
g o f == idmap -> M g o M f == idmap
forallf : X -> X, IsEquiv f -> IsEquiv (M f)
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f MS: forallfg : X -> X,
g o f == idmap -> M g o M f == idmap f: X -> X X0: IsEquiv f
H: Funext X, Y: Type M: (X -> X) -> Y -> Y Mid: M idmap == idmap MC: forallfg : X -> X, M (g o f) == M g o M f MS: forallfg : X -> X,
g o f == idmap -> M g o M f == idmap ME: forallf : X -> X, IsEquiv f -> IsEquiv (M f)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
BAut X <~> BAut (X * A)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
BAut X <~> BAut (X * A)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
IsEquiv (baut_prod_r X A)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
IsConnMap (Tr (-1)) (baut_prod_r X A)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
IsEmbedding (baut_prod_r X A)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
IsConnMap (Tr (-1)) (baut_prod_r X A)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z: BAut (X * A)
merely (hfiber (baut_prod_r X A) Z)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
merely
(hfiber (baut_prod_r X A) (point (BAut (X * A))))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
baut_prod_r X A (point (BAut X)) =
point (BAut (X * A))
apply path_sigma_hprop; reflexivity.
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
IsEmbedding (baut_prod_r X A)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
IsEmbedding (baut_prod_r X A)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A
forallxy : BAut X, IsEquiv (ap (baut_prod_r X A))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X
IsEquiv (ap (baut_prod_r X A))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X L:= fune : Z <~> W => equiv_functor_prod_r e: Z <~> W -> Z * A <~> W * A
IsEquiv (ap (baut_prod_r X A))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X L:= fune : Z <~> W => equiv_functor_prod_r e: Z <~> W -> Z * A <~> W * A
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X L:= fune : Z <~> W => equiv_functor_prod_r e: Z <~> W -> Z * A <~> W * A
IsConnected (Tr (-1)) A
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X L:= fune : Z <~> W => equiv_functor_prod_r e: Z <~> W -> Z * A <~> W * A
A -> IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X L:= fune : Z <~> W => equiv_functor_prod_r e: Z <~> W -> Z * A <~> W * A
IsConnected (Tr (-1)) A
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X L:= fune : Z <~> W => equiv_functor_prod_r e: Z <~> W -> Z * A <~> W * A
Tr (-1) A
exact (merely_isconnected n A).
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X L:= fune : Z <~> W => equiv_functor_prod_r e: Z <~> W -> Z * A <~> W * A
A -> IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A Z, W: BAut X L:= fune : Z <~> W => equiv_functor_prod_r e: Z <~> W -> Z * A <~> W * A a0: A
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X
forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0))
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X
forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X
Unit ->
forall (f : X * A -> X * A)
(x : X), fst (f (x, a0)) = fst (f (x, a0))
intros; reflexivity.
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0))
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0))
forallfg : X * A -> X * A,
M (funx : X * A => g (f x)) ==
(funx : X => M g (M f x))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0))
forallfg : X * A -> X * A,
M (funx : X * A => g (f x)) ==
(funx : X => M g (M f x))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) f, g: X * A -> X * A x: X
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) f, g: X * A -> X * A x: X
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) f, g: X * A -> X * A x: X
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) f, g: X * A -> X * A x: X
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) f, g: X * A -> X * A x: X
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X
forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X
forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X
forallf : X * A <~> X * A,
(funx : X => fst (f (x, a0))) == idmap -> f == idmap
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap
f == idmap
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x
f == idmap
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A
f == idmap
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A
forallx : X, IsEquiv (g x)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A ge: forallx : X, IsEquiv (g x)
f == idmap
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A
forallx : X, IsEquiv (g x)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A
IsEquiv (functor_sigma idmap g)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A
(funx : {_ : X & A} => f (equiv_sigma_prod0 X A x)) ==
(funx : {_ : X & A} =>
equiv_sigma_prod0 X A (functor_sigma idmap g x))
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A x: X a: A
f (x, a) = (x, g x a)
apply path_prod; [ apply fh | reflexivity ].
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A ge: forallx : X, IsEquiv (g x)
f == idmap
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A ge: forallx : X, IsEquiv (g x) x: X a: A
f (x, a) = (x, a)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A ge: forallx : X, IsEquiv (g x) x: X a: A gisid:= path_aut_rigid
{| equiv_fun := g x; equiv_isequiv := ge x |}
1: {| equiv_fun := g x; equiv_isequiv := ge x |} ==
1%equiv
f (x, a) = (x, a)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A ge: forallx : X, IsEquiv (g x) x: X a: A gisid:= path_aut_rigid
{| equiv_fun := g x; equiv_isequiv := ge x |}
1: {| equiv_fun := g x; equiv_isequiv := ge x |} ==
1%equiv
fst (f (x, a)) = fst (x, a)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A ge: forallx : X, IsEquiv (g x) x: X a: A gisid:= path_aut_rigid
{| equiv_fun := g x; equiv_isequiv := ge x |}
1: {| equiv_fun := g x; equiv_isequiv := ge x |} ==
1%equiv
snd (f (x, a)) = snd (x, a)
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A ge: forallx : X, IsEquiv (g x) x: X a: A gisid:= path_aut_rigid
{| equiv_fun := g x; equiv_isequiv := ge x |}
1: {| equiv_fun := g x; equiv_isequiv := ge x |} ==
1%equiv
fst (f (x, a)) = fst (x, a)
apply fh.
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X f: X * A <~> X * A p: (funx : X => fst (f (x, a0))) == idmap fh:= fun (x : X) (a : A) => MH a f x @ p x: forall (x : X) (a : A), fst (f (x, a)) = x g:= fun (x : X) (a : A) => snd (f (x, a)): X -> A -> A ge: forallx : X, IsEquiv (g x) x: X a: A gisid:= path_aut_rigid
{| equiv_fun := g x; equiv_isequiv := ge x |}
1: {| equiv_fun := g x; equiv_isequiv := ge x |} ==
1%equiv
snd (f (x, a)) = snd (x, a)
apply gisid.
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv
forallfg : X * A <~> X * A, M' f == M' g -> f == g
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv Minj: forallfg : X * A <~> X * A,
M' f == M' g -> f == g
IsEquiv L
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv
forallfg : X * A <~> X * A, M' f == M' g -> f == g
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv f, g: X * A <~> X * A p: M' f == M' g z: X * A
f z = g z
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv f, g: X * A <~> X * A p: M' f == M' g z: X * A
g^-1 (f z) = z
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv f, g: X * A <~> X * A p: M' f == M' g
forallz : X * A, g^-1 (f z) = z
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv f, g: X * A <~> X * A p: M' f == M' g
M' (g^-1 oE f) == 1%equiv
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv f, g: X * A <~> X * A p: M' f == M' g x: X
M' (g^-1 oE f) x = 1%equiv x
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv f, g: X * A <~> X * A p: M' f == M' g x: X
M g^-1 (M f x) = 1%equiv x
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv f, g: X * A <~> X * A p: M' f == M' g x: X
(M' g)^-1 (M f x) = x
apply moveR_equiv_V, p.
H: Univalence X, A: Type n: trunc_index IsTrunc0: IsTrunc n.+1 X H0: IsRigid A H1: IsConnected (Tr n.+1) A L:= fune : point (BAut X) <~> point (BAut X) =>
equiv_functor_prod_r e: point (BAut X) <~> point (BAut X) ->
point (BAut X) * A <~> point (BAut X) * A a0: A M:= fun (f : X * A -> X * A) (x : X) => fst (f (x, a0)): (X * A -> X * A) -> X -> X MH: forall (a : A) (f : X * A -> X * A)
(x : X), fst (f (x, a)) = fst (f (x, a0)) MC: forallfg : X * A -> X * A,
M (g o f) == M g o M f M':= aut_homomorphism_end M (funx : X => 1) MC: X * A <~> X * A -> X <~> X Mker: forallf : X * A <~> X * A,
M' f == 1%equiv -> f == 1%equiv Minj: forallfg : X * A <~> X * A,
M' f == M' g -> f == g