-------------------------------------------------------------------------------- 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}