--------------------------------------------------------------------------------
Ettore Aldrovandi ealdrovandi@fsu.edu
Keri D'Angelo kd349@cornell.edu
June 2022
--------------------------------------------------------------------------------
If X is a set, Aut X, defined in UF-Equiv, is a group.
We assume functional extensionality at level ๐ค.
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import Groups.Type renaming (_โ
_ to _โฃ_)
open import MLTT.Spartan
open import UF.Base hiding (_โ_)
open import UF.Equiv
open import UF.Equiv-FunExt
open import UF.FunExt
open import UF.Sets
open import UF.Sets-Properties
open import UF.Subsingletons-Properties
module Groups.Aut where
\end{code}
In the group structure below the definition matches that of function
composition. This notation is used in UF.Equiv.
Note, however, that writing the variables this way introduces an
"opposite" operation. We define it formally in Groups.Opposite and we
must take it into account whenever using this group structure on
Aut(X).
\begin{code}
module _ (fe : funext ๐ค ๐ค) (X : ๐ค ฬ )(i : is-set X) where
is-set-Aut : is-set (Aut X)
is-set-Aut = ฮฃ-is-set
(ฮ -is-set fe (ฮป _ โ i))
ฮป f โ props-are-sets (being-equiv-is-prop'' fe f)
group-structure-Aut : Aut X โ Aut X โ Aut X
group-structure-Aut f g = f โ g
private
_ยท_ = group-structure-Aut
\end{code}
In the following proof of the group axioms, the associativity proof
reproduces that of โ-assoc in UF-Equiv-FunExt, instead of calling
โ-assoc directly, because the latter uses FunExt and we use funext ๐ค ๐ค
here. Similarly for the proof of the inverse, which reproduces those
of โ-sym-is-linv and โ-sym-is-rinv.
In both cases the key is to use being-equiv-is-prop'' in place of
being-equiv-is-prop.
\begin{code}
group-axioms-Aut : group-axioms (Aut X) _ยท_
group-axioms-Aut = is-set-Aut , assoc-Aut , e , ln-e , rn-e , ฯ
where
assoc-Aut : associative _ยท_
assoc-Aut (f , i) (g , j) (h , k) = to-ฮฃ-๏ผ (p , q)
where
p : (h โ g) โ f ๏ผ h โ (g โ f)
p = refl
d e : is-equiv (h โ g โ f)
d = โ-is-equiv i (โ-is-equiv j k)
e = โ-is-equiv (โ-is-equiv i j) k
q : transport is-equiv p e ๏ผ d
q = being-equiv-is-prop'' fe (h โ g โ f) _ _
e : Aut X
e = id , id-is-equiv X
ln-e : left-neutral e _ยท_
ln-e = ฮป f โ โ-refl-left' fe fe fe f
rn-e : right-neutral e _ยท_
rn-e = ฮป f โ โ-refl-right' fe fe fe f
ฯ : (f : Aut X)
โ (ฮฃ f' ๊ Aut X , (f' ยท f ๏ผ e) ร (f ยท f' ๏ผ e))
prโ (ฯ f) = โ-sym f
prโ (prโ (ฯ (โฃfโฃ , is))) = to-ฮฃ-๏ผ (p , being-equiv-is-prop'' fe _ _ _)
where
p : โฃfโฃ โ inverse โฃfโฃ is ๏ผ id
p = dfunext fe (inverses-are-sections โฃfโฃ is)
prโ (prโ (ฯ (โฃfโฃ , is))) = to-ฮฃ-๏ผ (p , being-equiv-is-prop'' fe _ _ _)
where
p : inverse โฃfโฃ is โ โฃfโฃ ๏ผ id
p = dfunext fe (inverses-are-retractions โฃfโฃ is)
Group-structure-Aut : Group-structure (Aut X)
Group-structure-Aut = _ยท_ , group-axioms-Aut
๐ธut : Group ๐ค
๐ธut = Aut X , Group-structure-Aut
\end{code}
If ฯ is an equivalence between X and Y, then it induces a morphism
from Aut X to Aut Y.
\begin{code}
๐ut : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ Aut X โ Aut Y
๐ut ฯ = ฮป f โ (โ-sym ฯ โ f ) โ ฯ
\end{code}
This morphism is a homomorphism for the group
structures defined above.
\begin{code}
module _ (fe : FunExt)
(X : ๐ค ฬ )(i : is-set X)
(Y : ๐ฅ ฬ )(j : is-set Y)
(ฯ : X โ Y) where
is-hom-๐ut : is-hom (๐ธut (fe ๐ค ๐ค) X i) (๐ธut (fe ๐ฅ ๐ฅ) Y j) (๐ut ฯ)
is-hom-๐ut {g} {f} = (โ-sym ฯ โ (g โ f )) โ ฯ ๏ผโจ ap (_โ ฯ) (ap (โ-sym ฯ โ_) p) โฉ
(โ-sym ฯ โ ((g โ ฯ) โ (โ-sym ฯ โ f))) โ ฯ ๏ผโจ ap (_โ ฯ) (โ-assoc fe (โ-sym ฯ) (g โ ฯ) (โ-sym ฯ โ f)) โฉ
((โ-sym ฯ โ (g โ ฯ)) โ (โ-sym ฯ โ f)) โ ฯ ๏ผโจ (โ-assoc fe (โ-sym ฯ โ (g โ ฯ)) (โ-sym ฯ โ f) ฯ) โปยน โฉ
(โ-sym ฯ โ (g โ ฯ)) โ ((โ-sym ฯ โ f) โ ฯ) ๏ผโจ ap (_โ ((โ-sym ฯ โ f) โ ฯ)) (โ-assoc fe (โ-sym ฯ) g ฯ) โฉ
((โ-sym ฯ โ g) โ ฯ) โ ((โ-sym ฯ โ f) โ ฯ) โ
where
p = g โ f ๏ผโจ ap (_โ f) (โ-refl-right fe g) โปยน โฉ
(g โ โ-refl X) โ f ๏ผโจ ap (_โ f) (ap (g โ_) (โ-sym-right-inverse fe ฯ) โปยน) โฉ
(g โ (ฯ โ โ-sym ฯ)) โ f ๏ผโจ ap (_โ f) (โ-assoc fe g ฯ (โ-sym ฯ) ) โฉ
((g โ ฯ) โ โ-sym ฯ) โ f ๏ผโจ (โ-assoc fe (g โ ฯ) (โ-sym ฯ) f) โปยน โฉ
(g โ ฯ) โ (โ-sym ฯ โ f) โ
\end{code}