From 4bfc70aba4ca96e42caf3a734db5bcd2c96a5a71 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Fri, 24 Nov 2023 00:25:16 -0500 Subject: [PATCH] Abelianization (#877) --- .../full-large-subcategories.lagda.md | 21 + .../full-large-subprecategories.lagda.md | 30 + ...able-functors-large-precategories.lagda.md | 2 +- .../full-ideals-commutative-rings.lagda.md | 8 +- ...groups-of-units-commutative-rings.lagda.md | 10 +- ...momorphisms-commutative-semirings.lagda.md | 8 +- .../ideals-commutative-rings.lagda.md | 2 +- ...sections-ideals-commutative-rings.lagda.md | 12 +- .../isomorphisms-commutative-rings.lagda.md | 12 +- .../nilradical-commutative-rings.lagda.md | 2 +- ...-radical-ideals-commutative-rings.lagda.md | 2 +- ...products-ideals-commutative-rings.lagda.md | 12 - ...icals-of-ideals-commutative-rings.lagda.md | 8 +- .../integer-fractions.lagda.md | 10 +- .../rational-numbers.lagda.md | 2 +- .../ring-of-integers.lagda.md | 11 +- .../finite-abelian-groups.lagda.md | 12 +- src/finite-algebra/finite-groups.lagda.md | 4 +- .../alternating-groups.lagda.md | 2 +- ...rtier-delooping-sign-homomorphism.lagda.md | 4 +- .../delooping-sign-homomorphism.lagda.md | 56 +- .../finite-groups.lagda.md | 8 +- .../finite-monoids.lagda.md | 2 +- .../finite-type-groups.lagda.md | 4 +- .../orbits-permutations.lagda.md | 98 +-- .../sign-homomorphism.lagda.md | 2 +- ...mpson-delooping-sign-homomorphism.lagda.md | 94 +- .../subgroups-finite-groups.lagda.md | 34 +- .../equivalence-relations.lagda.md | 198 ++--- src/foundation-core/fibers-of-maps.lagda.md | 12 +- src/foundation.lagda.md | 1 + ...inary-functoriality-set-quotients.lagda.md | 498 +++++------ ...ecting-maps-equivalence-relations.lagda.md | 140 +-- src/foundation/binary-relations.lagda.md | 4 +- .../cartesian-products-set-quotients.lagda.md | 60 +- src/foundation/category-of-sets.lagda.md | 2 +- ...resentatives-equivalence-relation.lagda.md | 12 +- .../commuting-squares-of-maps.lagda.md | 14 +- src/foundation/connected-components.lagda.md | 29 +- src/foundation/decidable-embeddings.lagda.md | 2 +- .../decidable-equivalence-relations.lagda.md | 504 +++++------ ...ective-maps-equivalence-relations.lagda.md | 6 +- src/foundation/epimorphisms.lagda.md | 12 +- src/foundation/equivalence-classes.lagda.md | 70 +- src/foundation/equivalence-relations.lagda.md | 458 +++++----- .../exponents-set-quotients.lagda.md | 540 ++++++------ .../functoriality-set-quotients.lagda.md | 398 ++++----- src/foundation/images-subtypes.lagda.md | 249 +++++- src/foundation/images.lagda.md | 3 + src/foundation/isomorphisms-of-sets.lagda.md | 23 +- src/foundation/iterating-functions.lagda.md | 10 +- src/foundation/mere-equality.lagda.md | 18 +- ...iable-functoriality-set-quotients.lagda.md | 14 +- .../products-equivalence-relations.lagda.md | 42 +- src/foundation/pullbacks-subtypes.lagda.md | 122 +++ ...ecting-maps-equivalence-relations.lagda.md | 134 +-- src/foundation/set-quotients.lagda.md | 74 +- src/foundation/set-truncations.lagda.md | 26 +- src/foundation/sets.lagda.md | 12 +- src/foundation/singleton-induction.lagda.md | 1 + src/foundation/singleton-subtypes.lagda.md | 251 +++++- src/foundation/subtypes.lagda.md | 32 + .../truncation-equivalences.lagda.md | 2 +- src/foundation/type-duality.lagda.md | 53 +- .../uniqueness-set-quotients.lagda.md | 46 +- .../uniqueness-set-truncations.lagda.md | 10 +- src/foundation/uniqueness-truncation.lagda.md | 18 +- .../universal-property-pullbacks.lagda.md | 2 +- .../universal-property-set-quotients.lagda.md | 252 +++--- ...universal-property-set-truncation.lagda.md | 24 +- src/foundation/vectors-set-quotients.lagda.md | 132 +-- src/group-theory.lagda.md | 10 +- src/group-theory/abelian-groups.lagda.md | 288 ++++++- .../abelianization-groups.lagda.md | 460 ++++++++++ ...tion-homomorphisms-abelian-groups.lagda.md | 18 +- .../category-of-abelian-groups.lagda.md | 31 +- src/group-theory/cayleys-theorem.lagda.md | 4 +- src/group-theory/centers-groups.lagda.md | 20 +- src/group-theory/centers-monoids.lagda.md | 8 +- src/group-theory/centers-semigroups.lagda.md | 10 +- .../central-elements-groups.lagda.md | 22 +- .../central-elements-monoids.lagda.md | 6 +- .../central-elements-semigroups.lagda.md | 16 +- .../centralizer-subgroups.lagda.md | 8 +- src/group-theory/commutative-monoids.lagda.md | 20 +- .../commutator-subgroups.lagda.md | 69 +- .../commutators-of-elements-groups.lagda.md | 29 + .../commuting-elements-semigroups.lagda.md | 8 +- ...ngruence-relations-abelian-groups.lagda.md | 15 +- ...nce-relations-commutative-monoids.lagda.md | 30 +- .../congruence-relations-groups.lagda.md | 45 +- .../congruence-relations-monoids.lagda.md | 43 +- .../congruence-relations-semigroups.lagda.md | 64 +- src/group-theory/conjugation.lagda.md | 146 ++-- src/group-theory/cores-monoids.lagda.md | 16 +- src/group-theory/decidable-subgroups.lagda.md | 34 +- src/group-theory/e8-lattice.lagda.md | 2 +- src/group-theory/epimorphisms-groups.lagda.md | 14 +- ...uivalences-concrete-group-actions.lagda.md | 6 +- .../equivalences-group-actions.lagda.md | 400 ++++----- .../equivalences-semigroups.lagda.md | 10 +- src/group-theory/exponents-groups.lagda.md | 2 +- .../free-groups-with-one-generator.lagda.md | 10 +- src/group-theory/full-subgroups.lagda.md | 33 +- src/group-theory/full-subsemigroups.lagda.md | 173 ++++ .../functoriality-quotient-groups.lagda.md | 53 +- .../generating-elements-groups.lagda.md | 9 +- src/group-theory/group-actions.lagda.md | 79 +- src/group-theory/groups.lagda.md | 64 +- .../homomorphisms-abelian-groups.lagda.md | 4 +- .../homomorphisms-concrete-groups.lagda.md | 2 +- ...homomorphisms-generated-subgroups.lagda.md | 229 +++-- .../homomorphisms-group-actions.lagda.md | 299 +++---- ...ps-equipped-with-normal-subgroups.lagda.md | 47 +- .../homomorphisms-groups.lagda.md | 97 +-- .../homomorphisms-monoids.lagda.md | 14 +- .../homomorphisms-semigroups.lagda.md | 23 +- .../images-of-group-homomorphisms.lagda.md | 182 +++- ...images-of-semigroup-homomorphisms.lagda.md | 245 ++++++ ...tiples-of-elements-abelian-groups.lagda.md | 6 +- ...integer-powers-of-elements-groups.lagda.md | 16 +- .../intersections-subgroups-groups.lagda.md | 31 +- .../invertible-elements-monoids.lagda.md | 14 +- .../isomorphisms-abelian-groups.lagda.md | 6 +- .../isomorphisms-group-actions.lagda.md | 146 ++-- src/group-theory/isomorphisms-groups.lagda.md | 6 +- .../isomorphisms-monoids.lagda.md | 4 +- .../isomorphisms-semigroups.lagda.md | 108 +-- ...nels-homomorphisms-abelian-groups.lagda.md | 87 ++ .../kernels-homomorphisms-groups.lagda.md | 135 +++ src/group-theory/kernels.lagda.md | 180 ---- src/group-theory/loop-groups-sets.lagda.md | 84 +- ...uivalences-concrete-group-actions.lagda.md | 8 +- .../mere-equivalences-group-actions.lagda.md | 20 +- src/group-theory/monoid-actions.lagda.md | 98 ++- src/group-theory/monoids.lagda.md | 6 +- .../monomorphisms-concrete-groups.lagda.md | 8 +- .../monomorphisms-groups.lagda.md | 14 +- .../normal-closures-subgroups.lagda.md | 8 +- .../normal-cores-subgroups.lagda.md | 10 +- src/group-theory/normal-subgroups.lagda.md | 60 +- ...al-submonoids-commutative-monoids.lagda.md | 31 +- src/group-theory/normal-submonoids.lagda.md | 33 +- .../normalizer-subgroups.lagda.md | 10 +- .../nullifying-group-homomorphisms.lagda.md | 29 +- .../orbits-concrete-group-actions.lagda.md | 40 + .../orbits-group-actions.lagda.md | 16 +- .../orbits-monoid-actions.lagda.md | 266 +++--- .../orders-of-elements-groups.lagda.md | 2 +- .../powers-of-elements-monoids.lagda.md | 195 ++--- .../precategory-of-group-actions.lagda.md | 65 +- .../principal-group-actions.lagda.md | 10 +- src/group-theory/pullbacks-subgroups.lagda.md | 234 +++++ .../pullbacks-subsemigroups.lagda.md | 160 ++++ .../quotient-groups-concrete-groups.lagda.md | 8 +- src/group-theory/quotient-groups.lagda.md | 313 ++++--- .../quotients-abelian-groups.lagda.md | 48 +- ...nce-relations-commutative-monoids.lagda.md | 23 +- ...ated-congruence-relations-monoids.lagda.md | 22 +- src/group-theory/semigroups.lagda.md | 16 +- ...zer-groups-concrete-group-actions.lagda.md | 10 +- src/group-theory/stabilizer-groups.lagda.md | 10 +- .../subgroups-abelian-groups.lagda.md | 33 +- ...oups-generated-by-elements-groups.lagda.md | 259 ++++-- ...ed-by-families-of-elements-groups.lagda.md | 153 +++- ...roups-generated-by-subsets-groups.lagda.md | 443 +++++++--- src/group-theory/subgroups.lagda.md | 153 ++-- .../submonoids-commutative-monoids.lagda.md | 18 +- src/group-theory/submonoids.lagda.md | 32 +- src/group-theory/subsemigroups.lagda.md | 232 +++-- .../subsets-abelian-groups.lagda.md | 34 +- .../subsets-commutative-monoids.lagda.md | 12 +- src/group-theory/subsets-groups.lagda.md | 22 +- src/group-theory/subsets-monoids.lagda.md | 12 +- src/group-theory/subsets-semigroups.lagda.md | 114 +++ ...ubstitution-functor-group-actions.lagda.md | 206 +++-- .../surjective-group-homomorphisms.lagda.md | 42 +- ...urjective-semigroup-homomorphisms.lagda.md | 65 ++ src/group-theory/symmetric-groups.lagda.md | 36 +- src/group-theory/torsion-free-groups.lagda.md | 2 +- src/group-theory/torsors.lagda.md | 805 +++++++++--------- ...transitive-concrete-group-actions.lagda.md | 18 +- .../transitive-group-actions.lagda.md | 29 +- .../trivial-group-homomorphisms.lagda.md | 2 +- src/group-theory/trivial-subgroups.lagda.md | 27 +- .../wild-representations-monoids.lagda.md | 2 +- .../homomorphisms-higher-groups.lagda.md | 2 +- ...r-multiplication-vectors-on-rings.lagda.md | 8 +- ...ersal-property-lists-wild-monoids.lagda.md | 91 +- src/order-theory.lagda.md | 8 + .../closure-operators-large-locales.lagda.md | 2 +- .../closure-operators-large-posets.lagda.md | 2 +- ...f-galois-connections-large-posets.lagda.md | 116 +++ ...rder-preserving-maps-large-posets.lagda.md | 72 ++ .../galois-connections-large-posets.lagda.md | 506 ++++++++++- .../homomorphisms-large-frames.lagda.md | 8 +- .../homomorphisms-large-locales.lagda.md | 6 +- ...morphisms-large-meet-semilattices.lagda.md | 8 +- .../homomorphisms-large-suplattices.lagda.md | 10 +- .../homomorphisms-meet-semilattices.lagda.md | 2 +- src/order-theory/join-semilattices.lagda.md | 10 +- src/order-theory/large-posets.lagda.md | 4 +- src/order-theory/large-subposets.lagda.md | 46 +- .../lower-sets-large-posets.lagda.md | 79 ++ src/order-theory/meet-semilattices.lagda.md | 10 +- .../nuclei-large-locales.lagda.md | 6 +- ...rder-preserving-maps-large-posets.lagda.md | 228 ++++- ...r-preserving-maps-large-preorders.lagda.md | 189 +++- ...principal-lower-sets-large-posets.lagda.md | 131 +++ ...principal-upper-sets-large-posets.lagda.md | 133 +++ ...e-galois-connections-large-posets.lagda.md | 2 +- ...milarity-of-elements-large-posets.lagda.md | 13 +- ...arity-of-elements-large-preorders.lagda.md | 17 + ...rder-preserving-maps-large-posets.lagda.md | 110 +++ ...r-preserving-maps-large-preorders.lagda.md | 92 ++ .../upper-sets-large-posets.lagda.md | 69 ++ src/reflection/group-solver.lagda.md | 2 +- ...additive-orders-of-elements-rings.lagda.md | 12 +- .../central-elements-semirings.lagda.md | 2 +- .../congruence-relations-rings.lagda.md | 26 +- .../congruence-relations-semirings.lagda.md | 37 +- src/ring-theory/full-ideals-rings.lagda.md | 12 +- .../groups-of-units-rings.lagda.md | 10 +- src/ring-theory/homomorphisms-rings.lagda.md | 10 +- .../homomorphisms-semirings.lagda.md | 22 +- ...ideals-generated-by-subsets-rings.lagda.md | 10 +- src/ring-theory/ideals-rings.lagda.md | 35 +- src/ring-theory/ideals-semirings.lagda.md | 2 +- .../intersections-ideals-rings.lagda.md | 16 +- .../invertible-elements-rings.lagda.md | 2 +- src/ring-theory/isomorphisms-rings.lagda.md | 38 +- .../kernels-of-ring-homomorphisms.lagda.md | 10 +- ...ideals-generated-by-subsets-rings.lagda.md | 10 +- src/ring-theory/localizations-rings.lagda.md | 10 +- src/ring-theory/modules-rings.lagda.md | 30 +- .../nilpotent-elements-rings.lagda.md | 2 +- .../poset-of-ideals-rings.lagda.md | 2 +- .../poset-of-left-ideals-rings.lagda.md | 2 +- .../poset-of-right-ideals-rings.lagda.md | 2 +- ...ideals-generated-by-subsets-rings.lagda.md | 10 +- src/ring-theory/subsets-rings.lagda.md | 4 +- ...along-isomorphisms-abelian-groups.lagda.md | 10 +- src/set-theory/cardinalities.lagda.md | 4 +- .../morphisms-h-spaces.lagda.md | 48 +- .../flattening-lemma-pushouts.lagda.md | 4 +- .../functoriality-loop-spaces.lagda.md | 4 +- .../hatchers-acyclic-type.lagda.md | 2 +- .../powers-of-loops.lagda.md | 2 +- .../pullback-property-pushouts.lagda.md | 2 +- .../pushouts.lagda.md | 4 +- .../tangent-spheres.lagda.md | 2 +- .../universal-property-pushouts.lagda.md | 12 +- .../wedges-of-pointed-types.lagda.md | 2 +- .../binomial-types.lagda.md | 2 +- .../cyclic-finite-types.lagda.md | 8 +- .../decidable-equivalence-relations.lagda.md | 112 +-- ...tations-complete-undirected-graph.lagda.md | 26 +- .../partitions.lagda.md | 10 +- .../pi-finite-types.lagda.md | 4 +- .../quotients-finite-types.lagda.md | 18 +- .../set-quotients-of-index-two.lagda.md | 46 +- .../sigma-decompositions.lagda.md | 12 +- src/universal-algebra/congruences.lagda.md | 18 +- src/universal-algebra/kernels.lagda.md | 17 +- .../quotient-algebras.lagda.md | 32 +- tables/galois-connections.md | 21 +- 266 files changed, 10829 insertions(+), 5637 deletions(-) create mode 100644 src/foundation/pullbacks-subtypes.lagda.md create mode 100644 src/group-theory/abelianization-groups.lagda.md create mode 100644 src/group-theory/full-subsemigroups.lagda.md create mode 100644 src/group-theory/images-of-semigroup-homomorphisms.lagda.md create mode 100644 src/group-theory/kernels-homomorphisms-abelian-groups.lagda.md create mode 100644 src/group-theory/kernels-homomorphisms-groups.lagda.md delete mode 100644 src/group-theory/kernels.lagda.md create mode 100644 src/group-theory/pullbacks-subgroups.lagda.md create mode 100644 src/group-theory/pullbacks-subsemigroups.lagda.md create mode 100644 src/group-theory/subsets-semigroups.lagda.md create mode 100644 src/group-theory/surjective-semigroup-homomorphisms.lagda.md create mode 100644 src/order-theory/commuting-squares-of-galois-connections-large-posets.lagda.md create mode 100644 src/order-theory/commuting-squares-of-order-preserving-maps-large-posets.lagda.md create mode 100644 src/order-theory/lower-sets-large-posets.lagda.md create mode 100644 src/order-theory/principal-lower-sets-large-posets.lagda.md create mode 100644 src/order-theory/principal-upper-sets-large-posets.lagda.md create mode 100644 src/order-theory/similarity-of-order-preserving-maps-large-posets.lagda.md create mode 100644 src/order-theory/similarity-of-order-preserving-maps-large-preorders.lagda.md create mode 100644 src/order-theory/upper-sets-large-posets.lagda.md diff --git a/src/category-theory/full-large-subcategories.lagda.md b/src/category-theory/full-large-subcategories.lagda.md index 42b4cab605..994af8dd3e 100644 --- a/src/category-theory/full-large-subcategories.lagda.md +++ b/src/category-theory/full-large-subcategories.lagda.md @@ -8,6 +8,7 @@ module category-theory.full-large-subcategories where ```agda open import category-theory.full-large-subprecategories +open import category-theory.functors-large-categories open import category-theory.large-categories open import category-theory.large-precategories @@ -203,3 +204,23 @@ module _ large-category-Full-Large-Subcategory = is-large-category-Full-Large-Subcategory ``` + +### The forgetful functor from a full large subcategory to the ambient large category + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} {γ : Level → Level} + (C : Large-Category α β) + (P : Full-Large-Subcategory γ C) + where + + forgetful-functor-Full-Large-Subcategory : + functor-Large-Category + ( λ l → l) + ( large-category-Full-Large-Subcategory C P) + ( C) + forgetful-functor-Full-Large-Subcategory = + forgetful-functor-Full-Large-Subprecategory + ( large-precategory-Large-Category C) + ( P) +``` diff --git a/src/category-theory/full-large-subprecategories.lagda.md b/src/category-theory/full-large-subprecategories.lagda.md index a4fb116953..791252d084 100644 --- a/src/category-theory/full-large-subprecategories.lagda.md +++ b/src/category-theory/full-large-subprecategories.lagda.md @@ -7,11 +7,13 @@ module category-theory.full-large-subprecategories where
Imports ```agda +open import category-theory.functors-large-precategories open import category-theory.isomorphisms-in-large-categories open import category-theory.isomorphisms-in-large-precategories open import category-theory.large-categories open import category-theory.large-precategories +open import foundation.function-types open import foundation.fundamental-theorem-of-identity-types open import foundation.identity-types open import foundation.propositions @@ -190,6 +192,34 @@ module _ iso-eq-Large-Precategory large-precategory-Full-Large-Subprecategory ``` +### The forgetful functor from a full large subprecategory to the ambient large precategory + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} {γ : Level → Level} + (C : Large-Precategory α β) + (P : Full-Large-Subprecategory γ C) + where + + forgetful-functor-Full-Large-Subprecategory : + functor-Large-Precategory + ( λ l → l) + ( large-precategory-Full-Large-Subprecategory C P) + ( C) + obj-functor-Large-Precategory + forgetful-functor-Full-Large-Subprecategory = + inclusion-subtype P + hom-functor-Large-Precategory + forgetful-functor-Full-Large-Subprecategory = + id + preserves-comp-functor-Large-Precategory + forgetful-functor-Full-Large-Subprecategory g f = + refl + preserves-id-functor-Large-Precategory + forgetful-functor-Full-Large-Subprecategory = + refl +``` + ## Properties ### A full large subprecategory of a large category is a large category diff --git a/src/category-theory/representable-functors-large-precategories.lagda.md b/src/category-theory/representable-functors-large-precategories.lagda.md index 338e1aa28e..0e68784d6f 100644 --- a/src/category-theory/representable-functors-large-precategories.lagda.md +++ b/src/category-theory/representable-functors-large-precategories.lagda.md @@ -55,7 +55,7 @@ module _ {l2 l3 : Level} {X : obj-Large-Precategory C l2} {Y : obj-Large-Precategory C l3} → hom-Large-Precategory C X Y → - type-hom-Set + hom-Set ( obj-representable-functor-Large-Precategory X) ( obj-representable-functor-Large-Precategory Y) hom-representable-functor-Large-Precategory = diff --git a/src/commutative-algebra/full-ideals-commutative-rings.lagda.md b/src/commutative-algebra/full-ideals-commutative-rings.lagda.md index 2144dfb340..74e4efd94e 100644 --- a/src/commutative-algebra/full-ideals-commutative-rings.lagda.md +++ b/src/commutative-algebra/full-ideals-commutative-rings.lagda.md @@ -79,14 +79,14 @@ module _ is-closed-under-addition-full-ideal-Commutative-Ring : is-closed-under-addition-subset-Commutative-Ring A subset-full-ideal-Commutative-Ring - is-closed-under-addition-full-ideal-Commutative-Ring = - is-closed-under-addition-full-ideal-Ring (ring-Commutative-Ring A) + is-closed-under-addition-full-ideal-Commutative-Ring {x} {y} = + is-closed-under-addition-full-ideal-Ring (ring-Commutative-Ring A) {x} {y} is-closed-under-negatives-full-ideal-Commutative-Ring : is-closed-under-negatives-subset-Commutative-Ring A subset-full-ideal-Commutative-Ring - is-closed-under-negatives-full-ideal-Commutative-Ring = - is-closed-under-negatives-full-ideal-Ring (ring-Commutative-Ring A) + is-closed-under-negatives-full-ideal-Commutative-Ring {x} = + is-closed-under-negatives-full-ideal-Ring (ring-Commutative-Ring A) {x} is-additive-subgroup-full-ideal-Commutative-Ring : is-additive-subgroup-subset-Commutative-Ring A diff --git a/src/commutative-algebra/groups-of-units-commutative-rings.lagda.md b/src/commutative-algebra/groups-of-units-commutative-rings.lagda.md index c0959f4d87..50e2a1c68f 100644 --- a/src/commutative-algebra/groups-of-units-commutative-rings.lagda.md +++ b/src/commutative-algebra/groups-of-units-commutative-rings.lagda.md @@ -182,15 +182,17 @@ module _ inclusion-group-of-units-Ring (ring-Commutative-Ring A) preserves-mul-inclusion-group-of-units-Commutative-Ring : - (x y : type-group-of-units-Commutative-Ring) → + {x y : type-group-of-units-Commutative-Ring} → inclusion-group-of-units-Commutative-Ring ( mul-group-of-units-Commutative-Ring x y) = mul-Commutative-Ring A ( inclusion-group-of-units-Commutative-Ring x) ( inclusion-group-of-units-Commutative-Ring y) - preserves-mul-inclusion-group-of-units-Commutative-Ring = + preserves-mul-inclusion-group-of-units-Commutative-Ring {x} {y} = preserves-mul-inclusion-group-of-units-Ring ( ring-Commutative-Ring A) + { x} + { y} hom-inclusion-group-of-units-Commutative-Ring : hom-Monoid monoid-group-of-units-Commutative-Ring @@ -221,7 +223,7 @@ module _ ( f) preserves-mul-hom-group-of-units-hom-Commutative-Ring : - (x y : type-group-of-units-Commutative-Ring A) → + {x y : type-group-of-units-Commutative-Ring A} → map-group-of-units-hom-Commutative-Ring ( mul-group-of-units-Commutative-Ring A x y) = mul-group-of-units-Commutative-Ring B @@ -254,7 +256,7 @@ module _ ( f) preserves-inv-hom-group-of-units-hom-Commutative-Ring : - (x : type-group-of-units-Commutative-Ring A) → + {x : type-group-of-units-Commutative-Ring A} → map-group-of-units-hom-Commutative-Ring ( inv-group-of-units-Commutative-Ring A x) = inv-group-of-units-Commutative-Ring B diff --git a/src/commutative-algebra/homomorphisms-commutative-semirings.lagda.md b/src/commutative-algebra/homomorphisms-commutative-semirings.lagda.md index 8affdd21f9..588c16d0e5 100644 --- a/src/commutative-algebra/homomorphisms-commutative-semirings.lagda.md +++ b/src/commutative-algebra/homomorphisms-commutative-semirings.lagda.md @@ -78,7 +78,7 @@ module _ ( f) preserves-addition-hom-Commutative-Semiring : - (x y : type-Commutative-Semiring A) → + {x y : type-Commutative-Semiring A} → map-hom-Commutative-Semiring (add-Commutative-Semiring A x y) = add-Commutative-Semiring B ( map-hom-Commutative-Semiring x) @@ -99,7 +99,7 @@ module _ ( f) preserves-mul-hom-Commutative-Semiring : - (x y : type-Commutative-Semiring A) → + {x y : type-Commutative-Semiring A} → map-hom-Commutative-Semiring (mul-Commutative-Semiring A x y) = mul-Commutative-Semiring B ( map-hom-Commutative-Semiring x) @@ -157,7 +157,7 @@ module _ ( semiring-Commutative-Semiring A) preserves-mul-id-hom-Commutative-Semiring : - (x y : type-Commutative-Semiring A) → + {x y : type-Commutative-Semiring A} → mul-Commutative-Semiring A x y = mul-Commutative-Semiring A x y preserves-mul-id-hom-Commutative-Semiring = preserves-mul-id-hom-Semiring (semiring-Commutative-Semiring A) @@ -219,7 +219,7 @@ module _ ( f) preserves-mul-comp-hom-Commutative-Semiring : - (x y : type-Commutative-Semiring A) → + {x y : type-Commutative-Semiring A} → map-comp-hom-Commutative-Semiring (mul-Commutative-Semiring A x y) = mul-Commutative-Semiring C ( map-comp-hom-Commutative-Semiring x) diff --git a/src/commutative-algebra/ideals-commutative-rings.lagda.md b/src/commutative-algebra/ideals-commutative-rings.lagda.md index af93f0885a..edc20bbd8c 100644 --- a/src/commutative-algebra/ideals-commutative-rings.lagda.md +++ b/src/commutative-algebra/ideals-commutative-rings.lagda.md @@ -140,7 +140,7 @@ module _ is-in-ideal-Commutative-Ring x → is-in-ideal-Commutative-Ring (neg-Commutative-Ring R x) is-closed-under-negatives-ideal-Commutative-Ring = - pr2 (pr2 is-additive-subgroup-ideal-Commutative-Ring) _ + pr2 (pr2 is-additive-subgroup-ideal-Commutative-Ring) is-closed-under-left-multiplication-ideal-Commutative-Ring : is-closed-under-left-multiplication-subset-Commutative-Ring R diff --git a/src/commutative-algebra/intersections-ideals-commutative-rings.lagda.md b/src/commutative-algebra/intersections-ideals-commutative-rings.lagda.md index 0a8897e9f7..6846baf280 100644 --- a/src/commutative-algebra/intersections-ideals-commutative-rings.lagda.md +++ b/src/commutative-algebra/intersections-ideals-commutative-rings.lagda.md @@ -81,25 +81,25 @@ module _ is-closed-under-addition-subset-Commutative-Ring R ( subset-intersection-ideal-Commutative-Ring) pr1 - ( is-closed-under-addition-intersection-ideal-Commutative-Ring x y + ( is-closed-under-addition-intersection-ideal-Commutative-Ring ( H1 , H2) ( K1 , K2)) = - is-closed-under-addition-ideal-Commutative-Ring R I x y H1 K1 + is-closed-under-addition-ideal-Commutative-Ring R I H1 K1 pr2 - ( is-closed-under-addition-intersection-ideal-Commutative-Ring x y + ( is-closed-under-addition-intersection-ideal-Commutative-Ring ( H1 , H2) ( K1 , K2)) = - is-closed-under-addition-ideal-Commutative-Ring R J x y H2 K2 + is-closed-under-addition-ideal-Commutative-Ring R J H2 K2 is-closed-under-negatives-intersection-ideal-Commutative-Ring : is-closed-under-negatives-subset-Commutative-Ring R ( subset-intersection-ideal-Commutative-Ring) pr1 - ( is-closed-under-negatives-intersection-ideal-Commutative-Ring x + ( is-closed-under-negatives-intersection-ideal-Commutative-Ring ( H1 , H2)) = is-closed-under-negatives-ideal-Commutative-Ring R I H1 pr2 - ( is-closed-under-negatives-intersection-ideal-Commutative-Ring x + ( is-closed-under-negatives-intersection-ideal-Commutative-Ring ( H1 , H2)) = is-closed-under-negatives-ideal-Commutative-Ring R J H2 diff --git a/src/commutative-algebra/isomorphisms-commutative-rings.lagda.md b/src/commutative-algebra/isomorphisms-commutative-rings.lagda.md index 4dcfdf3c35..b18dd2fd9b 100644 --- a/src/commutative-algebra/isomorphisms-commutative-rings.lagda.md +++ b/src/commutative-algebra/isomorphisms-commutative-rings.lagda.md @@ -172,7 +172,7 @@ module _ ( ring-Commutative-Ring B) preserves-add-iso-Commutative-Ring : - (f : iso-Commutative-Ring) (x y : type-Commutative-Ring A) → + (f : iso-Commutative-Ring) {x y : type-Commutative-Ring A} → map-iso-Commutative-Ring f (add-Commutative-Ring A x y) = add-Commutative-Ring B ( map-iso-Commutative-Ring f x) @@ -183,7 +183,7 @@ module _ ( ring-Commutative-Ring B) preserves-neg-iso-Commutative-Ring : - (f : iso-Commutative-Ring) (x : type-Commutative-Ring A) → + (f : iso-Commutative-Ring) {x : type-Commutative-Ring A} → map-iso-Commutative-Ring f (neg-Commutative-Ring A x) = neg-Commutative-Ring B (map-iso-Commutative-Ring f x) preserves-neg-iso-Commutative-Ring = @@ -192,7 +192,7 @@ module _ ( ring-Commutative-Ring B) preserves-mul-iso-Commutative-Ring : - (f : iso-Commutative-Ring) (x y : type-Commutative-Ring A) → + (f : iso-Commutative-Ring) {x y : type-Commutative-Ring A} → map-iso-Commutative-Ring f (mul-Commutative-Ring A x y) = mul-Commutative-Ring B ( map-iso-Commutative-Ring f x) @@ -243,7 +243,7 @@ module _ ( ring-Commutative-Ring B) preserves-add-inv-iso-Commutative-Ring : - (f : iso-Commutative-Ring) (x y : type-Commutative-Ring B) → + (f : iso-Commutative-Ring) {x y : type-Commutative-Ring B} → map-inv-iso-Commutative-Ring f (add-Commutative-Ring B x y) = add-Commutative-Ring A ( map-inv-iso-Commutative-Ring f x) @@ -254,7 +254,7 @@ module _ ( ring-Commutative-Ring B) preserves-neg-inv-iso-Commutative-Ring : - (f : iso-Commutative-Ring) (x : type-Commutative-Ring B) → + (f : iso-Commutative-Ring) {x : type-Commutative-Ring B} → map-inv-iso-Commutative-Ring f (neg-Commutative-Ring B x) = neg-Commutative-Ring A (map-inv-iso-Commutative-Ring f x) preserves-neg-inv-iso-Commutative-Ring = @@ -263,7 +263,7 @@ module _ ( ring-Commutative-Ring B) preserves-mul-inv-iso-Commutative-Ring : - (f : iso-Commutative-Ring) (x y : type-Commutative-Ring B) → + (f : iso-Commutative-Ring) {x y : type-Commutative-Ring B} → map-inv-iso-Commutative-Ring f (mul-Commutative-Ring B x y) = mul-Commutative-Ring A ( map-inv-iso-Commutative-Ring f x) diff --git a/src/commutative-algebra/nilradical-commutative-rings.lagda.md b/src/commutative-algebra/nilradical-commutative-rings.lagda.md index d3b9a36602..8acddc3744 100644 --- a/src/commutative-algebra/nilradical-commutative-rings.lagda.md +++ b/src/commutative-algebra/nilradical-commutative-rings.lagda.md @@ -59,7 +59,7 @@ is-closed-under-addition-nilradical-Commutative-Ring : {l : Level} (A : Commutative-Ring l) → is-closed-under-addition-subset-Commutative-Ring A ( subset-nilradical-Commutative-Ring A) -is-closed-under-addition-nilradical-Commutative-Ring A x y = +is-closed-under-addition-nilradical-Commutative-Ring A {x} {y} = is-nilpotent-add-Ring ( ring-Commutative-Ring A) ( x) diff --git a/src/commutative-algebra/poset-of-radical-ideals-commutative-rings.lagda.md b/src/commutative-algebra/poset-of-radical-ideals-commutative-rings.lagda.md index 462aa0a5f4..810981502b 100644 --- a/src/commutative-algebra/poset-of-radical-ideals-commutative-rings.lagda.md +++ b/src/commutative-algebra/poset-of-radical-ideals-commutative-rings.lagda.md @@ -180,7 +180,7 @@ module _ preserves-order-ideal-radical-ideal-Commutative-Ring I J H = H ideal-radical-ideal-hom-large-poset-Commutative-Ring : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( radical-ideal-Commutative-Ring-Large-Poset A) ( ideal-Commutative-Ring-Large-Poset A) diff --git a/src/commutative-algebra/products-ideals-commutative-rings.lagda.md b/src/commutative-algebra/products-ideals-commutative-rings.lagda.md index 9b7ddaf07d..9e1a2d1173 100644 --- a/src/commutative-algebra/products-ideals-commutative-rings.lagda.md +++ b/src/commutative-algebra/products-ideals-commutative-rings.lagda.md @@ -227,8 +227,6 @@ module _ ( product-subset-Commutative-Ring A S T) ( is-closed-under-addition-ideal-subset-Commutative-Ring A ( product-subset-Commutative-Ring A S T) - ( _) - ( _) ( is-closed-under-eq-ideal-subset-Commutative-Ring' A ( product-subset-Commutative-Ring A S T) ( is-closed-under-right-multiplication-ideal-Commutative-Ring A @@ -276,8 +274,6 @@ module _ ( product-subset-Commutative-Ring A S T) ( is-closed-under-addition-ideal-subset-Commutative-Ring A ( product-subset-Commutative-Ring A S T) - ( _) - ( _) ( is-closed-under-eq-ideal-subset-Commutative-Ring' A ( product-subset-Commutative-Ring A S T) ( is-closed-under-right-multiplication-ideal-Commutative-Ring A @@ -329,14 +325,8 @@ module _ ( product-subset-Commutative-Ring A S T) ( is-closed-under-addition-ideal-subset-Commutative-Ring A ( product-subset-Commutative-Ring A S T) - ( add-Commutative-Ring A _ _) - ( add-Commutative-Ring A _ _) ( is-closed-under-addition-ideal-subset-Commutative-Ring A ( product-subset-Commutative-Ring A S T) - ( mul-Commutative-Ring A _ _) - ( mul-Commutative-Ring A - ( mul-Commutative-Ring A _ _) - ( ev-formal-combination-subset-Commutative-Ring A T l)) ( is-closed-under-eq-ideal-subset-Commutative-Ring' A ( product-subset-Commutative-Ring A S T) ( is-closed-under-right-multiplication-ideal-Commutative-Ring A @@ -361,8 +351,6 @@ module _ Hs l)) ( is-closed-under-addition-ideal-subset-Commutative-Ring A ( product-subset-Commutative-Ring A S T) - ( _) - ( _) ( right-backward-inclusion-preserves-product-ideal-subset-Commutative-Ring Ht k) ( backward-inclusion-preserves-product-ideal-subset-Commutative-Ring' diff --git a/src/commutative-algebra/radicals-of-ideals-commutative-rings.lagda.md b/src/commutative-algebra/radicals-of-ideals-commutative-rings.lagda.md index 7fc1083b49..1f3b79b999 100644 --- a/src/commutative-algebra/radicals-of-ideals-commutative-rings.lagda.md +++ b/src/commutative-algebra/radicals-of-ideals-commutative-rings.lagda.md @@ -106,7 +106,7 @@ module _ is-closed-under-addition-radical-of-ideal-Commutative-Ring : is-closed-under-addition-subset-Commutative-Ring A ( subset-radical-of-ideal-Commutative-Ring) - is-closed-under-addition-radical-of-ideal-Commutative-Ring x y H K = + is-closed-under-addition-radical-of-ideal-Commutative-Ring {x} {y} H K = apply-universal-property-trunc-Prop H ( subset-radical-of-ideal-Commutative-Ring (add-Commutative-Ring A x y)) ( λ (n , p) → @@ -117,7 +117,7 @@ module _ intro-∃ ( n +ℕ m) ( is-closed-under-eq-ideal-Commutative-Ring' A I - ( is-closed-under-addition-ideal-Commutative-Ring A I _ _ + ( is-closed-under-addition-ideal-Commutative-Ring A I ( is-closed-under-right-multiplication-ideal-Commutative-Ring ( A) ( I) @@ -135,7 +135,7 @@ module _ is-closed-under-negatives-radical-of-ideal-Commutative-Ring : is-closed-under-negatives-subset-Commutative-Ring A ( subset-radical-of-ideal-Commutative-Ring) - is-closed-under-negatives-radical-of-ideal-Commutative-Ring x H = + is-closed-under-negatives-radical-of-ideal-Commutative-Ring {x} H = apply-universal-property-trunc-Prop H ( subset-radical-of-ideal-Commutative-Ring (neg-Commutative-Ring A x)) ( λ (n , p) → @@ -238,7 +238,7 @@ module _ ( H)) radical-of-ideal-hom-large-poset-Commutative-Ring : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( ideal-Commutative-Ring-Large-Poset A) ( radical-ideal-Commutative-Ring-Large-Poset A) diff --git a/src/elementary-number-theory/integer-fractions.lagda.md b/src/elementary-number-theory/integer-fractions.lagda.md index 75ea058f27..dbfd368c78 100644 --- a/src/elementary-number-theory/integer-fractions.lagda.md +++ b/src/elementary-number-theory/integer-fractions.lagda.md @@ -184,11 +184,11 @@ transitive-sim-fraction-ℤ x y z s r = ( denominator-fraction-ℤ x) ( denominator-fraction-ℤ y))))))))))))) -eq-rel-sim-fraction-ℤ : Equivalence-Relation lzero fraction-ℤ -pr1 eq-rel-sim-fraction-ℤ = sim-fraction-ℤ-Prop -pr1 (pr2 eq-rel-sim-fraction-ℤ) = refl-sim-fraction-ℤ -pr1 (pr2 (pr2 eq-rel-sim-fraction-ℤ)) = symmetric-sim-fraction-ℤ -pr2 (pr2 (pr2 eq-rel-sim-fraction-ℤ)) = transitive-sim-fraction-ℤ +equivalence-relation-sim-fraction-ℤ : equivalence-relation lzero fraction-ℤ +pr1 equivalence-relation-sim-fraction-ℤ = sim-fraction-ℤ-Prop +pr1 (pr2 equivalence-relation-sim-fraction-ℤ) = refl-sim-fraction-ℤ +pr1 (pr2 (pr2 equivalence-relation-sim-fraction-ℤ)) = symmetric-sim-fraction-ℤ +pr2 (pr2 (pr2 equivalence-relation-sim-fraction-ℤ)) = transitive-sim-fraction-ℤ ``` ### The greatest common divisor of the numerator and a denominator of a fraction is always a positive integer diff --git a/src/elementary-number-theory/rational-numbers.lagda.md b/src/elementary-number-theory/rational-numbers.lagda.md index 554e77fa0b..00c52582bc 100644 --- a/src/elementary-number-theory/rational-numbers.lagda.md +++ b/src/elementary-number-theory/rational-numbers.lagda.md @@ -129,7 +129,7 @@ in-fraction-fraction-ℚ (pair (pair m (pair n n-pos)) p) = ```agda reflecting-map-sim-fraction : - reflecting-map-Equivalence-Relation eq-rel-sim-fraction-ℤ ℚ + reflecting-map-equivalence-relation equivalence-relation-sim-fraction-ℤ ℚ pr1 reflecting-map-sim-fraction = in-fraction-ℤ pr2 reflecting-map-sim-fraction {x} {y} H = eq-ℚ-sim-fractions-ℤ x y H ``` diff --git a/src/elementary-number-theory/ring-of-integers.lagda.md b/src/elementary-number-theory/ring-of-integers.lagda.md index d54a1644e3..f0ae594927 100644 --- a/src/elementary-number-theory/ring-of-integers.lagda.md +++ b/src/elementary-number-theory/ring-of-integers.lagda.md @@ -107,8 +107,13 @@ module _ (k l : ℤ) → map-initial-hom-Ring (add-ℤ k l) = add-Ring R (map-initial-hom-Ring k) (map-initial-hom-Ring l) - preserves-add-initial-hom-Ring = - preserves-mul-hom-Group ℤ-Group (group-Ring R) hom-group-initial-hom-Ring + preserves-add-initial-hom-Ring k l = + preserves-mul-hom-Group + ( ℤ-Group) + ( group-Ring R) + ( hom-group-initial-hom-Ring) + { k} + { l} preserves-one-initial-hom-Ring : map-initial-hom-Ring one-ℤ = one-Ring R preserves-one-initial-hom-Ring = integer-multiple-one-Ring R (one-Ring R) @@ -125,7 +130,7 @@ module _ initial-hom-Ring : hom-Ring ℤ-Ring R pr1 initial-hom-Ring = hom-group-initial-hom-Ring - pr1 (pr2 initial-hom-Ring) = preserves-mul-initial-hom-Ring + pr1 (pr2 initial-hom-Ring) {x} {y} = preserves-mul-initial-hom-Ring x y pr2 (pr2 initial-hom-Ring) = preserves-one-initial-hom-Ring ``` diff --git a/src/finite-algebra/finite-abelian-groups.lagda.md b/src/finite-algebra/finite-abelian-groups.lagda.md index 4744dc2d47..9b41ae19dc 100644 --- a/src/finite-algebra/finite-abelian-groups.lagda.md +++ b/src/finite-algebra/finite-abelian-groups.lagda.md @@ -39,16 +39,16 @@ Abelian groups are groups of which the group operation is commutative ### The condition of being an abelian group ```agda -is-abelian-group-Prop-𝔽 : {l : Level} → Group-𝔽 l → Prop l -is-abelian-group-Prop-𝔽 G = is-abelian-group-Prop (group-Group-𝔽 G) +is-abelian-prop-Group-𝔽 : {l : Level} → Group-𝔽 l → Prop l +is-abelian-prop-Group-𝔽 G = is-abelian-prop-Group (group-Group-𝔽 G) is-abelian-Group-𝔽 : {l : Level} → Group-𝔽 l → UU l -is-abelian-Group-𝔽 G = type-Prop (is-abelian-group-Prop-𝔽 G) +is-abelian-Group-𝔽 G = type-Prop (is-abelian-prop-Group-𝔽 G) is-prop-is-abelian-Group-𝔽 : {l : Level} (G : Group-𝔽 l) → is-prop (is-abelian-Group-𝔽 G) is-prop-is-abelian-Group-𝔽 G = - is-prop-type-Prop (is-abelian-group-Prop-𝔽 G) + is-prop-type-Prop (is-abelian-prop-Group-𝔽 G) ``` ### The type of abelian groups @@ -129,8 +129,8 @@ module _ is-prop-is-zero-Ab-𝔽 : (x : type-Ab-𝔽) → is-prop (is-zero-Ab-𝔽 x) is-prop-is-zero-Ab-𝔽 = is-prop-is-unit-Group group-Ab-𝔽 - is-zero-finite-ab-Prop : type-Ab-𝔽 → Prop l - is-zero-finite-ab-Prop = is-unit-group-Prop group-Ab-𝔽 + is-zero-prop-Ab-𝔽 : type-Ab-𝔽 → Prop l + is-zero-prop-Ab-𝔽 = is-unit-prop-Group group-Ab-𝔽 left-unit-law-add-Ab-𝔽 : (x : type-Ab-𝔽) → add-Ab-𝔽 zero-Ab-𝔽 x = x left-unit-law-add-Ab-𝔽 = left-unit-law-mul-Group group-Ab-𝔽 diff --git a/src/finite-algebra/finite-groups.lagda.md b/src/finite-algebra/finite-groups.lagda.md index 96f0fff13a..60fae23a80 100644 --- a/src/finite-algebra/finite-groups.lagda.md +++ b/src/finite-algebra/finite-groups.lagda.md @@ -141,8 +141,8 @@ module _ is-prop-is-unit-Group-𝔽 : (x : type-Group-𝔽) → is-prop (is-unit-Group-𝔽 x) is-prop-is-unit-Group-𝔽 = is-prop-is-unit-Group group-Group-𝔽 - is-unit-finite-group-Prop : type-Group-𝔽 → Prop l - is-unit-finite-group-Prop = is-unit-group-Prop group-Group-𝔽 + is-unit-prop-Group-𝔽 : type-Group-𝔽 → Prop l + is-unit-prop-Group-𝔽 = is-unit-prop-Group group-Group-𝔽 left-unit-law-mul-Group-𝔽 : (x : type-Group-𝔽) → Id (mul-Group-𝔽 unit-Group-𝔽 x) x diff --git a/src/finite-group-theory/alternating-groups.lagda.md b/src/finite-group-theory/alternating-groups.lagda.md index fbf99f86b6..0feef83eb7 100644 --- a/src/finite-group-theory/alternating-groups.lagda.md +++ b/src/finite-group-theory/alternating-groups.lagda.md @@ -12,7 +12,7 @@ open import elementary-number-theory.natural-numbers open import finite-group-theory.sign-homomorphism open import group-theory.groups -open import group-theory.kernels +open import group-theory.kernels-homomorphisms-groups open import group-theory.symmetric-groups open import univalent-combinatorics.finite-types diff --git a/src/finite-group-theory/cartier-delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/cartier-delooping-sign-homomorphism.lagda.md index b8d79226ec..b9c9ba02b5 100644 --- a/src/finite-group-theory/cartier-delooping-sign-homomorphism.lagda.md +++ b/src/finite-group-theory/cartier-delooping-sign-homomorphism.lagda.md @@ -60,7 +60,7 @@ module _ not-even-difference-action-equiv-family-on-subuniverse : (n : ℕ) (Y : 2-Element-Decidable-Subtype l (raise-Fin l (n +ℕ 2))) → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( n +ℕ 2) ( raise-Fin l (n +ℕ 2) , @@ -85,7 +85,7 @@ module _ ( λ f → ( Y : 2-Element-Decidable-Subtype l ( raise-Fin l (n +ℕ 2))) → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( n +ℕ 2) ( raise-Fin l (n +ℕ 2) , diff --git a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md index 5dc0be6bfb..6637a32920 100644 --- a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md +++ b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md @@ -110,10 +110,10 @@ delooping of the sign homomorphism. module _ { l1 l2 l3 : Level} ( D : (n : ℕ) (X : UU-Fin l1 n) → UU l2) - ( R : (n : ℕ) (X : UU-Fin l1 n) → Equivalence-Relation l3 (D n X)) + ( R : (n : ℕ) (X : UU-Fin l1 n) → equivalence-relation l3 (D n X)) ( is-decidable-R : (n : ℕ) → leq-ℕ 2 n → (X : UU-Fin l1 n) - (a b : D n X) → is-decidable (sim-Equivalence-Relation (R n X) a b)) + (a b : D n X) → is-decidable (sim-equivalence-relation (R n X) a b)) ( equiv-D/R-fin-2-equiv : (n : ℕ) (X : UU-Fin l1 n) → leq-ℕ 2 n → Fin n ≃ type-UU-Fin n X → @@ -125,7 +125,7 @@ module _ unit-trunc-Prop (compute-raise-Fin l1 (n +ℕ 2)))) ( not-R-transposition-fin-succ-succ : (n : ℕ) → ( Y : 2-Element-Decidable-Subtype l1 (raise-Fin l1 (n +ℕ 2))) → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( R ( n +ℕ 2) ( raise-Fin l1 (n +ℕ 2) , @@ -183,8 +183,8 @@ module _ ( X X' : UU-Fin l1 n) ( e : type-UU-Fin n X ≃ type-UU-Fin n X') → ( a a' : D n X) → - ( sim-Equivalence-Relation (R n X) a a' ↔ - sim-Equivalence-Relation + ( sim-equivalence-relation (R n X) a a' ↔ + sim-equivalence-relation ( R n X') ( map-equiv (invertible-action-D-equiv n X X' e) a) ( map-equiv (invertible-action-D-equiv n X X' e) a')) @@ -194,14 +194,14 @@ module _ ( X) ( λ Y f → ( a a' : D n X) → - ( sim-Equivalence-Relation (R n X) a a' ↔ - sim-Equivalence-Relation + ( sim-equivalence-relation (R n X) a a' ↔ + sim-equivalence-relation ( R n Y) ( map-equiv (invertible-action-D-equiv n X Y f) a) ( map-equiv (invertible-action-D-equiv n X Y f) a'))) ( λ a a' → ( binary-tr - ( sim-Equivalence-Relation (R n X)) + ( sim-equivalence-relation (R n X)) ( inv ( htpy-eq-equiv ( preserves-id-equiv-invertible-action-D-equiv n X) @@ -211,7 +211,7 @@ module _ ( preserves-id-equiv-invertible-action-D-equiv n X) ( a')))) , ( binary-tr - ( sim-Equivalence-Relation (R n X)) + ( sim-equivalence-relation (R n X)) ( htpy-eq-equiv ( preserves-id-equiv-invertible-action-D-equiv n X) ( a)) @@ -264,7 +264,7 @@ module _ quotient-reflecting-map-quotient-Fin : (n : ℕ) → - reflecting-map-Equivalence-Relation + reflecting-map-equivalence-relation ( R n (raise-UU-Fin-Fin n)) ( type-Set (quotient-set-Fin n)) quotient-reflecting-map-quotient-Fin n = @@ -331,7 +331,7 @@ module _ ( loop-group-Set (raise-Fin-Set l1 (n +ℕ 2))) ( loop-group-Set (quotient-set-Fin (n +ℕ 2))) pr1 (quotient-delooping-sign-loop n) = map-quotient-delooping-sign-loop-Fin n - pr2 (quotient-delooping-sign-loop n) p q = + pr2 (quotient-delooping-sign-loop n) {p} {q} = ( ap ( ap (equivalence-class ∘ R (n +ℕ 2))) ( ap @@ -431,7 +431,7 @@ module _ coherence-square-maps ( map-quotient-loop-Fin n p) ( quotient-map-quotient-Fin (n +ℕ 2)) - ( map-reflecting-map-Equivalence-Relation + ( map-reflecting-map-equivalence-relation ( R (n +ℕ 2) (raise-UU-Fin-Fin (n +ℕ 2))) ( quotient-reflecting-map-quotient-Fin (n +ℕ 2))) ( map-equiv h'))) @@ -485,7 +485,7 @@ module _ ( n : ℕ) → ( h : type-Group (symmetric-Group (raise-Fin-Set l1 (n +ℕ 2)))) → ( is-decidable - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( R (n +ℕ 2) (raise-UU-Fin-Fin (n +ℕ 2))) ( quotient-aut-succ-succ-Fin n h) ( map-equiv @@ -543,7 +543,7 @@ module _ { y = inr (not-R-transposition-fin-succ-succ n Y)} ( eq-is-prop ( is-prop-is-decidable - ( is-prop-sim-Equivalence-Relation + ( is-prop-sim-equivalence-relation ( R (n +ℕ 2) (raise-UU-Fin-Fin (n +ℕ 2))) ( quotient-aut-succ-succ-Fin n (transposition Y)) ( map-equiv @@ -571,7 +571,7 @@ module _ ( n : ℕ) ( p : type-Group (loop-group-Set (raise-Fin-Set l1 (n +ℕ 2)))) ( D : is-decidable - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( R (n +ℕ 2) (raise-UU-Fin-Fin (n +ℕ 2))) ( this-third-thing n p) ( map-quotient-loop-Fin n p (this-third-thing n p)))) → @@ -599,7 +599,7 @@ module _ ( quotient-map-quotient-Fin (n +ℕ 2) ( map-quotient-loop-Fin n p (this-third-thing n p))) cases-eq-map-quotient-aut-Fin n p (inl D) k k' q r = - reflects-map-reflecting-map-Equivalence-Relation + reflects-map-reflecting-map-equivalence-relation ( R (n +ℕ 2) (raise-UU-Fin-Fin (n +ℕ 2))) ( quotient-reflecting-map-quotient-Fin (n +ℕ 2)) ( D) @@ -1530,29 +1530,29 @@ module _ equiv-Q-equivalence-class : (n : ℕ) (X : UU-Fin l1 n) → type-UU-Fin 2 (Q n X) ≃ - equivalence-class (Id-Equivalence-Relation (set-UU-Fin 2 (Q n X))) + equivalence-class (Id-equivalence-relation (set-UU-Fin 2 (Q n X))) equiv-Q-equivalence-class n X = equiv-uniqueness-set-quotient - ( Id-Equivalence-Relation (set-UU-Fin 2 (Q n X))) + ( Id-equivalence-relation (set-UU-Fin 2 (Q n X))) ( set-UU-Fin 2 (Q n X)) - ( id-reflecting-map-Id-Equivalence-Relation (set-UU-Fin 2 (Q n X))) - ( is-set-quotient-id-Id-Equivalence-Relation (set-UU-Fin 2 (Q n X))) + ( id-reflecting-map-Id-equivalence-relation (set-UU-Fin 2 (Q n X))) + ( is-set-quotient-id-Id-equivalence-relation (set-UU-Fin 2 (Q n X))) ( equivalence-class-Set - ( Id-Equivalence-Relation (set-UU-Fin 2 (Q n X)))) + ( Id-equivalence-relation (set-UU-Fin 2 (Q n X)))) ( quotient-reflecting-map-equivalence-class - ( Id-Equivalence-Relation (set-UU-Fin 2 (Q n X)))) + ( Id-equivalence-relation (set-UU-Fin 2 (Q n X)))) ( is-set-quotient-equivalence-class - ( Id-Equivalence-Relation (set-UU-Fin 2 (Q n X)))) + ( Id-equivalence-relation (set-UU-Fin 2 (Q n X)))) equiv-fin-2-equivalence-class : (n : ℕ) (X : UU-Fin l1 n) → leq-ℕ 2 n → Fin n ≃ type-UU-Fin n X → - Fin 2 ≃ equivalence-class (Id-Equivalence-Relation (set-UU-Fin 2 (Q n X))) + Fin 2 ≃ equivalence-class (Id-equivalence-relation (set-UU-Fin 2 (Q n X))) equiv-fin-2-equivalence-class n X H h = tr ( λ Y → Fin 2 ≃ - equivalence-class (Id-Equivalence-Relation (set-UU-Fin 2 (Q n Y)))) + equivalence-class (Id-equivalence-relation (set-UU-Fin 2 (Q n Y)))) ( eq-pair-Σ ( eq-equiv (raise l1 (Fin n)) (type-UU-Fin n X) ( h ∘e inv-equiv (compute-raise-Fin l1 n))) @@ -1566,7 +1566,7 @@ module _ delooping-sign = quotient-delooping-sign ( λ n X → type-UU-Fin 2 (Q n X)) - ( λ n X → Id-Equivalence-Relation (set-UU-Fin 2 (Q n X))) + ( λ n X → Id-equivalence-relation (set-UU-Fin 2 (Q n X))) ( λ n _ X → has-decidable-equality-has-cardinality 2 (pr2 (Q n X))) ( equiv-fin-2-equivalence-class) ( λ n _ → map-equiv (equiv-Q-fin-fin-2 (n +ℕ 2) star) (zero-Fin 1)) @@ -1604,7 +1604,7 @@ module _ ( group-Concrete-Group (UU-Fin-Group (lsuc l2) 2)) ( symmetric-abstract-UU-fin-group-quotient-hom ( λ n X → type-UU-Fin 2 (Q n X)) - ( λ n X → Id-Equivalence-Relation (set-UU-Fin 2 (Q n X))) + ( λ n X → Id-equivalence-relation (set-UU-Fin 2 (Q n X))) ( λ n _ X → has-decidable-equality-has-cardinality 2 (pr2 (Q n X))) ( equiv-fin-2-equivalence-class) ( λ n _ → pr1 (equiv-Q-fin-fin-2 (n +ℕ 2) star) (zero-Fin 1)) @@ -1622,7 +1622,7 @@ module _ eq-delooping-sign-homomorphism = eq-quotient-delooping-sign-homomorphism ( λ n X → type-UU-Fin 2 (Q n X)) - ( λ n X → Id-Equivalence-Relation (set-UU-Fin 2 (Q n X))) + ( λ n X → Id-equivalence-relation (set-UU-Fin 2 (Q n X))) ( λ n _ X → has-decidable-equality-has-cardinality 2 (pr2 (Q n X))) ( equiv-fin-2-equivalence-class) ( λ n _ → pr1 (equiv-Q-fin-fin-2 (n +ℕ 2) star) (zero-Fin 1)) diff --git a/src/finite-group-theory/finite-groups.lagda.md b/src/finite-group-theory/finite-groups.lagda.md index e3d5e87c59..61ad01b654 100644 --- a/src/finite-group-theory/finite-groups.lagda.md +++ b/src/finite-group-theory/finite-groups.lagda.md @@ -153,8 +153,8 @@ module _ pr2 (is-decidable-prop-is-unit-Group-𝔽 x) = is-decidable-is-unit-Group-𝔽 x - is-unit-finite-group-Prop : type-Group-𝔽 → Prop l - is-unit-finite-group-Prop = is-unit-group-Prop group-Group-𝔽 + is-unit-prop-Group-𝔽 : type-Group-𝔽 → Prop l + is-unit-prop-Group-𝔽 = is-unit-prop-Group group-Group-𝔽 is-unit-finite-group-Decidable-Prop : type-Group-𝔽 → Decidable-Prop l pr1 (is-unit-finite-group-Decidable-Prop x) = @@ -273,7 +273,7 @@ module _ transpose-eq-mul-Group' group-Group-𝔽 distributive-inv-mul-Group-𝔽 : - (x y : type-Group-𝔽) → + {x y : type-Group-𝔽} → ( inv-Group-𝔽 (mul-Group-𝔽 x y)) = ( mul-Group-𝔽 (inv-Group-𝔽 y) (inv-Group-𝔽 x)) distributive-inv-mul-Group-𝔽 = @@ -305,7 +305,7 @@ is-finite-is-group {l} n G = ( is-finite-Prop _) ( λ e → is-finite-is-decidable-Prop - ( is-group-Prop (pr1 G)) + ( is-group-prop-Semigroup (pr1 G)) ( is-decidable-Σ-count ( count-Σ ( pair n e) diff --git a/src/finite-group-theory/finite-monoids.lagda.md b/src/finite-group-theory/finite-monoids.lagda.md index b3c31b24a4..b43423613e 100644 --- a/src/finite-group-theory/finite-monoids.lagda.md +++ b/src/finite-group-theory/finite-monoids.lagda.md @@ -61,7 +61,7 @@ is-finite-is-unital-Semigroup {l} n X = ( is-finite-Prop _) ( λ e → is-finite-is-decidable-Prop - ( is-unital-Semigroup-Prop (pr1 X)) + ( is-unital-prop-Semigroup (pr1 X)) ( is-decidable-Σ-count ( pair n e) ( λ u → diff --git a/src/finite-group-theory/finite-type-groups.lagda.md b/src/finite-group-theory/finite-type-groups.lagda.md index 4b9ff73954..5dd2a6fd23 100644 --- a/src/finite-group-theory/finite-type-groups.lagda.md +++ b/src/finite-group-theory/finite-type-groups.lagda.md @@ -59,7 +59,7 @@ module _ ( group-Concrete-Group (UU-Fin-Group l n)) ( loop-group-Set (raise-Set l (Fin-Set n))) pr1 hom-loop-group-fin-UU-Fin-Group p = pr1 (pair-eq-Σ p) - pr2 hom-loop-group-fin-UU-Fin-Group p q = + pr2 hom-loop-group-fin-UU-Fin-Group {p} {q} = pr1-interchange-concat-pair-eq-Σ p q hom-inv-loop-group-fin-UU-Fin-Group : @@ -68,7 +68,7 @@ module _ ( group-Concrete-Group (UU-Fin-Group l n)) pr1 hom-inv-loop-group-fin-UU-Fin-Group p = eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop) - pr2 hom-inv-loop-group-fin-UU-Fin-Group p q = + pr2 hom-inv-loop-group-fin-UU-Fin-Group {p} {q} = ( ap ( λ r → eq-pair-Σ (p ∙ q) r) ( eq-is-prop (is-trunc-Id (is-prop-type-trunc-Prop _ _)))) ∙ diff --git a/src/finite-group-theory/orbits-permutations.lagda.md b/src/finite-group-theory/orbits-permutations.lagda.md index 1537867484..2bfbdbd8cd 100644 --- a/src/finite-group-theory/orbits-permutations.lagda.md +++ b/src/finite-group-theory/orbits-permutations.lagda.md @@ -410,7 +410,7 @@ module _ {l : Level} (n : ℕ) (X : UU-Fin l n) (f : Aut (type-UU-Fin n X)) where - same-orbits-permutation : Equivalence-Relation l (type-UU-Fin n X) + same-orbits-permutation : equivalence-relation l (type-UU-Fin n X) (pr1 same-orbits-permutation) a b = trunc-Prop (Σ ℕ (λ k → Id (iterate k (map-equiv f) a) b)) pr1 (pr2 same-orbits-permutation) _ = unit-trunc-Prop (0 , refl) @@ -473,12 +473,12 @@ module _ abstract is-decidable-same-orbits-permutation : ( a b : type-UU-Fin n X) → - is-decidable (sim-Equivalence-Relation same-orbits-permutation a b) + is-decidable (sim-equivalence-relation same-orbits-permutation a b) is-decidable-same-orbits-permutation a b = apply-universal-property-trunc-Prop ( has-cardinality-type-UU-Fin n X) ( is-decidable-Prop - ( prop-Equivalence-Relation same-orbits-permutation a b)) + ( prop-equivalence-relation same-orbits-permutation a b)) ( λ h → is-decidable-trunc-Prop-is-merely-decidable ( Σ ℕ (λ k → Id (iterate k (map-equiv f) a) b)) @@ -657,7 +657,7 @@ module _ ( np)) ( map-equiv g x) - same-orbits-permutation-count : (X ≃ X) → Equivalence-Relation l1 X + same-orbits-permutation-count : (X ≃ X) → equivalence-relation l1 X same-orbits-permutation-count = same-orbits-permutation ( number-of-elements-count eX) @@ -781,17 +781,17 @@ module _ abstract conserves-other-orbits-transposition : (g : X ≃ X) (x y : X) → - ¬ (sim-Equivalence-Relation (same-orbits-permutation-count g) x a) → - ¬ (sim-Equivalence-Relation (same-orbits-permutation-count g) x b) → - ( ( sim-Equivalence-Relation (same-orbits-permutation-count g) x y) ≃ - ( sim-Equivalence-Relation + ¬ (sim-equivalence-relation (same-orbits-permutation-count g) x a) → + ¬ (sim-equivalence-relation (same-orbits-permutation-count g) x b) → + ( ( sim-equivalence-relation (same-orbits-permutation-count g) x y) ≃ + ( sim-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( x) ( y))) conserves-other-orbits-transposition g x y NA NB = pair ( λ P' → apply-universal-property-trunc-Prop P' - ( prop-Equivalence-Relation + ( prop-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( x) ( y)) @@ -801,7 +801,7 @@ module _ ( p))))) ( is-equiv-is-prop is-prop-type-trunc-Prop is-prop-type-trunc-Prop ( λ P' → apply-universal-property-trunc-Prop P' - ( prop-Equivalence-Relation (same-orbits-permutation-count g) x y) + ( prop-equivalence-relation (same-orbits-permutation-count g) x y) ( λ (pair k p) → unit-trunc-Prop ( pair k ( (inv (equal-iterate-transposition-other-orbits k)) ∙ @@ -844,7 +844,7 @@ module _ ( nr ∘ backward-implication (Q b))) ∘e ( equiv-iff' ( T1 y) - ( prop-Equivalence-Relation + ( prop-equivalence-relation ( same-orbits-permutation-count g) ( x) ( y)) @@ -854,14 +854,14 @@ module _ not-same-orbits-transposition-same-orbits : ( g : X ≃ X) ( P : - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( same-orbits-permutation ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX))) ( g)) ( a) ( b))) → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( a) ( b)) @@ -1066,10 +1066,10 @@ module _ ( p) ( pr1 (pr2 (minimal-element-iterate g a b pa))))) - coprod-sim-Equivalence-Relation-a-b-Prop : + coprod-sim-equivalence-relation-a-b-Prop : ( g : X ≃ X) → ( P : - sim-Equivalence-Relation + sim-equivalence-relation ( same-orbits-permutation ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX))) @@ -1077,20 +1077,20 @@ module _ ( a) ( b)) (x : X) → Prop l1 - coprod-sim-Equivalence-Relation-a-b-Prop g P x = + coprod-sim-equivalence-relation-a-b-Prop g P x = coprod-Prop - ( prop-Equivalence-Relation + ( prop-equivalence-relation (same-orbits-permutation-count (composition-transposition-a-b g)) x a) - ( prop-Equivalence-Relation + ( prop-equivalence-relation (same-orbits-permutation-count (composition-transposition-a-b g)) x b) ( λ T1 T2 → not-same-orbits-transposition-same-orbits g P - ( transitive-Equivalence-Relation + ( transitive-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( _) ( _) ( _) ( T2) - ( symmetric-Equivalence-Relation + ( symmetric-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( _) ( _) @@ -1100,7 +1100,7 @@ module _ split-orbits-a-b-transposition : (g : X ≃ X) → (P : - sim-Equivalence-Relation + sim-equivalence-relation ( same-orbits-permutation ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX))) @@ -1108,12 +1108,12 @@ module _ ( a) ( b)) (x : X) → - ( ( sim-Equivalence-Relation (same-orbits-permutation-count g) x a) ≃ - ( ( sim-Equivalence-Relation + ( ( sim-equivalence-relation (same-orbits-permutation-count g) x a) ≃ + ( ( sim-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( x) ( a)) + - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( same-orbits-permutation-count ( composition-transposition-a-b g)) ( x) @@ -1122,14 +1122,14 @@ module _ pair ( λ T → apply-universal-property-trunc-Prop T - ( coprod-sim-Equivalence-Relation-a-b-Prop g P x) + ( coprod-sim-equivalence-relation-a-b-Prop g P x) (λ pa → lemma2 g (pair (pr1 pa) (inl (pr2 pa))))) ( is-equiv-is-prop is-prop-type-trunc-Prop - ( is-prop-type-Prop (coprod-sim-Equivalence-Relation-a-b-Prop g P x)) + ( is-prop-type-Prop (coprod-sim-equivalence-relation-a-b-Prop g P x)) ( λ where ( inl T) → apply-universal-property-trunc-Prop T - ( prop-Equivalence-Relation + ( prop-equivalence-relation ( same-orbits-permutation-count g) x a) ( λ pa → lemma3 @@ -1138,7 +1138,7 @@ module _ ( pair (pr1 pa) (inl (pr2 pa))))) ( inr T) → apply-universal-property-trunc-Prop T - ( prop-Equivalence-Relation + ( prop-equivalence-relation ( same-orbits-permutation-count g) x a) ( λ pa → lemma3 @@ -1198,11 +1198,11 @@ module _ (λ k → ( Id (iterate k (map-equiv g) x) a) + ( Id (iterate k (map-equiv g) x) b))) → - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( x) ( a)) + - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( x) ( b)) @@ -1230,12 +1230,12 @@ module _ ( x)) ( b))) → Id c (pr1 (pr2 (minimal-element-iterate-2-a-b g pa))) → - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( same-orbits-permutation-count ( composition-transposition-a-b g)) ( x) ( a)) + - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( x) ( b)) @@ -1332,37 +1332,37 @@ module _ is-successor-ℕ (pr1 (minimal-element-iterate-2-a-b g pa)) is-successor-k1 = is-successor-is-nonzero-ℕ q lemma3 : - ( ( sim-Equivalence-Relation + ( ( sim-equivalence-relation ( same-orbits-permutation-count ( composition-transposition-a-b ( composition-transposition-a-b g))) ( x) ( a)) + - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( same-orbits-permutation-count ( composition-transposition-a-b ( composition-transposition-a-b g))) ( x) ( b))) → - sim-Equivalence-Relation (same-orbits-permutation-count g) x a + sim-equivalence-relation (same-orbits-permutation-count g) x a lemma3 (inl T) = tr - (λ f → sim-Equivalence-Relation (same-orbits-permutation-count f) x a) + (λ f → sim-equivalence-relation (same-orbits-permutation-count f) x a) { x = composition-transposition-a-b (composition-transposition-a-b g)} {y = g} ( eq-htpy-equiv (composition-transposition-a-b-involution g)) ( T) lemma3 (inr T) = - transitive-Equivalence-Relation + transitive-equivalence-relation ( same-orbits-permutation-count g) ( _) ( _) ( _) - ( symmetric-Equivalence-Relation + ( symmetric-equivalence-relation ( same-orbits-permutation-count g) _ _ P) ( tr ( λ g → - sim-Equivalence-Relation (same-orbits-permutation-count g) x b) + sim-equivalence-relation (same-orbits-permutation-count g) x b) { x = composition-transposition-a-b (composition-transposition-a-b g)} {y = g} @@ -1373,7 +1373,7 @@ module _ module _ ( g : X ≃ X) ( P : - sim-Equivalence-Relation + sim-equivalence-relation ( same-orbits-permutation ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX))) @@ -1412,7 +1412,7 @@ module _ ( b) ( a) ( r) - ( symmetric-Equivalence-Relation + ( symmetric-equivalence-relation ( same-orbits-permutation-count g) _ _ P))) h'-inl k T p (inr nq) (inr nr) = conserves-other-orbits-transposition-quotient g T nq nr @@ -1929,7 +1929,7 @@ module _ ( b) ( a) ( R) - ( symmetric-Equivalence-Relation + ( symmetric-equivalence-relation ( same-orbits-permutation-count g) _ _ P))) section-h'-inl k (inr NQ) (inr NR) (inl Q') R' = ex-falso (NQ Q') section-h'-inl k (inr NQ) (inr NR) (inr NQ') (inl R') = ex-falso (NR R') @@ -1971,7 +1971,7 @@ module _ ( inr star) section-h'-inr (inl Q) R = ex-falso (not-same-orbits-transposition-same-orbits g P - ( symmetric-Equivalence-Relation + ( symmetric-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) _ _ ( Q))) @@ -2058,7 +2058,7 @@ module _ transf-same-orbits-count : ( g : X ≃ X) ( P : - sim-Equivalence-Relation + sim-equivalence-relation ( same-orbits-permutation ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX))) @@ -2108,7 +2108,7 @@ module _ number-orbits-composition-transposition : ( g : X ≃ X) ( P : - sim-Equivalence-Relation + sim-equivalence-relation ( same-orbits-permutation ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX))) @@ -2166,8 +2166,8 @@ module _ same-orbits-transposition-not-same-orbits : ( g : X ≃ X) ( NP : - ¬ (sim-Equivalence-Relation (same-orbits-permutation-count g) a b)) → - sim-Equivalence-Relation + ¬ (sim-equivalence-relation (same-orbits-permutation-count g) a b)) → + sim-equivalence-relation ( same-orbits-permutation-count (composition-transposition-a-b g)) ( a) ( b) @@ -2271,7 +2271,7 @@ module _ number-orbits-composition-transposition' : ( g : X ≃ X) (NP : - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( same-orbits-permutation ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX))) @@ -2324,7 +2324,7 @@ module _ where cases-opposite-sign-composition-transposition : is-decidable - ( sim-Equivalence-Relation (same-orbits-permutation-count g) a b) → + ( sim-equivalence-relation (same-orbits-permutation-count g) a b) → Id ( sign-permutation-orbit ( number-of-elements-count eX) diff --git a/src/finite-group-theory/sign-homomorphism.lagda.md b/src/finite-group-theory/sign-homomorphism.lagda.md index 6289caac3f..b0b87be7fc 100644 --- a/src/finite-group-theory/sign-homomorphism.lagda.md +++ b/src/finite-group-theory/sign-homomorphism.lagda.md @@ -362,7 +362,7 @@ module _ preserves-comp-map-sign-homomorphism : preserves-mul _∘e_ _∘e_ map-sign-homomorphism - preserves-comp-map-sign-homomorphism f g = + preserves-comp-map-sign-homomorphism {f} {g} = ( ap ( aut-point-Fin-two-ℕ) ( preserves-add-sign-homomorphism-Fin-two n X f g)) ∙ diff --git a/src/finite-group-theory/simpson-delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/simpson-delooping-sign-homomorphism.lagda.md index 2bbed154ea..f8941726e6 100644 --- a/src/finite-group-theory/simpson-delooping-sign-homomorphism.lagda.md +++ b/src/finite-group-theory/simpson-delooping-sign-homomorphism.lagda.md @@ -79,14 +79,14 @@ module _ {l : Level} (n : ℕ) (X : UU-Fin l n) where - sign-comp-Equivalence-Relation : - Equivalence-Relation lzero (Fin n ≃ type-UU-Fin n X) - pr1 sign-comp-Equivalence-Relation f g = + sign-comp-equivalence-relation : + equivalence-relation lzero (Fin n ≃ type-UU-Fin n X) + pr1 sign-comp-equivalence-relation f g = Id-Prop ( Fin-Set 2) ( zero-Fin 1) ( sign-homomorphism-Fin-two n (Fin-UU-Fin' n) (inv-equiv f ∘e g)) - pr1 (pr2 sign-comp-Equivalence-Relation) f = + pr1 (pr2 sign-comp-equivalence-relation) f = ap pr1 { x = zero-Fin 1 , @@ -98,7 +98,7 @@ module _ ( eq-is-contr ( is-contr-parity-transposition-permutation n (Fin-UU-Fin' n) (inv-equiv f ∘e f))) - pr1 (pr2 (pr2 sign-comp-Equivalence-Relation)) f g P = + pr1 (pr2 (pr2 sign-comp-equivalence-relation)) f g P = ap pr1 { x = zero-Fin 1 , @@ -134,7 +134,7 @@ module _ ( sign-homomorphism-Fin-two n (Fin-UU-Fin' n)) ( distributive-inv-comp-equiv g (inv-equiv f) ∙ ap (inv-equiv g ∘e_) (inv-inv-equiv f))))))) - pr2 (pr2 (pr2 sign-comp-Equivalence-Relation)) f g h Q P = + pr2 (pr2 (pr2 sign-comp-equivalence-relation)) f g h Q P = ( ap mod-two-ℕ ( ap ( zero-ℕ +ℕ_) @@ -157,20 +157,20 @@ module _ ( ap (_∘e h) (right-inverse-law-equiv g) ∙ left-unit-law-equiv h)))))) - is-decidable-sign-comp-Equivalence-Relation : + is-decidable-sign-comp-equivalence-relation : (f g : Fin n ≃ type-UU-Fin n X) → - is-decidable (sim-Equivalence-Relation sign-comp-Equivalence-Relation f g) - is-decidable-sign-comp-Equivalence-Relation f g = + is-decidable (sim-equivalence-relation sign-comp-equivalence-relation f g) + is-decidable-sign-comp-equivalence-relation f g = has-decidable-equality-is-finite ( is-finite-Fin 2) ( zero-Fin 1) ( sign-homomorphism-Fin-two n (Fin-UU-Fin' n) (inv-equiv f ∘e g)) quotient-sign-comp : UU (lsuc lzero ⊔ l) - quotient-sign-comp = equivalence-class sign-comp-Equivalence-Relation + quotient-sign-comp = equivalence-class sign-comp-equivalence-relation quotient-sign-comp-Set : Set (lsuc lzero ⊔ l) - quotient-sign-comp-Set = equivalence-class-Set sign-comp-Equivalence-Relation + quotient-sign-comp-Set = equivalence-class-Set sign-comp-equivalence-relation module _ {l : Level} {X : UU l} @@ -223,8 +223,8 @@ module _ not-sign-comp-transposition-count : ( Y : 2-Element-Decidable-Subtype l X) → - ¬ ( sim-Equivalence-Relation - ( sign-comp-Equivalence-Relation + ¬ ( sim-equivalence-relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( transposition Y ∘e equiv-count eX) @@ -278,7 +278,7 @@ module _ ( X , unit-trunc-Prop (equiv-count eX))) → is-decidable ( is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( T) @@ -294,13 +294,13 @@ module _ ( X , unit-trunc-Prop (equiv-count eX)) pr1 equiv-Fin-2-quotient-sign-comp-count (inl (inr star)) = class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( equiv-count eX) pr1 equiv-Fin-2-quotient-sign-comp-count (inr star) = class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( equiv-count eX ∘e transposition-eX) @@ -309,7 +309,7 @@ module _ ( λ T → inv-Fin-2-quotient-sign-comp-count T ( is-decidable-is-in-equivalence-class-is-decidable - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( λ a b → @@ -324,7 +324,7 @@ module _ ( λ T → retraction-Fin-2-quotient-sign-comp-count T ( is-decidable-is-in-equivalence-class-is-decidable - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( λ a b → @@ -339,7 +339,7 @@ module _ ( λ k → section-Fin-2-quotient-sign-comp-count k ( is-decidable-is-in-equivalence-class-is-decidable - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( λ a b → @@ -357,7 +357,7 @@ module _ ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) → ¬ ( is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( T) @@ -365,7 +365,7 @@ module _ ( f : Fin (number-of-elements-count eX) ≃ X) → Id ( class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( f)) @@ -378,7 +378,7 @@ module _ ( Fin-UU-Fin' (number-of-elements-count eX)) ( inv-equiv f ∘e equiv-count eX)) → is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( T) @@ -390,7 +390,7 @@ module _ ( tr ( λ x → is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( x) @@ -401,7 +401,7 @@ module _ tr ( λ x → is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( x) @@ -442,7 +442,7 @@ module _ ( X , unit-trunc-Prop (equiv-count eX))) → ( H : is-decidable ( is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( T) @@ -453,7 +453,7 @@ module _ ( T) retraction-Fin-2-quotient-sign-comp-count T (inl P) = eq-effective-quotient' - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( equiv-count eX) @@ -461,7 +461,7 @@ module _ ( P) retraction-Fin-2-quotient-sign-comp-count T (inr NP) = eq-effective-quotient' - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( equiv-count eX ∘e transposition-eX) @@ -470,13 +470,13 @@ module _ ( pr2 T) ( pair ( is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( T) ( equiv-count eX ∘e transposition-eX)) ( is-prop-is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( T) @@ -485,12 +485,12 @@ module _ cases-retraction-Fin-2-quotient-sign-comp-count T NP t ( inv ( eq-has-same-elements-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( T) ( class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( t)) @@ -504,7 +504,7 @@ module _ ( k : Fin 2) → ( D : is-decidable ( is-in-equivalence-class - ( sign-comp-Equivalence-Relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( pr1 equiv-Fin-2-quotient-sign-comp-count k) @@ -517,8 +517,8 @@ module _ section-Fin-2-quotient-sign-comp-count (inl (inr star)) (inr ND) = ex-falso ( ND - ( refl-Equivalence-Relation - ( sign-comp-Equivalence-Relation + ( refl-equivalence-relation + ( sign-comp-equivalence-relation ( number-of-elements-count eX) ( X , unit-trunc-Prop (equiv-count eX))) ( pr2 eX))) @@ -652,9 +652,9 @@ module _ ( X X' : UU-Fin l n) ( e : type-UU-Fin n X ≃ type-UU-Fin n X') → ( f f' : Fin n ≃ type-UU-Fin n X) → - ( sim-Equivalence-Relation (sign-comp-Equivalence-Relation n X) f f' ↔ - sim-Equivalence-Relation - ( sign-comp-Equivalence-Relation n X') + ( sim-equivalence-relation (sign-comp-equivalence-relation n X) f f' ↔ + sim-equivalence-relation + ( sign-comp-equivalence-relation n X') ( map-simpson-comp-equiv X X' e f) ( map-simpson-comp-equiv X X' e f')) pr1 (preserves-sign-comp-simpson-comp-equiv X X' e f f') = @@ -678,8 +678,8 @@ module _ ( n : ℕ) → ( Y : 2-Element-Decidable-Subtype l ( raise-Fin l (n +ℕ 2))) → - ¬ ( sim-Equivalence-Relation - ( sign-comp-Equivalence-Relation (n +ℕ 2) + ¬ ( sim-equivalence-relation + ( sign-comp-equivalence-relation (n +ℕ 2) ( raise-Fin l (n +ℕ 2) , unit-trunc-Prop (compute-raise-Fin l (n +ℕ 2)))) ( sign-comp-aut-succ-succ-Fin n (transposition Y)) @@ -698,8 +698,8 @@ module _ ( λ f → ( Y : 2-Element-Decidable-Subtype l ( raise-Fin l (n +ℕ 2))) → - ¬ ( sim-Equivalence-Relation - ( sign-comp-Equivalence-Relation + ¬ ( sim-equivalence-relation + ( sign-comp-equivalence-relation ( n +ℕ 2) ( raise-Fin l (n +ℕ 2) , unit-trunc-Prop (compute-raise-Fin l (n +ℕ 2)))) @@ -739,8 +739,8 @@ module _ simpson-delooping-sign = quotient-delooping-sign ( λ n X → Fin n ≃ type-UU-Fin n X) - ( sign-comp-Equivalence-Relation) - ( λ n _ → is-decidable-sign-comp-Equivalence-Relation n) + ( sign-comp-equivalence-relation) + ( λ n _ → is-decidable-sign-comp-equivalence-relation n) ( equiv-fin-2-quotient-sign-comp-equiv-Fin) ( sign-comp-aut-succ-succ-Fin) ( not-action-equiv-family-on-subuniverse-transposition) @@ -775,8 +775,8 @@ module _ ( group-Concrete-Group (UU-Fin-Group (lsuc lzero ⊔ l) 2)) ( symmetric-abstract-UU-fin-group-quotient-hom ( λ n X → Fin n ≃ type-UU-Fin n X) - ( sign-comp-Equivalence-Relation) - ( λ n H → is-decidable-sign-comp-Equivalence-Relation n) + ( sign-comp-equivalence-relation) + ( λ n H → is-decidable-sign-comp-equivalence-relation n) ( equiv-fin-2-quotient-sign-comp-equiv-Fin) ( sign-comp-aut-succ-succ-Fin) ( not-action-equiv-family-on-subuniverse-transposition) @@ -791,8 +791,8 @@ module _ eq-simpson-delooping-sign-homomorphism = eq-quotient-delooping-sign-homomorphism ( λ n X → Fin n ≃ type-UU-Fin n X) - ( sign-comp-Equivalence-Relation) - ( λ n _ → is-decidable-sign-comp-Equivalence-Relation n) + ( sign-comp-equivalence-relation) + ( λ n _ → is-decidable-sign-comp-equivalence-relation n) ( equiv-fin-2-quotient-sign-comp-equiv-Fin) ( sign-comp-aut-succ-succ-Fin) ( not-action-equiv-family-on-subuniverse-transposition) diff --git a/src/finite-group-theory/subgroups-finite-groups.lagda.md b/src/finite-group-theory/subgroups-finite-groups.lagda.md index 8ceaee7b02..03da73edbd 100644 --- a/src/finite-group-theory/subgroups-finite-groups.lagda.md +++ b/src/finite-group-theory/subgroups-finite-groups.lagda.md @@ -334,8 +334,8 @@ module _ ( group-Subgroup-𝔽 G H) ( group-Group-𝔽 G) ( inclusion-Subgroup-𝔽 G H) - preserves-mul-inclusion-group-Subgroup-𝔽 = - preserves-mul-inclusion-Decidable-Subgroup (group-Group-𝔽 G) H + preserves-mul-inclusion-group-Subgroup-𝔽 {x} {y} = + preserves-mul-inclusion-Decidable-Subgroup (group-Group-𝔽 G) H {x} {y} preserves-unit-inclusion-group-Subgroup-𝔽 : preserves-unit-Group @@ -350,8 +350,8 @@ module _ ( group-Subgroup-𝔽 G H) ( group-Group-𝔽 G) ( inclusion-Subgroup-𝔽 G H) - preserves-inverses-inclusion-group-Subgroup-𝔽 = - preserves-inverses-inclusion-Decidable-Subgroup (group-Group-𝔽 G) H + preserves-inverses-inclusion-group-Subgroup-𝔽 {x} = + preserves-inverses-inclusion-Decidable-Subgroup (group-Group-𝔽 G) H {x} inclusion-group-Subgroup-𝔽 : hom-Group (group-Subgroup-𝔽 G H) (group-Group-𝔽 G) @@ -396,10 +396,10 @@ module _ is-prop-right-sim-Subgroup-𝔽 = is-prop-right-sim-Decidable-Subgroup (group-Group-𝔽 G) H - prop-right-eq-rel-Subgroup-𝔽 : + prop-right-equivalence-relation-Subgroup-𝔽 : (x y : type-Group-𝔽 G) → Prop l2 - prop-right-eq-rel-Subgroup-𝔽 = - prop-right-eq-rel-Decidable-Subgroup (group-Group-𝔽 G) H + prop-right-equivalence-relation-Subgroup-𝔽 = + prop-right-equivalence-relation-Decidable-Subgroup (group-Group-𝔽 G) H refl-right-sim-Subgroup-𝔽 : is-reflexive right-sim-Subgroup-𝔽 refl-right-sim-Subgroup-𝔽 = @@ -413,9 +413,10 @@ module _ transitive-right-sim-Subgroup-𝔽 = transitive-right-sim-Decidable-Subgroup (group-Group-𝔽 G) H - right-eq-rel-Subgroup-𝔽 : Equivalence-Relation l2 (type-Group-𝔽 G) - right-eq-rel-Subgroup-𝔽 = - right-eq-rel-Decidable-Subgroup (group-Group-𝔽 G) H + right-equivalence-relation-Subgroup-𝔽 : + equivalence-relation l2 (type-Group-𝔽 G) + right-equivalence-relation-Subgroup-𝔽 = + right-equivalence-relation-Decidable-Subgroup (group-Group-𝔽 G) H ``` #### The equivalence relation where `x ~ y` if and only if there exists `u : H` such that `ux = y` @@ -433,9 +434,9 @@ module _ is-prop-left-sim-Subgroup-𝔽 = is-prop-left-sim-Decidable-Subgroup (group-Group-𝔽 G) H - prop-left-eq-rel-Subgroup-𝔽 : (x y : type-Group-𝔽 G) → Prop l2 - prop-left-eq-rel-Subgroup-𝔽 = - prop-left-eq-rel-Decidable-Subgroup (group-Group-𝔽 G) H + prop-left-equivalence-relation-Subgroup-𝔽 : (x y : type-Group-𝔽 G) → Prop l2 + prop-left-equivalence-relation-Subgroup-𝔽 = + prop-left-equivalence-relation-Decidable-Subgroup (group-Group-𝔽 G) H refl-left-sim-Subgroup-𝔽 : is-reflexive left-sim-Subgroup-𝔽 refl-left-sim-Subgroup-𝔽 = @@ -449,7 +450,8 @@ module _ transitive-left-sim-Subgroup-𝔽 = transitive-left-sim-Decidable-Subgroup (group-Group-𝔽 G) H - left-eq-rel-Subgroup-𝔽 : Equivalence-Relation l2 (type-Group-𝔽 G) - left-eq-rel-Subgroup-𝔽 = - left-eq-rel-Decidable-Subgroup (group-Group-𝔽 G) H + left-equivalence-relation-Subgroup-𝔽 : + equivalence-relation l2 (type-Group-𝔽 G) + left-equivalence-relation-Subgroup-𝔽 = + left-equivalence-relation-Decidable-Subgroup (group-Group-𝔽 G) H ``` diff --git a/src/foundation-core/equivalence-relations.lagda.md b/src/foundation-core/equivalence-relations.lagda.md index ffd556bfdc..c426f907c0 100644 --- a/src/foundation-core/equivalence-relations.lagda.md +++ b/src/foundation-core/equivalence-relations.lagda.md @@ -36,24 +36,24 @@ is-equivalence-relation R = is-reflexive-Relation-Prop R × ( is-symmetric-Relation-Prop R × is-transitive-Relation-Prop R) -Equivalence-Relation : +equivalence-relation : (l : Level) {l1 : Level} (A : UU l1) → UU ((lsuc l) ⊔ l1) -Equivalence-Relation l A = Σ (Relation-Prop l A) is-equivalence-relation +equivalence-relation l A = Σ (Relation-Prop l A) is-equivalence-relation -prop-Equivalence-Relation : - {l1 l2 : Level} {A : UU l1} → Equivalence-Relation l2 A → Relation-Prop l2 A -prop-Equivalence-Relation = pr1 +prop-equivalence-relation : + {l1 l2 : Level} {A : UU l1} → equivalence-relation l2 A → Relation-Prop l2 A +prop-equivalence-relation = pr1 -sim-Equivalence-Relation : - {l1 l2 : Level} {A : UU l1} → Equivalence-Relation l2 A → A → A → UU l2 -sim-Equivalence-Relation R = type-Relation-Prop (prop-Equivalence-Relation R) +sim-equivalence-relation : + {l1 l2 : Level} {A : UU l1} → equivalence-relation l2 A → A → A → UU l2 +sim-equivalence-relation R = type-Relation-Prop (prop-equivalence-relation R) abstract - is-prop-sim-Equivalence-Relation : - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (x y : A) → - is-prop (sim-Equivalence-Relation R x y) - is-prop-sim-Equivalence-Relation R = - is-prop-type-Relation-Prop (prop-Equivalence-Relation R) + is-prop-sim-equivalence-relation : + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) (x y : A) → + is-prop (sim-equivalence-relation R x y) + is-prop-sim-equivalence-relation R = + is-prop-type-Relation-Prop (prop-equivalence-relation R) is-prop-is-equivalence-relation : {l1 l2 : Level} {A : UU l1} (R : Relation-Prop l2 A) → @@ -70,37 +70,37 @@ is-equivalence-relation-Prop : pr1 (is-equivalence-relation-Prop R) = is-equivalence-relation R pr2 (is-equivalence-relation-Prop R) = is-prop-is-equivalence-relation R -is-equivalence-relation-prop-Equivalence-Relation : - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) → - is-equivalence-relation (prop-Equivalence-Relation R) -is-equivalence-relation-prop-Equivalence-Relation R = pr2 R +is-equivalence-relation-prop-equivalence-relation : + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) → + is-equivalence-relation (prop-equivalence-relation R) +is-equivalence-relation-prop-equivalence-relation R = pr2 R -refl-Equivalence-Relation : +refl-equivalence-relation : {l1 l2 : Level} {A : UU l1} - (R : Equivalence-Relation l2 A) → - is-reflexive (sim-Equivalence-Relation R) -refl-Equivalence-Relation R = - pr1 (is-equivalence-relation-prop-Equivalence-Relation R) + (R : equivalence-relation l2 A) → + is-reflexive (sim-equivalence-relation R) +refl-equivalence-relation R = + pr1 (is-equivalence-relation-prop-equivalence-relation R) -symmetric-Equivalence-Relation : +symmetric-equivalence-relation : {l1 l2 : Level} {A : UU l1} - (R : Equivalence-Relation l2 A) → - is-symmetric (sim-Equivalence-Relation R) -symmetric-Equivalence-Relation R = - pr1 (pr2 (is-equivalence-relation-prop-Equivalence-Relation R)) + (R : equivalence-relation l2 A) → + is-symmetric (sim-equivalence-relation R) +symmetric-equivalence-relation R = + pr1 (pr2 (is-equivalence-relation-prop-equivalence-relation R)) -transitive-Equivalence-Relation : +transitive-equivalence-relation : {l1 l2 : Level} {A : UU l1} - (R : Equivalence-Relation l2 A) → is-transitive (sim-Equivalence-Relation R) -transitive-Equivalence-Relation R = - pr2 (pr2 (is-equivalence-relation-prop-Equivalence-Relation R)) + (R : equivalence-relation l2 A) → is-transitive (sim-equivalence-relation R) +transitive-equivalence-relation R = + pr2 (pr2 (is-equivalence-relation-prop-equivalence-relation R)) -inhabited-subtype-Equivalence-Relation : +inhabited-subtype-equivalence-relation : {l1 l2 : Level} {A : UU l1} → - Equivalence-Relation l2 A → A → inhabited-subtype l2 A -pr1 (inhabited-subtype-Equivalence-Relation R x) = prop-Equivalence-Relation R x -pr2 (inhabited-subtype-Equivalence-Relation R x) = - unit-trunc-Prop (x , refl-Equivalence-Relation R x) + equivalence-relation l2 A → A → inhabited-subtype l2 A +pr1 (inhabited-subtype-equivalence-relation R x) = prop-equivalence-relation R x +pr2 (inhabited-subtype-equivalence-relation R x) = + unit-trunc-Prop (x , refl-equivalence-relation R x) ``` ## Properties @@ -108,75 +108,75 @@ pr2 (inhabited-subtype-Equivalence-Relation R x) = ### Symmetry induces equivalences `R(x,y) ≃ R(y,x)` ```agda -iff-symmetric-Equivalence-Relation : - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) {x y : A} → - sim-Equivalence-Relation R x y ↔ sim-Equivalence-Relation R y x -pr1 (iff-symmetric-Equivalence-Relation R) = - symmetric-Equivalence-Relation R _ _ -pr2 (iff-symmetric-Equivalence-Relation R) = - symmetric-Equivalence-Relation R _ _ - -equiv-symmetric-Equivalence-Relation : - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) {x y : A} → - sim-Equivalence-Relation R x y ≃ sim-Equivalence-Relation R y x -equiv-symmetric-Equivalence-Relation R = +iff-symmetric-equivalence-relation : + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) {x y : A} → + sim-equivalence-relation R x y ↔ sim-equivalence-relation R y x +pr1 (iff-symmetric-equivalence-relation R) = + symmetric-equivalence-relation R _ _ +pr2 (iff-symmetric-equivalence-relation R) = + symmetric-equivalence-relation R _ _ + +equiv-symmetric-equivalence-relation : + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) {x y : A} → + sim-equivalence-relation R x y ≃ sim-equivalence-relation R y x +equiv-symmetric-equivalence-relation R = equiv-iff' - ( prop-Equivalence-Relation R _ _) - ( prop-Equivalence-Relation R _ _) - ( iff-symmetric-Equivalence-Relation R) + ( prop-equivalence-relation R _ _) + ( prop-equivalence-relation R _ _) + ( iff-symmetric-equivalence-relation R) ``` ### Transitivity induces equivalences `R(y,z) ≃ R(x,z)` ```agda -iff-transitive-Equivalence-Relation : +iff-transitive-equivalence-relation : {l1 l2 : Level} {A : UU l1} - (R : Equivalence-Relation l2 A) {x y z : A} → - sim-Equivalence-Relation R x y → - (sim-Equivalence-Relation R y z ↔ sim-Equivalence-Relation R x z) -pr1 (iff-transitive-Equivalence-Relation R r) s = - transitive-Equivalence-Relation R _ _ _ s r -pr2 (iff-transitive-Equivalence-Relation R r) s = - transitive-Equivalence-Relation R _ _ _ + (R : equivalence-relation l2 A) {x y z : A} → + sim-equivalence-relation R x y → + (sim-equivalence-relation R y z ↔ sim-equivalence-relation R x z) +pr1 (iff-transitive-equivalence-relation R r) s = + transitive-equivalence-relation R _ _ _ s r +pr2 (iff-transitive-equivalence-relation R r) s = + transitive-equivalence-relation R _ _ _ ( s) - ( symmetric-Equivalence-Relation R _ _ r) + ( symmetric-equivalence-relation R _ _ r) -equiv-transitive-Equivalence-Relation : +equiv-transitive-equivalence-relation : {l1 l2 : Level} {A : UU l1} - (R : Equivalence-Relation l2 A) {x y z : A} → - sim-Equivalence-Relation R x y → - (sim-Equivalence-Relation R y z ≃ sim-Equivalence-Relation R x z) -equiv-transitive-Equivalence-Relation R r = + (R : equivalence-relation l2 A) {x y z : A} → + sim-equivalence-relation R x y → + (sim-equivalence-relation R y z ≃ sim-equivalence-relation R x z) +equiv-transitive-equivalence-relation R r = equiv-iff' - ( prop-Equivalence-Relation R _ _) - ( prop-Equivalence-Relation R _ _) - ( iff-transitive-Equivalence-Relation R r) + ( prop-equivalence-relation R _ _) + ( prop-equivalence-relation R _ _) + ( iff-transitive-equivalence-relation R r) ``` ### Transitivity induces equivalences `R(x,y) ≃ R(x,z)` ```agda -iff-transitive-Equivalence-Relation' : +iff-transitive-equivalence-relation' : {l1 l2 : Level} {A : UU l1} - (R : Equivalence-Relation l2 A) {x y z : A} → - sim-Equivalence-Relation R y z → - (sim-Equivalence-Relation R x y ↔ sim-Equivalence-Relation R x z) -pr1 (iff-transitive-Equivalence-Relation' R r) = - transitive-Equivalence-Relation R _ _ _ r -pr2 (iff-transitive-Equivalence-Relation' R r) = - transitive-Equivalence-Relation R _ _ _ - ( symmetric-Equivalence-Relation R _ _ r) - -equiv-transitive-Equivalence-Relation' : + (R : equivalence-relation l2 A) {x y z : A} → + sim-equivalence-relation R y z → + (sim-equivalence-relation R x y ↔ sim-equivalence-relation R x z) +pr1 (iff-transitive-equivalence-relation' R r) = + transitive-equivalence-relation R _ _ _ r +pr2 (iff-transitive-equivalence-relation' R r) = + transitive-equivalence-relation R _ _ _ + ( symmetric-equivalence-relation R _ _ r) + +equiv-transitive-equivalence-relation' : {l1 l2 : Level} {A : UU l1} - (R : Equivalence-Relation l2 A) {x y z : A} → - sim-Equivalence-Relation R y z → - (sim-Equivalence-Relation R x y ≃ sim-Equivalence-Relation R x z) -equiv-transitive-Equivalence-Relation' R r = + (R : equivalence-relation l2 A) {x y z : A} → + sim-equivalence-relation R y z → + (sim-equivalence-relation R x y ≃ sim-equivalence-relation R x z) +equiv-transitive-equivalence-relation' R r = equiv-iff' - ( prop-Equivalence-Relation R _ _) - ( prop-Equivalence-Relation R _ _) - ( iff-transitive-Equivalence-Relation' R r) + ( prop-equivalence-relation R _ _) + ( prop-equivalence-relation R _ _) + ( iff-transitive-equivalence-relation' R r) ``` ## Examples @@ -184,18 +184,18 @@ equiv-transitive-Equivalence-Relation' R r = ### The indiscrete equivalence relation on a type ```agda -indiscrete-Equivalence-Relation : - {l1 : Level} (A : UU l1) → Equivalence-Relation lzero A -pr1 (indiscrete-Equivalence-Relation A) x y = unit-Prop -pr1 (pr2 (indiscrete-Equivalence-Relation A)) _ = star -pr1 (pr2 (pr2 (indiscrete-Equivalence-Relation A))) _ _ _ = star -pr2 (pr2 (pr2 (indiscrete-Equivalence-Relation A))) _ _ _ _ _ = star - -raise-indiscrete-Equivalence-Relation : - {l1 : Level} (l2 : Level) (A : UU l1) → Equivalence-Relation l2 A -pr1 (raise-indiscrete-Equivalence-Relation l A) x y = raise-unit-Prop l -pr1 (pr2 (raise-indiscrete-Equivalence-Relation l A)) _ = raise-star -pr1 (pr2 (pr2 (raise-indiscrete-Equivalence-Relation l A))) _ _ _ = raise-star -pr2 (pr2 (pr2 (raise-indiscrete-Equivalence-Relation l A))) _ _ _ _ _ = +indiscrete-equivalence-relation : + {l1 : Level} (A : UU l1) → equivalence-relation lzero A +pr1 (indiscrete-equivalence-relation A) x y = unit-Prop +pr1 (pr2 (indiscrete-equivalence-relation A)) _ = star +pr1 (pr2 (pr2 (indiscrete-equivalence-relation A))) _ _ _ = star +pr2 (pr2 (pr2 (indiscrete-equivalence-relation A))) _ _ _ _ _ = star + +raise-indiscrete-equivalence-relation : + {l1 : Level} (l2 : Level) (A : UU l1) → equivalence-relation l2 A +pr1 (raise-indiscrete-equivalence-relation l A) x y = raise-unit-Prop l +pr1 (pr2 (raise-indiscrete-equivalence-relation l A)) _ = raise-star +pr1 (pr2 (pr2 (raise-indiscrete-equivalence-relation l A))) _ _ _ = raise-star +pr2 (pr2 (pr2 (raise-indiscrete-equivalence-relation l A))) _ _ _ _ _ = raise-star ``` diff --git a/src/foundation-core/fibers-of-maps.lagda.md b/src/foundation-core/fibers-of-maps.lagda.md index f7ae0c9ab2..c25178f54f 100644 --- a/src/foundation-core/fibers-of-maps.lagda.md +++ b/src/foundation-core/fibers-of-maps.lagda.md @@ -346,10 +346,10 @@ module _ ( is-section-inv-map-compute-fiber-comp) ( is-retraction-inv-map-compute-fiber-comp) - equiv-compute-fiber-comp : + compute-fiber-comp : fiber (g ∘ h) x ≃ Σ (fiber g x) (λ t → fiber h (pr1 t)) - pr1 equiv-compute-fiber-comp = map-compute-fiber-comp - pr2 equiv-compute-fiber-comp = is-equiv-map-compute-fiber-comp + pr1 compute-fiber-comp = map-compute-fiber-comp + pr2 compute-fiber-comp = is-equiv-map-compute-fiber-comp abstract is-equiv-inv-map-compute-fiber-comp : @@ -360,10 +360,10 @@ module _ ( is-retraction-inv-map-compute-fiber-comp) ( is-section-inv-map-compute-fiber-comp) - inv-equiv-compute-fiber-comp : + inv-compute-fiber-comp : Σ (fiber g x) (λ t → fiber h (pr1 t)) ≃ fiber (g ∘ h) x - pr1 inv-equiv-compute-fiber-comp = inv-map-compute-fiber-comp - pr2 inv-equiv-compute-fiber-comp = is-equiv-inv-map-compute-fiber-comp + pr1 inv-compute-fiber-comp = inv-map-compute-fiber-comp + pr2 inv-compute-fiber-comp = is-equiv-inv-map-compute-fiber-comp ``` ### When a product is taken over all fibers of a map, then we can equivalently take the product over the domain of that map diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 1824e76614..55475184ff 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -241,6 +241,7 @@ open import foundation.propositional-truncations public open import foundation.propositions public open import foundation.pullback-squares public open import foundation.pullbacks public +open import foundation.pullbacks-subtypes public open import foundation.raising-universe-levels public open import foundation.reflecting-maps-equivalence-relations public open import foundation.reflexive-relations public diff --git a/src/foundation/binary-functoriality-set-quotients.lagda.md b/src/foundation/binary-functoriality-set-quotients.lagda.md index 0e1a86f107..2d0970bf86 100644 --- a/src/foundation/binary-functoriality-set-quotients.lagda.md +++ b/src/foundation/binary-functoriality-set-quotients.lagda.md @@ -54,14 +54,14 @@ all `x : A` and `y : B`. ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) - {C : UU l5} (T : Equivalence-Relation l6 C) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) + {C : UU l5} (T : equivalence-relation l6 C) where - preserves-sim-binary-map-Equivalence-Relation-Prop : + preserves-sim-prop-binary-map-equivalence-relation : (A → B → C) → Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l6) - preserves-sim-binary-map-Equivalence-Relation-Prop f = + preserves-sim-prop-binary-map-equivalence-relation f = Π-Prop' A ( λ x → Π-Prop' A @@ -71,223 +71,229 @@ module _ Π-Prop' B ( λ y' → function-Prop - ( sim-Equivalence-Relation R x x') + ( sim-equivalence-relation R x x') ( function-Prop - ( sim-Equivalence-Relation S y y') - ( prop-Equivalence-Relation T (f x y) (f x' y'))))))) + ( sim-equivalence-relation S y y') + ( prop-equivalence-relation T (f x y) (f x' y'))))))) - preserves-sim-binary-map-Equivalence-Relation : + preserves-sim-binary-map-equivalence-relation : (A → B → C) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l6) - preserves-sim-binary-map-Equivalence-Relation f = - type-Prop (preserves-sim-binary-map-Equivalence-Relation-Prop f) - - is-prop-preserves-sim-binary-map-Equivalence-Relation : - (f : A → B → C) → is-prop (preserves-sim-binary-map-Equivalence-Relation f) - is-prop-preserves-sim-binary-map-Equivalence-Relation f = - is-prop-type-Prop (preserves-sim-binary-map-Equivalence-Relation-Prop f) - - binary-hom-Equivalence-Relation : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6) - binary-hom-Equivalence-Relation = - type-subtype preserves-sim-binary-map-Equivalence-Relation-Prop - - map-binary-hom-Equivalence-Relation : - (f : binary-hom-Equivalence-Relation) → A → B → C - map-binary-hom-Equivalence-Relation = pr1 - - preserves-sim-binary-hom-Equivalence-Relation : - (f : binary-hom-Equivalence-Relation) → - preserves-sim-binary-map-Equivalence-Relation - ( map-binary-hom-Equivalence-Relation f) - preserves-sim-binary-hom-Equivalence-Relation = pr2 + preserves-sim-binary-map-equivalence-relation f = + type-Prop (preserves-sim-prop-binary-map-equivalence-relation f) + + is-prop-preserves-sim-binary-map-equivalence-relation : + (f : A → B → C) → is-prop (preserves-sim-binary-map-equivalence-relation f) + is-prop-preserves-sim-binary-map-equivalence-relation f = + is-prop-type-Prop (preserves-sim-prop-binary-map-equivalence-relation f) + + binary-hom-equivalence-relation : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6) + binary-hom-equivalence-relation = + type-subtype preserves-sim-prop-binary-map-equivalence-relation + + map-binary-hom-equivalence-relation : + (f : binary-hom-equivalence-relation) → A → B → C + map-binary-hom-equivalence-relation = pr1 + + preserves-sim-binary-hom-equivalence-relation : + (f : binary-hom-equivalence-relation) → + preserves-sim-binary-map-equivalence-relation + ( map-binary-hom-equivalence-relation f) + preserves-sim-binary-hom-equivalence-relation = pr2 ``` ## Properties -### Characterization of equality of `binary-hom-Equivalence-Relation` +### Characterization of equality of `binary-hom-equivalence-relation` ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) - {C : UU l5} (T : Equivalence-Relation l6 C) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) + {C : UU l5} (T : equivalence-relation l6 C) where - binary-htpy-hom-Equivalence-Relation : - (f g : binary-hom-Equivalence-Relation R S T) → UU (l1 ⊔ l3 ⊔ l5) - binary-htpy-hom-Equivalence-Relation f g = + binary-htpy-hom-equivalence-relation : + (f g : binary-hom-equivalence-relation R S T) → UU (l1 ⊔ l3 ⊔ l5) + binary-htpy-hom-equivalence-relation f g = binary-htpy - ( map-binary-hom-Equivalence-Relation R S T f) - ( map-binary-hom-Equivalence-Relation R S T g) - - refl-binary-htpy-hom-Equivalence-Relation : - (f : binary-hom-Equivalence-Relation R S T) → - binary-htpy-hom-Equivalence-Relation f f - refl-binary-htpy-hom-Equivalence-Relation f = - refl-binary-htpy (map-binary-hom-Equivalence-Relation R S T f) - - binary-htpy-eq-hom-Equivalence-Relation : - (f g : binary-hom-Equivalence-Relation R S T) → - (f = g) → binary-htpy-hom-Equivalence-Relation f g - binary-htpy-eq-hom-Equivalence-Relation f .f refl = - refl-binary-htpy-hom-Equivalence-Relation f - - is-torsorial-binary-htpy-hom-Equivalence-Relation : - (f : binary-hom-Equivalence-Relation R S T) → - is-torsorial (binary-htpy-hom-Equivalence-Relation f) - is-torsorial-binary-htpy-hom-Equivalence-Relation f = + ( map-binary-hom-equivalence-relation R S T f) + ( map-binary-hom-equivalence-relation R S T g) + + refl-binary-htpy-hom-equivalence-relation : + (f : binary-hom-equivalence-relation R S T) → + binary-htpy-hom-equivalence-relation f f + refl-binary-htpy-hom-equivalence-relation f = + refl-binary-htpy (map-binary-hom-equivalence-relation R S T f) + + binary-htpy-eq-hom-equivalence-relation : + (f g : binary-hom-equivalence-relation R S T) → + (f = g) → binary-htpy-hom-equivalence-relation f g + binary-htpy-eq-hom-equivalence-relation f .f refl = + refl-binary-htpy-hom-equivalence-relation f + + is-torsorial-binary-htpy-hom-equivalence-relation : + (f : binary-hom-equivalence-relation R S T) → + is-torsorial (binary-htpy-hom-equivalence-relation f) + is-torsorial-binary-htpy-hom-equivalence-relation f = is-torsorial-Eq-subtype ( is-torsorial-binary-htpy - ( map-binary-hom-Equivalence-Relation R S T f)) - ( is-prop-preserves-sim-binary-map-Equivalence-Relation R S T) - ( map-binary-hom-Equivalence-Relation R S T f) - ( refl-binary-htpy-hom-Equivalence-Relation f) - ( preserves-sim-binary-hom-Equivalence-Relation R S T f) - - is-equiv-binary-htpy-eq-hom-Equivalence-Relation : - (f g : binary-hom-Equivalence-Relation R S T) → - is-equiv (binary-htpy-eq-hom-Equivalence-Relation f g) - is-equiv-binary-htpy-eq-hom-Equivalence-Relation f = + ( map-binary-hom-equivalence-relation R S T f)) + ( is-prop-preserves-sim-binary-map-equivalence-relation R S T) + ( map-binary-hom-equivalence-relation R S T f) + ( refl-binary-htpy-hom-equivalence-relation f) + ( preserves-sim-binary-hom-equivalence-relation R S T f) + + is-equiv-binary-htpy-eq-hom-equivalence-relation : + (f g : binary-hom-equivalence-relation R S T) → + is-equiv (binary-htpy-eq-hom-equivalence-relation f g) + is-equiv-binary-htpy-eq-hom-equivalence-relation f = fundamental-theorem-id - ( is-torsorial-binary-htpy-hom-Equivalence-Relation f) - ( binary-htpy-eq-hom-Equivalence-Relation f) - - extensionality-binary-hom-Equivalence-Relation : - (f g : binary-hom-Equivalence-Relation R S T) → - (f = g) ≃ binary-htpy-hom-Equivalence-Relation f g - pr1 (extensionality-binary-hom-Equivalence-Relation f g) = - binary-htpy-eq-hom-Equivalence-Relation f g - pr2 (extensionality-binary-hom-Equivalence-Relation f g) = - is-equiv-binary-htpy-eq-hom-Equivalence-Relation f g - - eq-binary-htpy-hom-Equivalence-Relation : - (f g : binary-hom-Equivalence-Relation R S T) → - binary-htpy-hom-Equivalence-Relation f g → f = g - eq-binary-htpy-hom-Equivalence-Relation f g = - map-inv-equiv (extensionality-binary-hom-Equivalence-Relation f g) + ( is-torsorial-binary-htpy-hom-equivalence-relation f) + ( binary-htpy-eq-hom-equivalence-relation f) + + extensionality-binary-hom-equivalence-relation : + (f g : binary-hom-equivalence-relation R S T) → + (f = g) ≃ binary-htpy-hom-equivalence-relation f g + pr1 (extensionality-binary-hom-equivalence-relation f g) = + binary-htpy-eq-hom-equivalence-relation f g + pr2 (extensionality-binary-hom-equivalence-relation f g) = + is-equiv-binary-htpy-eq-hom-equivalence-relation f g + + eq-binary-htpy-hom-equivalence-relation : + (f g : binary-hom-equivalence-relation R S T) → + binary-htpy-hom-equivalence-relation f g → f = g + eq-binary-htpy-hom-equivalence-relation f g = + map-inv-equiv (extensionality-binary-hom-equivalence-relation f g) ``` -### The type `binary-hom-Equivalence-Relation R S T` is equivalent to the type `hom-Equivalence-Relation R (eq-rel-hom-Equivalence-Relation S T)` +### The type `binary-hom-equivalence-relation R S T` is equivalent to the type `hom-equivalence-relation R (equivalence-relation-hom-equivalence-relation S T)` ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) - {C : UU l5} (T : Equivalence-Relation l6 C) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) + {C : UU l5} (T : equivalence-relation l6 C) where - map-hom-binary-hom-Equivalence-Relation : - binary-hom-Equivalence-Relation R S T → A → hom-Equivalence-Relation S T - pr1 (map-hom-binary-hom-Equivalence-Relation f a) = - map-binary-hom-Equivalence-Relation R S T f a - pr2 (map-hom-binary-hom-Equivalence-Relation f a) {x} {y} = - preserves-sim-binary-hom-Equivalence-Relation R S T f - ( refl-Equivalence-Relation R a) - - preserves-sim-hom-binary-hom-Equivalence-Relation : - (f : binary-hom-Equivalence-Relation R S T) → - preserves-sim-Equivalence-Relation R - ( eq-rel-hom-Equivalence-Relation S T) - ( map-hom-binary-hom-Equivalence-Relation f) - preserves-sim-hom-binary-hom-Equivalence-Relation f r b = - preserves-sim-binary-hom-Equivalence-Relation R S T f r - ( refl-Equivalence-Relation S b) - - hom-binary-hom-Equivalence-Relation : - binary-hom-Equivalence-Relation R S T → - hom-Equivalence-Relation R (eq-rel-hom-Equivalence-Relation S T) - pr1 (hom-binary-hom-Equivalence-Relation f) = - map-hom-binary-hom-Equivalence-Relation f - pr2 (hom-binary-hom-Equivalence-Relation f) = - preserves-sim-hom-binary-hom-Equivalence-Relation f - - map-binary-hom-hom-Equivalence-Relation : - hom-Equivalence-Relation R (eq-rel-hom-Equivalence-Relation S T) → + map-hom-binary-hom-equivalence-relation : + binary-hom-equivalence-relation R S T → A → hom-equivalence-relation S T + pr1 (map-hom-binary-hom-equivalence-relation f a) = + map-binary-hom-equivalence-relation R S T f a + pr2 (map-hom-binary-hom-equivalence-relation f a) {x} {y} = + preserves-sim-binary-hom-equivalence-relation R S T f + ( refl-equivalence-relation R a) + + preserves-sim-hom-binary-hom-equivalence-relation : + (f : binary-hom-equivalence-relation R S T) → + preserves-sim-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T) + ( map-hom-binary-hom-equivalence-relation f) + preserves-sim-hom-binary-hom-equivalence-relation f r b = + preserves-sim-binary-hom-equivalence-relation R S T f r + ( refl-equivalence-relation S b) + + hom-binary-hom-equivalence-relation : + binary-hom-equivalence-relation R S T → + hom-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T) + pr1 (hom-binary-hom-equivalence-relation f) = + map-hom-binary-hom-equivalence-relation f + pr2 (hom-binary-hom-equivalence-relation f) = + preserves-sim-hom-binary-hom-equivalence-relation f + + map-binary-hom-hom-equivalence-relation : + hom-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T) → A → B → C - map-binary-hom-hom-Equivalence-Relation f x = - map-hom-Equivalence-Relation S T - ( map-hom-Equivalence-Relation R - ( eq-rel-hom-Equivalence-Relation S T) + map-binary-hom-hom-equivalence-relation f x = + map-hom-equivalence-relation S T + ( map-hom-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T) ( f) ( x)) - preserves-sim-binary-hom-hom-Equivalence-Relation : - (f : hom-Equivalence-Relation R (eq-rel-hom-Equivalence-Relation S T)) → - preserves-sim-binary-map-Equivalence-Relation R S T - ( map-binary-hom-hom-Equivalence-Relation f) - preserves-sim-binary-hom-hom-Equivalence-Relation f {x} {x'} {y} {y'} r s = - transitive-Equivalence-Relation T + preserves-sim-binary-hom-hom-equivalence-relation : + (f : + hom-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T)) → + preserves-sim-binary-map-equivalence-relation R S T + ( map-binary-hom-hom-equivalence-relation f) + preserves-sim-binary-hom-hom-equivalence-relation f {x} {x'} {y} {y'} r s = + transitive-equivalence-relation T ( pr1 - ( map-hom-Equivalence-Relation - R (eq-rel-hom-Equivalence-Relation S T) f x) + ( map-hom-equivalence-relation + R (equivalence-relation-hom-equivalence-relation S T) f x) ( y)) ( pr1 - ( map-hom-Equivalence-Relation - R (eq-rel-hom-Equivalence-Relation S T) f x') y) - ( map-hom-Equivalence-Relation S T (pr1 f x') y') - ( preserves-sim-hom-Equivalence-Relation S T - ( map-hom-Equivalence-Relation - R (eq-rel-hom-Equivalence-Relation S T) f x') + ( map-hom-equivalence-relation + R (equivalence-relation-hom-equivalence-relation S T) f x') y) + ( map-hom-equivalence-relation S T (pr1 f x') y') + ( preserves-sim-hom-equivalence-relation S T + ( map-hom-equivalence-relation + R (equivalence-relation-hom-equivalence-relation S T) f x') ( s)) - ( preserves-sim-hom-Equivalence-Relation - R (eq-rel-hom-Equivalence-Relation S T) f r y) - - binary-hom-hom-Equivalence-Relation : - hom-Equivalence-Relation R (eq-rel-hom-Equivalence-Relation S T) → - binary-hom-Equivalence-Relation R S T - pr1 (binary-hom-hom-Equivalence-Relation f) = - map-binary-hom-hom-Equivalence-Relation f - pr2 (binary-hom-hom-Equivalence-Relation f) = - preserves-sim-binary-hom-hom-Equivalence-Relation f - - is-section-binary-hom-hom-Equivalence-Relation : - ( hom-binary-hom-Equivalence-Relation ∘ - binary-hom-hom-Equivalence-Relation) ~ + ( preserves-sim-hom-equivalence-relation + R (equivalence-relation-hom-equivalence-relation S T) f r y) + + binary-hom-hom-equivalence-relation : + hom-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T) → + binary-hom-equivalence-relation R S T + pr1 (binary-hom-hom-equivalence-relation f) = + map-binary-hom-hom-equivalence-relation f + pr2 (binary-hom-hom-equivalence-relation f) = + preserves-sim-binary-hom-hom-equivalence-relation f + + is-section-binary-hom-hom-equivalence-relation : + ( hom-binary-hom-equivalence-relation ∘ + binary-hom-hom-equivalence-relation) ~ id - is-section-binary-hom-hom-Equivalence-Relation f = - eq-htpy-hom-Equivalence-Relation R - ( eq-rel-hom-Equivalence-Relation S T) - ( hom-binary-hom-Equivalence-Relation - ( binary-hom-hom-Equivalence-Relation f)) + is-section-binary-hom-hom-equivalence-relation f = + eq-htpy-hom-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T) + ( hom-binary-hom-equivalence-relation + ( binary-hom-hom-equivalence-relation f)) ( f) ( λ x → - eq-htpy-hom-Equivalence-Relation S T - ( map-hom-Equivalence-Relation R - ( eq-rel-hom-Equivalence-Relation S T) - ( hom-binary-hom-Equivalence-Relation - ( binary-hom-hom-Equivalence-Relation f)) + eq-htpy-hom-equivalence-relation S T + ( map-hom-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T) + ( hom-binary-hom-equivalence-relation + ( binary-hom-hom-equivalence-relation f)) ( x)) - ( map-hom-Equivalence-Relation - R (eq-rel-hom-Equivalence-Relation S T) f x) + ( map-hom-equivalence-relation + R (equivalence-relation-hom-equivalence-relation S T) f x) ( refl-htpy)) - is-retraction-binary-hom-hom-Equivalence-Relation : - ( binary-hom-hom-Equivalence-Relation ∘ - hom-binary-hom-Equivalence-Relation) ~ + is-retraction-binary-hom-hom-equivalence-relation : + ( binary-hom-hom-equivalence-relation ∘ + hom-binary-hom-equivalence-relation) ~ id - is-retraction-binary-hom-hom-Equivalence-Relation f = - eq-binary-htpy-hom-Equivalence-Relation R S T - ( binary-hom-hom-Equivalence-Relation - ( hom-binary-hom-Equivalence-Relation f)) + is-retraction-binary-hom-hom-equivalence-relation f = + eq-binary-htpy-hom-equivalence-relation R S T + ( binary-hom-hom-equivalence-relation + ( hom-binary-hom-equivalence-relation f)) ( f) - ( refl-binary-htpy (map-binary-hom-Equivalence-Relation R S T f)) + ( refl-binary-htpy (map-binary-hom-equivalence-relation R S T f)) - is-equiv-hom-binary-hom-Equivalence-Relation : - is-equiv hom-binary-hom-Equivalence-Relation - is-equiv-hom-binary-hom-Equivalence-Relation = + is-equiv-hom-binary-hom-equivalence-relation : + is-equiv hom-binary-hom-equivalence-relation + is-equiv-hom-binary-hom-equivalence-relation = is-equiv-is-invertible - binary-hom-hom-Equivalence-Relation - is-section-binary-hom-hom-Equivalence-Relation - is-retraction-binary-hom-hom-Equivalence-Relation - - equiv-hom-binary-hom-Equivalence-Relation : - binary-hom-Equivalence-Relation R S T ≃ - hom-Equivalence-Relation R (eq-rel-hom-Equivalence-Relation S T) - pr1 equiv-hom-binary-hom-Equivalence-Relation = - hom-binary-hom-Equivalence-Relation - pr2 equiv-hom-binary-hom-Equivalence-Relation = - is-equiv-hom-binary-hom-Equivalence-Relation + binary-hom-hom-equivalence-relation + is-section-binary-hom-hom-equivalence-relation + is-retraction-binary-hom-hom-equivalence-relation + + equiv-hom-binary-hom-equivalence-relation : + binary-hom-equivalence-relation R S T ≃ + hom-equivalence-relation R + ( equivalence-relation-hom-equivalence-relation S T) + pr1 equiv-hom-binary-hom-equivalence-relation = + hom-binary-hom-equivalence-relation + pr2 equiv-hom-binary-hom-equivalence-relation = + is-equiv-hom-binary-hom-equivalence-relation ``` ### Binary functoriality of types that satisfy the universal property of set quotients @@ -295,79 +301,79 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 l6 l7 l8 l9 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - (QR : Set l3) (qR : reflecting-map-Equivalence-Relation R (type-Set QR)) - {B : UU l4} (S : Equivalence-Relation l5 B) - (QS : Set l6) (qS : reflecting-map-Equivalence-Relation S (type-Set QS)) - {C : UU l7} (T : Equivalence-Relation l8 C) - (QT : Set l9) (qT : reflecting-map-Equivalence-Relation T (type-Set QT)) + {A : UU l1} (R : equivalence-relation l2 A) + (QR : Set l3) (qR : reflecting-map-equivalence-relation R (type-Set QR)) + {B : UU l4} (S : equivalence-relation l5 B) + (QS : Set l6) (qS : reflecting-map-equivalence-relation S (type-Set QS)) + {C : UU l7} (T : equivalence-relation l8 C) + (QT : Set l9) (qT : reflecting-map-equivalence-relation T (type-Set QT)) (UqR : {l : Level} → is-set-quotient l R QR qR) (UqS : {l : Level} → is-set-quotient l S QS qS) (UqT : {l : Level} → is-set-quotient l T QT qT) - (f : binary-hom-Equivalence-Relation R S T) + (f : binary-hom-equivalence-relation R S T) where private p : (x : A) (y : B) → - map-reflecting-map-Equivalence-Relation T qT - ( map-binary-hom-Equivalence-Relation R S T f x y) = - inclusion-is-set-quotient-hom-Equivalence-Relation S QS qS UqS T QT qT UqT - ( quotient-hom-Equivalence-Relation-Set S T) - ( reflecting-map-quotient-map-hom-Equivalence-Relation S T) - ( is-set-quotient-set-quotient-hom-Equivalence-Relation S T) - ( quotient-map-hom-Equivalence-Relation S T - ( map-hom-binary-hom-Equivalence-Relation R S T f x)) - ( map-reflecting-map-Equivalence-Relation S qS y) + map-reflecting-map-equivalence-relation T qT + ( map-binary-hom-equivalence-relation R S T f x y) = + inclusion-is-set-quotient-hom-equivalence-relation S QS qS UqS T QT qT UqT + ( quotient-hom-equivalence-relation-Set S T) + ( reflecting-map-quotient-map-hom-equivalence-relation S T) + ( is-set-quotient-set-quotient-hom-equivalence-relation S T) + ( quotient-map-hom-equivalence-relation S T + ( map-hom-binary-hom-equivalence-relation R S T f x)) + ( map-reflecting-map-equivalence-relation S qS y) p x y = ( inv ( coherence-square-map-is-set-quotient S QS qS T QT qT UqS UqT - ( map-hom-binary-hom-Equivalence-Relation R S T f x) + ( map-hom-binary-hom-equivalence-relation R S T f x) ( y))) ∙ ( inv ( htpy-eq - ( triangle-inclusion-is-set-quotient-hom-Equivalence-Relation + ( triangle-inclusion-is-set-quotient-hom-equivalence-relation S QS qS UqS T QT qT UqT - ( quotient-hom-Equivalence-Relation-Set S T) - ( reflecting-map-quotient-map-hom-Equivalence-Relation S T) - ( is-set-quotient-set-quotient-hom-Equivalence-Relation S T) - ( map-hom-binary-hom-Equivalence-Relation R S T f x)) - ( map-reflecting-map-Equivalence-Relation S qS y))) + ( quotient-hom-equivalence-relation-Set S T) + ( reflecting-map-quotient-map-hom-equivalence-relation S T) + ( is-set-quotient-set-quotient-hom-equivalence-relation S T) + ( map-hom-binary-hom-equivalence-relation R S T f x)) + ( map-reflecting-map-equivalence-relation S qS y))) unique-binary-map-is-set-quotient : is-contr ( Σ ( type-Set QR → type-Set QS → type-Set QT) ( λ h → (x : A) (y : B) → - ( h ( map-reflecting-map-Equivalence-Relation R qR x) - ( map-reflecting-map-Equivalence-Relation S qS y)) = - ( map-reflecting-map-Equivalence-Relation T qT - ( map-binary-hom-Equivalence-Relation R S T f x y)))) + ( h ( map-reflecting-map-equivalence-relation R qR x) + ( map-reflecting-map-equivalence-relation S qS y)) = + ( map-reflecting-map-equivalence-relation T qT + ( map-binary-hom-equivalence-relation R S T f x y)))) unique-binary-map-is-set-quotient = is-contr-equiv - ( Σ ( type-Set QR → set-quotient-hom-Equivalence-Relation S T) + ( Σ ( type-Set QR → set-quotient-hom-equivalence-relation S T) ( λ h → ( x : A) → - ( h (map-reflecting-map-Equivalence-Relation R qR x)) = - ( quotient-map-hom-Equivalence-Relation S T - ( map-hom-binary-hom-Equivalence-Relation R S T f x)))) + ( h (map-reflecting-map-equivalence-relation R qR x)) = + ( quotient-map-hom-equivalence-relation S T + ( map-hom-binary-hom-equivalence-relation R S T f x)))) ( equiv-tot ( λ h → ( equiv-inv-htpy - ( ( quotient-map-hom-Equivalence-Relation S T) ∘ - ( map-hom-binary-hom-Equivalence-Relation R S T f)) - ( h ∘ map-reflecting-map-Equivalence-Relation R qR))) ∘e + ( ( quotient-map-hom-equivalence-relation S T) ∘ + ( map-hom-binary-hom-equivalence-relation R S T f)) + ( h ∘ map-reflecting-map-equivalence-relation R qR))) ∘e ( ( inv-equiv ( equiv-postcomp-extension-surjection - ( map-reflecting-map-Equivalence-Relation R qR , + ( map-reflecting-map-equivalence-relation R qR , is-surjective-is-set-quotient R QR qR UqR) - ( ( quotient-map-hom-Equivalence-Relation S T) ∘ - ( map-hom-binary-hom-Equivalence-Relation R S T f)) - ( emb-inclusion-is-set-quotient-hom-Equivalence-Relation + ( ( quotient-map-hom-equivalence-relation S T) ∘ + ( map-hom-binary-hom-equivalence-relation R S T f)) + ( emb-inclusion-is-set-quotient-hom-equivalence-relation S QS qS UqS T QT qT UqT - ( quotient-hom-Equivalence-Relation-Set S T) - ( reflecting-map-quotient-map-hom-Equivalence-Relation S T) - ( is-set-quotient-set-quotient-hom-Equivalence-Relation + ( quotient-hom-equivalence-relation-Set S T) + ( reflecting-map-quotient-map-hom-equivalence-relation S T) + ( is-set-quotient-set-quotient-hom-equivalence-relation S T)))) ∘e ( equiv-tot ( λ h → @@ -376,51 +382,51 @@ module _ ( inv-equiv equiv-funext) ∘e ( inv-equiv ( equiv-dependent-universal-property-surj-is-surjective - ( map-reflecting-map-Equivalence-Relation S qS) + ( map-reflecting-map-equivalence-relation S qS) ( is-surjective-is-set-quotient S QS qS UqS) ( λ u → Id-Prop QT - ( inclusion-is-set-quotient-hom-Equivalence-Relation + ( inclusion-is-set-quotient-hom-equivalence-relation S QS qS UqS T QT qT UqT - ( quotient-hom-Equivalence-Relation-Set S T) - ( reflecting-map-quotient-map-hom-Equivalence-Relation + ( quotient-hom-equivalence-relation-Set S T) + ( reflecting-map-quotient-map-hom-equivalence-relation S T) - ( is-set-quotient-set-quotient-hom-Equivalence-Relation + ( is-set-quotient-set-quotient-hom-equivalence-relation S T) - ( quotient-map-hom-Equivalence-Relation S T - ( map-hom-binary-hom-Equivalence-Relation + ( quotient-map-hom-equivalence-relation S T + ( map-hom-binary-hom-equivalence-relation R S T f x)) ( u)) ( h - ( map-reflecting-map-Equivalence-Relation R qR x) + ( map-reflecting-map-equivalence-relation R qR x) ( u)))) ∘e ( equiv-Π-equiv-family ( λ y → ( equiv-inv _ _) ∘e ( equiv-concat' ( h - ( map-reflecting-map-Equivalence-Relation R qR x) - ( map-reflecting-map-Equivalence-Relation S qS y)) + ( map-reflecting-map-equivalence-relation R qR x) + ( map-reflecting-map-equivalence-relation S qS y)) ( p x y)))))))))) ( unique-map-is-set-quotient R QR qR - ( eq-rel-hom-Equivalence-Relation S T) - ( quotient-hom-Equivalence-Relation-Set S T) - ( reflecting-map-quotient-map-hom-Equivalence-Relation S T) + ( equivalence-relation-hom-equivalence-relation S T) + ( quotient-hom-equivalence-relation-Set S T) + ( reflecting-map-quotient-map-hom-equivalence-relation S T) ( UqR) - ( is-set-quotient-set-quotient-hom-Equivalence-Relation S T) - ( hom-binary-hom-Equivalence-Relation R S T f)) + ( is-set-quotient-set-quotient-hom-equivalence-relation S T) + ( hom-binary-hom-equivalence-relation R S T f)) - binary-map-is-set-quotient : type-hom-Set QR (hom-Set QS QT) + binary-map-is-set-quotient : hom-Set QR (hom-set-Set QS QT) binary-map-is-set-quotient = pr1 (center unique-binary-map-is-set-quotient) compute-binary-map-is-set-quotient : (x : A) (y : B) → binary-map-is-set-quotient - ( map-reflecting-map-Equivalence-Relation R qR x) - ( map-reflecting-map-Equivalence-Relation S qS y) = - map-reflecting-map-Equivalence-Relation - T qT (map-binary-hom-Equivalence-Relation R S T f x y) + ( map-reflecting-map-equivalence-relation R qR x) + ( map-reflecting-map-equivalence-relation S qS y) = + map-reflecting-map-equivalence-relation + T qT (map-binary-hom-equivalence-relation R S T f x y) compute-binary-map-is-set-quotient = pr2 (center unique-binary-map-is-set-quotient) ``` @@ -430,10 +436,10 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) - {C : UU l5} (T : Equivalence-Relation l6 C) - (f : binary-hom-Equivalence-Relation R S T) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) + {C : UU l5} (T : equivalence-relation l6 C) + (f : binary-hom-equivalence-relation R S T) where unique-binary-map-set-quotient : @@ -443,7 +449,7 @@ module _ (x : A) (y : B) → ( h (quotient-map R x) (quotient-map S y)) = ( quotient-map T - ( map-binary-hom-Equivalence-Relation R S T f x y)))) + ( map-binary-hom-equivalence-relation R S T f x y)))) unique-binary-map-set-quotient = unique-binary-map-is-set-quotient ( R) @@ -467,7 +473,7 @@ module _ compute-binary-map-set-quotient : (x : A) (y : B) → ( binary-map-set-quotient (quotient-map R x) (quotient-map S y)) = - ( quotient-map T (map-binary-hom-Equivalence-Relation R S T f x y)) + ( quotient-map T (map-binary-hom-equivalence-relation R S T f x y)) compute-binary-map-set-quotient = pr2 (center unique-binary-map-set-quotient) ``` diff --git a/src/foundation/binary-reflecting-maps-equivalence-relations.lagda.md b/src/foundation/binary-reflecting-maps-equivalence-relations.lagda.md index 0bb1c7e360..f9893c8f19 100644 --- a/src/foundation/binary-reflecting-maps-equivalence-relations.lagda.md +++ b/src/foundation/binary-reflecting-maps-equivalence-relations.lagda.md @@ -36,35 +36,35 @@ such that for any to `R`-related elements `x` and `x'` in `A` and any two ```agda module _ {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : UU l2} - (R : Equivalence-Relation l3 A) (S : Equivalence-Relation l4 B) + (R : equivalence-relation l3 A) (S : equivalence-relation l4 B) where - binary-reflects-Equivalence-Relation : + binary-reflects-equivalence-relation : {X : UU l5} (f : A → B → X) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5) - binary-reflects-Equivalence-Relation f = + binary-reflects-equivalence-relation f = {x x' : A} {y y' : B} → - sim-Equivalence-Relation R x x' → sim-Equivalence-Relation S y y' → + sim-equivalence-relation R x x' → sim-equivalence-relation S y y' → f x y = f x' y' - binary-reflecting-map-Equivalence-Relation : + binary-reflecting-map-equivalence-relation : (X : UU l5) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5) - binary-reflecting-map-Equivalence-Relation X = - Σ (A → B → X) binary-reflects-Equivalence-Relation + binary-reflecting-map-equivalence-relation X = + Σ (A → B → X) binary-reflects-equivalence-relation - map-binary-reflecting-map-Equivalence-Relation : - {X : UU l5} → binary-reflecting-map-Equivalence-Relation X → A → B → X - map-binary-reflecting-map-Equivalence-Relation = pr1 + map-binary-reflecting-map-equivalence-relation : + {X : UU l5} → binary-reflecting-map-equivalence-relation X → A → B → X + map-binary-reflecting-map-equivalence-relation = pr1 - reflects-binary-reflecting-map-Equivalence-Relation : - {X : UU l5} (f : binary-reflecting-map-Equivalence-Relation X) → - binary-reflects-Equivalence-Relation - ( map-binary-reflecting-map-Equivalence-Relation f) - reflects-binary-reflecting-map-Equivalence-Relation = pr2 + reflects-binary-reflecting-map-equivalence-relation : + {X : UU l5} (f : binary-reflecting-map-equivalence-relation X) → + binary-reflects-equivalence-relation + ( map-binary-reflecting-map-equivalence-relation f) + reflects-binary-reflecting-map-equivalence-relation = pr2 - is-prop-binary-reflects-Equivalence-Relation : + is-prop-binary-reflects-equivalence-relation : (X : Set l5) (f : A → B → type-Set X) → - is-prop (binary-reflects-Equivalence-Relation f) - is-prop-binary-reflects-Equivalence-Relation X f = + is-prop (binary-reflects-equivalence-relation f) + is-prop-binary-reflects-equivalence-relation X f = is-prop-Π' ( λ x → is-prop-Π' @@ -77,12 +77,12 @@ module _ ( is-prop-function-type ( is-set-type-Set X (f x y) (f x' y'))))))) - binary-reflects-Equivalence-Relation-Prop : + binary-reflects-prop-equivalence-relation : (X : Set l5) (f : A → B → type-Set X) → Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5) - pr1 (binary-reflects-Equivalence-Relation-Prop X f) = - binary-reflects-Equivalence-Relation f - pr2 (binary-reflects-Equivalence-Relation-Prop X f) = - is-prop-binary-reflects-Equivalence-Relation X f + pr1 (binary-reflects-prop-equivalence-relation X f) = + binary-reflects-equivalence-relation f + pr2 (binary-reflects-prop-equivalence-relation X f) = + is-prop-binary-reflects-equivalence-relation X f ``` ### Characterizing the identity type of binary reflecting maps into sets @@ -90,62 +90,62 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) - (C : Set l5) (f : binary-reflecting-map-Equivalence-Relation R S (type-Set C)) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) + (C : Set l5) (f : binary-reflecting-map-equivalence-relation R S (type-Set C)) where - htpy-binary-reflecting-map-Equivalence-Relation : - (g : binary-reflecting-map-Equivalence-Relation R S (type-Set C)) → + htpy-binary-reflecting-map-equivalence-relation : + (g : binary-reflecting-map-equivalence-relation R S (type-Set C)) → UU (l1 ⊔ l3 ⊔ l5) - htpy-binary-reflecting-map-Equivalence-Relation g = + htpy-binary-reflecting-map-equivalence-relation g = (x : A) (y : B) → - map-binary-reflecting-map-Equivalence-Relation R S f x y = - map-binary-reflecting-map-Equivalence-Relation R S g x y - - refl-htpy-binary-reflecting-map-Equivalence-Relation : - htpy-binary-reflecting-map-Equivalence-Relation f - refl-htpy-binary-reflecting-map-Equivalence-Relation x y = refl - - htpy-eq-binary-reflecting-map-Equivalence-Relation : - (g : binary-reflecting-map-Equivalence-Relation R S (type-Set C)) → - (f = g) → htpy-binary-reflecting-map-Equivalence-Relation g - htpy-eq-binary-reflecting-map-Equivalence-Relation .f refl = - refl-htpy-binary-reflecting-map-Equivalence-Relation - - is-torsorial-htpy-binary-reflecting-map-Equivalence-Relation : - is-torsorial (htpy-binary-reflecting-map-Equivalence-Relation) - is-torsorial-htpy-binary-reflecting-map-Equivalence-Relation = + map-binary-reflecting-map-equivalence-relation R S f x y = + map-binary-reflecting-map-equivalence-relation R S g x y + + refl-htpy-binary-reflecting-map-equivalence-relation : + htpy-binary-reflecting-map-equivalence-relation f + refl-htpy-binary-reflecting-map-equivalence-relation x y = refl + + htpy-eq-binary-reflecting-map-equivalence-relation : + (g : binary-reflecting-map-equivalence-relation R S (type-Set C)) → + (f = g) → htpy-binary-reflecting-map-equivalence-relation g + htpy-eq-binary-reflecting-map-equivalence-relation .f refl = + refl-htpy-binary-reflecting-map-equivalence-relation + + is-torsorial-htpy-binary-reflecting-map-equivalence-relation : + is-torsorial (htpy-binary-reflecting-map-equivalence-relation) + is-torsorial-htpy-binary-reflecting-map-equivalence-relation = is-torsorial-Eq-subtype ( is-torsorial-Eq-Π - ( λ x g → map-binary-reflecting-map-Equivalence-Relation R S f x ~ g) + ( λ x g → map-binary-reflecting-map-equivalence-relation R S f x ~ g) ( λ x → is-torsorial-htpy - ( map-binary-reflecting-map-Equivalence-Relation R S f x))) - ( is-prop-binary-reflects-Equivalence-Relation R S C) - ( map-binary-reflecting-map-Equivalence-Relation R S f) + ( map-binary-reflecting-map-equivalence-relation R S f x))) + ( is-prop-binary-reflects-equivalence-relation R S C) + ( map-binary-reflecting-map-equivalence-relation R S f) ( λ x → refl-htpy) - ( reflects-binary-reflecting-map-Equivalence-Relation R S f) + ( reflects-binary-reflecting-map-equivalence-relation R S f) - is-equiv-htpy-eq-binary-reflecting-map-Equivalence-Relation : - (g : binary-reflecting-map-Equivalence-Relation R S (type-Set C)) → - is-equiv (htpy-eq-binary-reflecting-map-Equivalence-Relation g) - is-equiv-htpy-eq-binary-reflecting-map-Equivalence-Relation = + is-equiv-htpy-eq-binary-reflecting-map-equivalence-relation : + (g : binary-reflecting-map-equivalence-relation R S (type-Set C)) → + is-equiv (htpy-eq-binary-reflecting-map-equivalence-relation g) + is-equiv-htpy-eq-binary-reflecting-map-equivalence-relation = fundamental-theorem-id - is-torsorial-htpy-binary-reflecting-map-Equivalence-Relation - htpy-eq-binary-reflecting-map-Equivalence-Relation - - extensionality-binary-reflecting-map-Equivalence-Relation : - (g : binary-reflecting-map-Equivalence-Relation R S (type-Set C)) → - (f = g) ≃ htpy-binary-reflecting-map-Equivalence-Relation g - pr1 (extensionality-binary-reflecting-map-Equivalence-Relation g) = - htpy-eq-binary-reflecting-map-Equivalence-Relation g - pr2 (extensionality-binary-reflecting-map-Equivalence-Relation g) = - is-equiv-htpy-eq-binary-reflecting-map-Equivalence-Relation g - - eq-htpy-binary-reflecting-map-Equivalence-Relation : - (g : binary-reflecting-map-Equivalence-Relation R S (type-Set C)) → - htpy-binary-reflecting-map-Equivalence-Relation g → (f = g) - eq-htpy-binary-reflecting-map-Equivalence-Relation g = - map-inv-equiv (extensionality-binary-reflecting-map-Equivalence-Relation g) + is-torsorial-htpy-binary-reflecting-map-equivalence-relation + htpy-eq-binary-reflecting-map-equivalence-relation + + extensionality-binary-reflecting-map-equivalence-relation : + (g : binary-reflecting-map-equivalence-relation R S (type-Set C)) → + (f = g) ≃ htpy-binary-reflecting-map-equivalence-relation g + pr1 (extensionality-binary-reflecting-map-equivalence-relation g) = + htpy-eq-binary-reflecting-map-equivalence-relation g + pr2 (extensionality-binary-reflecting-map-equivalence-relation g) = + is-equiv-htpy-eq-binary-reflecting-map-equivalence-relation g + + eq-htpy-binary-reflecting-map-equivalence-relation : + (g : binary-reflecting-map-equivalence-relation R S (type-Set C)) → + htpy-binary-reflecting-map-equivalence-relation g → (f = g) + eq-htpy-binary-reflecting-map-equivalence-relation g = + map-inv-equiv (extensionality-binary-reflecting-map-equivalence-relation g) ``` diff --git a/src/foundation/binary-relations.lagda.md b/src/foundation/binary-relations.lagda.md index e798315750..d95334b129 100644 --- a/src/foundation/binary-relations.lagda.md +++ b/src/foundation/binary-relations.lagda.md @@ -210,10 +210,10 @@ module _ pr2 (extensionality-Relation-Prop S) = is-equiv-relates-same-elements-eq-Relation-Prop S - eq-relates-same-elements-Relation-Prop : + equivalence-relationates-same-elements-Relation-Prop : (S : Relation-Prop l2 A) → relates-same-elements-Relation-Prop R S → (R = S) - eq-relates-same-elements-Relation-Prop S = + equivalence-relationates-same-elements-Relation-Prop S = map-inv-equiv (extensionality-Relation-Prop S) ``` diff --git a/src/foundation/cartesian-products-set-quotients.lagda.md b/src/foundation/cartesian-products-set-quotients.lagda.md index 17cd020263..0ae1a73906 100644 --- a/src/foundation/cartesian-products-set-quotients.lagda.md +++ b/src/foundation/cartesian-products-set-quotients.lagda.md @@ -44,8 +44,8 @@ of their product. ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where prod-set-quotient-Set : Set (l1 ⊔ l2 ⊔ l3 ⊔ l4) @@ -62,8 +62,8 @@ module _ pair (quotient-map R a) (quotient-map S b) reflecting-map-prod-quotient-map : - reflecting-map-Equivalence-Relation - ( prod-Equivalence-Relation R S) + reflecting-map-equivalence-relation + ( prod-equivalence-relation R S) ( prod-set-quotient) reflecting-map-prod-quotient-map = pair @@ -82,27 +82,27 @@ module _ inv-precomp-set-quotient-prod-set-quotient : {l : Level} (X : Set l) → - reflecting-map-Equivalence-Relation - ( prod-Equivalence-Relation R S) + reflecting-map-equivalence-relation + ( prod-equivalence-relation R S) ( type-Set X) → - type-hom-Set prod-set-quotient-Set X + hom-Set prod-set-quotient-Set X inv-precomp-set-quotient-prod-set-quotient X (f , H) (qa , qb) = inv-precomp-set-quotient ( R) - ( hom-Set (quotient-Set S) X) + ( hom-set-Set (quotient-Set S) X) ( pair ( λ a qb' → inv-precomp-set-quotient S X ( pair (λ b → f (a , b)) - (λ p → H (refl-Equivalence-Relation R a , p))) + (λ p → H (refl-equivalence-relation R a , p))) qb') ( λ {a1} {a2} p → ( ap (inv-precomp-set-quotient S X) ( eq-pair-Σ - ( eq-htpy (λ b → H (p , refl-Equivalence-Relation S b))) + ( eq-htpy (λ b → H (p , refl-equivalence-relation S b))) ( eq-is-prop - ( is-prop-reflects-Equivalence-Relation S X _)))))) + ( is-prop-reflects-equivalence-relation S X _)))))) ( qa) ( qb) @@ -110,7 +110,7 @@ module _ { l : Level} ( X : Set l) → ( precomp-Set-Quotient - ( prod-Equivalence-Relation R S) + ( prod-equivalence-relation R S) ( prod-set-quotient-Set) ( reflecting-map-prod-quotient-map) ( X) ∘ @@ -122,19 +122,19 @@ module _ ( λ (a , b) → ( htpy-eq ( is-section-inv-precomp-set-quotient R - ( hom-Set (quotient-Set S) X) _ a) + ( hom-set-Set (quotient-Set S) X) _ a) ( quotient-map S b) ∙ ( is-section-inv-precomp-set-quotient S X _ b)))) ( eq-is-prop - ( is-prop-reflects-Equivalence-Relation - ( prod-Equivalence-Relation R S) X f)) + ( is-prop-reflects-equivalence-relation + ( prod-equivalence-relation R S) X f)) is-retraction-inv-precomp-set-quotient-prod-set-quotient : { l : Level} ( X : Set l) → ( ( inv-precomp-set-quotient-prod-set-quotient X) ∘ ( precomp-Set-Quotient - ( prod-Equivalence-Relation R S) + ( prod-equivalence-relation R S) ( prod-set-quotient-Set) ( reflecting-map-prod-quotient-map) ( X))) ~ @@ -147,20 +147,20 @@ module _ ( ap ( inv-precomp-set-quotient ( R) - ( hom-Set (quotient-Set S) X)) + ( hom-set-Set (quotient-Set S) X)) ( eq-pair-Σ ( eq-htpy λ a → ( ap ( inv-precomp-set-quotient S X) ( eq-pair-Σ refl ( eq-is-prop - ( is-prop-reflects-Equivalence-Relation S X _)))) ∙ + ( is-prop-reflects-equivalence-relation S X _)))) ∙ ( is-retraction-inv-precomp-set-quotient S X _)) ( eq-is-prop - ( is-prop-reflects-Equivalence-Relation R - (hom-Set (quotient-Set S) X) _))) ∙ + ( is-prop-reflects-equivalence-relation R + ( hom-set-Set (quotient-Set S) X) _))) ∙ ( is-retraction-inv-precomp-set-quotient R - ( hom-Set (quotient-Set S) X) + ( hom-set-Set (quotient-Set S) X) ( λ qa qb → f (qa , qb)))) ( qa)) ( qb))) @@ -168,7 +168,7 @@ module _ is-set-quotient-prod-set-quotient : { l : Level} → ( is-set-quotient l - (prod-Equivalence-Relation R S) + (prod-equivalence-relation R S) prod-set-quotient-Set reflecting-map-prod-quotient-map) pr1 (pr1 (is-set-quotient-prod-set-quotient X)) = @@ -181,7 +181,7 @@ module _ is-retraction-inv-precomp-set-quotient-prod-set-quotient X quotient-prod : Set (l1 ⊔ l2 ⊔ l3 ⊔ l4) - quotient-prod = quotient-Set (prod-Equivalence-Relation R S) + quotient-prod = quotient-Set (prod-equivalence-relation R S) type-quotient-prod : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) type-quotient-prod = pr1 quotient-prod @@ -190,25 +190,25 @@ module _ prod-set-quotient ≃ type-Set (quotient-prod) equiv-quotient-prod-prod-set-quotient = equiv-uniqueness-set-quotient - ( prod-Equivalence-Relation R S) + ( prod-equivalence-relation R S) ( prod-set-quotient-Set) ( reflecting-map-prod-quotient-map) ( is-set-quotient-prod-set-quotient) ( quotient-prod) - ( reflecting-map-quotient-map (prod-Equivalence-Relation R S)) - ( is-set-quotient-set-quotient (prod-Equivalence-Relation R S)) + ( reflecting-map-quotient-map (prod-equivalence-relation R S)) + ( is-set-quotient-set-quotient (prod-equivalence-relation R S)) triangle-uniqueness-prod-set-quotient : ( map-equiv equiv-quotient-prod-prod-set-quotient ∘ prod-set-quotient-map) ~ - quotient-map (prod-Equivalence-Relation R S) + quotient-map (prod-equivalence-relation R S) triangle-uniqueness-prod-set-quotient = triangle-uniqueness-set-quotient - ( prod-Equivalence-Relation R S) + ( prod-equivalence-relation R S) ( prod-set-quotient-Set) ( reflecting-map-prod-quotient-map) ( is-set-quotient-prod-set-quotient) ( quotient-prod) - ( reflecting-map-quotient-map (prod-Equivalence-Relation R S)) - ( is-set-quotient-set-quotient (prod-Equivalence-Relation R S)) + ( reflecting-map-quotient-map (prod-equivalence-relation R S)) + ( is-set-quotient-set-quotient (prod-equivalence-relation R S)) ``` diff --git a/src/foundation/category-of-sets.lagda.md b/src/foundation/category-of-sets.lagda.md index b1b8f09129..16d2e854d1 100644 --- a/src/foundation/category-of-sets.lagda.md +++ b/src/foundation/category-of-sets.lagda.md @@ -41,7 +41,7 @@ universe level, and there is a ```agda Set-Large-Precategory : Large-Precategory lsuc (_⊔_) obj-Large-Precategory Set-Large-Precategory = Set -hom-set-Large-Precategory Set-Large-Precategory = hom-Set +hom-set-Large-Precategory Set-Large-Precategory = hom-set-Set comp-hom-Large-Precategory Set-Large-Precategory g f = g ∘ f id-hom-Large-Precategory Set-Large-Precategory = id associative-comp-hom-Large-Precategory Set-Large-Precategory h g f = refl diff --git a/src/foundation/choice-of-representatives-equivalence-relation.lagda.md b/src/foundation/choice-of-representatives-equivalence-relation.lagda.md index b964dbdb76..6ba3e69b75 100644 --- a/src/foundation/choice-of-representatives-equivalence-relation.lagda.md +++ b/src/foundation/choice-of-representatives-equivalence-relation.lagda.md @@ -36,13 +36,13 @@ we can construct the set quotient as a retract of the original type. ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-choice-of-representatives : (A → UU l3) → UU (l1 ⊔ l2 ⊔ l3) is-choice-of-representatives P = - (a : A) → is-contr (Σ A (λ x → P x × sim-Equivalence-Relation R a x)) + (a : A) → is-contr (Σ A (λ x → P x × sim-equivalence-relation R a x)) representatives : {P : A → UU l3} → is-choice-of-representatives P → UU (l1 ⊔ l3) @@ -67,13 +67,13 @@ module _ ( pair ( pair (pr1 (center (H a))) (pr1 (pr2 (center (H a))))) ( ( apply-effectiveness-class' R - ( symmetric-Equivalence-Relation R _ _ + ( symmetric-equivalence-relation R _ _ ( pr2 (pr2 (center (H a)))))) ∙ ( eq-class-equivalence-class R ( pair Q K) ( backward-implication ( φ a) - ( refl-Equivalence-Relation R _)))))) + ( refl-equivalence-relation R _)))))) abstract is-emb-class-representatives : @@ -82,8 +82,8 @@ module _ is-emb-class-representatives {P} H (pair a p) = fundamental-theorem-id ( is-contr-equiv - ( Σ A (λ x → P x × sim-Equivalence-Relation R a x)) - ( ( associative-Σ A P (λ z → sim-Equivalence-Relation R a (pr1 z))) ∘e + ( Σ A (λ x → P x × sim-equivalence-relation R a x)) + ( ( associative-Σ A P (λ z → sim-equivalence-relation R a (pr1 z))) ∘e ( equiv-tot ( λ t → is-effective-class R a (pr1 t)))) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 84e499b01f..0f13ba2381 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -32,12 +32,12 @@ open import foundation-core.identity-types Two commuting triangles ```text - A A ---> X - | \ \ K | - | \ L \ | - | H \ \ | - v v v - B ---> Y Y + A A --> X + | \ \ | + | \ H L K \ | + | \ \ | + v v v v + B --> Y Y ``` with a homotopic diagonal may be pasted into a commuting square @@ -89,7 +89,7 @@ module _ ap (_∙ K x) right-unit ``` -### Composing and inverting squares horizontally and vertically +### Inverting squares horizontally and vertically If the horizontal/vertical maps in a commuting square are both equivalences, then the square remains commuting if we invert those equivalences. diff --git a/src/foundation/connected-components.lagda.md b/src/foundation/connected-components.lagda.md index 70479bd804..c719f53bf2 100644 --- a/src/foundation/connected-components.lagda.md +++ b/src/foundation/connected-components.lagda.md @@ -9,12 +9,14 @@ module foundation.connected-components where ```agda open import foundation.0-connected-types open import foundation.dependent-pair-types +open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.propositions open import foundation.universe-levels open import foundation-core.equality-dependent-pair-types open import foundation-core.identity-types +open import foundation-core.subtypes open import foundation-core.truncated-types open import foundation-core.truncation-levels @@ -30,7 +32,26 @@ open import structured-types.pointed-types The **connected component** of a type `A` at an element `a : A` is the type of all `x : A` that are [merely equal](foundation.mere-equality.md) to `a`. -## Definition +The [subtype](foundation-core.subtypes.md) of elements merely equal to `a` is +also the least subtype of `A` containing `a`. In other words, if a subtype +satisfies the universal property of being the least subtype of `A` containing +`a`, then its underlying type is the connected component of `A` at `a`. + +## Definitions + +### The predicate of being the least subtype containing a given element + +```agda +module _ + {l1 l2 : Level} {X : UU l1} (x : X) (P : subtype l2 X) + where + + is-least-subtype-containing-element : UUω + is-least-subtype-containing-element = + {l : Level} (Q : subtype l X) → (P ⊆ Q) ↔ is-in-subtype Q x +``` + +### Connected components of types ```agda module _ @@ -71,11 +92,11 @@ abstract is-0-connected (connected-component A a) is-0-connected-connected-component A a = is-0-connected-mere-eq - ( pair a (unit-trunc-Prop refl)) - ( λ (pair x p) → + ( a , unit-trunc-Prop refl) + ( λ (x , p) → apply-universal-property-trunc-Prop ( p) - ( trunc-Prop (pair a (unit-trunc-Prop refl) = pair x p)) + ( trunc-Prop ((a , unit-trunc-Prop refl) = (x , p))) ( λ p' → unit-trunc-Prop ( eq-pair-Σ diff --git a/src/foundation/decidable-embeddings.lagda.md b/src/foundation/decidable-embeddings.lagda.md index 2607d8a258..1bc6220953 100644 --- a/src/foundation/decidable-embeddings.lagda.md +++ b/src/foundation/decidable-embeddings.lagda.md @@ -242,7 +242,7 @@ abstract ( λ t → is-decidable (fiber (g ∘ f) x)) ( λ u → is-decidable-equiv - ( equiv-compute-fiber-comp g f x) + ( compute-fiber-comp g f x) ( is-decidable-equiv ( left-unit-law-Σ-is-contr ( is-proof-irrelevant-is-prop diff --git a/src/foundation/decidable-equivalence-relations.lagda.md b/src/foundation/decidable-equivalence-relations.lagda.md index 0d674ccc8a..dd398b9b9c 100644 --- a/src/foundation/decidable-equivalence-relations.lagda.md +++ b/src/foundation/decidable-equivalence-relations.lagda.md @@ -61,101 +61,101 @@ A decidable equivalence relation on a type `X` is an equivalence relation `R` on ### Decidable equivalence relations ```agda -is-decidable-Equivalence-Relation : - {l1 l2 : Level} → {A : UU l1} → Equivalence-Relation l2 A → UU (l1 ⊔ l2) -is-decidable-Equivalence-Relation {A = A} R = - (x y : A) → is-decidable ( sim-Equivalence-Relation R x y) +is-decidable-equivalence-relation : + {l1 l2 : Level} → {A : UU l1} → equivalence-relation l2 A → UU (l1 ⊔ l2) +is-decidable-equivalence-relation {A = A} R = + (x y : A) → is-decidable ( sim-equivalence-relation R x y) -Decidable-Equivalence-Relation : +Decidable-equivalence-relation : {l1 : Level} (l2 : Level) → UU l1 → UU (l1 ⊔ lsuc l2) -Decidable-Equivalence-Relation l2 X = +Decidable-equivalence-relation l2 X = Σ ( Decidable-Relation l2 X) ( λ R → is-equivalence-relation (relation-Decidable-Relation R)) module _ - {l1 l2 : Level} {X : UU l1} (R : Decidable-Equivalence-Relation l2 X) + {l1 l2 : Level} {X : UU l1} (R : Decidable-equivalence-relation l2 X) where - decidable-relation-Decidable-Equivalence-Relation : + decidable-relation-Decidable-equivalence-relation : Decidable-Relation l2 X - decidable-relation-Decidable-Equivalence-Relation = pr1 R + decidable-relation-Decidable-equivalence-relation = pr1 R - relation-Decidable-Equivalence-Relation : X → X → Prop l2 - relation-Decidable-Equivalence-Relation = + relation-Decidable-equivalence-relation : X → X → Prop l2 + relation-Decidable-equivalence-relation = relation-Decidable-Relation - decidable-relation-Decidable-Equivalence-Relation + decidable-relation-Decidable-equivalence-relation - sim-Decidable-Equivalence-Relation : X → X → UU l2 - sim-Decidable-Equivalence-Relation = - rel-Decidable-Relation decidable-relation-Decidable-Equivalence-Relation + sim-Decidable-equivalence-relation : X → X → UU l2 + sim-Decidable-equivalence-relation = + rel-Decidable-Relation decidable-relation-Decidable-equivalence-relation - is-prop-sim-Decidable-Equivalence-Relation : - (x y : X) → is-prop (sim-Decidable-Equivalence-Relation x y) - is-prop-sim-Decidable-Equivalence-Relation = + is-prop-sim-Decidable-equivalence-relation : + (x y : X) → is-prop (sim-Decidable-equivalence-relation x y) + is-prop-sim-Decidable-equivalence-relation = is-prop-rel-Decidable-Relation - decidable-relation-Decidable-Equivalence-Relation + decidable-relation-Decidable-equivalence-relation - is-decidable-sim-Decidable-Equivalence-Relation : - (x y : X) → is-decidable (sim-Decidable-Equivalence-Relation x y) - is-decidable-sim-Decidable-Equivalence-Relation = + is-decidable-sim-Decidable-equivalence-relation : + (x y : X) → is-decidable (sim-Decidable-equivalence-relation x y) + is-decidable-sim-Decidable-equivalence-relation = is-decidable-Decidable-Relation - decidable-relation-Decidable-Equivalence-Relation - - is-equivalence-relation-Decidable-Equivalence-Relation : - is-equivalence-relation relation-Decidable-Equivalence-Relation - is-equivalence-relation-Decidable-Equivalence-Relation = pr2 R - - equivalence-relation-Decidable-Equivalence-Relation : - Equivalence-Relation l2 X - pr1 equivalence-relation-Decidable-Equivalence-Relation = - relation-Decidable-Equivalence-Relation - pr2 equivalence-relation-Decidable-Equivalence-Relation = - is-equivalence-relation-Decidable-Equivalence-Relation - - refl-Decidable-Equivalence-Relation : - is-reflexive sim-Decidable-Equivalence-Relation - refl-Decidable-Equivalence-Relation = - refl-Equivalence-Relation - equivalence-relation-Decidable-Equivalence-Relation - - symmetric-Decidable-Equivalence-Relation : - is-symmetric sim-Decidable-Equivalence-Relation - symmetric-Decidable-Equivalence-Relation = - symmetric-Equivalence-Relation - equivalence-relation-Decidable-Equivalence-Relation - - equiv-symmetric-Decidable-Equivalence-Relation : + decidable-relation-Decidable-equivalence-relation + + is-equivalence-relation-Decidable-equivalence-relation : + is-equivalence-relation relation-Decidable-equivalence-relation + is-equivalence-relation-Decidable-equivalence-relation = pr2 R + + equivalence-relation-Decidable-equivalence-relation : + equivalence-relation l2 X + pr1 equivalence-relation-Decidable-equivalence-relation = + relation-Decidable-equivalence-relation + pr2 equivalence-relation-Decidable-equivalence-relation = + is-equivalence-relation-Decidable-equivalence-relation + + refl-Decidable-equivalence-relation : + is-reflexive sim-Decidable-equivalence-relation + refl-Decidable-equivalence-relation = + refl-equivalence-relation + equivalence-relation-Decidable-equivalence-relation + + symmetric-Decidable-equivalence-relation : + is-symmetric sim-Decidable-equivalence-relation + symmetric-Decidable-equivalence-relation = + symmetric-equivalence-relation + equivalence-relation-Decidable-equivalence-relation + + equiv-symmetric-Decidable-equivalence-relation : {x y : X} → - sim-Decidable-Equivalence-Relation x y ≃ - sim-Decidable-Equivalence-Relation y x - equiv-symmetric-Decidable-Equivalence-Relation {x} {y} = + sim-Decidable-equivalence-relation x y ≃ + sim-Decidable-equivalence-relation y x + equiv-symmetric-Decidable-equivalence-relation {x} {y} = equiv-prop - ( is-prop-sim-Decidable-Equivalence-Relation x y) - ( is-prop-sim-Decidable-Equivalence-Relation y x) - ( symmetric-Decidable-Equivalence-Relation x y) - ( symmetric-Decidable-Equivalence-Relation y x) - - transitive-Decidable-Equivalence-Relation : - is-transitive sim-Decidable-Equivalence-Relation - transitive-Decidable-Equivalence-Relation = - transitive-Equivalence-Relation - equivalence-relation-Decidable-Equivalence-Relation - -equiv-equivalence-relation-is-decidable-Dec-Equivalence-Relation : + ( is-prop-sim-Decidable-equivalence-relation x y) + ( is-prop-sim-Decidable-equivalence-relation y x) + ( symmetric-Decidable-equivalence-relation x y) + ( symmetric-Decidable-equivalence-relation y x) + + transitive-Decidable-equivalence-relation : + is-transitive sim-Decidable-equivalence-relation + transitive-Decidable-equivalence-relation = + transitive-equivalence-relation + equivalence-relation-Decidable-equivalence-relation + +equiv-equivalence-relation-is-decidable-Dec-equivalence-relation : {l1 l2 : Level} {X : UU l1} → - Decidable-Equivalence-Relation l2 X ≃ - Σ ( Equivalence-Relation l2 X) - ( λ R → is-decidable-Equivalence-Relation R) -pr1 equiv-equivalence-relation-is-decidable-Dec-Equivalence-Relation R = - ( equivalence-relation-Decidable-Equivalence-Relation R , - is-decidable-sim-Decidable-Equivalence-Relation R) -pr2 equiv-equivalence-relation-is-decidable-Dec-Equivalence-Relation = + Decidable-equivalence-relation l2 X ≃ + Σ ( equivalence-relation l2 X) + ( λ R → is-decidable-equivalence-relation R) +pr1 equiv-equivalence-relation-is-decidable-Dec-equivalence-relation R = + ( equivalence-relation-Decidable-equivalence-relation R , + is-decidable-sim-Decidable-equivalence-relation R) +pr2 equiv-equivalence-relation-is-decidable-Dec-equivalence-relation = is-equiv-is-invertible ( λ (R , d) → ( map-inv-equiv ( equiv-relation-is-decidable-Decidable-Relation) - ( prop-Equivalence-Relation R , d) , - is-equivalence-relation-prop-Equivalence-Relation R)) + ( prop-equivalence-relation R , d) , + is-equivalence-relation-prop-equivalence-relation R)) ( refl-htpy) ( refl-htpy) ``` @@ -164,86 +164,86 @@ pr2 equiv-equivalence-relation-is-decidable-Dec-Equivalence-Relation = ```agda module _ - {l1 l2 : Level} {X : UU l1} (R : Decidable-Equivalence-Relation l2 X) + {l1 l2 : Level} {X : UU l1} (R : Decidable-equivalence-relation l2 X) where - is-equivalence-class-Decidable-Equivalence-Relation : + is-equivalence-class-Decidable-equivalence-relation : decidable-subtype l2 X → UU (l1 ⊔ lsuc l2) - is-equivalence-class-Decidable-Equivalence-Relation P = - ∃ X (λ x → P = decidable-relation-Decidable-Equivalence-Relation R x) - - equivalence-class-Decidable-Equivalence-Relation : UU (l1 ⊔ lsuc l2) - equivalence-class-Decidable-Equivalence-Relation = - im (decidable-relation-Decidable-Equivalence-Relation R) - - class-Decidable-Equivalence-Relation : - X → equivalence-class-Decidable-Equivalence-Relation - pr1 (class-Decidable-Equivalence-Relation x) = - decidable-relation-Decidable-Equivalence-Relation R x - pr2 (class-Decidable-Equivalence-Relation x) = + is-equivalence-class-Decidable-equivalence-relation P = + ∃ X (λ x → P = decidable-relation-Decidable-equivalence-relation R x) + + equivalence-class-Decidable-equivalence-relation : UU (l1 ⊔ lsuc l2) + equivalence-class-Decidable-equivalence-relation = + im (decidable-relation-Decidable-equivalence-relation R) + + class-Decidable-equivalence-relation : + X → equivalence-class-Decidable-equivalence-relation + pr1 (class-Decidable-equivalence-relation x) = + decidable-relation-Decidable-equivalence-relation R x + pr2 (class-Decidable-equivalence-relation x) = intro-∃ x refl - emb-equivalence-class-Decidable-Equivalence-Relation : - equivalence-class-Decidable-Equivalence-Relation ↪ decidable-subtype l2 X - emb-equivalence-class-Decidable-Equivalence-Relation = - emb-im (decidable-relation-Decidable-Equivalence-Relation R) + emb-equivalence-class-Decidable-equivalence-relation : + equivalence-class-Decidable-equivalence-relation ↪ decidable-subtype l2 X + emb-equivalence-class-Decidable-equivalence-relation = + emb-im (decidable-relation-Decidable-equivalence-relation R) - decidable-subtype-equivalence-class-Decidable-Equivalence-Relation : - equivalence-class-Decidable-Equivalence-Relation → decidable-subtype l2 X - decidable-subtype-equivalence-class-Decidable-Equivalence-Relation = - map-emb emb-equivalence-class-Decidable-Equivalence-Relation + decidable-subtype-equivalence-class-Decidable-equivalence-relation : + equivalence-class-Decidable-equivalence-relation → decidable-subtype l2 X + decidable-subtype-equivalence-class-Decidable-equivalence-relation = + map-emb emb-equivalence-class-Decidable-equivalence-relation - subtype-equivalence-class-Decidable-Equivalence-Relation : - equivalence-class-Decidable-Equivalence-Relation → subtype l2 X - subtype-equivalence-class-Decidable-Equivalence-Relation = + subtype-equivalence-class-Decidable-equivalence-relation : + equivalence-class-Decidable-equivalence-relation → subtype l2 X + subtype-equivalence-class-Decidable-equivalence-relation = subtype-decidable-subtype ∘ - decidable-subtype-equivalence-class-Decidable-Equivalence-Relation + decidable-subtype-equivalence-class-Decidable-equivalence-relation - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation : - equivalence-class-Decidable-Equivalence-Relation → X → UU l2 - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation = - is-in-subtype ∘ subtype-equivalence-class-Decidable-Equivalence-Relation + is-in-subtype-equivalence-class-Decidable-equivalence-relation : + equivalence-class-Decidable-equivalence-relation → X → UU l2 + is-in-subtype-equivalence-class-Decidable-equivalence-relation = + is-in-subtype ∘ subtype-equivalence-class-Decidable-equivalence-relation - is-prop-is-in-subtype-equivalence-class-Decidable-Equivalence-Relation : - (P : equivalence-class-Decidable-Equivalence-Relation) (x : X) → - is-prop (is-in-subtype-equivalence-class-Decidable-Equivalence-Relation P x) - is-prop-is-in-subtype-equivalence-class-Decidable-Equivalence-Relation P = + is-prop-is-in-subtype-equivalence-class-Decidable-equivalence-relation : + (P : equivalence-class-Decidable-equivalence-relation) (x : X) → + is-prop (is-in-subtype-equivalence-class-Decidable-equivalence-relation P x) + is-prop-is-in-subtype-equivalence-class-Decidable-equivalence-relation P = is-prop-is-in-subtype - ( subtype-equivalence-class-Decidable-Equivalence-Relation P) + ( subtype-equivalence-class-Decidable-equivalence-relation P) - is-set-equivalence-class-Decidable-Equivalence-Relation : - is-set equivalence-class-Decidable-Equivalence-Relation - is-set-equivalence-class-Decidable-Equivalence-Relation = + is-set-equivalence-class-Decidable-equivalence-relation : + is-set equivalence-class-Decidable-equivalence-relation + is-set-equivalence-class-Decidable-equivalence-relation = is-set-im - ( decidable-relation-Decidable-Equivalence-Relation R) + ( decidable-relation-Decidable-equivalence-relation R) ( is-set-decidable-subtype) - equivalence-class-Decidable-Equivalence-Relation-Set : Set (l1 ⊔ lsuc l2) - pr1 equivalence-class-Decidable-Equivalence-Relation-Set = - equivalence-class-Decidable-Equivalence-Relation - pr2 equivalence-class-Decidable-Equivalence-Relation-Set = - is-set-equivalence-class-Decidable-Equivalence-Relation + equivalence-class-Decidable-equivalence-relation-Set : Set (l1 ⊔ lsuc l2) + pr1 equivalence-class-Decidable-equivalence-relation-Set = + equivalence-class-Decidable-equivalence-relation + pr2 equivalence-class-Decidable-equivalence-relation-Set = + is-set-equivalence-class-Decidable-equivalence-relation - unit-im-equivalence-class-Decidable-Equivalence-Relation : + unit-im-equivalence-class-Decidable-equivalence-relation : hom-slice - ( decidable-relation-Decidable-Equivalence-Relation R) - ( decidable-subtype-equivalence-class-Decidable-Equivalence-Relation) - unit-im-equivalence-class-Decidable-Equivalence-Relation = - unit-im (decidable-relation-Decidable-Equivalence-Relation R) + ( decidable-relation-Decidable-equivalence-relation R) + ( decidable-subtype-equivalence-class-Decidable-equivalence-relation) + unit-im-equivalence-class-Decidable-equivalence-relation = + unit-im (decidable-relation-Decidable-equivalence-relation R) - is-image-equivalence-class-Decidable-Equivalence-Relation : + is-image-equivalence-class-Decidable-equivalence-relation : is-image - ( decidable-relation-Decidable-Equivalence-Relation R) - ( emb-equivalence-class-Decidable-Equivalence-Relation) - ( unit-im-equivalence-class-Decidable-Equivalence-Relation) - is-image-equivalence-class-Decidable-Equivalence-Relation = - is-image-im (decidable-relation-Decidable-Equivalence-Relation R) - - is-surjective-class-Decidable-Equivalence-Relation : - is-surjective class-Decidable-Equivalence-Relation - is-surjective-class-Decidable-Equivalence-Relation = + ( decidable-relation-Decidable-equivalence-relation R) + ( emb-equivalence-class-Decidable-equivalence-relation) + ( unit-im-equivalence-class-Decidable-equivalence-relation) + is-image-equivalence-class-Decidable-equivalence-relation = + is-image-im (decidable-relation-Decidable-equivalence-relation R) + + is-surjective-class-Decidable-equivalence-relation : + is-surjective class-Decidable-equivalence-relation + is-surjective-class-Decidable-equivalence-relation = is-surjective-map-unit-im - ( decidable-relation-Decidable-Equivalence-Relation R) + ( decidable-relation-Decidable-equivalence-relation R) ``` ## Properties @@ -252,212 +252,212 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Decidable-Equivalence-Relation l2 A) (a : A) + {l1 l2 : Level} {A : UU l1} (R : Decidable-equivalence-relation l2 A) (a : A) where abstract - center-total-subtype-equivalence-class-Decidable-Equivalence-Relation : - Σ ( equivalence-class-Decidable-Equivalence-Relation R) + center-total-subtype-equivalence-class-Decidable-equivalence-relation : + Σ ( equivalence-class-Decidable-equivalence-relation R) ( λ P → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation R P a) - pr1 center-total-subtype-equivalence-class-Decidable-Equivalence-Relation = - class-Decidable-Equivalence-Relation R a - pr2 center-total-subtype-equivalence-class-Decidable-Equivalence-Relation = - refl-Decidable-Equivalence-Relation R a + is-in-subtype-equivalence-class-Decidable-equivalence-relation R P a) + pr1 center-total-subtype-equivalence-class-Decidable-equivalence-relation = + class-Decidable-equivalence-relation R a + pr2 center-total-subtype-equivalence-class-Decidable-equivalence-relation = + refl-Decidable-equivalence-relation R a - contraction-total-subtype-equivalence-class-Decidable-Equivalence-Relation : + contraction-total-subtype-equivalence-class-Decidable-equivalence-relation : ( t : - Σ ( equivalence-class-Decidable-Equivalence-Relation R) + Σ ( equivalence-class-Decidable-equivalence-relation R) ( λ P → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation + is-in-subtype-equivalence-class-Decidable-equivalence-relation R P a)) → - center-total-subtype-equivalence-class-Decidable-Equivalence-Relation = t - contraction-total-subtype-equivalence-class-Decidable-Equivalence-Relation + center-total-subtype-equivalence-class-Decidable-equivalence-relation = t + contraction-total-subtype-equivalence-class-Decidable-equivalence-relation ( pair (pair P p) H) = eq-type-subtype - ( λ Q → subtype-equivalence-class-Decidable-Equivalence-Relation R Q a) + ( λ Q → subtype-equivalence-class-Decidable-equivalence-relation R Q a) ( apply-universal-property-trunc-Prop ( p) ( Id-Prop - ( equivalence-class-Decidable-Equivalence-Relation-Set R) - ( class-Decidable-Equivalence-Relation R a) + ( equivalence-class-Decidable-equivalence-relation-Set R) + ( class-Decidable-equivalence-relation R a) ( pair P p)) ( α)) where - α : fiber (pr1 R) P → class-Decidable-Equivalence-Relation R a = pair P p + α : fiber (pr1 R) P → class-Decidable-equivalence-relation R a = pair P p α (pair x refl) = eq-type-subtype ( λ z → trunc-Prop - ( fiber (decidable-relation-Decidable-Equivalence-Relation R) z)) + ( fiber (decidable-relation-Decidable-equivalence-relation R) z)) ( eq-htpy ( λ y → eq-iff-Decidable-Prop ( pr1 R a y) ( pr1 R x y) - ( λ K → transitive-Decidable-Equivalence-Relation R x a y K H) - ( λ K → transitive-Decidable-Equivalence-Relation R a x y K - ( symmetric-Decidable-Equivalence-Relation R x a H)))) + ( λ K → transitive-Decidable-equivalence-relation R x a y K H) + ( λ K → transitive-Decidable-equivalence-relation R a x y K + ( symmetric-Decidable-equivalence-relation R x a H)))) - is-torsorial-subtype-equivalence-class-Decidable-Equivalence-Relation : + is-torsorial-subtype-equivalence-class-Decidable-equivalence-relation : is-torsorial ( λ P → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation R P a) + is-in-subtype-equivalence-class-Decidable-equivalence-relation R P a) pr1 - is-torsorial-subtype-equivalence-class-Decidable-Equivalence-Relation = - center-total-subtype-equivalence-class-Decidable-Equivalence-Relation + is-torsorial-subtype-equivalence-class-Decidable-equivalence-relation = + center-total-subtype-equivalence-class-Decidable-equivalence-relation pr2 - is-torsorial-subtype-equivalence-class-Decidable-Equivalence-Relation = - contraction-total-subtype-equivalence-class-Decidable-Equivalence-Relation + is-torsorial-subtype-equivalence-class-Decidable-equivalence-relation = + contraction-total-subtype-equivalence-class-Decidable-equivalence-relation - related-eq-quotient-Decidable-Equivalence-Relation : - (q : equivalence-class-Decidable-Equivalence-Relation R) → - class-Decidable-Equivalence-Relation R a = q → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation R q a - related-eq-quotient-Decidable-Equivalence-Relation - .(class-Decidable-Equivalence-Relation R a) refl = - refl-Decidable-Equivalence-Relation R a + related-eq-quotient-Decidable-equivalence-relation : + (q : equivalence-class-Decidable-equivalence-relation R) → + class-Decidable-equivalence-relation R a = q → + is-in-subtype-equivalence-class-Decidable-equivalence-relation R q a + related-eq-quotient-Decidable-equivalence-relation + .(class-Decidable-equivalence-relation R a) refl = + refl-Decidable-equivalence-relation R a abstract - is-equiv-related-eq-quotient-Decidable-Equivalence-Relation : - (q : equivalence-class-Decidable-Equivalence-Relation R) → - is-equiv (related-eq-quotient-Decidable-Equivalence-Relation q) - is-equiv-related-eq-quotient-Decidable-Equivalence-Relation = + is-equiv-related-eq-quotient-Decidable-equivalence-relation : + (q : equivalence-class-Decidable-equivalence-relation R) → + is-equiv (related-eq-quotient-Decidable-equivalence-relation q) + is-equiv-related-eq-quotient-Decidable-equivalence-relation = fundamental-theorem-id - ( is-torsorial-subtype-equivalence-class-Decidable-Equivalence-Relation) - ( related-eq-quotient-Decidable-Equivalence-Relation) + ( is-torsorial-subtype-equivalence-class-Decidable-equivalence-relation) + ( related-eq-quotient-Decidable-equivalence-relation) abstract - effective-quotient-Decidable-Equivalence-Relation' : - (q : equivalence-class-Decidable-Equivalence-Relation R) → - ( class-Decidable-Equivalence-Relation R a = q) ≃ - ( is-in-subtype-equivalence-class-Decidable-Equivalence-Relation R q a) - pr1 (effective-quotient-Decidable-Equivalence-Relation' q) = - related-eq-quotient-Decidable-Equivalence-Relation q - pr2 (effective-quotient-Decidable-Equivalence-Relation' q) = - is-equiv-related-eq-quotient-Decidable-Equivalence-Relation q + effective-quotient-Decidable-equivalence-relation' : + (q : equivalence-class-Decidable-equivalence-relation R) → + ( class-Decidable-equivalence-relation R a = q) ≃ + ( is-in-subtype-equivalence-class-Decidable-equivalence-relation R q a) + pr1 (effective-quotient-Decidable-equivalence-relation' q) = + related-eq-quotient-Decidable-equivalence-relation q + pr2 (effective-quotient-Decidable-equivalence-relation' q) = + is-equiv-related-eq-quotient-Decidable-equivalence-relation q abstract - eq-effective-quotient-Decidable-Equivalence-Relation' : - (q : equivalence-class-Decidable-Equivalence-Relation R) → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation R q a → - class-Decidable-Equivalence-Relation R a = q - eq-effective-quotient-Decidable-Equivalence-Relation' q = + eq-effective-quotient-Decidable-equivalence-relation' : + (q : equivalence-class-Decidable-equivalence-relation R) → + is-in-subtype-equivalence-class-Decidable-equivalence-relation R q a → + class-Decidable-equivalence-relation R a = q + eq-effective-quotient-Decidable-equivalence-relation' q = map-inv-is-equiv - ( is-equiv-related-eq-quotient-Decidable-Equivalence-Relation q) + ( is-equiv-related-eq-quotient-Decidable-equivalence-relation q) ``` ### The quotient map into the large set quotient is effective ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Decidable-Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : Decidable-equivalence-relation l2 A) where abstract - is-effective-class-Decidable-Equivalence-Relation : + is-effective-class-Decidable-equivalence-relation : is-effective - ( equivalence-relation-Decidable-Equivalence-Relation R) - ( class-Decidable-Equivalence-Relation R) - is-effective-class-Decidable-Equivalence-Relation x y = - ( equiv-symmetric-Decidable-Equivalence-Relation R) ∘e - ( effective-quotient-Decidable-Equivalence-Relation' R x - ( class-Decidable-Equivalence-Relation R y)) + ( equivalence-relation-Decidable-equivalence-relation R) + ( class-Decidable-equivalence-relation R) + is-effective-class-Decidable-equivalence-relation x y = + ( equiv-symmetric-Decidable-equivalence-relation R) ∘e + ( effective-quotient-Decidable-equivalence-relation' R x + ( class-Decidable-equivalence-relation R y)) abstract - apply-effectiveness-class-Decidable-Equivalence-Relation : + apply-effectiveness-class-Decidable-equivalence-relation : {x y : A} → - ( class-Decidable-Equivalence-Relation R x = - class-Decidable-Equivalence-Relation R y) → - sim-Decidable-Equivalence-Relation R x y - apply-effectiveness-class-Decidable-Equivalence-Relation {x} {y} = - map-equiv (is-effective-class-Decidable-Equivalence-Relation x y) + ( class-Decidable-equivalence-relation R x = + class-Decidable-equivalence-relation R y) → + sim-Decidable-equivalence-relation R x y + apply-effectiveness-class-Decidable-equivalence-relation {x} {y} = + map-equiv (is-effective-class-Decidable-equivalence-relation x y) abstract - apply-effectiveness-class-Decidable-Equivalence-Relation' : - {x y : A} → sim-Decidable-Equivalence-Relation R x y → - class-Decidable-Equivalence-Relation R x = - class-Decidable-Equivalence-Relation R y - apply-effectiveness-class-Decidable-Equivalence-Relation' {x} {y} = - map-inv-equiv (is-effective-class-Decidable-Equivalence-Relation x y) + apply-effectiveness-class-Decidable-equivalence-relation' : + {x y : A} → sim-Decidable-equivalence-relation R x y → + class-Decidable-equivalence-relation R x = + class-Decidable-equivalence-relation R y + apply-effectiveness-class-Decidable-equivalence-relation' {x} {y} = + map-inv-equiv (is-effective-class-Decidable-equivalence-relation x y) ``` ### The quotient map into the large set quotient is surjective and effective ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Decidable-Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : Decidable-equivalence-relation l2 A) where - is-surjective-and-effective-class-Decidable-Equivalence-Relation : + is-surjective-and-effective-class-Decidable-equivalence-relation : is-surjective-and-effective - ( equivalence-relation-Decidable-Equivalence-Relation R) - ( class-Decidable-Equivalence-Relation R) - pr1 is-surjective-and-effective-class-Decidable-Equivalence-Relation = - is-surjective-class-Decidable-Equivalence-Relation R - pr2 is-surjective-and-effective-class-Decidable-Equivalence-Relation = - is-effective-class-Decidable-Equivalence-Relation R + ( equivalence-relation-Decidable-equivalence-relation R) + ( class-Decidable-equivalence-relation R) + pr1 is-surjective-and-effective-class-Decidable-equivalence-relation = + is-surjective-class-Decidable-equivalence-relation R + pr2 is-surjective-and-effective-class-Decidable-equivalence-relation = + is-effective-class-Decidable-equivalence-relation R ``` ### The quotient map into the large set quotient is a reflecting map ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Decidable-Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : Decidable-equivalence-relation l2 A) where - quotient-reflecting-map-equivalence-class-Decidable-Equivalence-Relation : - reflecting-map-Equivalence-Relation - ( equivalence-relation-Decidable-Equivalence-Relation R) - ( equivalence-class-Decidable-Equivalence-Relation R) - pr1 quotient-reflecting-map-equivalence-class-Decidable-Equivalence-Relation = - class-Decidable-Equivalence-Relation R - pr2 quotient-reflecting-map-equivalence-class-Decidable-Equivalence-Relation = - apply-effectiveness-class-Decidable-Equivalence-Relation' R + quotient-reflecting-map-equivalence-class-Decidable-equivalence-relation : + reflecting-map-equivalence-relation + ( equivalence-relation-Decidable-equivalence-relation R) + ( equivalence-class-Decidable-equivalence-relation R) + pr1 quotient-reflecting-map-equivalence-class-Decidable-equivalence-relation = + class-Decidable-equivalence-relation R + pr2 quotient-reflecting-map-equivalence-class-Decidable-equivalence-relation = + apply-effectiveness-class-Decidable-equivalence-relation' R ``` ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Decidable-Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : Decidable-equivalence-relation l2 A) where - transitive-is-in-subtype-equivalence-class-Decidable-Equivalence-Relation : - (P : equivalence-class-Decidable-Equivalence-Relation R) (a b : A) → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation R P a → - sim-Decidable-Equivalence-Relation R a b → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation R P b - transitive-is-in-subtype-equivalence-class-Decidable-Equivalence-Relation + transitive-is-in-subtype-equivalence-class-Decidable-equivalence-relation : + (P : equivalence-class-Decidable-equivalence-relation R) (a b : A) → + is-in-subtype-equivalence-class-Decidable-equivalence-relation R P a → + sim-Decidable-equivalence-relation R a b → + is-in-subtype-equivalence-class-Decidable-equivalence-relation R P b + transitive-is-in-subtype-equivalence-class-Decidable-equivalence-relation P a b p q = apply-universal-property-trunc-Prop ( pr2 P) - ( subtype-equivalence-class-Decidable-Equivalence-Relation R P b) + ( subtype-equivalence-class-Decidable-equivalence-relation R P b) ( λ (pair x T) → tr ( λ Z → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation + is-in-subtype-equivalence-class-Decidable-equivalence-relation R Z b) - { x = class-Decidable-Equivalence-Relation R x} {y = P} + { x = class-Decidable-equivalence-relation R x} {y = P} ( eq-pair-Σ ( T) ( all-elements-equal-type-trunc-Prop _ _)) - ( transitive-Decidable-Equivalence-Relation R _ a b q + ( transitive-Decidable-equivalence-relation R _ a b q ( tr ( λ Z → - is-in-subtype-equivalence-class-Decidable-Equivalence-Relation + is-in-subtype-equivalence-class-Decidable-equivalence-relation R Z a) { x = P} - { y = class-Decidable-Equivalence-Relation R x} + { y = class-Decidable-equivalence-relation R x} ( eq-pair-Σ (inv T) (all-elements-equal-type-trunc-Prop _ _)) ( p)))) ``` ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-decidable-is-in-equivalence-class-is-decidable : - ((a b : A) → is-decidable (sim-Equivalence-Relation R a b)) → + ((a b : A) → is-decidable (sim-equivalence-relation R a b)) → (T : equivalence-class R) → (a : A) → is-decidable (is-in-equivalence-class R T a) @@ -478,7 +478,8 @@ module _ ```agda has-decidable-equality-type-Surjection-Into-Set : {l1 : Level} {A : UU l1} (surj : Surjection-Into-Set l1 A) → - ( is-decidable-Equivalence-Relation (eq-rel-Surjection-Into-Set surj)) → + ( is-decidable-equivalence-relation + ( equivalence-relation-Surjection-Into-Set surj)) → has-decidable-equality (type-Surjection-Into-Set surj) has-decidable-equality-type-Surjection-Into-Set surj is-dec-rel x y = apply-twice-dependent-universal-property-surj-is-surjective @@ -491,18 +492,19 @@ has-decidable-equality-type-Surjection-Into-Set surj is-dec-rel x y = ( x) ( y) -is-decidable-Equivalence-Relation-Surjection-Into-Set : +is-decidable-equivalence-relation-Surjection-Into-Set : {l1 : Level} {A : UU l1} (surj : Surjection-Into-Set l1 A) → has-decidable-equality (type-Surjection-Into-Set surj) → - is-decidable-Equivalence-Relation (eq-rel-Surjection-Into-Set surj) -is-decidable-Equivalence-Relation-Surjection-Into-Set surj dec-eq x y = + is-decidable-equivalence-relation + ( equivalence-relation-Surjection-Into-Set surj) +is-decidable-equivalence-relation-Surjection-Into-Set surj dec-eq x y = dec-eq (map-Surjection-Into-Set surj x) (map-Surjection-Into-Set surj y) -equiv-Surjection-Into-Set-Decidable-Equivalence-Relation : +equiv-Surjection-Into-Set-Decidable-equivalence-relation : {l1 : Level} (A : UU l1) → - Decidable-Equivalence-Relation l1 A ≃ + Decidable-equivalence-relation l1 A ≃ Σ (UU l1) (λ X → (A ↠ X) × has-decidable-equality X) -equiv-Surjection-Into-Set-Decidable-Equivalence-Relation {l1} A = +equiv-Surjection-Into-Set-Decidable-equivalence-relation {l1} A = ( ( equiv-Σ ( λ z → (A ↠ z) × has-decidable-equality z) ( id-equiv) @@ -530,17 +532,17 @@ equiv-Surjection-Into-Set-Decidable-Equivalence-Relation {l1} A = is-prop-Π ( λ y → is-prop-is-decidable - ( is-prop-sim-Equivalence-Relation - ( eq-rel-Surjection-Into-Set surj) + ( is-prop-sim-equivalence-relation + ( equivalence-relation-Surjection-Into-Set surj) ( x) ( y))))) ( λ _ → is-prop-has-decidable-equality) ( λ s → has-decidable-equality-type-Surjection-Into-Set s) - ( λ s → is-decidable-Equivalence-Relation-Surjection-Into-Set s)) ∘e + ( λ s → is-decidable-equivalence-relation-Surjection-Into-Set s)) ∘e ( ( inv-equiv ( equiv-Σ-equiv-base - ( λ R → is-decidable-Equivalence-Relation R) + ( λ R → is-decidable-equivalence-relation R) ( inv-equiv - ( equiv-surjection-into-set-Equivalence-Relation A)))) ∘e - equiv-equivalence-relation-is-decidable-Dec-Equivalence-Relation))))) + ( equiv-surjection-into-set-equivalence-relation A)))) ∘e + ( equiv-equivalence-relation-is-decidable-Dec-equivalence-relation)))))) ``` diff --git a/src/foundation/effective-maps-equivalence-relations.lagda.md b/src/foundation/effective-maps-equivalence-relations.lagda.md index 9790d1ca02..2e7cb51d1b 100644 --- a/src/foundation/effective-maps-equivalence-relations.lagda.md +++ b/src/foundation/effective-maps-equivalence-relations.lagda.md @@ -31,17 +31,17 @@ satisfies the universal property of the quotient `A/R`. ```agda is-effective : - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) {B : UU l3} + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) {B : UU l3} (f : A → B) → UU (l1 ⊔ l2 ⊔ l3) is-effective {A = A} R f = - (x y : A) → (f x = f y) ≃ sim-Equivalence-Relation R x y + (x y : A) → (f x = f y) ≃ sim-equivalence-relation R x y ``` ### Maps that are effective and surjective ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-surjective-and-effective : diff --git a/src/foundation/epimorphisms.lagda.md b/src/foundation/epimorphisms.lagda.md index d361d936a0..c1d3131df8 100644 --- a/src/foundation/epimorphisms.lagda.md +++ b/src/foundation/epimorphisms.lagda.md @@ -69,11 +69,13 @@ module _ If the map `f : A → B` is epi, then the commutative square ```text - f - A → B - f ↓ ↓ id - B → B - id + f + A -----> B + | | + f | | id + V ⌜ V + B -----> B + id ``` is a pushout square. diff --git a/src/foundation/equivalence-classes.lagda.md b/src/foundation/equivalence-classes.lagda.md index 16c46bd85a..60932da91c 100644 --- a/src/foundation/equivalence-classes.lagda.md +++ b/src/foundation/equivalence-classes.lagda.md @@ -52,12 +52,12 @@ of the set quotient. ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-equivalence-class-Prop : subtype l2 A → Prop (l1 ⊔ l2) is-equivalence-class-Prop P = - ∃-Prop A (λ x → has-same-elements-subtype P (prop-Equivalence-Relation R x)) + ∃-Prop A (λ x → has-same-elements-subtype P (prop-equivalence-relation R x)) is-equivalence-class : subtype l2 A → UU (l1 ⊔ l2) is-equivalence-class P = type-Prop (is-equivalence-class-Prop P) @@ -71,9 +71,9 @@ module _ ### The condition on inhabited subtypes of `A` of being an equivalence class ```agda - is-equivalence-class-inhabited-subtype-Equivalence-Relation : + is-equivalence-class-inhabited-subtype-equivalence-relation : subtype (l1 ⊔ l2) (inhabited-subtype l2 A) - is-equivalence-class-inhabited-subtype-Equivalence-Relation Q = + is-equivalence-class-inhabited-subtype-equivalence-relation Q = is-equivalence-class-Prop (subtype-inhabited-subtype Q) ``` @@ -84,10 +84,10 @@ module _ equivalence-class = type-subtype is-equivalence-class-Prop class : A → equivalence-class - pr1 (class x) = prop-Equivalence-Relation R x + pr1 (class x) = prop-equivalence-relation R x pr2 (class x) = unit-trunc-Prop - ( x , refl-has-same-elements-subtype (prop-Equivalence-Relation R x)) + ( x , refl-has-same-elements-subtype (prop-equivalence-relation R x)) emb-equivalence-class : equivalence-class ↪ subtype l2 A emb-equivalence-class = emb-subtype is-equivalence-class-Prop @@ -110,7 +110,7 @@ module _ ( pr1 u , backward-implication ( pr2 u (pr1 u)) - ( refl-Equivalence-Relation R (pr1 u)))) + ( refl-equivalence-relation R (pr1 u)))) inhabited-subtype-equivalence-class : (C : equivalence-class) → inhabited-subtype l2 A @@ -142,7 +142,7 @@ module _ pr2 equivalence-class-Set = is-set-equivalence-class unit-im-equivalence-class : - hom-slice (prop-Equivalence-Relation R) subtype-equivalence-class + hom-slice (prop-equivalence-relation R) subtype-equivalence-class pr1 unit-im-equivalence-class = class pr2 unit-im-equivalence-class x = refl @@ -156,18 +156,18 @@ module _ ( is-equivalence-class-Prop) ( eq-has-same-elements-subtype ( pr1 C) - ( prop-Equivalence-Relation R x) + ( prop-equivalence-relation R x) ( p))))) ( pr2 C) is-image-equivalence-class : is-image - ( prop-Equivalence-Relation R) + ( prop-equivalence-relation R) ( emb-equivalence-class) ( unit-im-equivalence-class) is-image-equivalence-class = is-image-is-surjective - ( prop-Equivalence-Relation R) + ( prop-equivalence-relation R) ( emb-equivalence-class) ( unit-im-equivalence-class) ( is-surjective-class) @@ -181,7 +181,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where has-same-elements-equivalence-class : @@ -241,7 +241,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where share-common-element-equivalence-class-Prop : @@ -270,14 +270,14 @@ module _ ( λ x → logical-equivalence-reasoning is-in-equivalence-class R C x - ↔ sim-Equivalence-Relation R v x + ↔ sim-equivalence-relation R v x by φ x - ↔ sim-Equivalence-Relation R a x - by iff-transitive-Equivalence-Relation R - ( symmetric-Equivalence-Relation + ↔ sim-equivalence-relation R a x + by iff-transitive-equivalence-relation R + ( symmetric-equivalence-relation R _ _ (forward-implication (φ a) c)) - ↔ sim-Equivalence-Relation R w x - by iff-transitive-Equivalence-Relation R + ↔ sim-equivalence-relation R w x + by iff-transitive-equivalence-relation R ( forward-implication (ψ a) d) ↔ is-in-equivalence-class R D x by inv-iff (ψ x))) @@ -289,20 +289,20 @@ module _ eq-share-common-element-equivalence-class ( class R a) ( C) - ( unit-trunc-Prop (a , refl-Equivalence-Relation R a , H)) + ( unit-trunc-Prop (a , refl-equivalence-relation R a , H)) ``` ### The type of equivalence classes containing a fixed element `a : A` is contractible ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (a : A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) (a : A) where center-total-is-in-equivalence-class : Σ (equivalence-class R) (λ P → is-in-equivalence-class R P a) pr1 center-total-is-in-equivalence-class = class R a - pr2 center-total-is-in-equivalence-class = refl-Equivalence-Relation R a + pr2 center-total-is-in-equivalence-class = refl-equivalence-relation R a contraction-total-is-in-equivalence-class : ( t : @@ -325,7 +325,7 @@ module _ (q : equivalence-class R) → class R a = q → is-in-equivalence-class R q a is-in-equivalence-class-eq-equivalence-class .(class R a) refl = - refl-Equivalence-Relation R a + refl-equivalence-relation R a abstract is-equiv-is-in-equivalence-class-eq-equivalence-class : @@ -341,7 +341,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where abstract @@ -366,18 +366,18 @@ module _ is-effective-class : is-effective R (class R) is-effective-class x y = - ( equiv-symmetric-Equivalence-Relation R) ∘e + ( equiv-symmetric-equivalence-relation R) ∘e ( effective-quotient' x (class R y)) abstract apply-effectiveness-class : - {x y : A} → class R x = class R y → sim-Equivalence-Relation R x y + {x y : A} → class R x = class R y → sim-equivalence-relation R x y apply-effectiveness-class {x} {y} = map-equiv (is-effective-class x y) abstract apply-effectiveness-class' : - {x y : A} → sim-Equivalence-Relation R x y → class R x = class R y + {x y : A} → sim-equivalence-relation R x y → class R x = class R y apply-effectiveness-class' {x} {y} = map-inv-equiv (is-effective-class x y) ``` @@ -386,7 +386,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-surjective-and-effective-class : @@ -401,11 +401,11 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where quotient-reflecting-map-equivalence-class : - reflecting-map-Equivalence-Relation R (equivalence-class R) + reflecting-map-equivalence-relation R (equivalence-class R) pr1 quotient-reflecting-map-equivalence-class = class R pr2 quotient-reflecting-map-equivalence-class = @@ -414,12 +414,12 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where transitive-is-in-equivalence-class : (P : equivalence-class R) (a b : A) → - is-in-equivalence-class R P a → sim-Equivalence-Relation R a b → + is-in-equivalence-class R P a → sim-equivalence-relation R a b → is-in-equivalence-class R P b transitive-is-in-equivalence-class P a b p r = apply-universal-property-trunc-Prop @@ -428,7 +428,7 @@ module _ ( λ (x , H) → backward-implication ( H b) - ( transitive-Equivalence-Relation R _ a b + ( transitive-equivalence-relation R _ a b ( r) ( forward-implication (H a) p))) ``` @@ -437,7 +437,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-locally-small-equivalence-class : @@ -455,7 +455,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-small-equivalence-class : is-small (l1 ⊔ l2) (equivalence-class R) diff --git a/src/foundation/equivalence-relations.lagda.md b/src/foundation/equivalence-relations.lagda.md index 29da350a76..0278449b04 100644 --- a/src/foundation/equivalence-relations.lagda.md +++ b/src/foundation/equivalence-relations.lagda.md @@ -50,61 +50,61 @@ open import foundation-core.transport-along-identifications ### Characterization of equality in the type of equivalence relations ```agda -relate-same-elements-Equivalence-Relation : +relate-same-elements-equivalence-relation : {l1 l2 l3 : Level} {A : UU l1} → - Equivalence-Relation l2 A → Equivalence-Relation l3 A → UU (l1 ⊔ l2 ⊔ l3) -relate-same-elements-Equivalence-Relation R S = + equivalence-relation l2 A → equivalence-relation l3 A → UU (l1 ⊔ l2 ⊔ l3) +relate-same-elements-equivalence-relation R S = relates-same-elements-Relation-Prop - ( prop-Equivalence-Relation R) - ( prop-Equivalence-Relation S) + ( prop-equivalence-relation R) + ( prop-equivalence-relation S) module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - refl-relate-same-elements-Equivalence-Relation : - relate-same-elements-Equivalence-Relation R R - refl-relate-same-elements-Equivalence-Relation = - refl-relates-same-elements-Relation-Prop (prop-Equivalence-Relation R) + refl-relate-same-elements-equivalence-relation : + relate-same-elements-equivalence-relation R R + refl-relate-same-elements-equivalence-relation = + refl-relates-same-elements-Relation-Prop (prop-equivalence-relation R) - is-torsorial-relate-same-elements-Equivalence-Relation : - is-torsorial (relate-same-elements-Equivalence-Relation R) - is-torsorial-relate-same-elements-Equivalence-Relation = + is-torsorial-relate-same-elements-equivalence-relation : + is-torsorial (relate-same-elements-equivalence-relation R) + is-torsorial-relate-same-elements-equivalence-relation = is-torsorial-Eq-subtype ( is-torsorial-relates-same-elements-Relation-Prop - ( prop-Equivalence-Relation R)) + ( prop-equivalence-relation R)) ( is-prop-is-equivalence-relation) - ( prop-Equivalence-Relation R) - ( refl-relate-same-elements-Equivalence-Relation) - ( is-equivalence-relation-prop-Equivalence-Relation R) - - relate-same-elements-eq-Equivalence-Relation : - (S : Equivalence-Relation l2 A) → - (R = S) → relate-same-elements-Equivalence-Relation R S - relate-same-elements-eq-Equivalence-Relation .R refl = - refl-relate-same-elements-Equivalence-Relation - - is-equiv-relate-same-elements-eq-Equivalence-Relation : - (S : Equivalence-Relation l2 A) → - is-equiv (relate-same-elements-eq-Equivalence-Relation S) - is-equiv-relate-same-elements-eq-Equivalence-Relation = + ( prop-equivalence-relation R) + ( refl-relate-same-elements-equivalence-relation) + ( is-equivalence-relation-prop-equivalence-relation R) + + relate-same-elements-eq-equivalence-relation : + (S : equivalence-relation l2 A) → + (R = S) → relate-same-elements-equivalence-relation R S + relate-same-elements-eq-equivalence-relation .R refl = + refl-relate-same-elements-equivalence-relation + + is-equiv-relate-same-elements-eq-equivalence-relation : + (S : equivalence-relation l2 A) → + is-equiv (relate-same-elements-eq-equivalence-relation S) + is-equiv-relate-same-elements-eq-equivalence-relation = fundamental-theorem-id - is-torsorial-relate-same-elements-Equivalence-Relation - relate-same-elements-eq-Equivalence-Relation - - extensionality-Equivalence-Relation : - (S : Equivalence-Relation l2 A) → - (R = S) ≃ relate-same-elements-Equivalence-Relation R S - pr1 (extensionality-Equivalence-Relation S) = - relate-same-elements-eq-Equivalence-Relation S - pr2 (extensionality-Equivalence-Relation S) = - is-equiv-relate-same-elements-eq-Equivalence-Relation S - - eq-relate-same-elements-Equivalence-Relation : - (S : Equivalence-Relation l2 A) → - relate-same-elements-Equivalence-Relation R S → (R = S) - eq-relate-same-elements-Equivalence-Relation S = - map-inv-equiv (extensionality-Equivalence-Relation S) + is-torsorial-relate-same-elements-equivalence-relation + relate-same-elements-eq-equivalence-relation + + extensionality-equivalence-relation : + (S : equivalence-relation l2 A) → + (R = S) ≃ relate-same-elements-equivalence-relation R S + pr1 (extensionality-equivalence-relation S) = + relate-same-elements-eq-equivalence-relation S + pr2 (extensionality-equivalence-relation S) = + is-equiv-relate-same-elements-eq-equivalence-relation S + + equivalence-relationate-same-elements-equivalence-relation : + (S : equivalence-relation l2 A) → + relate-same-elements-equivalence-relation R S → (R = S) + equivalence-relationate-same-elements-equivalence-relation S = + map-inv-equiv (extensionality-equivalence-relation S) ``` ### The type of equivalence relations on `A` is equivalent to the type of partitions on `A` @@ -113,22 +113,22 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - is-block-partition-Equivalence-Relation-Prop : + is-block-prop-partition-equivalence-relation : subtype (l1 ⊔ l2) (inhabited-subtype l2 A) - is-block-partition-Equivalence-Relation-Prop Q = + is-block-prop-partition-equivalence-relation Q = is-equivalence-class-Prop R (subtype-inhabited-subtype Q) - is-block-partition-Equivalence-Relation : + is-block-partition-equivalence-relation : inhabited-subtype l2 A → UU (l1 ⊔ l2) - is-block-partition-Equivalence-Relation Q = - type-Prop (is-block-partition-Equivalence-Relation-Prop Q) + is-block-partition-equivalence-relation Q = + type-Prop (is-block-prop-partition-equivalence-relation Q) - is-partition-is-equivalence-class-inhabited-subtype-Equivalence-Relation : - is-partition (is-equivalence-class-inhabited-subtype-Equivalence-Relation R) - is-partition-is-equivalence-class-inhabited-subtype-Equivalence-Relation x = + is-partition-is-equivalence-class-inhabited-subtype-equivalence-relation : + is-partition (is-equivalence-class-inhabited-subtype-equivalence-relation R) + is-partition-is-equivalence-class-inhabited-subtype-equivalence-relation x = is-contr-equiv ( Σ ( Σ ( equivalence-class R) ( λ C → is-in-equivalence-class R C x)) @@ -145,16 +145,16 @@ module _ ( is-prop-type-trunc-Prop) ( is-inhabited-subtype-equivalence-class R (class R x)))) - partition-Equivalence-Relation : partition l2 (l1 ⊔ l2) A - pr1 partition-Equivalence-Relation = - is-block-partition-Equivalence-Relation-Prop - pr2 partition-Equivalence-Relation = - is-partition-is-equivalence-class-inhabited-subtype-Equivalence-Relation + partition-equivalence-relation : partition l2 (l1 ⊔ l2) A + pr1 partition-equivalence-relation = + is-block-prop-partition-equivalence-relation + pr2 partition-equivalence-relation = + is-partition-is-equivalence-class-inhabited-subtype-equivalence-relation equiv-block-equivalence-class : - equivalence-class R ≃ block-partition partition-Equivalence-Relation + equivalence-class R ≃ block-partition partition-equivalence-relation equiv-block-equivalence-class = - ( compute-block-partition partition-Equivalence-Relation) ∘e + ( compute-block-partition partition-equivalence-relation) ∘e ( ( equiv-right-swap-Σ) ∘e ( inv-equiv ( equiv-inclusion-is-full-subtype @@ -196,9 +196,9 @@ module _ is-prop-sim-partition x y = is-prop-is-proof-irrelevant (is-proof-irrelevant-sim-partition x y) - prop-eq-rel-partition : Relation-Prop (l1 ⊔ l2) A - pr1 (prop-eq-rel-partition x y) = sim-partition x y - pr2 (prop-eq-rel-partition x y) = is-prop-sim-partition x y + prop-equivalence-relation-partition : Relation-Prop (l1 ⊔ l2) A + pr1 (prop-equivalence-relation-partition x y) = sim-partition x y + pr2 (prop-equivalence-relation-partition x y) = is-prop-sim-partition x y refl-sim-partition : is-reflexive sim-partition pr1 (refl-sim-partition x) = class-partition P x @@ -229,29 +229,30 @@ module _ ( p') pr2 (pr2 (transitive-sim-partition x y z (B , p , q) (B' , p' , q'))) = q - eq-rel-partition : Equivalence-Relation (l1 ⊔ l2) A - pr1 eq-rel-partition = prop-eq-rel-partition - pr1 (pr2 eq-rel-partition) = refl-sim-partition - pr1 (pr2 (pr2 eq-rel-partition)) = symmetric-sim-partition - pr2 (pr2 (pr2 eq-rel-partition)) = transitive-sim-partition + equivalence-relation-partition : equivalence-relation (l1 ⊔ l2) A + pr1 equivalence-relation-partition = prop-equivalence-relation-partition + pr1 (pr2 equivalence-relation-partition) = refl-sim-partition + pr1 (pr2 (pr2 equivalence-relation-partition)) = symmetric-sim-partition + pr2 (pr2 (pr2 equivalence-relation-partition)) = transitive-sim-partition - is-inhabited-subtype-prop-eq-rel-partition : - (a : A) → is-inhabited-subtype (prop-eq-rel-partition a) - is-inhabited-subtype-prop-eq-rel-partition a = + is-inhabited-subtype-prop-equivalence-relation-partition : + (a : A) → is-inhabited-subtype (prop-equivalence-relation-partition a) + is-inhabited-subtype-prop-equivalence-relation-partition a = unit-trunc-Prop (a , refl-sim-partition a) - inhabited-subtype-eq-rel-partition : + inhabited-subtype-equivalence-relation-partition : (a : A) → inhabited-subtype (l1 ⊔ l2) A - pr1 (inhabited-subtype-eq-rel-partition a) = prop-eq-rel-partition a - pr2 (inhabited-subtype-eq-rel-partition a) = - is-inhabited-subtype-prop-eq-rel-partition a + pr1 (inhabited-subtype-equivalence-relation-partition a) = + prop-equivalence-relation-partition a + pr2 (inhabited-subtype-equivalence-relation-partition a) = + is-inhabited-subtype-prop-equivalence-relation-partition a - is-block-inhabited-subtype-eq-rel-partition : + is-block-inhabited-subtype-equivalence-relation-partition : (a : A) → is-block-partition - ( partition-Equivalence-Relation eq-rel-partition) - ( inhabited-subtype-eq-rel-partition a) - is-block-inhabited-subtype-eq-rel-partition a = + ( partition-equivalence-relation equivalence-relation-partition) + ( inhabited-subtype-equivalence-relation-partition a) + is-block-inhabited-subtype-equivalence-relation-partition a = unit-trunc-Prop (a , λ x → pair id id) ``` @@ -259,60 +260,70 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - relate-same-elements-eq-rel-partition-Equivalence-Relation : - relate-same-elements-Equivalence-Relation - ( eq-rel-partition (partition-Equivalence-Relation R)) + relate-same-elements-equivalence-relation-partition-equivalence-relation : + relate-same-elements-equivalence-relation + ( equivalence-relation-partition (partition-equivalence-relation R)) ( R) pr1 - ( relate-same-elements-eq-rel-partition-Equivalence-Relation x y) + ( relate-same-elements-equivalence-relation-partition-equivalence-relation + x y) ( C , p , q) = apply-universal-property-trunc-Prop ( is-block-inhabited-subtype-block-partition - ( partition-Equivalence-Relation R) + ( partition-equivalence-relation R) ( C)) - ( prop-Equivalence-Relation R x y) + ( prop-equivalence-relation R x y) ( λ (z , K) → - transitive-Equivalence-Relation R + transitive-equivalence-relation R x _ y ( forward-implication (K y) q) - ( symmetric-Equivalence-Relation R _ x (forward-implication (K x) p))) - pr1 (pr2 (relate-same-elements-eq-rel-partition-Equivalence-Relation x y) r) = + ( symmetric-equivalence-relation R _ x (forward-implication (K x) p))) + pr1 + ( pr2 + ( relate-same-elements-equivalence-relation-partition-equivalence-relation + x y) + ( r)) = make-block-partition - ( partition-Equivalence-Relation R) + ( partition-equivalence-relation R) ( inhabited-subtype-equivalence-class R (class R x)) ( is-equivalence-class-equivalence-class R (class R x)) pr1 ( pr2 ( pr2 - ( relate-same-elements-eq-rel-partition-Equivalence-Relation x y) r)) = + ( relate-same-elements-equivalence-relation-partition-equivalence-relation + x y) + ( r))) = make-is-in-block-partition - ( partition-Equivalence-Relation R) + ( partition-equivalence-relation R) ( inhabited-subtype-equivalence-class R (class R x)) ( is-equivalence-class-equivalence-class R (class R x)) ( x) - ( refl-Equivalence-Relation R x) + ( refl-equivalence-relation R x) pr2 ( pr2 ( pr2 - ( relate-same-elements-eq-rel-partition-Equivalence-Relation x y) r)) = + ( relate-same-elements-equivalence-relation-partition-equivalence-relation + x y) + ( r))) = make-is-in-block-partition - ( partition-Equivalence-Relation R) + ( partition-equivalence-relation R) ( inhabited-subtype-equivalence-class R (class R x)) ( is-equivalence-class-equivalence-class R (class R x)) ( y) ( r) -is-section-eq-rel-partition-Equivalence-Relation : - {l : Level} {A : UU l} (R : Equivalence-Relation l A) → - eq-rel-partition (partition-Equivalence-Relation R) = R -is-section-eq-rel-partition-Equivalence-Relation R = - eq-relate-same-elements-Equivalence-Relation - ( eq-rel-partition (partition-Equivalence-Relation R)) +is-section-equivalence-relation-partition-equivalence-relation : + {l : Level} {A : UU l} (R : equivalence-relation l A) → + equivalence-relation-partition (partition-equivalence-relation R) = R +is-section-equivalence-relation-partition-equivalence-relation R = + equivalence-relationate-same-elements-equivalence-relation + ( equivalence-relation-partition (partition-equivalence-relation R)) ( R) - ( relate-same-elements-eq-rel-partition-Equivalence-Relation R) + ( relate-same-elements-equivalence-relation-partition-equivalence-relation + R) ``` #### The partition obtained from the equivalence relation induced by a partition is the partition itself @@ -322,11 +333,13 @@ module _ {l1 l2 : Level} {A : UU l1} (P : partition l1 l2 A) where - is-block-is-equivalence-class-eq-rel-partition : + is-block-is-equivalence-class-equivalence-relation-partition : (Q : inhabited-subtype l1 A) → - is-equivalence-class (eq-rel-partition P) (subtype-inhabited-subtype Q) → + is-equivalence-class + ( equivalence-relation-partition P) + ( subtype-inhabited-subtype Q) → is-block-partition P Q - is-block-is-equivalence-class-eq-rel-partition Q H = + is-block-is-equivalence-class-equivalence-relation-partition Q H = apply-universal-property-trunc-Prop H ( subtype-partition P Q) ( λ (a , K) → @@ -358,12 +371,14 @@ module _ is-equivalence-class-is-block-partition : (Q : inhabited-subtype l1 A) → is-block-partition P Q → - is-equivalence-class (eq-rel-partition P) (subtype-inhabited-subtype Q) + is-equivalence-class + ( equivalence-relation-partition P) + ( subtype-inhabited-subtype Q) is-equivalence-class-is-block-partition Q H = apply-universal-property-trunc-Prop ( is-inhabited-subtype-inhabited-subtype Q) ( is-equivalence-class-Prop - ( eq-rel-partition P) + ( equivalence-relation-partition P) ( subtype-inhabited-subtype Q)) ( λ (a , q) → unit-trunc-Prop @@ -392,40 +407,43 @@ module _ ( λ B → is-in-block-partition P B a) ( λ B → is-in-block-partition P (pr1 B) x))))))) - has-same-elements-partition-eq-rel-partition : + has-same-elements-partition-equivalence-relation-partition : has-same-elements-subtype - ( subtype-partition (partition-Equivalence-Relation (eq-rel-partition P))) + ( subtype-partition + ( partition-equivalence-relation (equivalence-relation-partition P))) ( subtype-partition P) - pr1 (has-same-elements-partition-eq-rel-partition Q) H = - is-block-is-equivalence-class-eq-rel-partition Q H - pr2 (has-same-elements-partition-eq-rel-partition Q) H = + pr1 (has-same-elements-partition-equivalence-relation-partition Q) H = + is-block-is-equivalence-class-equivalence-relation-partition Q H + pr2 (has-same-elements-partition-equivalence-relation-partition Q) H = is-equivalence-class-is-block-partition Q H -is-retraction-eq-rel-partition-Equivalence-Relation : +is-retraction-equivalence-relation-partition-equivalence-relation : {l : Level} {A : UU l} (P : partition l l A) → - partition-Equivalence-Relation (eq-rel-partition P) = P -is-retraction-eq-rel-partition-Equivalence-Relation P = + partition-equivalence-relation (equivalence-relation-partition P) = P +is-retraction-equivalence-relation-partition-equivalence-relation P = eq-has-same-blocks-partition - ( partition-Equivalence-Relation (eq-rel-partition P)) + ( partition-equivalence-relation (equivalence-relation-partition P)) ( P) - ( has-same-elements-partition-eq-rel-partition P) + ( has-same-elements-partition-equivalence-relation-partition P) ``` -#### The map `eq-rel-partition` is an equivalence +#### The map `equivalence-relation-partition` is an equivalence ```agda -is-equiv-eq-rel-partition : - {l : Level} {A : UU l} → is-equiv (eq-rel-partition {l} {l} {l} {A}) -is-equiv-eq-rel-partition = +is-equiv-equivalence-relation-partition : + {l : Level} {A : UU l} → + is-equiv (equivalence-relation-partition {l} {l} {l} {A}) +is-equiv-equivalence-relation-partition = is-equiv-is-invertible - partition-Equivalence-Relation - is-section-eq-rel-partition-Equivalence-Relation - is-retraction-eq-rel-partition-Equivalence-Relation - -equiv-eq-rel-partition : - {l : Level} {A : UU l} → partition l l A ≃ Equivalence-Relation l A -pr1 equiv-eq-rel-partition = eq-rel-partition -pr2 equiv-eq-rel-partition = is-equiv-eq-rel-partition + partition-equivalence-relation + is-section-equivalence-relation-partition-equivalence-relation + is-retraction-equivalence-relation-partition-equivalence-relation + +equiv-equivalence-relation-partition : + {l : Level} {A : UU l} → partition l l A ≃ equivalence-relation l A +pr1 equiv-equivalence-relation-partition = equivalence-relation-partition +pr2 equiv-equivalence-relation-partition = + is-equiv-equivalence-relation-partition ``` ### Equivalence relations are equivalent to set-indexed Σ-decompositions @@ -434,13 +452,13 @@ pr2 equiv-eq-rel-partition = is-equiv-eq-rel-partition ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - set-indexed-Σ-decomposition-Equivalence-Relation : + set-indexed-Σ-decomposition-equivalence-relation : Set-Indexed-Σ-Decomposition (l1 ⊔ l2) (l1 ⊔ l2) A - set-indexed-Σ-decomposition-Equivalence-Relation = - set-indexed-Σ-decomposition-partition (partition-Equivalence-Relation R) + set-indexed-Σ-decomposition-equivalence-relation = + set-indexed-Σ-decomposition-partition (partition-equivalence-relation R) ``` ### The type of equivalence relations on `A` is equivalent to the type of sets `X` equipped with a surjective map from `A` into `X` @@ -449,13 +467,13 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - surjection-into-set-Equivalence-Relation : + surjection-into-set-equivalence-relation : Surjection-Into-Set (l1 ⊔ l2) A - pr1 surjection-into-set-Equivalence-Relation = quotient-Set R - pr2 surjection-into-set-Equivalence-Relation = surjection-quotient-map R + pr1 surjection-into-set-equivalence-relation = quotient-Set R + pr2 surjection-into-set-equivalence-relation = surjection-quotient-map R ``` #### The equivalence relation obtained from a surjection into a set @@ -480,27 +498,31 @@ module _ transitive-sim-map-into-set : is-transitive sim-map-into-set transitive-sim-map-into-set x y z H K = K ∙ H - eq-rel-map-into-set : Equivalence-Relation l2 A - pr1 eq-rel-map-into-set = rel-map-into-set - pr1 (pr2 eq-rel-map-into-set) x = refl-sim-map-into-set x - pr1 (pr2 (pr2 eq-rel-map-into-set)) x y = symmetric-sim-map-into-set x y - pr2 (pr2 (pr2 eq-rel-map-into-set)) x y z = transitive-sim-map-into-set x y z + equivalence-relation-map-into-set : equivalence-relation l2 A + pr1 equivalence-relation-map-into-set = rel-map-into-set + pr1 (pr2 equivalence-relation-map-into-set) x = refl-sim-map-into-set x + pr1 (pr2 (pr2 equivalence-relation-map-into-set)) x y = + symmetric-sim-map-into-set x y + pr2 (pr2 (pr2 equivalence-relation-map-into-set)) x y z = + transitive-sim-map-into-set x y z is-effective-map-into-set : - is-effective eq-rel-map-into-set f + is-effective equivalence-relation-map-into-set f is-effective-map-into-set x y = id-equiv -eq-rel-Surjection-Into-Set : +equivalence-relation-Surjection-Into-Set : {l1 l2 : Level} {A : UU l1} → - Surjection-Into-Set l2 A → Equivalence-Relation l2 A -eq-rel-Surjection-Into-Set f = - eq-rel-map-into-set + Surjection-Into-Set l2 A → equivalence-relation l2 A +equivalence-relation-Surjection-Into-Set f = + equivalence-relation-map-into-set ( set-Surjection-Into-Set f) ( map-Surjection-Into-Set f) is-effective-map-Surjection-Into-Set : {l1 l2 : Level} {A : UU l1} (f : Surjection-Into-Set l2 A) → - is-effective (eq-rel-Surjection-Into-Set f) (map-Surjection-Into-Set f) + is-effective + ( equivalence-relation-Surjection-Into-Set f) + ( map-Surjection-Into-Set f) is-effective-map-Surjection-Into-Set f = is-effective-map-into-set ( set-Surjection-Into-Set f) @@ -511,82 +533,94 @@ is-effective-map-Surjection-Into-Set f = ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - relate-same-elements-eq-rel-surjection-into-set-Equivalence-Relation : - relate-same-elements-Equivalence-Relation - ( eq-rel-Surjection-Into-Set (surjection-into-set-Equivalence-Relation R)) + relate-same-elements-equivalence-relation-surjection-into-set-equivalence-relation : + relate-same-elements-equivalence-relation + ( equivalence-relation-Surjection-Into-Set + ( surjection-into-set-equivalence-relation R)) ( R) - relate-same-elements-eq-rel-surjection-into-set-Equivalence-Relation x y = + relate-same-elements-equivalence-relation-surjection-into-set-equivalence-relation + x y = iff-equiv (is-effective-quotient-map R x y) -is-retraction-eq-rel-Surjection-Into-Set : - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation (l1 ⊔ l2) A) → - eq-rel-Surjection-Into-Set (surjection-into-set-Equivalence-Relation R) = R -is-retraction-eq-rel-Surjection-Into-Set R = - eq-relate-same-elements-Equivalence-Relation - ( eq-rel-Surjection-Into-Set (surjection-into-set-Equivalence-Relation R)) +is-retraction-equivalence-relation-Surjection-Into-Set : + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation (l1 ⊔ l2) A) → + equivalence-relation-Surjection-Into-Set + ( surjection-into-set-equivalence-relation R) = + R +is-retraction-equivalence-relation-Surjection-Into-Set R = + equivalence-relationate-same-elements-equivalence-relation + ( equivalence-relation-Surjection-Into-Set + ( surjection-into-set-equivalence-relation R)) ( R) - ( relate-same-elements-eq-rel-surjection-into-set-Equivalence-Relation R) + ( relate-same-elements-equivalence-relation-surjection-into-set-equivalence-relation + R) ``` #### The surjection into a set obtained from the equivalence relation induced by a surjection into a set is the original surjection into a set ```agda -equiv-surjection-into-set-eq-rel-Surjection-Into-Set : +equiv-surjection-into-set-equivalence-relation-Surjection-Into-Set : {l1 l2 : Level} {A : UU l1} (f : Surjection-Into-Set l2 A) → equiv-Surjection-Into-Set - ( surjection-into-set-Equivalence-Relation (eq-rel-Surjection-Into-Set f)) + ( surjection-into-set-equivalence-relation + ( equivalence-relation-Surjection-Into-Set f)) ( f) -equiv-surjection-into-set-eq-rel-Surjection-Into-Set f = +equiv-surjection-into-set-equivalence-relation-Surjection-Into-Set f = center ( uniqueness-set-quotient - ( eq-rel-Surjection-Into-Set f) - ( quotient-Set (eq-rel-Surjection-Into-Set f)) - ( reflecting-map-quotient-map (eq-rel-Surjection-Into-Set f)) - ( is-set-quotient-set-quotient (eq-rel-Surjection-Into-Set f)) + ( equivalence-relation-Surjection-Into-Set f) + ( quotient-Set (equivalence-relation-Surjection-Into-Set f)) + ( reflecting-map-quotient-map + ( equivalence-relation-Surjection-Into-Set f)) + ( is-set-quotient-set-quotient + ( equivalence-relation-Surjection-Into-Set f)) ( set-Surjection-Into-Set f) ( pair ( map-Surjection-Into-Set f) ( λ H → H)) ( is-set-quotient-is-surjective-and-effective - ( eq-rel-Surjection-Into-Set f) + ( equivalence-relation-Surjection-Into-Set f) ( set-Surjection-Into-Set f) ( pr1 (pr2 f) , (λ {x} {y} z → z)) ( pair ( is-surjective-Surjection-Into-Set f) ( is-effective-map-Surjection-Into-Set f)))) -is-section-eq-rel-Surjection-Into-Set : +is-section-equivalence-relation-Surjection-Into-Set : {l1 l2 : Level} {A : UU l1} (f : Surjection-Into-Set (l1 ⊔ l2) A) → - surjection-into-set-Equivalence-Relation (eq-rel-Surjection-Into-Set f) = f -is-section-eq-rel-Surjection-Into-Set f = + surjection-into-set-equivalence-relation + ( equivalence-relation-Surjection-Into-Set f) = + f +is-section-equivalence-relation-Surjection-Into-Set f = eq-equiv-Surjection-Into-Set - ( surjection-into-set-Equivalence-Relation (eq-rel-Surjection-Into-Set f)) + ( surjection-into-set-equivalence-relation + ( equivalence-relation-Surjection-Into-Set f)) ( f) - ( equiv-surjection-into-set-eq-rel-Surjection-Into-Set f) + ( equiv-surjection-into-set-equivalence-relation-Surjection-Into-Set f) ``` #### The type of equivalence relations on `A` is equivalent to the type of surjections from `A` into a set ```agda -is-equiv-surjection-into-set-Equivalence-Relation : +is-equiv-surjection-into-set-equivalence-relation : {l1 : Level} {A : UU l1} → - is-equiv (surjection-into-set-Equivalence-Relation {l1} {l1} {A}) -is-equiv-surjection-into-set-Equivalence-Relation {l1} {A} = + is-equiv (surjection-into-set-equivalence-relation {l1} {l1} {A}) +is-equiv-surjection-into-set-equivalence-relation {l1} {A} = is-equiv-is-invertible - ( eq-rel-Surjection-Into-Set {l1} {l1} {A}) - ( is-section-eq-rel-Surjection-Into-Set {l1} {l1} {A}) - ( is-retraction-eq-rel-Surjection-Into-Set {l1} {l1} {A}) + ( equivalence-relation-Surjection-Into-Set {l1} {l1} {A}) + ( is-section-equivalence-relation-Surjection-Into-Set {l1} {l1} {A}) + ( is-retraction-equivalence-relation-Surjection-Into-Set {l1} {l1} {A}) -equiv-surjection-into-set-Equivalence-Relation : +equiv-surjection-into-set-equivalence-relation : {l1 : Level} (A : UU l1) → - Equivalence-Relation l1 A ≃ Surjection-Into-Set l1 A -pr1 (equiv-surjection-into-set-Equivalence-Relation A) = - surjection-into-set-Equivalence-Relation -pr2 (equiv-surjection-into-set-Equivalence-Relation A) = - is-equiv-surjection-into-set-Equivalence-Relation + equivalence-relation l1 A ≃ Surjection-Into-Set l1 A +pr1 (equiv-surjection-into-set-equivalence-relation A) = + surjection-into-set-equivalence-relation +pr2 (equiv-surjection-into-set-equivalence-relation A) = + is-equiv-surjection-into-set-equivalence-relation ``` ### Equality on a set is an equivalence relation @@ -596,27 +630,27 @@ module _ {l1 : Level} (A : Set l1) where - Id-Equivalence-Relation : Equivalence-Relation l1 (type-Set A) - pr1 Id-Equivalence-Relation = Id-Prop A - pr1 (pr2 Id-Equivalence-Relation) _ = refl - pr1 (pr2 (pr2 Id-Equivalence-Relation)) _ _ = inv - pr2 (pr2 (pr2 Id-Equivalence-Relation)) _ _ _ H K = K ∙ H - - id-reflects-Id-Equivalence-Relation : - reflects-Equivalence-Relation Id-Equivalence-Relation id - id-reflects-Id-Equivalence-Relation = id - - id-reflecting-map-Id-Equivalence-Relation : - reflecting-map-Equivalence-Relation Id-Equivalence-Relation (type-Set A) - pr1 id-reflecting-map-Id-Equivalence-Relation = id - pr2 id-reflecting-map-Id-Equivalence-Relation = - id-reflects-Id-Equivalence-Relation - - is-surjective-and-effective-id-Id-Equivalence-Relation : - is-surjective-and-effective Id-Equivalence-Relation id - pr1 is-surjective-and-effective-id-Id-Equivalence-Relation a = + Id-equivalence-relation : equivalence-relation l1 (type-Set A) + pr1 Id-equivalence-relation = Id-Prop A + pr1 (pr2 Id-equivalence-relation) _ = refl + pr1 (pr2 (pr2 Id-equivalence-relation)) _ _ = inv + pr2 (pr2 (pr2 Id-equivalence-relation)) _ _ _ H K = K ∙ H + + id-reflects-Id-equivalence-relation : + reflects-equivalence-relation Id-equivalence-relation id + id-reflects-Id-equivalence-relation = id + + id-reflecting-map-Id-equivalence-relation : + reflecting-map-equivalence-relation Id-equivalence-relation (type-Set A) + pr1 id-reflecting-map-Id-equivalence-relation = id + pr2 id-reflecting-map-Id-equivalence-relation = + id-reflects-Id-equivalence-relation + + is-surjective-and-effective-id-Id-equivalence-relation : + is-surjective-and-effective Id-equivalence-relation id + pr1 is-surjective-and-effective-id-Id-equivalence-relation a = unit-trunc-Prop (a , refl) - pr2 is-surjective-and-effective-id-Id-Equivalence-Relation a b = id-equiv + pr2 is-surjective-and-effective-id-Id-equivalence-relation a b = id-equiv ``` ### For any set `A`, `Id` is a set quotient for the equality relation @@ -626,15 +660,15 @@ module _ {l : Level} (A : Set l) where - is-set-quotient-id-Id-Equivalence-Relation : + is-set-quotient-id-Id-equivalence-relation : {l' : Level} → is-set-quotient ( l') - ( Id-Equivalence-Relation A) + ( Id-equivalence-relation A) ( A) - ( id-reflecting-map-Id-Equivalence-Relation A) - is-set-quotient-id-Id-Equivalence-Relation = - is-set-quotient-is-surjective-and-effective (Id-Equivalence-Relation A) A - ( id-reflecting-map-Id-Equivalence-Relation A) - ( is-surjective-and-effective-id-Id-Equivalence-Relation A) + ( id-reflecting-map-Id-equivalence-relation A) + is-set-quotient-id-Id-equivalence-relation = + is-set-quotient-is-surjective-and-effective (Id-equivalence-relation A) A + ( id-reflecting-map-Id-equivalence-relation A) + ( is-surjective-and-effective-id-Id-equivalence-relation A) ``` diff --git a/src/foundation/exponents-set-quotients.lagda.md b/src/foundation/exponents-set-quotients.lagda.md index 03770e2505..ecf674e9a0 100644 --- a/src/foundation/exponents-set-quotients.lagda.md +++ b/src/foundation/exponents-set-quotients.lagda.md @@ -46,7 +46,7 @@ embedding for every `X`, `A`, and `R` if and only if the axiom of choice holds. Consequently, we get embeddings ```text - ((hom-Equivalence-Relation R S) / ~) ↪ ((A/R) → (B/S)) + ((hom-equivalence-relation R S) / ~) ↪ ((A/R) → (B/S)) ``` for any two equivalence relations `R` on `A` and `S` on `B`. @@ -57,104 +57,116 @@ for any two equivalence relations `R` on `A` and `S` on `B`. ```agda module _ - {l1 l2 l3 : Level} (X : UU l1) {A : UU l2} (R : Equivalence-Relation l3 A) + {l1 l2 l3 : Level} (X : UU l1) {A : UU l2} (R : equivalence-relation l3 A) where rel-function-type : Relation-Prop (l1 ⊔ l3) (X → A) rel-function-type f g = - Π-Prop X (λ x → prop-Equivalence-Relation R (f x) (g x)) + Π-Prop X (λ x → prop-equivalence-relation R (f x) (g x)) sim-function-type : (f g : X → A) → UU (l1 ⊔ l3) sim-function-type = type-Relation-Prop rel-function-type refl-sim-function-type : is-reflexive sim-function-type - refl-sim-function-type f x = refl-Equivalence-Relation R (f x) + refl-sim-function-type f x = refl-equivalence-relation R (f x) symmetric-sim-function-type : is-symmetric sim-function-type symmetric-sim-function-type f g r x = - symmetric-Equivalence-Relation R (f x) (g x) (r x) + symmetric-equivalence-relation R (f x) (g x) (r x) transitive-sim-function-type : is-transitive sim-function-type transitive-sim-function-type f g h r s x = - transitive-Equivalence-Relation R (f x) (g x) (h x) (r x) (s x) + transitive-equivalence-relation R (f x) (g x) (h x) (r x) (s x) - eq-rel-function-type : Equivalence-Relation (l1 ⊔ l3) (X → A) - pr1 eq-rel-function-type = rel-function-type - pr1 (pr2 eq-rel-function-type) = refl-sim-function-type - pr1 (pr2 (pr2 eq-rel-function-type)) = symmetric-sim-function-type - pr2 (pr2 (pr2 eq-rel-function-type)) = transitive-sim-function-type + equivalence-relation-function-type : equivalence-relation (l1 ⊔ l3) (X → A) + pr1 equivalence-relation-function-type = rel-function-type + pr1 (pr2 equivalence-relation-function-type) = refl-sim-function-type + pr1 (pr2 (pr2 equivalence-relation-function-type)) = + symmetric-sim-function-type + pr2 (pr2 (pr2 equivalence-relation-function-type)) = + transitive-sim-function-type - map-exponent-reflecting-map-Equivalence-Relation : + map-exponent-reflecting-map-equivalence-relation : {l4 : Level} {B : UU l4} → - reflecting-map-Equivalence-Relation R B → (X → A) → (X → B) - map-exponent-reflecting-map-Equivalence-Relation q = - postcomp X (map-reflecting-map-Equivalence-Relation R q) - - reflects-exponent-reflecting-map-Equivalence-Relation : - {l4 : Level} {B : UU l4} (q : reflecting-map-Equivalence-Relation R B) → - reflects-Equivalence-Relation eq-rel-function-type - ( map-exponent-reflecting-map-Equivalence-Relation q) - reflects-exponent-reflecting-map-Equivalence-Relation q {f} {g} H = - eq-htpy (λ x → reflects-map-reflecting-map-Equivalence-Relation R q (H x)) - - exponent-reflecting-map-Equivalence-Relation : + reflecting-map-equivalence-relation R B → (X → A) → (X → B) + map-exponent-reflecting-map-equivalence-relation q = + postcomp X (map-reflecting-map-equivalence-relation R q) + + reflects-exponent-reflecting-map-equivalence-relation : + {l4 : Level} {B : UU l4} (q : reflecting-map-equivalence-relation R B) → + reflects-equivalence-relation equivalence-relation-function-type + ( map-exponent-reflecting-map-equivalence-relation q) + reflects-exponent-reflecting-map-equivalence-relation q {f} {g} H = + eq-htpy (λ x → reflects-map-reflecting-map-equivalence-relation R q (H x)) + + exponent-reflecting-map-equivalence-relation : {l4 : Level} {B : UU l4} → - reflecting-map-Equivalence-Relation R B → - reflecting-map-Equivalence-Relation eq-rel-function-type (X → B) - pr1 (exponent-reflecting-map-Equivalence-Relation q) = - map-exponent-reflecting-map-Equivalence-Relation q - pr2 (exponent-reflecting-map-Equivalence-Relation q) = - reflects-exponent-reflecting-map-Equivalence-Relation q + reflecting-map-equivalence-relation R B → + reflecting-map-equivalence-relation + ( equivalence-relation-function-type) + ( X → B) + pr1 (exponent-reflecting-map-equivalence-relation q) = + map-exponent-reflecting-map-equivalence-relation q + pr2 (exponent-reflecting-map-equivalence-relation q) = + reflects-exponent-reflecting-map-equivalence-relation q module _ {l4 l5 : Level} (Q : Set l4) - (q : reflecting-map-Equivalence-Relation eq-rel-function-type (type-Set Q)) - (Uq : {l : Level} → is-set-quotient l eq-rel-function-type Q q) - (QR : Set l5) (qR : reflecting-map-Equivalence-Relation R (type-Set QR)) + (q : + reflecting-map-equivalence-relation + ( equivalence-relation-function-type) + ( type-Set Q)) + (Uq : + {l : Level} → is-set-quotient l equivalence-relation-function-type Q q) + (QR : Set l5) (qR : reflecting-map-equivalence-relation R (type-Set QR)) (UqR : {l : Level} → is-set-quotient l R QR qR) where - unique-inclusion-is-set-quotient-eq-rel-function-type : + unique-inclusion-is-set-quotient-equivalence-relation-function-type : is-contr ( Σ ( type-Set Q → (X → type-Set QR)) ( λ h → - ( h ∘ - map-reflecting-map-Equivalence-Relation eq-rel-function-type q) + ( h) ∘ + ( map-reflecting-map-equivalence-relation + ( equivalence-relation-function-type) + ( q)) ~ - ( map-exponent-reflecting-map-Equivalence-Relation qR))) - unique-inclusion-is-set-quotient-eq-rel-function-type = + ( map-exponent-reflecting-map-equivalence-relation qR))) + unique-inclusion-is-set-quotient-equivalence-relation-function-type = universal-property-set-quotient-is-set-quotient - ( eq-rel-function-type) + ( equivalence-relation-function-type) ( Q) ( q) ( Uq) ( function-Set X QR) - ( exponent-reflecting-map-Equivalence-Relation qR) + ( exponent-reflecting-map-equivalence-relation qR) - map-inclusion-is-set-quotient-eq-rel-function-type : + map-inclusion-is-set-quotient-equivalence-relation-function-type : type-Set Q → (X → type-Set QR) - map-inclusion-is-set-quotient-eq-rel-function-type = + map-inclusion-is-set-quotient-equivalence-relation-function-type = map-universal-property-set-quotient-is-set-quotient - ( eq-rel-function-type) + ( equivalence-relation-function-type) ( Q) ( q) ( Uq) ( function-Set X QR) - ( exponent-reflecting-map-Equivalence-Relation qR) - - triangle-inclusion-is-set-quotient-eq-rel-function-type : - ( ( map-inclusion-is-set-quotient-eq-rel-function-type) ∘ - ( map-reflecting-map-Equivalence-Relation eq-rel-function-type q)) ~ - ( map-exponent-reflecting-map-Equivalence-Relation qR) - triangle-inclusion-is-set-quotient-eq-rel-function-type = + ( exponent-reflecting-map-equivalence-relation qR) + + triangle-inclusion-is-set-quotient-equivalence-relation-function-type : + ( ( map-inclusion-is-set-quotient-equivalence-relation-function-type) ∘ + ( map-reflecting-map-equivalence-relation + ( equivalence-relation-function-type) + ( q))) ~ + ( map-exponent-reflecting-map-equivalence-relation qR) + triangle-inclusion-is-set-quotient-equivalence-relation-function-type = triangle-universal-property-set-quotient-is-set-quotient - ( eq-rel-function-type) + ( equivalence-relation-function-type) ( Q) ( q) ( Uq) ( function-Set X QR) - ( exponent-reflecting-map-Equivalence-Relation qR) + ( exponent-reflecting-map-equivalence-relation qR) ``` ### An equivalence relation on relation preserving maps @@ -162,78 +174,80 @@ module _ ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where - rel-hom-Equivalence-Relation : - Relation-Prop (l1 ⊔ l4) (hom-Equivalence-Relation R S) - rel-hom-Equivalence-Relation f g = + rel-hom-equivalence-relation : + Relation-Prop (l1 ⊔ l4) (hom-equivalence-relation R S) + rel-hom-equivalence-relation f g = rel-function-type A S - ( map-hom-Equivalence-Relation R S f) - ( map-hom-Equivalence-Relation R S g) + ( map-hom-equivalence-relation R S f) + ( map-hom-equivalence-relation R S g) - sim-hom-Equivalence-Relation : - (f g : hom-Equivalence-Relation R S) → UU (l1 ⊔ l4) - sim-hom-Equivalence-Relation f g = + sim-hom-equivalence-relation : + (f g : hom-equivalence-relation R S) → UU (l1 ⊔ l4) + sim-hom-equivalence-relation f g = sim-function-type A S - ( map-hom-Equivalence-Relation R S f) - ( map-hom-Equivalence-Relation R S g) + ( map-hom-equivalence-relation R S f) + ( map-hom-equivalence-relation R S g) - refl-sim-hom-Equivalence-Relation : is-reflexive sim-hom-Equivalence-Relation - refl-sim-hom-Equivalence-Relation f = - refl-sim-function-type A S (map-hom-Equivalence-Relation R S f) + refl-sim-hom-equivalence-relation : is-reflexive sim-hom-equivalence-relation + refl-sim-hom-equivalence-relation f = + refl-sim-function-type A S (map-hom-equivalence-relation R S f) - symmetric-sim-hom-Equivalence-Relation : - is-symmetric sim-hom-Equivalence-Relation - symmetric-sim-hom-Equivalence-Relation f g = + symmetric-sim-hom-equivalence-relation : + is-symmetric sim-hom-equivalence-relation + symmetric-sim-hom-equivalence-relation f g = symmetric-sim-function-type A S - ( map-hom-Equivalence-Relation R S f) - ( map-hom-Equivalence-Relation R S g) + ( map-hom-equivalence-relation R S f) + ( map-hom-equivalence-relation R S g) - transitive-sim-hom-Equivalence-Relation : - is-transitive sim-hom-Equivalence-Relation - transitive-sim-hom-Equivalence-Relation f g h = + transitive-sim-hom-equivalence-relation : + is-transitive sim-hom-equivalence-relation + transitive-sim-hom-equivalence-relation f g h = transitive-sim-function-type A S - ( map-hom-Equivalence-Relation R S f) - ( map-hom-Equivalence-Relation R S g) - ( map-hom-Equivalence-Relation R S h) - - eq-rel-hom-Equivalence-Relation : - Equivalence-Relation (l1 ⊔ l4) (hom-Equivalence-Relation R S) - pr1 eq-rel-hom-Equivalence-Relation = rel-hom-Equivalence-Relation - pr1 (pr2 eq-rel-hom-Equivalence-Relation) = refl-sim-hom-Equivalence-Relation - pr1 (pr2 (pr2 eq-rel-hom-Equivalence-Relation)) = - symmetric-sim-hom-Equivalence-Relation - pr2 (pr2 (pr2 eq-rel-hom-Equivalence-Relation)) = - transitive-sim-hom-Equivalence-Relation + ( map-hom-equivalence-relation R S f) + ( map-hom-equivalence-relation R S g) + ( map-hom-equivalence-relation R S h) + + equivalence-relation-hom-equivalence-relation : + equivalence-relation (l1 ⊔ l4) (hom-equivalence-relation R S) + pr1 equivalence-relation-hom-equivalence-relation = + rel-hom-equivalence-relation + pr1 (pr2 equivalence-relation-hom-equivalence-relation) = + refl-sim-hom-equivalence-relation + pr1 (pr2 (pr2 equivalence-relation-hom-equivalence-relation)) = + symmetric-sim-hom-equivalence-relation + pr2 (pr2 (pr2 equivalence-relation-hom-equivalence-relation)) = + transitive-sim-hom-equivalence-relation ``` -### The universal reflecting map from `hom-Equivalence-Relation R S` to `A/R → B/S` +### The universal reflecting map from `hom-equivalence-relation R S` to `A/R → B/S` #### First variant using only the universal property of set quotients ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - (QR : Set l3) (qR : reflecting-map-Equivalence-Relation R (type-Set QR)) + {A : UU l1} (R : equivalence-relation l2 A) + (QR : Set l3) (qR : reflecting-map-equivalence-relation R (type-Set QR)) (UqR : {l : Level} → is-set-quotient l R QR qR) - {B : UU l4} (S : Equivalence-Relation l5 B) - (QS : Set l6) (qS : reflecting-map-Equivalence-Relation S (type-Set QS)) + {B : UU l4} (S : equivalence-relation l5 B) + (QS : Set l6) (qS : reflecting-map-equivalence-relation S (type-Set QS)) (UqS : {l : Level} → is-set-quotient l S QS qS) where - universal-map-is-set-quotient-hom-Equivalence-Relation : - hom-Equivalence-Relation R S → type-hom-Set QR QS - universal-map-is-set-quotient-hom-Equivalence-Relation = + universal-map-is-set-quotient-hom-equivalence-relation : + hom-equivalence-relation R S → hom-Set QR QS + universal-map-is-set-quotient-hom-equivalence-relation = map-is-set-quotient R QR qR S QS qS UqR UqS - reflects-universal-map-is-set-quotient-hom-Equivalence-Relation : - reflects-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) - ( universal-map-is-set-quotient-hom-Equivalence-Relation) - reflects-universal-map-is-set-quotient-hom-Equivalence-Relation {f} {g} s = + reflects-universal-map-is-set-quotient-hom-equivalence-relation : + reflects-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) + ( universal-map-is-set-quotient-hom-equivalence-relation) + reflects-universal-map-is-set-quotient-hom-equivalence-relation {f} {g} s = eq-htpy ( ind-is-set-quotient R QR qR UqR ( λ x → @@ -241,20 +255,20 @@ module _ ( map-is-set-quotient R QR qR S QS qS UqR UqS f x) ( map-is-set-quotient R QR qR S QS qS UqR UqS g x)) ( λ a → - coherence-square-map-is-set-quotient R QR qR S QS qS UqR UqS f a ∙ - ( ( apply-effectiveness-is-set-quotient' S QS qS UqS (s a)) ∙ - ( inv - ( coherence-square-map-is-set-quotient - R QR qR S QS qS UqR UqS g a))))) - - universal-reflecting-map-is-set-quotient-hom-Equivalence-Relation : - reflecting-map-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) - ( type-hom-Set QR QS) - pr1 universal-reflecting-map-is-set-quotient-hom-Equivalence-Relation = - universal-map-is-set-quotient-hom-Equivalence-Relation - pr2 universal-reflecting-map-is-set-quotient-hom-Equivalence-Relation = - reflects-universal-map-is-set-quotient-hom-Equivalence-Relation + ( coherence-square-map-is-set-quotient R QR qR S QS qS UqR UqS f a) ∙ + ( apply-effectiveness-is-set-quotient' S QS qS UqS (s a)) ∙ + ( inv + ( coherence-square-map-is-set-quotient + R QR qR S QS qS UqR UqS g a)))) + + universal-reflecting-map-is-set-quotient-hom-equivalence-relation : + reflecting-map-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) + ( hom-Set QR QS) + pr1 universal-reflecting-map-is-set-quotient-hom-equivalence-relation = + universal-map-is-set-quotient-hom-equivalence-relation + pr2 universal-reflecting-map-is-set-quotient-hom-equivalence-relation = + reflects-universal-map-is-set-quotient-hom-equivalence-relation ``` #### Second variant using the designated set quotients @@ -262,16 +276,16 @@ module _ ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where - universal-reflecting-map-set-quotient-hom-Equivalence-Relation : - reflecting-map-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) + universal-reflecting-map-set-quotient-hom-equivalence-relation : + reflecting-map-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) ( set-quotient R → set-quotient S) - universal-reflecting-map-set-quotient-hom-Equivalence-Relation = - universal-reflecting-map-is-set-quotient-hom-Equivalence-Relation + universal-reflecting-map-set-quotient-hom-equivalence-relation = + universal-reflecting-map-is-set-quotient-hom-equivalence-relation ( R) ( quotient-Set R) ( reflecting-map-quotient-map R) @@ -281,21 +295,21 @@ module _ ( reflecting-map-quotient-map S) ( λ {l} → is-set-quotient-set-quotient S {l}) - universal-map-set-quotient-hom-Equivalence-Relation : - hom-Equivalence-Relation R S → set-quotient R → set-quotient S - universal-map-set-quotient-hom-Equivalence-Relation = - map-reflecting-map-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) - ( universal-reflecting-map-set-quotient-hom-Equivalence-Relation) - - reflects-universal-map-set-quotient-hom-Equivalence-Relation : - reflects-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) - ( universal-map-set-quotient-hom-Equivalence-Relation) - reflects-universal-map-set-quotient-hom-Equivalence-Relation = - reflects-map-reflecting-map-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) - ( universal-reflecting-map-set-quotient-hom-Equivalence-Relation) + universal-map-set-quotient-hom-equivalence-relation : + hom-equivalence-relation R S → set-quotient R → set-quotient S + universal-map-set-quotient-hom-equivalence-relation = + map-reflecting-map-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) + ( universal-reflecting-map-set-quotient-hom-equivalence-relation) + + reflects-universal-map-set-quotient-hom-equivalence-relation : + reflects-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) + ( universal-map-set-quotient-hom-equivalence-relation) + reflects-universal-map-set-quotient-hom-equivalence-relation = + reflects-map-reflecting-map-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) + ( universal-reflecting-map-set-quotient-hom-equivalence-relation) ``` ## Properties @@ -305,116 +319,119 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 : Level} (X : UU l1) - {A : UU l2} (R : Equivalence-Relation l3 A) + {A : UU l2} (R : equivalence-relation l3 A) (Q : Set l4) (q : - reflecting-map-Equivalence-Relation - ( eq-rel-function-type X R) + reflecting-map-equivalence-relation + ( equivalence-relation-function-type X R) ( type-Set Q)) - (Uq : {l : Level} → is-set-quotient l (eq-rel-function-type X R) Q q) - (QR : Set l5) (qR : reflecting-map-Equivalence-Relation R (type-Set QR)) + (Uq : + {l : Level} → + is-set-quotient l (equivalence-relation-function-type X R) Q q) + (QR : Set l5) (qR : reflecting-map-equivalence-relation R (type-Set QR)) (UqR : {l : Level} → is-set-quotient l R QR qR) where - is-emb-inclusion-is-set-quotient-eq-rel-function-type : + is-emb-inclusion-is-set-quotient-equivalence-relation-function-type : is-emb - ( map-inclusion-is-set-quotient-eq-rel-function-type X R Q q Uq QR qR UqR) - is-emb-inclusion-is-set-quotient-eq-rel-function-type = + ( map-inclusion-is-set-quotient-equivalence-relation-function-type + X R Q q Uq QR qR UqR) + is-emb-inclusion-is-set-quotient-equivalence-relation-function-type = is-emb-map-universal-property-set-quotient-is-set-quotient - ( eq-rel-function-type X R) + ( equivalence-relation-function-type X R) ( Q) ( q) ( Uq) ( function-Set X QR) - ( exponent-reflecting-map-Equivalence-Relation X R qR) + ( exponent-reflecting-map-equivalence-relation X R qR) ( λ g h p x → apply-effectiveness-is-set-quotient R QR qR UqR (htpy-eq p x)) ``` -### The extension of the universal map from `hom-Equivalence-Relation R S` to `A/R → B/S` to the quotient is an embedding +### The extension of the universal map from `hom-equivalence-relation R S` to `A/R → B/S` to the quotient is an embedding #### First variant using only the universal property of the set quotient ```agda module _ {l1 l2 l3 l4 l5 l6 l7 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - (QR : Set l3) (qR : reflecting-map-Equivalence-Relation R (type-Set QR)) + {A : UU l1} (R : equivalence-relation l2 A) + (QR : Set l3) (qR : reflecting-map-equivalence-relation R (type-Set QR)) (UR : {l : Level} → is-set-quotient l R QR qR) - {B : UU l4} (S : Equivalence-Relation l5 B) - (QS : Set l6) (qS : reflecting-map-Equivalence-Relation S (type-Set QS)) + {B : UU l4} (S : equivalence-relation l5 B) + (QS : Set l6) (qS : reflecting-map-equivalence-relation S (type-Set QS)) (US : {l : Level} → is-set-quotient l S QS qS) (QH : Set l7) (qH : - reflecting-map-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) + reflecting-map-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) ( type-Set QH)) (UH : {l : Level} → - is-set-quotient l (eq-rel-hom-Equivalence-Relation R S) QH qH) + is-set-quotient l (equivalence-relation-hom-equivalence-relation R S) QH qH) where - unique-inclusion-is-set-quotient-hom-Equivalence-Relation : + unique-inclusion-is-set-quotient-hom-equivalence-relation : is-contr - ( Σ ( type-hom-Set QH (hom-Set QR QS)) + ( Σ ( hom-Set QH (hom-set-Set QR QS)) ( λ μ → ( μ ∘ - map-reflecting-map-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) + map-reflecting-map-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) ( qH)) ~ - ( universal-map-is-set-quotient-hom-Equivalence-Relation + ( universal-map-is-set-quotient-hom-equivalence-relation R QR qR UR S QS qS US))) - unique-inclusion-is-set-quotient-hom-Equivalence-Relation = + unique-inclusion-is-set-quotient-hom-equivalence-relation = universal-property-set-quotient-is-set-quotient - ( eq-rel-hom-Equivalence-Relation R S) + ( equivalence-relation-hom-equivalence-relation R S) ( QH) ( qH) ( UH) - ( hom-Set QR QS) - ( universal-reflecting-map-is-set-quotient-hom-Equivalence-Relation + ( hom-set-Set QR QS) + ( universal-reflecting-map-is-set-quotient-hom-equivalence-relation R QR qR UR S QS qS US) - inclusion-is-set-quotient-hom-Equivalence-Relation : - type-hom-Set QH (hom-Set QR QS) - inclusion-is-set-quotient-hom-Equivalence-Relation = - pr1 (center (unique-inclusion-is-set-quotient-hom-Equivalence-Relation)) + inclusion-is-set-quotient-hom-equivalence-relation : + hom-Set QH (hom-set-Set QR QS) + inclusion-is-set-quotient-hom-equivalence-relation = + pr1 (center (unique-inclusion-is-set-quotient-hom-equivalence-relation)) - triangle-inclusion-is-set-quotient-hom-Equivalence-Relation : - ( inclusion-is-set-quotient-hom-Equivalence-Relation ∘ - map-reflecting-map-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) + triangle-inclusion-is-set-quotient-hom-equivalence-relation : + ( inclusion-is-set-quotient-hom-equivalence-relation ∘ + map-reflecting-map-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) ( qH)) ~ - ( universal-map-is-set-quotient-hom-Equivalence-Relation + ( universal-map-is-set-quotient-hom-equivalence-relation R QR qR UR S QS qS US) - triangle-inclusion-is-set-quotient-hom-Equivalence-Relation = - pr2 (center (unique-inclusion-is-set-quotient-hom-Equivalence-Relation)) + triangle-inclusion-is-set-quotient-hom-equivalence-relation = + pr2 (center (unique-inclusion-is-set-quotient-hom-equivalence-relation)) - is-emb-inclusion-is-set-quotient-hom-Equivalence-Relation : - is-emb inclusion-is-set-quotient-hom-Equivalence-Relation - is-emb-inclusion-is-set-quotient-hom-Equivalence-Relation = + is-emb-inclusion-is-set-quotient-hom-equivalence-relation : + is-emb inclusion-is-set-quotient-hom-equivalence-relation + is-emb-inclusion-is-set-quotient-hom-equivalence-relation = is-emb-map-universal-property-set-quotient-is-set-quotient - ( eq-rel-hom-Equivalence-Relation R S) + ( equivalence-relation-hom-equivalence-relation R S) ( QH) ( qH) ( UH) - ( hom-Set QR QS) - ( universal-reflecting-map-is-set-quotient-hom-Equivalence-Relation + ( hom-set-Set QR QS) + ( universal-reflecting-map-is-set-quotient-hom-equivalence-relation R QR qR UR S QS qS US) ( λ g h p a → apply-effectiveness-is-set-quotient S QS qS US ( ( inv-htpy ( coherence-square-map-is-set-quotient R QR qR S QS qS UR US g) ∙h - ( ( htpy-eq p ·r map-reflecting-map-Equivalence-Relation R qR) ∙h + ( ( htpy-eq p ·r map-reflecting-map-equivalence-relation R qR) ∙h ( coherence-square-map-is-set-quotient R QR qR S QS qS UR US h))) ( a))) - emb-inclusion-is-set-quotient-hom-Equivalence-Relation : - type-Set QH ↪ type-hom-Set QR QS - pr1 emb-inclusion-is-set-quotient-hom-Equivalence-Relation = - inclusion-is-set-quotient-hom-Equivalence-Relation - pr2 emb-inclusion-is-set-quotient-hom-Equivalence-Relation = - is-emb-inclusion-is-set-quotient-hom-Equivalence-Relation + emb-inclusion-is-set-quotient-hom-equivalence-relation : + type-Set QH ↪ hom-Set QR QS + pr1 emb-inclusion-is-set-quotient-hom-equivalence-relation = + inclusion-is-set-quotient-hom-equivalence-relation + pr2 emb-inclusion-is-set-quotient-hom-equivalence-relation = + is-emb-inclusion-is-set-quotient-hom-equivalence-relation ``` #### Second variant using the official set quotients @@ -422,83 +439,86 @@ module _ ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where - quotient-hom-Equivalence-Relation-Set : Set (l1 ⊔ l2 ⊔ l3 ⊔ l4) - quotient-hom-Equivalence-Relation-Set = - quotient-Set (eq-rel-hom-Equivalence-Relation R S) - - set-quotient-hom-Equivalence-Relation : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - set-quotient-hom-Equivalence-Relation = - type-Set quotient-hom-Equivalence-Relation-Set - - is-set-set-quotient-hom-Equivalence-Relation : - is-set set-quotient-hom-Equivalence-Relation - is-set-set-quotient-hom-Equivalence-Relation = - is-set-type-Set quotient-hom-Equivalence-Relation-Set - - reflecting-map-quotient-map-hom-Equivalence-Relation : - reflecting-map-Equivalence-Relation - ( eq-rel-hom-Equivalence-Relation R S) - ( set-quotient-hom-Equivalence-Relation) - reflecting-map-quotient-map-hom-Equivalence-Relation = - reflecting-map-quotient-map (eq-rel-hom-Equivalence-Relation R S) - - quotient-map-hom-Equivalence-Relation : - hom-Equivalence-Relation R S → set-quotient-hom-Equivalence-Relation - quotient-map-hom-Equivalence-Relation = - quotient-map (eq-rel-hom-Equivalence-Relation R S) - - is-set-quotient-set-quotient-hom-Equivalence-Relation : + quotient-hom-equivalence-relation-Set : Set (l1 ⊔ l2 ⊔ l3 ⊔ l4) + quotient-hom-equivalence-relation-Set = + quotient-Set (equivalence-relation-hom-equivalence-relation R S) + + set-quotient-hom-equivalence-relation : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + set-quotient-hom-equivalence-relation = + type-Set quotient-hom-equivalence-relation-Set + + is-set-set-quotient-hom-equivalence-relation : + is-set set-quotient-hom-equivalence-relation + is-set-set-quotient-hom-equivalence-relation = + is-set-type-Set quotient-hom-equivalence-relation-Set + + reflecting-map-quotient-map-hom-equivalence-relation : + reflecting-map-equivalence-relation + ( equivalence-relation-hom-equivalence-relation R S) + ( set-quotient-hom-equivalence-relation) + reflecting-map-quotient-map-hom-equivalence-relation = + reflecting-map-quotient-map + ( equivalence-relation-hom-equivalence-relation R S) + + quotient-map-hom-equivalence-relation : + hom-equivalence-relation R S → set-quotient-hom-equivalence-relation + quotient-map-hom-equivalence-relation = + quotient-map (equivalence-relation-hom-equivalence-relation R S) + + is-set-quotient-set-quotient-hom-equivalence-relation : {l : Level} → is-set-quotient l - ( eq-rel-hom-Equivalence-Relation R S) - ( quotient-hom-Equivalence-Relation-Set) - ( reflecting-map-quotient-map-hom-Equivalence-Relation) - is-set-quotient-set-quotient-hom-Equivalence-Relation = - is-set-quotient-set-quotient (eq-rel-hom-Equivalence-Relation R S) - - unique-inclusion-set-quotient-hom-Equivalence-Relation : + ( equivalence-relation-hom-equivalence-relation R S) + ( quotient-hom-equivalence-relation-Set) + ( reflecting-map-quotient-map-hom-equivalence-relation) + is-set-quotient-set-quotient-hom-equivalence-relation = + is-set-quotient-set-quotient + ( equivalence-relation-hom-equivalence-relation R S) + + unique-inclusion-set-quotient-hom-equivalence-relation : is-contr - ( Σ ( set-quotient-hom-Equivalence-Relation → + ( Σ ( set-quotient-hom-equivalence-relation → set-quotient R → set-quotient S) ( λ μ → - ( μ ∘ quotient-map (eq-rel-hom-Equivalence-Relation R S)) ~ - ( universal-map-set-quotient-hom-Equivalence-Relation R S))) - unique-inclusion-set-quotient-hom-Equivalence-Relation = + μ ∘ + quotient-map (equivalence-relation-hom-equivalence-relation R S) ~ + universal-map-set-quotient-hom-equivalence-relation R S)) + unique-inclusion-set-quotient-hom-equivalence-relation = universal-property-set-quotient-is-set-quotient - ( eq-rel-hom-Equivalence-Relation R S) - ( quotient-hom-Equivalence-Relation-Set) - ( reflecting-map-quotient-map-hom-Equivalence-Relation) - ( is-set-quotient-set-quotient-hom-Equivalence-Relation) - ( hom-Set (quotient-Set R) (quotient-Set S)) - ( universal-reflecting-map-set-quotient-hom-Equivalence-Relation R S) - - inclusion-set-quotient-hom-Equivalence-Relation : - set-quotient (eq-rel-hom-Equivalence-Relation R S) → + ( equivalence-relation-hom-equivalence-relation R S) + ( quotient-hom-equivalence-relation-Set) + ( reflecting-map-quotient-map-hom-equivalence-relation) + ( is-set-quotient-set-quotient-hom-equivalence-relation) + ( hom-set-Set (quotient-Set R) (quotient-Set S)) + ( universal-reflecting-map-set-quotient-hom-equivalence-relation R S) + + inclusion-set-quotient-hom-equivalence-relation : + set-quotient (equivalence-relation-hom-equivalence-relation R S) → set-quotient R → set-quotient S - inclusion-set-quotient-hom-Equivalence-Relation = - pr1 (center (unique-inclusion-set-quotient-hom-Equivalence-Relation)) - - triangle-inclusion-set-quotient-hom-Equivalence-Relation : - ( inclusion-set-quotient-hom-Equivalence-Relation ∘ - quotient-map (eq-rel-hom-Equivalence-Relation R S)) ~ - ( universal-map-set-quotient-hom-Equivalence-Relation R S) - triangle-inclusion-set-quotient-hom-Equivalence-Relation = - pr2 (center (unique-inclusion-set-quotient-hom-Equivalence-Relation)) - - is-emb-inclusion-set-quotient-hom-Equivalence-Relation : - is-emb inclusion-set-quotient-hom-Equivalence-Relation - is-emb-inclusion-set-quotient-hom-Equivalence-Relation = + inclusion-set-quotient-hom-equivalence-relation = + pr1 (center (unique-inclusion-set-quotient-hom-equivalence-relation)) + + triangle-inclusion-set-quotient-hom-equivalence-relation : + ( inclusion-set-quotient-hom-equivalence-relation ∘ + quotient-map (equivalence-relation-hom-equivalence-relation R S)) ~ + ( universal-map-set-quotient-hom-equivalence-relation R S) + triangle-inclusion-set-quotient-hom-equivalence-relation = + pr2 (center (unique-inclusion-set-quotient-hom-equivalence-relation)) + + is-emb-inclusion-set-quotient-hom-equivalence-relation : + is-emb inclusion-set-quotient-hom-equivalence-relation + is-emb-inclusion-set-quotient-hom-equivalence-relation = is-emb-map-universal-property-set-quotient-is-set-quotient - ( eq-rel-hom-Equivalence-Relation R S) - ( quotient-hom-Equivalence-Relation-Set) - ( reflecting-map-quotient-map-hom-Equivalence-Relation) - ( is-set-quotient-set-quotient-hom-Equivalence-Relation) - ( hom-Set (quotient-Set R) (quotient-Set S)) - ( universal-reflecting-map-set-quotient-hom-Equivalence-Relation R S) + ( equivalence-relation-hom-equivalence-relation R S) + ( quotient-hom-equivalence-relation-Set) + ( reflecting-map-quotient-map-hom-equivalence-relation) + ( is-set-quotient-set-quotient-hom-equivalence-relation) + ( hom-set-Set (quotient-Set R) (quotient-Set S)) + ( universal-reflecting-map-set-quotient-hom-equivalence-relation R S) ( λ g h p a → apply-effectiveness-quotient-map S ( ( inv-htpy @@ -508,11 +528,11 @@ module _ R S h))) ( a))) - emb-inclusion-set-quotient-hom-Equivalence-Relation : - set-quotient (eq-rel-hom-Equivalence-Relation R S) ↪ + emb-inclusion-set-quotient-hom-equivalence-relation : + set-quotient (equivalence-relation-hom-equivalence-relation R S) ↪ ( set-quotient R → set-quotient S) - pr1 emb-inclusion-set-quotient-hom-Equivalence-Relation = - inclusion-set-quotient-hom-Equivalence-Relation - pr2 emb-inclusion-set-quotient-hom-Equivalence-Relation = - is-emb-inclusion-set-quotient-hom-Equivalence-Relation + pr1 emb-inclusion-set-quotient-hom-equivalence-relation = + inclusion-set-quotient-hom-equivalence-relation + pr2 emb-inclusion-set-quotient-hom-equivalence-relation = + is-emb-inclusion-set-quotient-hom-equivalence-relation ``` diff --git a/src/foundation/functoriality-set-quotients.lagda.md b/src/foundation/functoriality-set-quotients.lagda.md index a1d312b1a2..1eb98d93ef 100644 --- a/src/foundation/functoriality-set-quotients.lagda.md +++ b/src/foundation/functoriality-set-quotients.lagda.md @@ -49,51 +49,51 @@ Set quotients act functorially on types equipped with equivalence relations. ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where - preserves-sim-Equivalence-Relation-Prop : (f : A → B) → Prop (l1 ⊔ l2 ⊔ l4) - preserves-sim-Equivalence-Relation-Prop f = + preserves-sim-prop-equivalence-relation : (f : A → B) → Prop (l1 ⊔ l2 ⊔ l4) + preserves-sim-prop-equivalence-relation f = Π-Prop' A ( λ x → Π-Prop' A ( λ y → function-Prop - ( sim-Equivalence-Relation R x y) - ( prop-Equivalence-Relation S (f x) (f y)))) + ( sim-equivalence-relation R x y) + ( prop-equivalence-relation S (f x) (f y)))) - preserves-sim-Equivalence-Relation : (f : A → B) → UU (l1 ⊔ l2 ⊔ l4) - preserves-sim-Equivalence-Relation f = - type-Prop (preserves-sim-Equivalence-Relation-Prop f) + preserves-sim-equivalence-relation : (f : A → B) → UU (l1 ⊔ l2 ⊔ l4) + preserves-sim-equivalence-relation f = + type-Prop (preserves-sim-prop-equivalence-relation f) - is-prop-preserves-sim-Equivalence-Relation : - (f : A → B) → is-prop (preserves-sim-Equivalence-Relation f) - is-prop-preserves-sim-Equivalence-Relation f = - is-prop-type-Prop (preserves-sim-Equivalence-Relation-Prop f) + is-prop-preserves-sim-equivalence-relation : + (f : A → B) → is-prop (preserves-sim-equivalence-relation f) + is-prop-preserves-sim-equivalence-relation f = + is-prop-type-Prop (preserves-sim-prop-equivalence-relation f) - hom-Equivalence-Relation : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - hom-Equivalence-Relation = - type-subtype preserves-sim-Equivalence-Relation-Prop + hom-equivalence-relation : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + hom-equivalence-relation = + type-subtype preserves-sim-prop-equivalence-relation - map-hom-Equivalence-Relation : hom-Equivalence-Relation → A → B - map-hom-Equivalence-Relation = pr1 + map-hom-equivalence-relation : hom-equivalence-relation → A → B + map-hom-equivalence-relation = pr1 - preserves-sim-hom-Equivalence-Relation : - (f : hom-Equivalence-Relation) {x y : A} → - sim-Equivalence-Relation R x y → - sim-Equivalence-Relation + preserves-sim-hom-equivalence-relation : + (f : hom-equivalence-relation) {x y : A} → + sim-equivalence-relation R x y → + sim-equivalence-relation ( S) - ( map-hom-Equivalence-Relation f x) - ( map-hom-Equivalence-Relation f y) - preserves-sim-hom-Equivalence-Relation = pr2 + ( map-hom-equivalence-relation f x) + ( map-hom-equivalence-relation f y) + preserves-sim-hom-equivalence-relation = pr2 -id-hom-Equivalence-Relation : +id-hom-equivalence-relation : {l1 l2 : Level} {A : UU l1} - (R : Equivalence-Relation l2 A) → - hom-Equivalence-Relation R R -pr1 (id-hom-Equivalence-Relation R) = id -pr2 (id-hom-Equivalence-Relation R) = id + (R : equivalence-relation l2 A) → + hom-equivalence-relation R R +pr1 (id-hom-equivalence-relation R) = id +pr2 (id-hom-equivalence-relation R) = id ``` ### Equivalences preserving equivalence relations @@ -101,66 +101,66 @@ pr2 (id-hom-Equivalence-Relation R) = id ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where - equiv-Equivalence-Relation : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - equiv-Equivalence-Relation = + equiv-equivalence-relation : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + equiv-equivalence-relation = Σ ( A ≃ B) ( λ e → {x y : A} → - sim-Equivalence-Relation R x y ↔ - sim-Equivalence-Relation S (map-equiv e x) (map-equiv e y)) - - equiv-equiv-Equivalence-Relation : equiv-Equivalence-Relation → A ≃ B - equiv-equiv-Equivalence-Relation = pr1 - - map-equiv-Equivalence-Relation : equiv-Equivalence-Relation → A → B - map-equiv-Equivalence-Relation e = - map-equiv (equiv-equiv-Equivalence-Relation e) - - map-inv-equiv-Equivalence-Relation : equiv-Equivalence-Relation → B → A - map-inv-equiv-Equivalence-Relation e = - map-inv-equiv (equiv-equiv-Equivalence-Relation e) - - is-equiv-map-equiv-Equivalence-Relation : - (e : equiv-Equivalence-Relation) → - is-equiv (map-equiv-Equivalence-Relation e) - is-equiv-map-equiv-Equivalence-Relation e = - is-equiv-map-equiv (equiv-equiv-Equivalence-Relation e) - - equiv-sim-equiv-Equivalence-Relation : - (e : equiv-Equivalence-Relation) {x y : A} → - sim-Equivalence-Relation R x y ↔ - sim-Equivalence-Relation + sim-equivalence-relation R x y ↔ + sim-equivalence-relation S (map-equiv e x) (map-equiv e y)) + + equiv-equiv-equivalence-relation : equiv-equivalence-relation → A ≃ B + equiv-equiv-equivalence-relation = pr1 + + map-equiv-equivalence-relation : equiv-equivalence-relation → A → B + map-equiv-equivalence-relation e = + map-equiv (equiv-equiv-equivalence-relation e) + + map-inv-equiv-equivalence-relation : equiv-equivalence-relation → B → A + map-inv-equiv-equivalence-relation e = + map-inv-equiv (equiv-equiv-equivalence-relation e) + + is-equiv-map-equiv-equivalence-relation : + (e : equiv-equivalence-relation) → + is-equiv (map-equiv-equivalence-relation e) + is-equiv-map-equiv-equivalence-relation e = + is-equiv-map-equiv (equiv-equiv-equivalence-relation e) + + equiv-sim-equiv-equivalence-relation : + (e : equiv-equivalence-relation) {x y : A} → + sim-equivalence-relation R x y ↔ + sim-equivalence-relation ( S) - ( map-equiv-Equivalence-Relation e x) - ( map-equiv-Equivalence-Relation e y) - equiv-sim-equiv-Equivalence-Relation = pr2 - - preserves-sim-equiv-Equivalence-Relation : - (e : equiv-Equivalence-Relation) {x y : A} → - sim-Equivalence-Relation R x y → - sim-Equivalence-Relation + ( map-equiv-equivalence-relation e x) + ( map-equiv-equivalence-relation e y) + equiv-sim-equiv-equivalence-relation = pr2 + + preserves-sim-equiv-equivalence-relation : + (e : equiv-equivalence-relation) {x y : A} → + sim-equivalence-relation R x y → + sim-equivalence-relation ( S) - ( map-equiv-Equivalence-Relation e x) - ( map-equiv-Equivalence-Relation e y) - preserves-sim-equiv-Equivalence-Relation e = - pr1 (equiv-sim-equiv-Equivalence-Relation e) - - hom-equiv-Equivalence-Relation : - equiv-Equivalence-Relation → hom-Equivalence-Relation R S - pr1 (hom-equiv-Equivalence-Relation e) = map-equiv-Equivalence-Relation e - pr2 (hom-equiv-Equivalence-Relation e) = - preserves-sim-equiv-Equivalence-Relation e - -id-equiv-Equivalence-Relation : - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) → - equiv-Equivalence-Relation R R -pr1 (id-equiv-Equivalence-Relation R) = id-equiv -pr1 (pr2 (id-equiv-Equivalence-Relation R)) = id -pr2 (pr2 (id-equiv-Equivalence-Relation R)) = id + ( map-equiv-equivalence-relation e x) + ( map-equiv-equivalence-relation e y) + preserves-sim-equiv-equivalence-relation e = + pr1 (equiv-sim-equiv-equivalence-relation e) + + hom-equiv-equivalence-relation : + equiv-equivalence-relation → hom-equivalence-relation R S + pr1 (hom-equiv-equivalence-relation e) = map-equiv-equivalence-relation e + pr2 (hom-equiv-equivalence-relation e) = + preserves-sim-equiv-equivalence-relation e + +id-equiv-equivalence-relation : + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) → + equiv-equivalence-relation R R +pr1 (id-equiv-equivalence-relation R) = id-equiv +pr1 (pr2 (id-equiv-equivalence-relation R)) = id +pr2 (pr2 (id-equiv-equivalence-relation R)) = id ``` ### Maps between types satisfying the universal property of set quotients @@ -168,35 +168,35 @@ pr2 (pr2 (id-equiv-Equivalence-Relation R)) = id ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - (QR : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set QR)) - {B : UU l4} (S : Equivalence-Relation l5 B) - (QS : Set l6) (g : reflecting-map-Equivalence-Relation S (type-Set QS)) + {A : UU l1} (R : equivalence-relation l2 A) + (QR : Set l3) (f : reflecting-map-equivalence-relation R (type-Set QR)) + {B : UU l4} (S : equivalence-relation l5 B) + (QS : Set l6) (g : reflecting-map-equivalence-relation S (type-Set QS)) where unique-map-is-set-quotient : ({l : Level} → is-set-quotient l R QR f) → ({l : Level} → is-set-quotient l S QS g) → - (h : hom-Equivalence-Relation R S) → + (h : hom-equivalence-relation R S) → is-contr ( Σ ( type-Set QR → type-Set QS) ( coherence-square-maps - ( map-hom-Equivalence-Relation R S h) - ( map-reflecting-map-Equivalence-Relation R f) - ( map-reflecting-map-Equivalence-Relation S g))) + ( map-hom-equivalence-relation R S h) + ( map-reflecting-map-equivalence-relation R f) + ( map-reflecting-map-equivalence-relation S g))) unique-map-is-set-quotient Uf Ug h = universal-property-set-quotient-is-set-quotient R QR f Uf QS ( pair - ( map-reflecting-map-Equivalence-Relation S g ∘ - map-hom-Equivalence-Relation R S h) + ( map-reflecting-map-equivalence-relation S g ∘ + map-hom-equivalence-relation R S h) ( λ r → - reflects-map-reflecting-map-Equivalence-Relation S g - ( preserves-sim-hom-Equivalence-Relation R S h r))) + reflects-map-reflecting-map-equivalence-relation S g + ( preserves-sim-hom-equivalence-relation R S h r))) map-is-set-quotient : ({l : Level} → is-set-quotient l R QR f) → ({l : Level} → is-set-quotient l S QS g) → - (h : hom-Equivalence-Relation R S) → + (h : hom-equivalence-relation R S) → type-Set QR → type-Set QS map-is-set-quotient Uf Ug h = pr1 (center (unique-map-is-set-quotient Uf Ug h)) @@ -204,11 +204,11 @@ module _ coherence-square-map-is-set-quotient : (Uf : {l : Level} → is-set-quotient l R QR f) → (Ug : {l : Level} → is-set-quotient l S QS g) → - (h : hom-Equivalence-Relation R S) → + (h : hom-equivalence-relation R S) → coherence-square-maps - ( map-hom-Equivalence-Relation R S h) - ( map-reflecting-map-Equivalence-Relation R f) - ( map-reflecting-map-Equivalence-Relation S g) + ( map-hom-equivalence-relation R S h) + ( map-reflecting-map-equivalence-relation R f) + ( map-reflecting-map-equivalence-relation S g) ( map-is-set-quotient Uf Ug h) coherence-square-map-is-set-quotient Uf Ug h = pr2 (center (unique-map-is-set-quotient Uf Ug h)) @@ -219,16 +219,16 @@ module _ ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where unique-map-set-quotient : - (h : hom-Equivalence-Relation R S) → + (h : hom-equivalence-relation R S) → is-contr ( Σ ( set-quotient R → set-quotient S) ( coherence-square-maps - ( map-hom-Equivalence-Relation R S h) + ( map-hom-equivalence-relation R S h) ( quotient-map R) ( quotient-map S))) unique-map-set-quotient = @@ -243,7 +243,7 @@ module _ ( is-set-quotient-set-quotient S) map-set-quotient : - (h : hom-Equivalence-Relation R S) → set-quotient R → set-quotient S + (h : hom-equivalence-relation R S) → set-quotient R → set-quotient S map-set-quotient = map-is-set-quotient ( R) @@ -256,9 +256,9 @@ module _ ( is-set-quotient-set-quotient S) coherence-square-map-set-quotient : - (h : hom-Equivalence-Relation R S) → + (h : hom-equivalence-relation R S) → coherence-square-maps - ( map-hom-Equivalence-Relation R S h) + ( map-hom-equivalence-relation R S h) ( quotient-map R) ( quotient-map S) ( map-set-quotient h) @@ -281,78 +281,78 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) {C : UU l5} where - comp-reflecting-map-Equivalence-Relation : - reflecting-map-Equivalence-Relation S C → hom-Equivalence-Relation R S → - reflecting-map-Equivalence-Relation R C - pr1 (comp-reflecting-map-Equivalence-Relation g f) = - map-reflecting-map-Equivalence-Relation S g ∘ - map-hom-Equivalence-Relation R S f - pr2 (comp-reflecting-map-Equivalence-Relation g f) r = - reflects-map-reflecting-map-Equivalence-Relation S g - ( preserves-sim-hom-Equivalence-Relation R S f r) + comp-reflecting-map-equivalence-relation : + reflecting-map-equivalence-relation S C → hom-equivalence-relation R S → + reflecting-map-equivalence-relation R C + pr1 (comp-reflecting-map-equivalence-relation g f) = + map-reflecting-map-equivalence-relation S g ∘ + map-hom-equivalence-relation R S f + pr2 (comp-reflecting-map-equivalence-relation g f) r = + reflects-map-reflecting-map-equivalence-relation S g + ( preserves-sim-hom-equivalence-relation R S f r) ``` -### Characterizing equality of `hom-Equivalence-Relation` +### Characterizing equality of `hom-equivalence-relation` ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where - htpy-hom-Equivalence-Relation : - (f g : hom-Equivalence-Relation R S) → UU (l1 ⊔ l3) - htpy-hom-Equivalence-Relation f g = - map-hom-Equivalence-Relation R S f ~ map-hom-Equivalence-Relation R S g - - refl-htpy-hom-Equivalence-Relation : - (f : hom-Equivalence-Relation R S) → htpy-hom-Equivalence-Relation f f - refl-htpy-hom-Equivalence-Relation f = refl-htpy - - htpy-eq-hom-Equivalence-Relation : - (f g : hom-Equivalence-Relation R S) → - (f = g) → htpy-hom-Equivalence-Relation f g - htpy-eq-hom-Equivalence-Relation f .f refl = - refl-htpy-hom-Equivalence-Relation f - - is-torsorial-htpy-hom-Equivalence-Relation : - (f : hom-Equivalence-Relation R S) → - is-torsorial (htpy-hom-Equivalence-Relation f) - is-torsorial-htpy-hom-Equivalence-Relation f = + htpy-hom-equivalence-relation : + (f g : hom-equivalence-relation R S) → UU (l1 ⊔ l3) + htpy-hom-equivalence-relation f g = + map-hom-equivalence-relation R S f ~ map-hom-equivalence-relation R S g + + refl-htpy-hom-equivalence-relation : + (f : hom-equivalence-relation R S) → htpy-hom-equivalence-relation f f + refl-htpy-hom-equivalence-relation f = refl-htpy + + htpy-eq-hom-equivalence-relation : + (f g : hom-equivalence-relation R S) → + (f = g) → htpy-hom-equivalence-relation f g + htpy-eq-hom-equivalence-relation f .f refl = + refl-htpy-hom-equivalence-relation f + + is-torsorial-htpy-hom-equivalence-relation : + (f : hom-equivalence-relation R S) → + is-torsorial (htpy-hom-equivalence-relation f) + is-torsorial-htpy-hom-equivalence-relation f = is-torsorial-Eq-subtype - ( is-torsorial-htpy (map-hom-Equivalence-Relation R S f)) - ( is-prop-preserves-sim-Equivalence-Relation R S) - ( map-hom-Equivalence-Relation R S f) - ( refl-htpy-hom-Equivalence-Relation f) - ( preserves-sim-hom-Equivalence-Relation R S f) - - is-equiv-htpy-eq-hom-Equivalence-Relation : - (f g : hom-Equivalence-Relation R S) → - is-equiv (htpy-eq-hom-Equivalence-Relation f g) - is-equiv-htpy-eq-hom-Equivalence-Relation f = + ( is-torsorial-htpy (map-hom-equivalence-relation R S f)) + ( is-prop-preserves-sim-equivalence-relation R S) + ( map-hom-equivalence-relation R S f) + ( refl-htpy-hom-equivalence-relation f) + ( preserves-sim-hom-equivalence-relation R S f) + + is-equiv-htpy-eq-hom-equivalence-relation : + (f g : hom-equivalence-relation R S) → + is-equiv (htpy-eq-hom-equivalence-relation f g) + is-equiv-htpy-eq-hom-equivalence-relation f = fundamental-theorem-id - ( is-torsorial-htpy-hom-Equivalence-Relation f) - ( htpy-eq-hom-Equivalence-Relation f) - - extensionality-hom-Equivalence-Relation : - (f g : hom-Equivalence-Relation R S) → - (f = g) ≃ htpy-hom-Equivalence-Relation f g - pr1 (extensionality-hom-Equivalence-Relation f g) = - htpy-eq-hom-Equivalence-Relation f g - pr2 (extensionality-hom-Equivalence-Relation f g) = - is-equiv-htpy-eq-hom-Equivalence-Relation f g - - eq-htpy-hom-Equivalence-Relation : - (f g : hom-Equivalence-Relation R S) → - htpy-hom-Equivalence-Relation f g → (f = g) - eq-htpy-hom-Equivalence-Relation f g = - map-inv-equiv (extensionality-hom-Equivalence-Relation f g) + ( is-torsorial-htpy-hom-equivalence-relation f) + ( htpy-eq-hom-equivalence-relation f) + + extensionality-hom-equivalence-relation : + (f g : hom-equivalence-relation R S) → + (f = g) ≃ htpy-hom-equivalence-relation f g + pr1 (extensionality-hom-equivalence-relation f g) = + htpy-eq-hom-equivalence-relation f g + pr2 (extensionality-hom-equivalence-relation f g) = + is-equiv-htpy-eq-hom-equivalence-relation f g + + eq-htpy-hom-equivalence-relation : + (f g : hom-equivalence-relation R S) → + htpy-hom-equivalence-relation f g → (f = g) + eq-htpy-hom-equivalence-relation f g = + map-inv-equiv (extensionality-hom-equivalence-relation f g) ``` ### Functoriality of set quotients preserves equivalences @@ -360,61 +360,61 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - (QR : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set QR)) - {B : UU l4} (S : Equivalence-Relation l5 B) - (QS : Set l6) (g : reflecting-map-Equivalence-Relation S (type-Set QS)) + {A : UU l1} (R : equivalence-relation l2 A) + (QR : Set l3) (f : reflecting-map-equivalence-relation R (type-Set QR)) + {B : UU l4} (S : equivalence-relation l5 B) + (QS : Set l6) (g : reflecting-map-equivalence-relation S (type-Set QS)) where unique-equiv-is-set-quotient : ({l : Level} → is-set-quotient l R QR f) → ({l : Level} → is-set-quotient l S QS g) → - (h : equiv-Equivalence-Relation R S) → + (h : equiv-equivalence-relation R S) → is-contr ( Σ ( type-Set QR ≃ type-Set QS) ( λ h' → coherence-square-maps - ( map-equiv-Equivalence-Relation R S h) - ( map-reflecting-map-Equivalence-Relation R f) - ( map-reflecting-map-Equivalence-Relation S g) + ( map-equiv-equivalence-relation R S h) + ( map-reflecting-map-equivalence-relation R f) + ( map-reflecting-map-equivalence-relation S g) ( map-equiv h'))) unique-equiv-is-set-quotient Uf Ug h = uniqueness-set-quotient R QR f Uf QS - ( comp-reflecting-map-Equivalence-Relation R S g - ( hom-equiv-Equivalence-Relation R S h)) + ( comp-reflecting-map-equivalence-relation R S g + ( hom-equiv-equivalence-relation R S h)) ( is-set-quotient-is-surjective-and-effective R QS - ( comp-reflecting-map-Equivalence-Relation R S g - ( hom-equiv-Equivalence-Relation R S h)) + ( comp-reflecting-map-equivalence-relation R S g + ( hom-equiv-equivalence-relation R S h)) ( ( is-surjective-comp ( is-surjective-is-set-quotient S QS g Ug) ( is-surjective-is-equiv - ( is-equiv-map-equiv-Equivalence-Relation R S h))) , + ( is-equiv-map-equiv-equivalence-relation R S h))) , ( λ x y → ( inv-equiv ( equiv-iff' - ( prop-Equivalence-Relation R x y) - ( prop-Equivalence-Relation S - ( map-equiv-Equivalence-Relation R S h x) - ( map-equiv-Equivalence-Relation R S h y)) - ( equiv-sim-equiv-Equivalence-Relation R S h))) ∘e + ( prop-equivalence-relation R x y) + ( prop-equivalence-relation S + ( map-equiv-equivalence-relation R S h x) + ( map-equiv-equivalence-relation R S h y)) + ( equiv-sim-equiv-equivalence-relation R S h))) ∘e ( is-effective-is-set-quotient S QS g Ug - ( map-equiv-Equivalence-Relation R S h x) - ( map-equiv-Equivalence-Relation R S h y))))) + ( map-equiv-equivalence-relation R S h x) + ( map-equiv-equivalence-relation R S h y))))) equiv-is-set-quotient : ({l : Level} → is-set-quotient l R QR f) → ({l : Level} → is-set-quotient l S QS g) → - (h : equiv-Equivalence-Relation R S) → type-Set QR ≃ type-Set QS + (h : equiv-equivalence-relation R S) → type-Set QR ≃ type-Set QS equiv-is-set-quotient Uf Ug h = pr1 (center (unique-equiv-is-set-quotient Uf Ug h)) coherence-square-equiv-is-set-quotient : (Uf : {l : Level} → is-set-quotient l R QR f) → (Ug : {l : Level} → is-set-quotient l S QS g) → - (h : equiv-Equivalence-Relation R S) → - coherence-square-maps (map-equiv-Equivalence-Relation R S h) - ( map-reflecting-map-Equivalence-Relation R f) - ( map-reflecting-map-Equivalence-Relation S g) + (h : equiv-equivalence-relation R S) → + coherence-square-maps (map-equiv-equivalence-relation R S h) + ( map-reflecting-map-equivalence-relation R f) + ( map-reflecting-map-equivalence-relation S g) ( map-equiv (equiv-is-set-quotient Uf Ug h)) coherence-square-equiv-is-set-quotient Uf Ug h = pr2 (center (unique-equiv-is-set-quotient Uf Ug h)) @@ -425,30 +425,30 @@ module _ ```agda module _ {l1 l2 l3 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - (QR : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set QR)) + {A : UU l1} (R : equivalence-relation l2 A) + (QR : Set l3) (f : reflecting-map-equivalence-relation R (type-Set QR)) where id-map-is-set-quotient : (Uf : {l : Level} → is-set-quotient l R QR f) → - map-is-set-quotient R QR f R QR f Uf Uf (id-hom-Equivalence-Relation R) ~ id + map-is-set-quotient R QR f R QR f Uf Uf (id-hom-equivalence-relation R) ~ id id-map-is-set-quotient Uf x = ap ( λ c → pr1 c x) { x = center ( unique-map-is-set-quotient - R QR f R QR f Uf Uf (id-hom-Equivalence-Relation R))} + R QR f R QR f Uf Uf (id-hom-equivalence-relation R))} { y = pair id refl-htpy} ( eq-is-contr ( unique-map-is-set-quotient - R QR f R QR f Uf Uf (id-hom-Equivalence-Relation R))) + R QR f R QR f Uf Uf (id-hom-equivalence-relation R))) id-equiv-is-set-quotient : (Uf : {l : Level} → is-set-quotient l R QR f) → htpy-equiv ( equiv-is-set-quotient R QR f R QR f Uf Uf - ( id-equiv-Equivalence-Relation R)) + ( id-equiv-equivalence-relation R)) ( id-equiv) id-equiv-is-set-quotient Uf x = ap @@ -456,9 +456,9 @@ module _ { x = center ( unique-equiv-is-set-quotient R QR f R QR f Uf Uf - ( id-equiv-Equivalence-Relation R))} + ( id-equiv-equivalence-relation R))} { y = pair id-equiv refl-htpy} ( eq-is-contr ( unique-equiv-is-set-quotient R QR f R QR f Uf Uf - ( id-equiv-Equivalence-Relation R))) + ( id-equiv-equivalence-relation R))) ``` diff --git a/src/foundation/images-subtypes.lagda.md b/src/foundation/images-subtypes.lagda.md index 188adaa3c9..f2959311bd 100644 --- a/src/foundation/images-subtypes.lagda.md +++ b/src/foundation/images-subtypes.lagda.md @@ -7,28 +7,263 @@ module foundation.images-subtypes where
Imports ```agda +open import foundation.dependent-pair-types +open import foundation.full-subtypes +open import foundation.functoriality-propositional-truncation open import foundation.images +open import foundation.logical-equivalences +open import foundation.powersets +open import foundation.propositional-truncations +open import foundation.pullbacks-subtypes +open import foundation.subtypes +open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels +open import foundation-core.contractible-maps +open import foundation-core.equivalences +open import foundation-core.fibers-of-maps open import foundation-core.function-types -open import foundation-core.subtypes +open import foundation-core.identity-types + +open import order-theory.galois-connections-large-posets +open import order-theory.order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-preorders +open import order-theory.similarity-of-order-preserving-maps-large-posets ```
## Idea -Consider a map `f : A → B` and a subtype `S ⊆ A`, then the images of `S` under -`f` is the subtype of `B` consisting of the values of the composite `S ⊆ A → B`. +Consider a map `f : A → B` and a [subtype](foundation-core.subtypes.md) `S ⊆ A`, +then the **image** of `S` under `f` is the subtype of `B` consisting of the +values of the composite `S ⊆ A → B`. In other words, the image `im f S` of a +subtype `S` under `f` satisfies the universal property that + +```text + (im f S ⊆ U) ↔ (S ⊆ U ∘ f). +``` + +The image operation on subtypes is an +[order preserving map](order-theory.order-preserving-maps-large-posets.md) from +the [powerset](foundation.powersets.md) of `A` to the powerset of `B`. Thus we +obtain a [Galois connection](order-theory.galois-connections-large-posets.md) +between the powersets of `A` and `B`: the **image-pullback Galois connection** + +```text + image-subtype f ⊣ pullback-subtype f. +``` + +## Definitions + +### The predicate of being the image of a subtype under a map + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (S : subtype l3 A) + where + + is-image-map-subtype : {l4 : Level} (T : subtype l4 B) → UUω + is-image-map-subtype T = + {l : Level} (U : subtype l B) → (T ⊆ U) ↔ (S ⊆ U ∘ f) +``` + +### The image of a subtype under a map + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (S : subtype l3 A) + where + + im-subtype : subtype (l1 ⊔ l2 ⊔ l3) B + im-subtype y = subtype-im (f ∘ inclusion-subtype S) y + + is-in-im-subtype : B → UU (l1 ⊔ l2 ⊔ l3) + is-in-im-subtype = is-in-subtype im-subtype +``` + +### The order preserving operation taking the image of a subtype under a map + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + preserves-order-im-subtype : + {l3 l4 : Level} (S : subtype l3 A) (T : subtype l4 A) → + S ⊆ T → im-subtype f S ⊆ im-subtype f T + preserves-order-im-subtype S T H y p = + apply-universal-property-trunc-Prop p + ( im-subtype f T y) + ( λ ((x , s) , q) → unit-trunc-Prop ((x , H x s) , q)) + + im-subtype-hom-Large-Poset : + hom-Large-Poset + ( λ l → l1 ⊔ l2 ⊔ l) + ( powerset-Large-Poset A) + ( powerset-Large-Poset B) + map-hom-Large-Preorder im-subtype-hom-Large-Poset = + im-subtype f + preserves-order-hom-Large-Preorder im-subtype-hom-Large-Poset = + preserves-order-im-subtype +``` + +### The image-pullback Galois connection on powersets + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + forward-implication-adjoint-relation-image-pullback-subtype : + {l3 l4 : Level} (S : subtype l3 A) (T : subtype l4 B) → + (im-subtype f S ⊆ T) → (S ⊆ pullback-subtype f T) + forward-implication-adjoint-relation-image-pullback-subtype S T H x p = + H (f x) (unit-trunc-Prop ((x , p) , refl)) + + backward-implication-adjoint-relation-image-pullback-subtype : + {l3 l4 : Level} (S : subtype l3 A) (T : subtype l4 B) → + (S ⊆ pullback-subtype f T) → (im-subtype f S ⊆ T) + backward-implication-adjoint-relation-image-pullback-subtype S T H y p = + apply-universal-property-trunc-Prop p + ( T y) + ( λ where ((x , s) , refl) → H x s) + + adjoint-relation-image-pullback-subtype : + {l3 l4 : Level} (S : subtype l3 A) (T : subtype l4 B) → + (im-subtype f S ⊆ T) ↔ (S ⊆ pullback-subtype f T) + pr1 (adjoint-relation-image-pullback-subtype S T) = + forward-implication-adjoint-relation-image-pullback-subtype S T + pr2 (adjoint-relation-image-pullback-subtype S T) = + backward-implication-adjoint-relation-image-pullback-subtype S T + + image-pullback-subtype-galois-connection-Large-Poset : + galois-connection-Large-Poset + ( λ l → l1 ⊔ l2 ⊔ l) + ( λ l → l) + ( powerset-Large-Poset A) + ( powerset-Large-Poset B) + lower-adjoint-galois-connection-Large-Poset + image-pullback-subtype-galois-connection-Large-Poset = + im-subtype-hom-Large-Poset f + upper-adjoint-galois-connection-Large-Poset + image-pullback-subtype-galois-connection-Large-Poset = + pullback-subtype-hom-Large-Poset f + adjoint-relation-galois-connection-Large-Poset + image-pullback-subtype-galois-connection-Large-Poset = + adjoint-relation-image-pullback-subtype +``` + +## Properties -## Definition +### If `S` and `T` have the same elements, then `im-subtype f S` and `im-subtype f T` have the same elements + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) + (S : subtype l3 A) (T : subtype l4 A) + where + + has-same-elements-im-has-same-elements-subtype : + has-same-elements-subtype S T → + has-same-elements-subtype (im-subtype f S) (im-subtype f T) + has-same-elements-im-has-same-elements-subtype s = + has-same-elements-sim-subtype + ( im-subtype f S) + ( im-subtype f T) + ( preserves-sim-hom-Large-Poset + ( powerset-Large-Poset A) + ( powerset-Large-Poset B) + ( im-subtype-hom-Large-Poset f) + ( S) + ( T) + ( sim-has-same-elements-subtype S T s)) +``` + +### The image subtype `im f (full-subtype A)` has the same elements as the subtype `im f` ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) where - im-subtype : - {l3 : Level} → subtype l3 A → subtype (l1 ⊔ l2 ⊔ l3) B - im-subtype S y = subtype-im (f ∘ inclusion-subtype S) y + compute-im-full-subtype : + has-same-elements-subtype + ( im-subtype f (full-subtype lzero A)) + ( subtype-im f) + compute-im-full-subtype y = + iff-equiv + ( equiv-trunc-Prop + ( ( right-unit-law-Σ-is-contr + ( λ a → + is-contr-map-is-equiv is-equiv-inclusion-full-subtype (pr1 a))) ∘e + ( compute-fiber-comp f inclusion-full-subtype y))) +``` + +### The image subtype `im (g ∘ f) S` has the same elements as the image subtype `im g (im f S)` + +**Proof:** The asserted similarity follows at once from the similarity + +```text + pullback-subtype (g ∘ f) ≈ pullback-subtype g ∘ pullback-subtype f +``` + +via the image-pullback Galois connection. + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + (g : B → C) (f : A → B) (S : subtype l4 A) + where + + compute-im-subtype-comp : + has-same-elements-subtype + ( im-subtype (g ∘ f) S) + ( im-subtype g (im-subtype f S)) + compute-im-subtype-comp = + has-same-elements-sim-subtype + ( im-subtype (g ∘ f) S) + ( im-subtype g (im-subtype f S)) + ( lower-sim-upper-sim-galois-connection-Large-Poset + ( powerset-Large-Poset A) + ( powerset-Large-Poset C) + ( image-pullback-subtype-galois-connection-Large-Poset (g ∘ f)) + ( comp-galois-connection-Large-Poset + ( powerset-Large-Poset A) + ( powerset-Large-Poset B) + ( powerset-Large-Poset C) + ( image-pullback-subtype-galois-connection-Large-Poset g) + ( image-pullback-subtype-galois-connection-Large-Poset f)) + ( refl-sim-hom-Large-Poset + ( powerset-Large-Poset C) + ( powerset-Large-Poset A) + ( pullback-subtype-hom-Large-Poset (g ∘ f))) + ( S)) +``` + +### The image `im (g ∘ f)` has the same elements as the image subtype `im g (im f)` + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (g : B → C) (f : A → B) + where + + compute-subtype-im-comp : + has-same-elements-subtype (subtype-im (g ∘ f)) (im-subtype g (subtype-im f)) + compute-subtype-im-comp x = + logical-equivalence-reasoning + is-in-subtype-im (g ∘ f) x + ↔ is-in-im-subtype (g ∘ f) (full-subtype lzero A) x + by + inv-iff (compute-im-full-subtype (g ∘ f) x) + ↔ is-in-im-subtype g (im-subtype f (full-subtype lzero A)) x + by + compute-im-subtype-comp g f (full-subtype lzero A) x + ↔ is-in-im-subtype g (subtype-im f) x + by + has-same-elements-im-has-same-elements-subtype g + ( im-subtype f (full-subtype lzero A)) + ( subtype-im f) + ( compute-im-full-subtype f) + ( x) ``` diff --git a/src/foundation/images.lagda.md b/src/foundation/images.lagda.md index 7d3977e852..5217741cd1 100644 --- a/src/foundation/images.lagda.md +++ b/src/foundation/images.lagda.md @@ -49,6 +49,9 @@ module _ subtype-im : subtype (l1 ⊔ l2) X subtype-im x = trunc-Prop (fiber f x) + is-in-subtype-im : X → UU (l1 ⊔ l2) + is-in-subtype-im = is-in-subtype subtype-im + im : UU (l1 ⊔ l2) im = type-subtype subtype-im diff --git a/src/foundation/isomorphisms-of-sets.lagda.md b/src/foundation/isomorphisms-of-sets.lagda.md index ab7614b8e9..1fea7f9197 100644 --- a/src/foundation/isomorphisms-of-sets.lagda.md +++ b/src/foundation/isomorphisms-of-sets.lagda.md @@ -33,11 +33,11 @@ module _ {l1 l2 : Level} (A : Set l1) (B : Set l2) where - is-iso-Set : (f : type-hom-Set A B) → UU (l1 ⊔ l2) - is-iso-Set f = Σ (type-hom-Set B A) (λ g → ((f ∘ g) = id) × ((g ∘ f) = id)) + is-iso-Set : (f : hom-Set A B) → UU (l1 ⊔ l2) + is-iso-Set f = Σ (hom-Set B A) (λ g → ((f ∘ g) = id) × ((g ∘ f) = id)) iso-Set : UU (l1 ⊔ l2) - iso-Set = Σ (type-hom-Set A B) is-iso-Set + iso-Set = Σ (hom-Set A B) is-iso-Set map-iso-Set : iso-Set → type-Set A → type-Set B map-iso-Set = pr1 @@ -46,30 +46,27 @@ module _ is-iso-map-iso-Set = pr2 is-proof-irrelevant-is-iso-Set : - (f : type-hom-Set A B) → is-proof-irrelevant (is-iso-Set f) + (f : hom-Set A B) → is-proof-irrelevant (is-iso-Set f) pr1 (is-proof-irrelevant-is-iso-Set f H) = H - pr2 - ( is-proof-irrelevant-is-iso-Set f - ( pair g (pair p q))) - ( pair g' (pair p' q')) = + pr2 (is-proof-irrelevant-is-iso-Set f (g , p , q)) (g' , p' , q') = eq-type-subtype ( λ h → prod-Prop - ( Id-Prop (hom-Set B B) (f ∘ h) id) - ( Id-Prop (hom-Set A A) (h ∘ f) id)) + ( Id-Prop (hom-set-Set B B) (f ∘ h) id) + ( Id-Prop (hom-set-Set A A) (h ∘ f) id)) ( ( ap (λ h → g ∘ h) (inv p')) ∙ ( ap (λ h → h ∘ g') q)) - is-prop-is-iso-Set : (f : type-hom-Set A B) → is-prop (is-iso-Set f) + is-prop-is-iso-Set : (f : hom-Set A B) → is-prop (is-iso-Set f) is-prop-is-iso-Set f = is-prop-is-proof-irrelevant (is-proof-irrelevant-is-iso-Set f) - is-iso-is-equiv-Set : {f : type-hom-Set A B} → is-equiv f → is-iso-Set f + is-iso-is-equiv-Set : {f : hom-Set A B} → is-equiv f → is-iso-Set f pr1 (is-iso-is-equiv-Set H) = map-inv-is-equiv H pr1 (pr2 (is-iso-is-equiv-Set H)) = eq-htpy (is-section-map-inv-is-equiv H) pr2 (pr2 (is-iso-is-equiv-Set H)) = eq-htpy (is-retraction-map-inv-is-equiv H) - is-equiv-is-iso-Set : {f : type-hom-Set A B} → is-iso-Set f → is-equiv f + is-equiv-is-iso-Set : {f : hom-Set A B} → is-iso-Set f → is-equiv f is-equiv-is-iso-Set H = is-equiv-is-invertible ( pr1 H) diff --git a/src/foundation/iterating-functions.lagda.md b/src/foundation/iterating-functions.lagda.md index 515e0950d2..c5ec1d100b 100644 --- a/src/foundation/iterating-functions.lagda.md +++ b/src/foundation/iterating-functions.lagda.md @@ -154,10 +154,10 @@ module _ {l : Level} (X : Set l) where - iterative-Monoid-Action : Monoid-Action l ℕ*-Monoid - pr1 iterative-Monoid-Action = endo-Set X - pr1 (pr1 (pr2 iterative-Monoid-Action)) k f = iterate k f - pr2 (pr1 (pr2 iterative-Monoid-Action)) k l = + iterative-action-Monoid : action-Monoid l ℕ*-Monoid + pr1 iterative-action-Monoid = endo-Set X + pr1 (pr1 (pr2 iterative-action-Monoid)) k f = iterate k f + pr2 (pr1 (pr2 iterative-action-Monoid)) {k} {l} = eq-htpy (λ f → eq-htpy (λ x → iterate-mul-ℕ k l f x)) - pr2 (pr2 iterative-Monoid-Action) = refl + pr2 (pr2 iterative-action-Monoid) = refl ``` diff --git a/src/foundation/mere-equality.lagda.md b/src/foundation/mere-equality.lagda.md index f23a421ecc..c36b3c92e0 100644 --- a/src/foundation/mere-equality.lagda.md +++ b/src/foundation/mere-equality.lagda.md @@ -80,12 +80,12 @@ abstract ### Mere equality is an equivalence relation ```agda -mere-eq-Equivalence-Relation : - {l1 : Level} (A : UU l1) → Equivalence-Relation l1 A -pr1 (mere-eq-Equivalence-Relation A) = mere-eq-Prop -pr1 (pr2 (mere-eq-Equivalence-Relation A)) = refl-mere-eq -pr1 (pr2 (pr2 (mere-eq-Equivalence-Relation A))) = symmetric-mere-eq -pr2 (pr2 (pr2 (mere-eq-Equivalence-Relation A))) = transitive-mere-eq +mere-eq-equivalence-relation : + {l1 : Level} (A : UU l1) → equivalence-relation l1 A +pr1 (mere-eq-equivalence-relation A) = mere-eq-Prop +pr1 (pr2 (mere-eq-equivalence-relation A)) = refl-mere-eq +pr1 (pr2 (pr2 (mere-eq-equivalence-relation A))) = symmetric-mere-eq +pr2 (pr2 (pr2 (mere-eq-equivalence-relation A))) = transitive-mere-eq ``` ### Any map into a set reflects mere equality @@ -96,15 +96,15 @@ module _ where reflects-mere-eq : - reflects-Equivalence-Relation (mere-eq-Equivalence-Relation A) f + reflects-equivalence-relation (mere-eq-equivalence-relation A) f reflects-mere-eq {x} {y} r = apply-universal-property-trunc-Prop r ( Id-Prop X (f x) (f y)) ( ap f) reflecting-map-mere-eq : - reflecting-map-Equivalence-Relation - ( mere-eq-Equivalence-Relation A) + reflecting-map-equivalence-relation + ( mere-eq-equivalence-relation A) ( type-Set X) pr1 reflecting-map-mere-eq = f pr2 reflecting-map-mere-eq = reflects-mere-eq diff --git a/src/foundation/multivariable-functoriality-set-quotients.lagda.md b/src/foundation/multivariable-functoriality-set-quotients.lagda.md index 2137bd4247..62cad9dc12 100644 --- a/src/foundation/multivariable-functoriality-set-quotients.lagda.md +++ b/src/foundation/multivariable-functoriality-set-quotients.lagda.md @@ -42,16 +42,16 @@ module _ { l1 l2 l3 l4 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) - { X : UU l3} (S : Equivalence-Relation l4 X) + ( R : (i : Fin n) → equivalence-relation l2 (A i)) + { X : UU l3} (S : equivalence-relation l4 X) where multivariable-map-set-quotient : - ( h : hom-Equivalence-Relation (all-sim-Equivalence-Relation n A R) S) → + ( h : hom-equivalence-relation (all-sim-equivalence-relation n A R) S) → set-quotient-vector n A R → set-quotient S multivariable-map-set-quotient = map-is-set-quotient - ( all-sim-Equivalence-Relation n A R) + ( all-sim-equivalence-relation n A R) ( set-quotient-vector-Set n A R) ( reflecting-map-quotient-vector-map n A R) ( S) @@ -61,14 +61,14 @@ module _ ( is-set-quotient-set-quotient S) compute-multivariable-map-set-quotient : - ( h : hom-Equivalence-Relation (all-sim-Equivalence-Relation n A R) S) → + ( h : hom-equivalence-relation (all-sim-equivalence-relation n A R) S) → ( multivariable-map-set-quotient h ∘ quotient-vector-map n A R) ~ ( quotient-map S ∘ - map-hom-Equivalence-Relation (all-sim-Equivalence-Relation n A R) S h) + map-hom-equivalence-relation (all-sim-equivalence-relation n A R) S h) compute-multivariable-map-set-quotient = coherence-square-map-is-set-quotient - ( all-sim-Equivalence-Relation n A R) + ( all-sim-equivalence-relation n A R) ( set-quotient-vector-Set n A R) ( reflecting-map-quotient-vector-map n A R) ( S) diff --git a/src/foundation/products-equivalence-relations.lagda.md b/src/foundation/products-equivalence-relations.lagda.md index 31411a202e..2b572444d5 100644 --- a/src/foundation/products-equivalence-relations.lagda.md +++ b/src/foundation/products-equivalence-relations.lagda.md @@ -30,44 +30,44 @@ relation. ```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) where reflexive-prod-Relation-Prop : is-reflexive-Relation-Prop ( prod-Relation-Prop - ( prop-Equivalence-Relation R) - ( prop-Equivalence-Relation S)) - pr1 (reflexive-prod-Relation-Prop x) = refl-Equivalence-Relation R (pr1 x) - pr2 (reflexive-prod-Relation-Prop x) = refl-Equivalence-Relation S (pr2 x) + ( prop-equivalence-relation R) + ( prop-equivalence-relation S)) + pr1 (reflexive-prod-Relation-Prop x) = refl-equivalence-relation R (pr1 x) + pr2 (reflexive-prod-Relation-Prop x) = refl-equivalence-relation S (pr2 x) symmetric-prod-Relation-Prop : is-symmetric-Relation-Prop ( prod-Relation-Prop - ( prop-Equivalence-Relation R) - ( prop-Equivalence-Relation S)) + ( prop-equivalence-relation R) + ( prop-equivalence-relation S)) pr1 (symmetric-prod-Relation-Prop x y (p , q)) = - symmetric-Equivalence-Relation R (pr1 x) (pr1 y) p + symmetric-equivalence-relation R (pr1 x) (pr1 y) p pr2 (symmetric-prod-Relation-Prop x y (p , q)) = - symmetric-Equivalence-Relation S (pr2 x) (pr2 y) q + symmetric-equivalence-relation S (pr2 x) (pr2 y) q transitive-prod-Relation-Prop : is-transitive-Relation-Prop ( prod-Relation-Prop - ( prop-Equivalence-Relation R) - ( prop-Equivalence-Relation S)) + ( prop-equivalence-relation R) + ( prop-equivalence-relation S)) pr1 (transitive-prod-Relation-Prop x y z (p , q) (p' , q')) = - transitive-Equivalence-Relation R (pr1 x) (pr1 y) (pr1 z) p p' + transitive-equivalence-relation R (pr1 x) (pr1 y) (pr1 z) p p' pr2 (transitive-prod-Relation-Prop x y z (p , q) (p' , q')) = - transitive-Equivalence-Relation S (pr2 x) (pr2 y) (pr2 z) q q' + transitive-equivalence-relation S (pr2 x) (pr2 y) (pr2 z) q q' - prod-Equivalence-Relation : Equivalence-Relation (l2 ⊔ l4) (A × B) - pr1 prod-Equivalence-Relation = + prod-equivalence-relation : equivalence-relation (l2 ⊔ l4) (A × B) + pr1 prod-equivalence-relation = prod-Relation-Prop - ( prop-Equivalence-Relation R) - ( prop-Equivalence-Relation S) - pr1 (pr2 prod-Equivalence-Relation) = reflexive-prod-Relation-Prop - pr1 (pr2 (pr2 prod-Equivalence-Relation)) = symmetric-prod-Relation-Prop - pr2 (pr2 (pr2 prod-Equivalence-Relation)) = transitive-prod-Relation-Prop + ( prop-equivalence-relation R) + ( prop-equivalence-relation S) + pr1 (pr2 prod-equivalence-relation) = reflexive-prod-Relation-Prop + pr1 (pr2 (pr2 prod-equivalence-relation)) = symmetric-prod-Relation-Prop + pr2 (pr2 (pr2 prod-equivalence-relation)) = transitive-prod-Relation-Prop ``` diff --git a/src/foundation/pullbacks-subtypes.lagda.md b/src/foundation/pullbacks-subtypes.lagda.md new file mode 100644 index 0000000000..c9c26fd83e --- /dev/null +++ b/src/foundation/pullbacks-subtypes.lagda.md @@ -0,0 +1,122 @@ +# Pullbacks of subtypes + +```agda +module foundation.pullbacks-subtypes where +``` + +
Imports + +```agda +open import foundation.logical-equivalences +open import foundation.powersets +open import foundation.universe-levels + +open import foundation-core.function-types +open import foundation-core.propositions +open import foundation-core.subtypes + +open import order-theory.order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-preorders +``` + +
+ +## Idea + +Consider a [subtype](foundation-core.subtypes.md) `T` of a type `B` and a map +`f : A → B`. Then the **pullback subtype** `pullback f T` of `A` is defined to +be `T ∘ f`. This fits in a [pullback diagram](foundation-core.pullbacks.md) + +```text + π₂ + pullback f T -----> T + | ⌟ | + π₁ | | i + | | + V V + A -----------> B + f +``` + +The +[universal property of pullbacks](foundation.universal-property-pullbacks.md) +quite literally returns the definition of the subtype `pullback f T`, because it +essentially asserts that + +```text + (S ⊆ pullback f T) ↔ ((x : A) → is-in-subtype S x → is-in-subtype T (f x)). +``` + +The operation `pullback f : subtype B → subtype A` is an +[order preserving map](order-theory.order-preserving-maps-large-posets.md) +between the [powersets](foundation.powersets.md) of `B` and `A`. + +In the file [Images of subtypes](foundation.images-subtypes.md) we show that the +pullback operation on subtypes is the upper adjoint of a +[Galois connection](order-theory.galois-connections-large-posets.md). + +## Definitions + +### The predicate of being a pullback of subtypes + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} (f : A → B) + (T : subtype l3 B) (S : subtype l4 A) + where + + is-pullback-subtype : UUω + is-pullback-subtype = + {l : Level} (U : subtype l A) → + (U ⊆ S) ↔ ((x : A) → is-in-subtype U x → is-in-subtype T (f x)) +``` + +### Pullbacks of subtypes + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (T : subtype l3 B) + where + + pullback-subtype : subtype l3 A + pullback-subtype = T ∘ f + + is-in-pullback-subtype : A → UU l3 + is-in-pullback-subtype = is-in-subtype pullback-subtype + + is-prop-is-in-pullback-subtype : + (x : A) → is-prop (is-in-pullback-subtype x) + is-prop-is-in-pullback-subtype = is-prop-is-in-subtype pullback-subtype + + type-pullback-subtype : UU (l1 ⊔ l3) + type-pullback-subtype = type-subtype pullback-subtype + + inclusion-pullback-subtype : type-pullback-subtype → A + inclusion-pullback-subtype = inclusion-subtype pullback-subtype +``` + +### The order preserving pullback operation on subtypes + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + preserves-order-pullback-subtype : + preserves-order-map-Large-Poset + ( powerset-Large-Poset B) + ( powerset-Large-Poset A) + ( pullback-subtype f) + preserves-order-pullback-subtype S T H x = H (f x) + + pullback-subtype-hom-Large-Poset : + hom-Large-Poset (λ l → l) (powerset-Large-Poset B) (powerset-Large-Poset A) + map-hom-Large-Preorder pullback-subtype-hom-Large-Poset = + pullback-subtype f + preserves-order-hom-Large-Preorder pullback-subtype-hom-Large-Poset = + preserves-order-pullback-subtype +``` + +## See also + +- The [image of a subtype](foundation.images-subtypes.md) diff --git a/src/foundation/reflecting-maps-equivalence-relations.lagda.md b/src/foundation/reflecting-maps-equivalence-relations.lagda.md index 7435da90f7..ff3c8d9d8e 100644 --- a/src/foundation/reflecting-maps-equivalence-relations.lagda.md +++ b/src/foundation/reflecting-maps-equivalence-relations.lagda.md @@ -37,42 +37,42 @@ said to **reflect** `R` if we have `R x y → f x = f y` for every `x y : A`. ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where - reflects-Equivalence-Relation : + reflects-equivalence-relation : {l3 : Level} {B : UU l3} → (A → B) → UU (l1 ⊔ l2 ⊔ l3) - reflects-Equivalence-Relation f = - {x y : A} → sim-Equivalence-Relation R x y → (f x = f y) + reflects-equivalence-relation f = + {x y : A} → sim-equivalence-relation R x y → (f x = f y) - reflecting-map-Equivalence-Relation : {l3 : Level} → UU l3 → UU (l1 ⊔ l2 ⊔ l3) - reflecting-map-Equivalence-Relation B = - Σ (A → B) reflects-Equivalence-Relation + reflecting-map-equivalence-relation : {l3 : Level} → UU l3 → UU (l1 ⊔ l2 ⊔ l3) + reflecting-map-equivalence-relation B = + Σ (A → B) reflects-equivalence-relation - map-reflecting-map-Equivalence-Relation : - {l3 : Level} {B : UU l3} → reflecting-map-Equivalence-Relation B → A → B - map-reflecting-map-Equivalence-Relation = pr1 + map-reflecting-map-equivalence-relation : + {l3 : Level} {B : UU l3} → reflecting-map-equivalence-relation B → A → B + map-reflecting-map-equivalence-relation = pr1 - reflects-map-reflecting-map-Equivalence-Relation : - {l3 : Level} {B : UU l3} (f : reflecting-map-Equivalence-Relation B) → - reflects-Equivalence-Relation (map-reflecting-map-Equivalence-Relation f) - reflects-map-reflecting-map-Equivalence-Relation = pr2 + reflects-map-reflecting-map-equivalence-relation : + {l3 : Level} {B : UU l3} (f : reflecting-map-equivalence-relation B) → + reflects-equivalence-relation (map-reflecting-map-equivalence-relation f) + reflects-map-reflecting-map-equivalence-relation = pr2 - is-prop-reflects-Equivalence-Relation : + is-prop-reflects-equivalence-relation : {l3 : Level} (B : Set l3) (f : A → type-Set B) → - is-prop (reflects-Equivalence-Relation f) - is-prop-reflects-Equivalence-Relation B f = + is-prop (reflects-equivalence-relation f) + is-prop-reflects-equivalence-relation B f = is-prop-Π' ( λ x → is-prop-Π' ( λ y → is-prop-function-type (is-set-type-Set B (f x) (f y)))) - reflects-Equivalence-Relation-Prop : + reflects-prop-equivalence-relation : {l3 : Level} (B : Set l3) (f : A → type-Set B) → Prop (l1 ⊔ l2 ⊔ l3) - pr1 (reflects-Equivalence-Relation-Prop B f) = reflects-Equivalence-Relation f - pr2 (reflects-Equivalence-Relation-Prop B f) = - is-prop-reflects-Equivalence-Relation B f + pr1 (reflects-prop-equivalence-relation B f) = reflects-equivalence-relation f + pr2 (reflects-prop-equivalence-relation B f) = + is-prop-reflects-equivalence-relation B f ``` ## Properties @@ -81,75 +81,75 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) (q : A → type-Set B) where - reflects-Equivalence-Relation-is-surjective-and-effective : - is-surjective-and-effective R q → reflects-Equivalence-Relation R q - reflects-Equivalence-Relation-is-surjective-and-effective E {x} {y} = + reflects-equivalence-relation-is-surjective-and-effective : + is-surjective-and-effective R q → reflects-equivalence-relation R q + reflects-equivalence-relation-is-surjective-and-effective E {x} {y} = map-inv-equiv (pr2 E x y) - reflecting-map-Equivalence-Relation-is-surjective-and-effective : + reflecting-map-equivalence-relation-is-surjective-and-effective : is-surjective-and-effective R q → - reflecting-map-Equivalence-Relation R (type-Set B) - pr1 (reflecting-map-Equivalence-Relation-is-surjective-and-effective E) = q - pr2 (reflecting-map-Equivalence-Relation-is-surjective-and-effective E) = - reflects-Equivalence-Relation-is-surjective-and-effective E + reflecting-map-equivalence-relation R (type-Set B) + pr1 (reflecting-map-equivalence-relation-is-surjective-and-effective E) = q + pr2 (reflecting-map-equivalence-relation-is-surjective-and-effective E) = + reflects-equivalence-relation-is-surjective-and-effective E ``` ### Characterizing the identity type of reflecting maps into sets ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) - (f : reflecting-map-Equivalence-Relation R (type-Set B)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) + (f : reflecting-map-equivalence-relation R (type-Set B)) where - htpy-reflecting-map-Equivalence-Relation : - (g : reflecting-map-Equivalence-Relation R (type-Set B)) → UU (l1 ⊔ l3) - htpy-reflecting-map-Equivalence-Relation g = + htpy-reflecting-map-equivalence-relation : + (g : reflecting-map-equivalence-relation R (type-Set B)) → UU (l1 ⊔ l3) + htpy-reflecting-map-equivalence-relation g = pr1 f ~ pr1 g - refl-htpy-reflecting-map-Equivalence-Relation : - htpy-reflecting-map-Equivalence-Relation f - refl-htpy-reflecting-map-Equivalence-Relation = refl-htpy + refl-htpy-reflecting-map-equivalence-relation : + htpy-reflecting-map-equivalence-relation f + refl-htpy-reflecting-map-equivalence-relation = refl-htpy - htpy-eq-reflecting-map-Equivalence-Relation : - (g : reflecting-map-Equivalence-Relation R (type-Set B)) → - f = g → htpy-reflecting-map-Equivalence-Relation g - htpy-eq-reflecting-map-Equivalence-Relation .f refl = - refl-htpy-reflecting-map-Equivalence-Relation + htpy-eq-reflecting-map-equivalence-relation : + (g : reflecting-map-equivalence-relation R (type-Set B)) → + f = g → htpy-reflecting-map-equivalence-relation g + htpy-eq-reflecting-map-equivalence-relation .f refl = + refl-htpy-reflecting-map-equivalence-relation - is-torsorial-htpy-reflecting-map-Equivalence-Relation : - is-torsorial (htpy-reflecting-map-Equivalence-Relation) - is-torsorial-htpy-reflecting-map-Equivalence-Relation = + is-torsorial-htpy-reflecting-map-equivalence-relation : + is-torsorial (htpy-reflecting-map-equivalence-relation) + is-torsorial-htpy-reflecting-map-equivalence-relation = is-torsorial-Eq-subtype ( is-torsorial-htpy (pr1 f)) - ( is-prop-reflects-Equivalence-Relation R B) + ( is-prop-reflects-equivalence-relation R B) ( pr1 f) ( refl-htpy) ( pr2 f) - is-equiv-htpy-eq-reflecting-map-Equivalence-Relation : - (g : reflecting-map-Equivalence-Relation R (type-Set B)) → - is-equiv (htpy-eq-reflecting-map-Equivalence-Relation g) - is-equiv-htpy-eq-reflecting-map-Equivalence-Relation = + is-equiv-htpy-eq-reflecting-map-equivalence-relation : + (g : reflecting-map-equivalence-relation R (type-Set B)) → + is-equiv (htpy-eq-reflecting-map-equivalence-relation g) + is-equiv-htpy-eq-reflecting-map-equivalence-relation = fundamental-theorem-id - is-torsorial-htpy-reflecting-map-Equivalence-Relation - htpy-eq-reflecting-map-Equivalence-Relation - - extensionality-reflecting-map-Equivalence-Relation : - (g : reflecting-map-Equivalence-Relation R (type-Set B)) → - (f = g) ≃ htpy-reflecting-map-Equivalence-Relation g - pr1 (extensionality-reflecting-map-Equivalence-Relation g) = - htpy-eq-reflecting-map-Equivalence-Relation g - pr2 (extensionality-reflecting-map-Equivalence-Relation g) = - is-equiv-htpy-eq-reflecting-map-Equivalence-Relation g - - eq-htpy-reflecting-map-Equivalence-Relation : - (g : reflecting-map-Equivalence-Relation R (type-Set B)) → - htpy-reflecting-map-Equivalence-Relation g → f = g - eq-htpy-reflecting-map-Equivalence-Relation g = - map-inv-is-equiv (is-equiv-htpy-eq-reflecting-map-Equivalence-Relation g) + is-torsorial-htpy-reflecting-map-equivalence-relation + htpy-eq-reflecting-map-equivalence-relation + + extensionality-reflecting-map-equivalence-relation : + (g : reflecting-map-equivalence-relation R (type-Set B)) → + (f = g) ≃ htpy-reflecting-map-equivalence-relation g + pr1 (extensionality-reflecting-map-equivalence-relation g) = + htpy-eq-reflecting-map-equivalence-relation g + pr2 (extensionality-reflecting-map-equivalence-relation g) = + is-equiv-htpy-eq-reflecting-map-equivalence-relation g + + eq-htpy-reflecting-map-equivalence-relation : + (g : reflecting-map-equivalence-relation R (type-Set B)) → + htpy-reflecting-map-equivalence-relation g → f = g + eq-htpy-reflecting-map-equivalence-relation g = + map-inv-is-equiv (is-equiv-htpy-eq-reflecting-map-equivalence-relation g) ``` diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index 02f23d8a97..af44145b8e 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -43,7 +43,7 @@ open import foundation-core.whiskering-homotopies ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where set-quotient : UU (l1 ⊔ l2) @@ -132,7 +132,7 @@ module _ pr2 quotient-Set = is-set-set-quotient unit-im-set-quotient : - hom-slice (prop-Equivalence-Relation R) subtype-set-quotient + hom-slice (prop-equivalence-relation R) subtype-set-quotient pr1 unit-im-set-quotient = quotient-map pr2 unit-im-set-quotient = ( ( subtype-equivalence-class R) ·l @@ -141,12 +141,12 @@ module _ is-image-set-quotient : is-image - ( prop-Equivalence-Relation R) + ( prop-equivalence-relation R) ( emb-subtype-set-quotient) ( unit-im-set-quotient) is-image-set-quotient = is-image-is-surjective - ( prop-Equivalence-Relation R) + ( prop-equivalence-relation R) ( emb-subtype-set-quotient) ( unit-im-set-quotient) ( is-surjective-quotient-map) @@ -156,7 +156,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-effective-quotient-map : is-effective R (quotient-map R) @@ -176,20 +176,18 @@ module _ ( equiv-concat' ( class R x) ( is-retraction-equivalence-class-set-quotient R (class R y))) - ≃ ( sim-Equivalence-Relation R x y) + ≃ ( sim-equivalence-relation R x y) by ( is-effective-class R x y) apply-effectiveness-quotient-map : - {x y : A} → - quotient-map R x = quotient-map R y → - sim-Equivalence-Relation R x y + {x y : A} → quotient-map R x = quotient-map R y → + sim-equivalence-relation R x y apply-effectiveness-quotient-map {x} {y} = map-equiv (is-effective-quotient-map x y) apply-effectiveness-quotient-map' : - {x y : A} → - sim-Equivalence-Relation R x y → + {x y : A} → sim-equivalence-relation R x y → quotient-map R x = quotient-map R y apply-effectiveness-quotient-map' {x} {y} = map-inv-equiv (is-effective-quotient-map x y) @@ -200,7 +198,7 @@ module _ pr2 is-surjective-and-effective-quotient-map = is-effective-quotient-map reflecting-map-quotient-map : - reflecting-map-Equivalence-Relation R (set-quotient R) + reflecting-map-equivalence-relation R (set-quotient R) pr1 reflecting-map-quotient-map = quotient-map R pr2 reflecting-map-quotient-map = apply-effectiveness-quotient-map' ``` @@ -209,7 +207,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where is-set-quotient-set-quotient : @@ -222,50 +220,44 @@ module _ ( is-surjective-and-effective-quotient-map R) inv-precomp-set-quotient : - {l : Level} → - (X : Set l) → - reflecting-map-Equivalence-Relation R (type-Set X) → - (type-hom-Set (quotient-Set R) X) + {l : Level} (X : Set l) → + reflecting-map-equivalence-relation R (type-Set X) → + hom-Set (quotient-Set R) X inv-precomp-set-quotient X = pr1 (pr1 (is-set-quotient-set-quotient X)) is-section-inv-precomp-set-quotient : - {l : Level} → - (X : Set l) → - (f : reflecting-map-Equivalence-Relation R (type-Set X)) → + {l : Level} (X : Set l) → + (f : reflecting-map-equivalence-relation R (type-Set X)) → (a : A) → inv-precomp-set-quotient X f (quotient-map R a) = - map-reflecting-map-Equivalence-Relation R f a + map-reflecting-map-equivalence-relation R f a is-section-inv-precomp-set-quotient X f = htpy-eq ( ap - ( map-reflecting-map-Equivalence-Relation R) + ( map-reflecting-map-equivalence-relation R) ( is-section-map-inv-is-equiv ( is-set-quotient-set-quotient X) ( f))) is-retraction-inv-precomp-set-quotient : - { l : Level} → - ( X : Set l) → - ( f : type-hom-Set (quotient-Set R) X) → + {l : Level} (X : Set l) (f : hom-Set (quotient-Set R) X) → inv-precomp-set-quotient X ( precomp-Set-Quotient R ( quotient-Set R) ( reflecting-map-quotient-map R) ( X) ( f)) = - f + f is-retraction-inv-precomp-set-quotient X f = - ( is-retraction-map-inv-is-equiv - ( is-set-quotient-set-quotient X) - ( f)) + is-retraction-map-inv-is-equiv (is-set-quotient-set-quotient X) f ``` ### Induction into propositions on the set quotient ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where equiv-induction-set-quotient : @@ -292,8 +284,8 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) (P : set-quotient R → set-quotient S → Prop l5) where @@ -311,7 +303,7 @@ module _ double-induction-set-quotient : ( (x : A) (y : B) → type-Prop (P (quotient-map R x) (quotient-map S y))) → - ((x : set-quotient R) (y : set-quotient S) → type-Prop (P x y)) + (x : set-quotient R) (y : set-quotient S) → type-Prop (P x y) double-induction-set-quotient = map-inv-equiv equiv-double-induction-set-quotient ``` @@ -320,7 +312,7 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (P : (x y : set-quotient R) → Prop l3) where @@ -333,7 +325,7 @@ module _ double-induction-set-quotient' : ( (x y : A) → type-Prop (P (quotient-map R x) (quotient-map R y))) → - ((x y : set-quotient R) → type-Prop (P x y)) + (x y : set-quotient R) → type-Prop (P x y) double-induction-set-quotient' = double-induction-set-quotient R R P ``` @@ -345,9 +337,9 @@ module _ ```agda module _ {l1 l2 l3 l4 l5 l6 l7 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - {B : UU l3} (S : Equivalence-Relation l4 B) - {C : UU l5} (T : Equivalence-Relation l6 C) + {A : UU l1} (R : equivalence-relation l2 A) + {B : UU l3} (S : equivalence-relation l4 B) + {C : UU l5} (T : equivalence-relation l6 C) (P : set-quotient R → set-quotient S → set-quotient T → Prop l7) where @@ -384,7 +376,7 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (P : (x y z : set-quotient R) → Prop l3) where @@ -411,8 +403,8 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) - (B : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set B)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) + (B : Set l3) (f : reflecting-map-equivalence-relation R (type-Set B)) (Uf : {l : Level} → is-set-quotient l R B f) where diff --git a/src/foundation/set-truncations.lagda.md b/src/foundation/set-truncations.lagda.md index 9c0b9e9147..2a7e8310d2 100644 --- a/src/foundation/set-truncations.lagda.md +++ b/src/foundation/set-truncations.lagda.md @@ -140,7 +140,7 @@ module _ apply-universal-property-trunc-Set t f = map-universal-property-trunc B f t map-universal-property-trunc-Set : - (A → type-Set B) → type-hom-Set (trunc-Set A) B + (A → type-Set B) → hom-Set (trunc-Set A) B map-universal-property-trunc-Set = map-universal-property-trunc B triangle-universal-property-trunc-Set : @@ -163,8 +163,8 @@ apply-universal-property-trunc-Set' t B f = ```agda reflecting-map-mere-eq-unit-trunc-Set : {l : Level} (A : UU l) → - reflecting-map-Equivalence-Relation - ( mere-eq-Equivalence-Relation A) + reflecting-map-equivalence-relation + ( mere-eq-equivalence-relation A) ( type-trunc-Set A) reflecting-map-mere-eq-unit-trunc-Set A = pair unit-trunc-Set (reflects-mere-eq (trunc-Set A) unit-trunc-Set) @@ -173,7 +173,7 @@ abstract is-set-quotient-trunc-Set : {l1 l2 : Level} (A : UU l1) → is-set-quotient l2 - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( trunc-Set A) ( reflecting-map-mere-eq-unit-trunc-Set A) is-set-quotient-trunc-Set A = @@ -190,11 +190,11 @@ module _ is-surjective-and-effective-unit-trunc-Set : (A : UU l) → is-surjective-and-effective - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( unit-trunc-Set) is-surjective-and-effective-unit-trunc-Set A = is-surjective-and-effective-is-set-quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( trunc-Set A) ( unit-trunc-Set , reflects-mere-eq (trunc-Set A) unit-trunc-Set) @@ -209,7 +209,7 @@ module _ abstract is-effective-unit-trunc-Set : (A : UU l) → - is-effective (mere-eq-Equivalence-Relation A) (unit-trunc-Set {A = A}) + is-effective (mere-eq-equivalence-relation A) (unit-trunc-Set {A = A}) is-effective-unit-trunc-Set A = pr2 (is-surjective-and-effective-unit-trunc-Set A) @@ -228,7 +228,7 @@ module _ emb-trunc-Set : (A : UU l) → type-trunc-Set A ↪ (A → Prop l) emb-trunc-Set A = emb-is-surjective-and-effective - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( trunc-Set A) ( unit-trunc-Set) ( is-surjective-and-effective-unit-trunc-Set A) @@ -238,7 +238,7 @@ module _ pr1 (hom-slice-trunc-Set A) = unit-trunc-Set pr2 (hom-slice-trunc-Set A) = triangle-emb-is-surjective-and-effective - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( trunc-Set A) ( unit-trunc-Set) ( is-surjective-and-effective-unit-trunc-Set A) @@ -252,7 +252,7 @@ module _ ( hom-slice-trunc-Set A) is-image-trunc-Set A = is-image-is-surjective-and-effective - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( trunc-Set A) ( unit-trunc-Set) ( is-surjective-and-effective-unit-trunc-Set A) @@ -263,7 +263,7 @@ module _ ```agda module _ {l1 l2 : Level} {A : UU l1} (B : Set l2) (f : A → type-Set B) - {h : type-hom-Set B (trunc-Set A)} (H : h ∘ f ~ unit-trunc-Set) + {h : hom-Set B (trunc-Set A)} (H : h ∘ f ~ unit-trunc-Set) where abstract @@ -294,7 +294,7 @@ module _ module _ {l1 l2 : Level} {A : UU l1} (B : Set l2) (f : A → type-Set B) - {h : type-hom-Set (trunc-Set A) B} (H : h ∘ unit-trunc-Set ~ f) + {h : hom-Set (trunc-Set A) B} (H : h ∘ unit-trunc-Set ~ f) where abstract @@ -461,7 +461,7 @@ module _ pr1 (center distributive-trunc-coprod-Set) map-equiv-distributive-trunc-coprod-Set : - type-hom-Set (trunc-Set (A + B)) (coprod-Set (trunc-Set A) (trunc-Set B)) + hom-Set (trunc-Set (A + B)) (coprod-Set (trunc-Set A) (trunc-Set B)) map-equiv-distributive-trunc-coprod-Set = map-equiv equiv-distributive-trunc-coprod-Set diff --git a/src/foundation/sets.lagda.md b/src/foundation/sets.lagda.md index a43ea60edd..93977c2445 100644 --- a/src/foundation/sets.lagda.md +++ b/src/foundation/sets.lagda.md @@ -153,19 +153,19 @@ abstract is-set B → is-set (A → B) is-set-function-type = is-trunc-function-type zero-𝕋 -type-hom-Set : +hom-Set : {l1 l2 : Level} → Set l1 → Set l2 → UU (l1 ⊔ l2) -type-hom-Set A B = type-Set A → type-Set B +hom-Set A B = type-Set A → type-Set B is-set-hom-Set : {l1 l2 : Level} (A : Set l1) (B : Set l2) → - is-set (type-hom-Set A B) + is-set (hom-Set A B) is-set-hom-Set A B = is-set-function-type (is-set-type-Set B) -hom-Set : +hom-set-Set : {l1 l2 : Level} → Set l1 → Set l2 → Set (l1 ⊔ l2) -pr1 (hom-Set A B) = type-hom-Set A B -pr2 (hom-Set A B) = is-set-hom-Set A B +pr1 (hom-set-Set A B) = hom-Set A B +pr2 (hom-set-Set A B) = is-set-hom-Set A B precomp-Set : {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (C : Set l3) → diff --git a/src/foundation/singleton-induction.lagda.md b/src/foundation/singleton-induction.lagda.md index aaf9e87c6e..0ddc91aed1 100644 --- a/src/foundation/singleton-induction.lagda.md +++ b/src/foundation/singleton-induction.lagda.md @@ -114,3 +114,4 @@ abstract - The equivalent principle of [subsingleton induction](foundation.subsingleton-induction.md) +- [Singleton subsets](foundation.singleton-subtypes.md) diff --git a/src/foundation/singleton-subtypes.lagda.md b/src/foundation/singleton-subtypes.lagda.md index 84e8cec3bb..b0636e44d7 100644 --- a/src/foundation/singleton-subtypes.lagda.md +++ b/src/foundation/singleton-subtypes.lagda.md @@ -7,44 +7,71 @@ module foundation.singleton-subtypes where
Imports ```agda +open import foundation.action-on-identifications-functions +open import foundation.connected-components open import foundation.contractible-types open import foundation.dependent-pair-types +open import foundation.functoriality-propositional-truncation +open import foundation.images +open import foundation.images-subtypes open import foundation.inhabited-subtypes open import foundation.logical-equivalences open import foundation.propositional-truncations +open import foundation.sets +open import foundation.singleton-induction +open import foundation.subtype-identity-principle +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels +open import foundation-core.equivalences +open import foundation-core.function-types +open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.propositions -open import foundation-core.sets -open import foundation-core.subtypes ```
## Idea -A singleton subtype of a type `X` is a subtype `P` of `X` of which the -underlying type is contractible. +A **singleton subtype** of a type `X` is a [subtype](foundation.subtypes.md) `P` +of `X` of which the underlying type is +[contractible](foundation-core.contractible-types.md). In informal writing, we +will write `{x}` for the **standard singleton subtype** of a +[set](foundation-core.sets.md) `X` containing the element `x`. + +**Note:** If a subtype containing an element `x` is a singleton subtype, then it +is also the least subtype containing `x`. However, the reverse implication does +not necessarily hold. The condition that a subtype is the least subtype +containing an element `x` is only equivalent to the condition that its +underlying type is [0-connected](foundation.0-connected-types.md), which is a +weaker condition than being a singleton subtype. ## Definitions -### General singleton subtypes +### The predicate of being a singleton subtype ```agda -is-singleton-subtype-Prop : - {l1 l2 : Level} {X : UU l1} → subtype l2 X → Prop (l1 ⊔ l2) -is-singleton-subtype-Prop P = is-contr-Prop (type-subtype P) +module _ + {l1 l2 : Level} {X : UU l1} (P : subtype l2 X) + where + + is-singleton-subtype-Prop : Prop (l1 ⊔ l2) + is-singleton-subtype-Prop = is-contr-Prop (type-subtype P) -is-singleton-subtype : - {l1 l2 : Level} {X : UU l1} → subtype l2 X → UU (l1 ⊔ l2) -is-singleton-subtype P = type-Prop (is-singleton-subtype-Prop P) + is-singleton-subtype : UU (l1 ⊔ l2) + is-singleton-subtype = type-Prop is-singleton-subtype-Prop -is-prop-is-singleton-subtype : - {l1 l2 : Level} {X : UU l1} (P : subtype l2 X) → - is-prop (is-singleton-subtype P) -is-prop-is-singleton-subtype P = is-prop-type-Prop (is-singleton-subtype-Prop P) + is-prop-is-singleton-subtype : + is-prop is-singleton-subtype + is-prop-is-singleton-subtype = is-prop-type-Prop is-singleton-subtype-Prop +``` + +### The type of singleton subtypes +```agda singleton-subtype : {l1 : Level} (l2 : Level) → UU l1 → UU (l1 ⊔ lsuc l2) singleton-subtype l2 X = type-subtype (is-singleton-subtype-Prop {l2 = l2} {X}) @@ -64,31 +91,185 @@ module _ ### Standard singleton subtypes ```agda -subtype-standard-singleton-subtype : - {l : Level} (X : Set l) → type-Set X → subtype l (type-Set X) -subtype-standard-singleton-subtype X x y = Id-Prop X x y - -standard-singleton-subtype : - {l : Level} (X : Set l) → type-Set X → singleton-subtype l (type-Set X) -pr1 (standard-singleton-subtype X x) = subtype-standard-singleton-subtype X x -pr2 (standard-singleton-subtype X x) = is-torsorial-path x - -inhabited-subtype-standard-singleton-subtype : - {l : Level} (X : Set l) → type-Set X → inhabited-subtype l (type-Set X) -pr1 (inhabited-subtype-standard-singleton-subtype X x) = - subtype-standard-singleton-subtype X x -pr2 (inhabited-subtype-standard-singleton-subtype X x) = - unit-trunc-Prop (pair x refl) +module _ + {l : Level} (X : Set l) (x : type-Set X) + where + + subtype-standard-singleton-subtype : subtype l (type-Set X) + subtype-standard-singleton-subtype y = Id-Prop X x y + + type-standard-singleton-subtype : UU l + type-standard-singleton-subtype = + type-subtype subtype-standard-singleton-subtype + + inclusion-standard-singleton-subtype : + type-standard-singleton-subtype → type-Set X + inclusion-standard-singleton-subtype = + inclusion-subtype subtype-standard-singleton-subtype + + standard-singleton-subtype : singleton-subtype l (type-Set X) + pr1 standard-singleton-subtype = subtype-standard-singleton-subtype + pr2 standard-singleton-subtype = is-torsorial-path x + + inhabited-subtype-standard-singleton-subtype : + inhabited-subtype l (type-Set X) + pr1 inhabited-subtype-standard-singleton-subtype = + subtype-standard-singleton-subtype + pr2 inhabited-subtype-standard-singleton-subtype = + unit-trunc-Prop (pair x refl) ``` ## Properties +### If a subtype is a singleton subtype containing `x`, then it is the least subtype containing `x` + +```agda +module _ + {l1 l2 : Level} {X : UU l1} {x : X} (P : subtype l2 X) (p : is-in-subtype P x) + where + + is-least-subtype-containing-element-is-singleton-subtype : + is-singleton-subtype P → is-least-subtype-containing-element x P + pr1 (is-least-subtype-containing-element-is-singleton-subtype H Q) L = L x p + pr2 (is-least-subtype-containing-element-is-singleton-subtype H Q) q y r = + ind-singleton (x , p) H (is-in-subtype Q ∘ pr1) q (y , r) +``` + +### If the identity type `y ↦ x = y` is a subtype, then a subtype containing `x` is a singleton subtype if and only if it is the least subtype containing `x` + +**Proof:** We already showed the forward direction. For the converse, suppose +that the [identity type](foundation-core.identity-types.md) `y ↦ x = y` is a +subtype and that `P` is the least subtype containing the element `x`. To show +that `Σ X P` is contractible, we use the element `(x , p)` as the center of +contraction, where `p : P x` is assumed. Then it remains to construct the +contraction. Recall that for any element `(y , q) : Σ X P` we have a function + +```text + eq-type-subtype P : (x = y) → ((x , p) = (y , q)). +``` + +Therefore it suffices to show that `x = y`. This is a +[proposition](foundation-core.propositions.md). By the assumption that `P` is +the least subtype containing `x` we have a function `P u → x = u` for all `u`, +so `x = y` follows. + +```agda +module _ + {l1 l2 : Level} {X : UU l1} {x : X} (P : subtype l2 X) (p : is-in-subtype P x) + where + + is-singleton-subtype-is-least-subtype-containing-element : + (H : (y : X) → is-prop (x = y)) → + is-least-subtype-containing-element x P → is-singleton-subtype P + pr1 (is-singleton-subtype-is-least-subtype-containing-element H L) = (x , p) + pr2 (is-singleton-subtype-is-least-subtype-containing-element H L) (y , q) = + eq-type-subtype P (backward-implication (L (λ y → x = y , H y)) refl y q) + +is-singleton-subtype-is-least-subtype-containing-element-Set : + {l1 l2 : Level} (X : Set l1) {x : type-Set X} (P : subtype l2 (type-Set X)) + (p : is-in-subtype P x) → + is-least-subtype-containing-element x P → is-singleton-subtype P +is-singleton-subtype-is-least-subtype-containing-element-Set X P p = + is-singleton-subtype-is-least-subtype-containing-element P p + ( is-set-type-Set X _) +``` + +### Any two singleton subtypes containing a given element `x` have the same elements + +```agda +module _ + {l1 l2 l3 : Level} {X : UU l1} {x : X} (P : subtype l2 X) (Q : subtype l3 X) + (p : is-in-subtype P x) (q : is-in-subtype Q x) + where + + inclusion-is-singleton-subtype : + is-singleton-subtype P → P ⊆ Q + inclusion-is-singleton-subtype s = + backward-implication + ( is-least-subtype-containing-element-is-singleton-subtype P p s Q) + ( q) + +module _ + {l1 l2 l3 : Level} {X : UU l1} {x : X} (P : subtype l2 X) (Q : subtype l3 X) + (p : is-in-subtype P x) (q : is-in-subtype Q x) + where + + has-same-elements-is-singleton-subtype : + is-singleton-subtype P → is-singleton-subtype Q → + has-same-elements-subtype P Q + pr1 (has-same-elements-is-singleton-subtype s t y) = + inclusion-is-singleton-subtype P Q p q s y + pr2 (has-same-elements-is-singleton-subtype s t y) = + inclusion-is-singleton-subtype Q P q p t y +``` + ### The standard singleton subtype `{x}` of a set is the least subtype containing `x` ```agda -is-least-subtype-containing-element-Set : - {l1 l2 : Level} (X : Set l1) (x : type-Set X) (A : subtype l2 (type-Set X)) → - is-in-subtype A x ↔ (subtype-standard-singleton-subtype X x ⊆ A) -pr1 (is-least-subtype-containing-element-Set X x A) H .x refl = H -pr2 (is-least-subtype-containing-element-Set X x A) H = H x refl +module _ + {l1 : Level} (X : Set l1) (x : type-Set X) + where + + is-least-subtype-containing-element-Set : + is-least-subtype-containing-element x + ( subtype-standard-singleton-subtype X x) + pr1 (is-least-subtype-containing-element-Set A) H = H x refl + pr2 (is-least-subtype-containing-element-Set A) H .x refl = H +``` + +### The image of the standard singleton subtype `{x}` under a map `f : X → Y` is the standard singleton subtype `{f(x)}` + +**Proof:** Our goal is to show that the type + +```text + Σ Y (λ y → ∥ Σ (Σ X (λ u → x = u)) (λ v → f (inclusion v) = y) ∥ ) +``` + +Since the type `Σ X (λ u → x = u)` is contractible, the above type is +[equivalent](foundation-core.equivalences.md) to + +```text + Σ Y (λ y → ∥ f x = y ∥ ) +``` + +Note that the identity type `f x = y` of a [set](foundation-core.sets.md) is a +proposition, so this type is equivalent to the type `Σ Y (λ y → f x = y)`, +which is of course contractible. + +```agda +module _ + {l1 l2 : Level} (X : Set l1) (Y : Set l2) (f : hom-Set X Y) (x : type-Set X) + where + + abstract + is-singleton-im-singleton-subtype : + is-singleton-subtype + ( im-subtype f (subtype-standard-singleton-subtype X x)) + is-singleton-im-singleton-subtype = + is-contr-equiv + ( Σ (type-Set Y) (λ y → f x = y)) + ( equiv-tot + ( λ y → + ( inv-equiv (equiv-unit-trunc-Prop (Id-Prop Y (f x) y))) ∘e + ( equiv-trunc-Prop + ( left-unit-law-Σ-is-contr (is-torsorial-path x) (x , refl))))) + ( is-torsorial-path (f x)) + + compute-im-singleton-subtype : + has-same-elements-subtype + ( subtype-standard-singleton-subtype Y (f x)) + ( im-subtype f (subtype-standard-singleton-subtype X x)) + compute-im-singleton-subtype = + has-same-elements-is-singleton-subtype + ( subtype-standard-singleton-subtype Y (f x)) + ( im-subtype f (subtype-standard-singleton-subtype X x)) + ( refl) + ( unit-trunc-Prop ((x , refl) , refl)) + ( is-torsorial-path (f x)) + ( is-singleton-im-singleton-subtype) ``` + +## See also + +- [Connected components](foundation.connected-components.md) +- [Singleton induction](foundation.singleton-induction.md) diff --git a/src/foundation/subtypes.lagda.md b/src/foundation/subtypes.lagda.md index 43af36685d..9e9a5e61a5 100644 --- a/src/foundation/subtypes.lagda.md +++ b/src/foundation/subtypes.lagda.md @@ -16,6 +16,7 @@ open import foundation.logical-equivalences open import foundation.propositional-extensionality open import foundation.universe-levels +open import foundation-core.cartesian-product-types open import foundation-core.contractible-types open import foundation-core.embeddings open import foundation-core.equivalences @@ -114,6 +115,30 @@ module _ map-inv-equiv (extensionality-subtype Q) ``` +### Similarity of subtypes + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + sim-subtype : + {l2 l3 : Level} → subtype l2 A → subtype l3 A → UU (l1 ⊔ l2 ⊔ l3) + sim-subtype P Q = (P ⊆ Q) × (Q ⊆ P) + + has-same-elements-sim-subtype : + {l2 l3 : Level} (P : subtype l2 A) (Q : subtype l3 A) → + sim-subtype P Q → has-same-elements-subtype P Q + pr1 (has-same-elements-sim-subtype P Q s x) = pr1 s x + pr2 (has-same-elements-sim-subtype P Q s x) = pr2 s x + + sim-has-same-elements-subtype : + {l2 l3 : Level} (P : subtype l2 A) (Q : subtype l3 A) → + has-same-elements-subtype P Q → sim-subtype P Q + pr1 (sim-has-same-elements-subtype P Q s) x = forward-implication (s x) + pr2 (sim-has-same-elements-subtype P Q s) x = backward-implication (s x) +``` + ### The containment relation is antisymmetric ```agda @@ -151,3 +176,10 @@ subtype-Set : {l1 : Level} (l2 : Level) → UU l1 → Set (l1 ⊔ lsuc l2) pr1 (subtype-Set l2 A) = subtype l2 A pr2 (subtype-Set l2 A) = is-set-subtype ``` + +## See also + +- [Images of subtypes](foundation.images-subtypes.md) +- [Large locale of subtypes](foundation.large-locale-of-subtypes.md) +- [Powersets](foundation.powersets.md) +- [Pullbacks of subtypes](foundation.pullbacks-subtypes.md) diff --git a/src/foundation/truncation-equivalences.lagda.md b/src/foundation/truncation-equivalences.lagda.md index ad7a1fc5c6..2965e48bc9 100644 --- a/src/foundation/truncation-equivalences.lagda.md +++ b/src/foundation/truncation-equivalences.lagda.md @@ -469,7 +469,7 @@ module _ is-connected-map-right-factor-is-succ-connected-map-right-factor cf c = is-succ-connected-is-connected-map-is-succ-connected ( pr1) - ( is-connected-equiv' (equiv-compute-fiber-comp g f c) (cgf c)) + ( is-connected-equiv' (compute-fiber-comp g f c) (cgf c)) ( λ p → is-connected-equiv ( equiv-fiber-pr1 (fiber f ∘ pr1) p) diff --git a/src/foundation/type-duality.lagda.md b/src/foundation/type-duality.lagda.md index def9f60fe6..685e6d94b0 100644 --- a/src/foundation/type-duality.lagda.md +++ b/src/foundation/type-duality.lagda.md @@ -151,21 +151,44 @@ module _ is-section-map-inv-type-duality B = eq-equiv-fam ( λ a → - ( equiv-fiber-pr1 B a) ∘e - ( right-unit-law-Σ-is-contr - ( λ b → - is-contr-map-is-equiv - ( is-equiv-map-inv-equiv - ( equiv-is-small (is-small-Σ H (λ a → is-small' {l} {B a})))) - ( pr1 b))) ∘e - ( equiv-compute-fiber-comp pr1 _ a) ∘e - ( equiv-tot - ( λ x → - inv-equiv - ( equiv-is-small - ( is-locally-small-is-small H - ( pr2 (map-inv-type-duality B) x) - ( a)))))) + equivalence-reasoning + map-type-duality + ( is-locally-small-is-small H) + ( map-inv-type-duality B) + ( a) + ≃ fiber + ( ( pr1 {B = B}) ∘ + ( map-inv-equiv + ( equiv-is-small + ( is-small-Σ H (λ a → is-small'))))) a + by + equiv-tot + ( λ x → + inv-equiv + ( equiv-is-small + ( is-locally-small-is-small H + ( pr2 (map-inv-type-duality B) x) + ( a)))) + ≃ Σ ( fiber (pr1 {B = B}) a) + ( λ b → + fiber + ( map-inv-equiv + ( equiv-is-small + ( is-small-Σ H (λ a → is-small' {l} {B a})))) + ( pr1 b)) + by compute-fiber-comp pr1 _ a + ≃ fiber (pr1 {B = B}) a + by + right-unit-law-Σ-is-contr + ( λ b → + is-contr-map-is-equiv + ( is-equiv-map-inv-equiv + ( equiv-is-small + ( is-small-Σ H (λ a → is-small' {l} {B a})))) + ( pr1 b)) + ≃ B a + by + equiv-fiber-pr1 B a) is-retraction-map-inv-type-duality : map-inv-type-duality ∘ map-type-duality (is-locally-small-is-small H) ~ id diff --git a/src/foundation/uniqueness-set-quotients.lagda.md b/src/foundation/uniqueness-set-quotients.lagda.md index 771bfd1544..314b19be13 100644 --- a/src/foundation/uniqueness-set-quotients.lagda.md +++ b/src/foundation/uniqueness-set-quotients.lagda.md @@ -40,26 +40,26 @@ unique. ```agda precomp-comp-Set-Quotient : - {l1 l2 l3 l4 l5 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) - (B : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set B)) - (C : Set l4) (g : type-hom-Set B C) - (D : Set l5) (h : type-hom-Set C D) → + {l1 l2 l3 l4 l5 : Level} {A : UU l1} (R : equivalence-relation l2 A) + (B : Set l3) (f : reflecting-map-equivalence-relation R (type-Set B)) + (C : Set l4) (g : hom-Set B C) + (D : Set l5) (h : hom-Set C D) → ( precomp-Set-Quotient R B f D (h ∘ g)) = ( precomp-Set-Quotient R C (precomp-Set-Quotient R B f C g) D h) precomp-comp-Set-Quotient R B f C g D h = - eq-htpy-reflecting-map-Equivalence-Relation R D + eq-htpy-reflecting-map-equivalence-relation R D ( precomp-Set-Quotient R B f D (h ∘ g)) ( precomp-Set-Quotient R C (precomp-Set-Quotient R B f C g) D h) ( refl-htpy) module _ - {l1 l2 l3 l4 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) - (B : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set B)) - (C : Set l4) (g : reflecting-map-Equivalence-Relation R (type-Set C)) + {l1 l2 l3 l4 : Level} {A : UU l1} (R : equivalence-relation l2 A) + (B : Set l3) (f : reflecting-map-equivalence-relation R (type-Set B)) + (C : Set l4) (g : reflecting-map-equivalence-relation R (type-Set C)) {h : type-Set B → type-Set C} (H : - (h ∘ map-reflecting-map-Equivalence-Relation R f) ~ - map-reflecting-map-Equivalence-Relation R g) + (h ∘ map-reflecting-map-equivalence-relation R f) ~ + map-reflecting-map-equivalence-relation R g) where map-inv-is-equiv-is-set-quotient-is-set-quotient : @@ -85,13 +85,13 @@ module _ ( h)) ∙ ( ( ap ( λ t → precomp-Set-Quotient R B t C h) - ( eq-htpy-reflecting-map-Equivalence-Relation R B + ( eq-htpy-reflecting-map-equivalence-relation R B ( precomp-Set-Quotient R C g B ( map-inv-is-equiv-is-set-quotient-is-set-quotient Uf Ug)) ( f) ( triangle-universal-property-set-quotient-is-set-quotient R C g Ug B f))) ∙ - ( ( eq-htpy-reflecting-map-Equivalence-Relation R C + ( ( eq-htpy-reflecting-map-equivalence-relation R C ( precomp-Set-Quotient R B f C h) g H) ∙ ( inv (precomp-id-Set-Quotient R C g)))))) @@ -111,11 +111,11 @@ module _ ( λ t → precomp-Set-Quotient R C t B ( map-inv-is-equiv-is-set-quotient-is-set-quotient Uf Ug)) - ( eq-htpy-reflecting-map-Equivalence-Relation R C + ( eq-htpy-reflecting-map-equivalence-relation R C ( precomp-Set-Quotient R B f C h) ( g) ( H))) ∙ - ( ( eq-htpy-reflecting-map-Equivalence-Relation R B + ( ( eq-htpy-reflecting-map-equivalence-relation R B ( precomp-Set-Quotient R C g B ( map-inv-is-equiv-is-set-quotient-is-set-quotient Uf Ug)) ( f) @@ -142,7 +142,7 @@ module _ ( precomp-Set-Quotient R B f X) ( precomp h (type-Set X)) ( λ k → - eq-htpy-reflecting-map-Equivalence-Relation R X + eq-htpy-reflecting-map-equivalence-relation R X ( precomp-Set-Quotient R C g X k) ( precomp-Set-Quotient R B f X (k ∘ h)) ( inv-htpy (k ·l H))) @@ -158,7 +158,7 @@ module _ ( precomp-Set-Quotient R B f X) ( precomp h (type-Set X)) ( λ k → - eq-htpy-reflecting-map-Equivalence-Relation R X + eq-htpy-reflecting-map-equivalence-relation R X ( precomp-Set-Quotient R C g X k) ( precomp-Set-Quotient R B f X (k ∘ h)) ( inv-htpy (k ·l H))) @@ -166,10 +166,10 @@ module _ ( is-equiv-precomp-is-equiv h E (type-Set X)) module _ - {l1 l2 l3 l4 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) - (B : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set B)) + {l1 l2 l3 l4 : Level} {A : UU l1} (R : equivalence-relation l2 A) + (B : Set l3) (f : reflecting-map-equivalence-relation R (type-Set B)) (Uf : {l : Level} → is-set-quotient l R B f) - (C : Set l4) (g : reflecting-map-Equivalence-Relation R (type-Set C)) + (C : Set l4) (g : reflecting-map-equivalence-relation R (type-Set C)) (Ug : {l : Level} → is-set-quotient l R C g) where @@ -177,8 +177,8 @@ module _ is-contr ( Σ ( type-Set B ≃ type-Set C) ( λ e → - ( map-equiv e ∘ map-reflecting-map-Equivalence-Relation R f) ~ - ( map-reflecting-map-Equivalence-Relation R g))) + ( map-equiv e ∘ map-reflecting-map-equivalence-relation R f) ~ + ( map-reflecting-map-equivalence-relation R g))) uniqueness-set-quotient = is-torsorial-Eq-subtype ( universal-property-set-quotient-is-set-quotient R B f Uf C g) @@ -200,8 +200,8 @@ module _ triangle-uniqueness-set-quotient : ( map-equiv-uniqueness-set-quotient ∘ - map-reflecting-map-Equivalence-Relation R f) ~ - ( map-reflecting-map-Equivalence-Relation R g) + map-reflecting-map-equivalence-relation R f) ~ + ( map-reflecting-map-equivalence-relation R g) triangle-uniqueness-set-quotient = pr2 (center uniqueness-set-quotient) ``` diff --git a/src/foundation/uniqueness-set-truncations.lagda.md b/src/foundation/uniqueness-set-truncations.lagda.md index b67f0dffab..858fbd8ea8 100644 --- a/src/foundation/uniqueness-set-truncations.lagda.md +++ b/src/foundation/uniqueness-set-truncations.lagda.md @@ -34,7 +34,7 @@ uniquely unique. ```agda module _ {l1 l2 l3 : Level} {A : UU l1} (B : Set l2) (f : A → type-Set B) - (C : Set l3) (g : A → type-Set C) {h : type-hom-Set B C} + (C : Set l3) (g : A → type-Set C) {h : hom-Set B C} (H : (h ∘ f) ~ g) where @@ -45,7 +45,7 @@ module _ is-equiv h is-equiv-is-set-truncation-is-set-truncation Sf Sg = is-equiv-is-set-quotient-is-set-quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( C) @@ -61,7 +61,7 @@ module _ is-set-truncation-is-equiv-is-set-truncation Sg Eh = is-set-truncation-is-set-quotient B f ( is-set-quotient-is-equiv-is-set-quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( C) @@ -77,7 +77,7 @@ module _ is-set-truncation-is-set-truncation-is-equiv Eh Sf = is-set-truncation-is-set-quotient C g ( is-set-quotient-is-set-quotient-is-equiv - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( C) @@ -102,7 +102,7 @@ module _ is-contr (Σ (type-Set B ≃ type-Set C) (λ e → (map-equiv e ∘ f) ~ g)) uniqueness-set-truncation = uniqueness-set-quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( is-set-quotient-is-set-truncation B f Sf) diff --git a/src/foundation/uniqueness-truncation.lagda.md b/src/foundation/uniqueness-truncation.lagda.md index 2b526f05c2..3820dc9b86 100644 --- a/src/foundation/uniqueness-truncation.lagda.md +++ b/src/foundation/uniqueness-truncation.lagda.md @@ -52,7 +52,7 @@ module _ { id} ( ( precomp-comp-Set-Quotient R C g B k C h) ∙ ( ( ap (λ t → precomp-Set-Quotient R B t C h) α) ∙ - ( ( eq-htpy-reflecting-map-Equivalence-Relation R C + ( ( eq-htpy-reflecting-map-equivalence-relation R C ( precomp-Set-Quotient R B f C h) g H) ∙ ( inv (precomp-id-Set-Quotient R C g))))))) ( htpy-eq @@ -63,7 +63,7 @@ module _ ( ( precomp-comp-Set-Quotient R B f C h B k) ∙ ( ( ap ( λ t → precomp-Set-Quotient R C t B k) - ( eq-htpy-reflecting-map-Equivalence-Relation R C + ( eq-htpy-reflecting-map-equivalence-relation R C ( precomp-Set-Quotient R B f C h) g H)) ∙ ( ( α) ∙ ( inv (precomp-id-Set-Quotient R B f))))))) @@ -71,13 +71,13 @@ module _ K : is-contr ( Σ ( type-hom-Set C B) ( λ h → - ( h ∘ map-reflecting-map-Equivalence-Relation R g) ~ - ( map-reflecting-map-Equivalence-Relation R f))) + ( h ∘ map-reflecting-map-equivalence-relation R g) ~ + ( map-reflecting-map-equivalence-relation R f))) K = universal-property-set-quotient-is-set-quotient R C g Ug B f k : type-Set C → type-Set B k = pr1 (center K) α : Id (precomp-Set-Quotient R C g B k) f - α = eq-htpy-reflecting-map-Equivalence-Relation R B + α = eq-htpy-reflecting-map-equivalence-relation R B ( precomp-Set-Quotient R C g B k) ( f) ( pr2 (center K)) @@ -101,7 +101,7 @@ module _ is-equiv h is-equiv-is-set-truncation-is-set-truncation Sf Sg = is-equiv-is-set-quotient-is-set-quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( C) @@ -117,7 +117,7 @@ module _ is-set-truncation-is-equiv-is-set-truncation Sg Eh = is-set-truncation-is-set-quotient B f ( is-set-quotient-is-equiv-is-set-quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( C) @@ -133,7 +133,7 @@ module _ is-set-truncation-is-set-truncation-is-equiv Eh Sf = is-set-truncation-is-set-quotient C g ( is-set-quotient-is-set-quotient-is-equiv - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( C) @@ -154,7 +154,7 @@ module _ is-contr (Σ (type-Set B ≃ type-Set C) (λ e → (map-equiv e ∘ f) ~ g)) uniqueness-set-truncation = uniqueness-set-quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( is-set-quotient-is-set-truncation B f Sf) diff --git a/src/foundation/universal-property-pullbacks.lagda.md b/src/foundation/universal-property-pullbacks.lagda.md index d8301953aa..3adcc03fdc 100644 --- a/src/foundation/universal-property-pullbacks.lagda.md +++ b/src/foundation/universal-property-pullbacks.lagda.md @@ -39,7 +39,7 @@ to a square ```text C -----> B -| | +| ⌟ | | | V V A -----> X diff --git a/src/foundation/universal-property-set-quotients.lagda.md b/src/foundation/universal-property-set-quotients.lagda.md index bcbbfad50c..ba0fa32491 100644 --- a/src/foundation/universal-property-set-quotients.lagda.md +++ b/src/foundation/universal-property-set-quotients.lagda.md @@ -61,39 +61,39 @@ The universal property of set quotients characterizes maps out of set quotients. ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) - (f : reflecting-map-Equivalence-Relation R (type-Set B)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) + (f : reflecting-map-equivalence-relation R (type-Set B)) where precomp-Set-Quotient : {l : Level} (X : Set l) → - (type-hom-Set B X) → reflecting-map-Equivalence-Relation R (type-Set X) + (hom-Set B X) → reflecting-map-equivalence-relation R (type-Set X) pr1 (precomp-Set-Quotient X g) = - g ∘ (map-reflecting-map-Equivalence-Relation R f) + g ∘ (map-reflecting-map-equivalence-relation R f) pr2 (precomp-Set-Quotient X g) r = - ap g (reflects-map-reflecting-map-Equivalence-Relation R f r) + ap g (reflects-map-reflecting-map-equivalence-relation R f r) is-set-quotient : - (l : Level) {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) - (B : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set B)) → + (l : Level) {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) + (B : Set l3) (f : reflecting-map-equivalence-relation R (type-Set B)) → UU (lsuc l ⊔ l1 ⊔ l2 ⊔ l3) is-set-quotient l R B f = (X : Set l) → is-equiv (precomp-Set-Quotient R B f X) module _ (l : Level) {l1 l2 l3 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) - (f : reflecting-map-Equivalence-Relation R (type-Set B)) + {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) + (f : reflecting-map-equivalence-relation R (type-Set B)) where universal-property-set-quotient : UU (l1 ⊔ l2 ⊔ l3 ⊔ lsuc l) universal-property-set-quotient = - (X : Set l) (g : reflecting-map-Equivalence-Relation R (type-Set X)) → + (X : Set l) (g : reflecting-map-equivalence-relation R (type-Set X)) → is-contr - ( Σ ( type-hom-Set B X) + ( Σ ( hom-Set B X) ( λ h → - ( h ∘ map-reflecting-map-Equivalence-Relation R f) ~ - ( map-reflecting-map-Equivalence-Relation R g))) + ( h ∘ map-reflecting-map-equivalence-relation R f) ~ + ( map-reflecting-map-equivalence-relation R g))) ``` ## Properties @@ -102,13 +102,13 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) - (f : reflecting-map-Equivalence-Relation R (type-Set B)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) + (f : reflecting-map-equivalence-relation R (type-Set B)) where precomp-id-Set-Quotient : precomp-Set-Quotient R B f B id = f precomp-id-Set-Quotient = - eq-htpy-reflecting-map-Equivalence-Relation R B + eq-htpy-reflecting-map-equivalence-relation R B ( precomp-Set-Quotient R B f B id) ( f) ( refl-htpy) @@ -118,8 +118,8 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) - (f : reflecting-map-Equivalence-Relation R (type-Set B)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) + (f : reflecting-map-equivalence-relation R (type-Set B)) where universal-property-set-quotient-is-set-quotient : @@ -130,24 +130,24 @@ module _ ( fiber (precomp-Set-Quotient R B f X) g) ( equiv-tot ( λ h → - extensionality-reflecting-map-Equivalence-Relation R X + extensionality-reflecting-map-equivalence-relation R X ( precomp-Set-Quotient R B f X h) ( g))) ( is-contr-map-is-equiv (Q X) g) map-universal-property-set-quotient-is-set-quotient : {l4 : Level} (Uf : {l : Level} → is-set-quotient l R B f) - (C : Set l4) (g : reflecting-map-Equivalence-Relation R (type-Set C)) → + (C : Set l4) (g : reflecting-map-equivalence-relation R (type-Set C)) → type-Set B → type-Set C map-universal-property-set-quotient-is-set-quotient Uf C g = pr1 (center (universal-property-set-quotient-is-set-quotient Uf C g)) triangle-universal-property-set-quotient-is-set-quotient : {l4 : Level} (Uf : {l : Level} → is-set-quotient l R B f) - (C : Set l4) (g : reflecting-map-Equivalence-Relation R (type-Set C)) → + (C : Set l4) (g : reflecting-map-equivalence-relation R (type-Set C)) → ( ( map-universal-property-set-quotient-is-set-quotient Uf C g) ∘ - ( map-reflecting-map-Equivalence-Relation R f)) ~ - ( map-reflecting-map-Equivalence-Relation R g) + ( map-reflecting-map-equivalence-relation R f)) ~ + ( map-reflecting-map-equivalence-relation R g) triangle-universal-property-set-quotient-is-set-quotient Uf C g = ( pr2 (center (universal-property-set-quotient-is-set-quotient Uf C g))) ``` @@ -156,8 +156,8 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) - (f : reflecting-map-Equivalence-Relation R (type-Set B)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) + (f : reflecting-map-equivalence-relation R (type-Set B)) where is-set-quotient-universal-property-set-quotient : @@ -167,13 +167,13 @@ module _ is-equiv-is-contr-map ( λ g → is-contr-equiv - ( Σ ( type-hom-Set B X) + ( Σ ( hom-Set B X) ( λ h → - ( h ∘ map-reflecting-map-Equivalence-Relation R f) ~ - ( map-reflecting-map-Equivalence-Relation R g))) + ( h ∘ map-reflecting-map-equivalence-relation R f) ~ + ( map-reflecting-map-equivalence-relation R g))) ( equiv-tot ( λ h → - extensionality-reflecting-map-Equivalence-Relation R X + extensionality-reflecting-map-equivalence-relation R X ( precomp-Set-Quotient R B f X h) ( g))) ( Uf X g)) @@ -183,14 +183,14 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) (q : A → type-Set B) where is-effective-is-image : (i : type-Set B ↪ (A → Prop l2)) → - (T : (prop-Equivalence-Relation R) ~ ((map-emb i) ∘ q)) → - is-image (prop-Equivalence-Relation R) i (pair q T) → + (T : (prop-equivalence-relation R) ~ ((map-emb i) ∘ q)) → + is-image (prop-equivalence-relation R) i (pair q T) → is-effective R q is-effective-is-image i T H x y = ( is-effective-class R x y) ∘e @@ -200,11 +200,11 @@ module _ is-surjective-and-effective-is-image : (i : type-Set B ↪ (A → Prop l2)) → - (T : (prop-Equivalence-Relation R) ~ ((map-emb i) ∘ q)) → - is-image (prop-Equivalence-Relation R) i (pair q T) → + (T : (prop-equivalence-relation R) ~ ((map-emb i) ∘ q)) → + is-image (prop-equivalence-relation R) i (pair q T) → is-surjective-and-effective R q pr1 (is-surjective-and-effective-is-image i T H) = - is-surjective-is-image (prop-Equivalence-Relation R) i (pair q T) H + is-surjective-is-image (prop-equivalence-relation R) i (pair q T) H pr2 (is-surjective-and-effective-is-image i T H) = is-effective-is-image i T H @@ -221,7 +221,7 @@ module _ ( α u)) where α : fiber q x → fiber q y → is-small l2 (x = y) - pr1 (α (pair a refl) (pair b refl)) = sim-Equivalence-Relation R a b + pr1 (α (pair a refl) (pair b refl)) = sim-equivalence-relation R a b pr2 (α (pair a refl) (pair b refl)) = pr2 e a b large-map-emb-is-surjective-and-effective : @@ -255,7 +255,7 @@ module _ triangle-emb-is-surjective-and-effective : (H : is-surjective-and-effective R q) → - prop-Equivalence-Relation R ~ (map-emb-is-surjective-and-effective H ∘ q) + prop-equivalence-relation R ~ (map-emb-is-surjective-and-effective H ∘ q) triangle-emb-is-surjective-and-effective H a = eq-htpy ( λ x → @@ -332,12 +332,12 @@ module _ is-image-is-surjective-and-effective : ( H : is-surjective-and-effective R q) → is-image - ( prop-Equivalence-Relation R) + ( prop-equivalence-relation R) ( emb-is-surjective-and-effective H) ( pair q (triangle-emb-is-surjective-and-effective H)) is-image-is-surjective-and-effective H = is-image-is-surjective - ( prop-Equivalence-Relation R) + ( prop-equivalence-relation R) ( emb-is-surjective-and-effective H) ( pair q (triangle-emb-is-surjective-and-effective H)) ( pr1 H) @@ -347,98 +347,98 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) where is-surjective-is-set-quotient : - (q : reflecting-map-Equivalence-Relation R (type-Set B)) → + (q : reflecting-map-equivalence-relation R (type-Set B)) → ({l : Level} → is-set-quotient l R B q) → - is-surjective (map-reflecting-map-Equivalence-Relation R q) + is-surjective (map-reflecting-map-equivalence-relation R q) is-surjective-is-set-quotient q Q b = tr ( λ y → - type-trunc-Prop (fiber (map-reflecting-map-Equivalence-Relation R q) y)) + type-trunc-Prop (fiber (map-reflecting-map-equivalence-relation R q) y)) ( htpy-eq ( ap pr1 ( eq-is-contr ( universal-property-set-quotient-is-set-quotient R B q Q B q) - { inclusion-im (map-reflecting-map-Equivalence-Relation R q) ∘ β , + { inclusion-im (map-reflecting-map-equivalence-relation R q) ∘ β , δ} { id , refl-htpy})) ( b)) ( pr2 (β b)) where α : - reflects-Equivalence-Relation R - ( map-unit-im (map-reflecting-map-Equivalence-Relation R q)) + reflects-equivalence-relation R + ( map-unit-im (map-reflecting-map-equivalence-relation R q)) α {x} {y} r = is-injective-is-emb - ( is-emb-inclusion-im (map-reflecting-map-Equivalence-Relation R q)) + ( is-emb-inclusion-im (map-reflecting-map-equivalence-relation R q)) ( map-equiv ( convert-eq-values - ( triangle-unit-im (map-reflecting-map-Equivalence-Relation R q)) + ( triangle-unit-im (map-reflecting-map-equivalence-relation R q)) ( x) ( y)) - ( reflects-map-reflecting-map-Equivalence-Relation R q r)) - β : type-Set B → im (map-reflecting-map-Equivalence-Relation R q) + ( reflects-map-reflecting-map-equivalence-relation R q r)) + β : type-Set B → im (map-reflecting-map-equivalence-relation R q) β = map-inv-is-equiv ( Q ( pair - ( im (map-reflecting-map-Equivalence-Relation R q)) + ( im (map-reflecting-map-equivalence-relation R q)) ( is-set-im - ( map-reflecting-map-Equivalence-Relation R q) + ( map-reflecting-map-equivalence-relation R q) ( is-set-type-Set B)))) - ( pair (map-unit-im (map-reflecting-map-Equivalence-Relation R q)) α) + ( pair (map-unit-im (map-reflecting-map-equivalence-relation R q)) α) γ : - ( β ∘ (map-reflecting-map-Equivalence-Relation R q)) ~ - ( map-unit-im (map-reflecting-map-Equivalence-Relation R q)) + ( β ∘ (map-reflecting-map-equivalence-relation R q)) ~ + ( map-unit-im (map-reflecting-map-equivalence-relation R q)) γ = htpy-eq ( ap ( pr1) ( is-section-map-inv-is-equiv ( Q ( pair - ( im (map-reflecting-map-Equivalence-Relation R q)) + ( im (map-reflecting-map-equivalence-relation R q)) ( is-set-im - ( map-reflecting-map-Equivalence-Relation R q) + ( map-reflecting-map-equivalence-relation R q) ( is-set-type-Set B)))) - ( map-unit-im (map-reflecting-map-Equivalence-Relation R q) , α))) + ( map-unit-im (map-reflecting-map-equivalence-relation R q) , α))) δ : - ( ( inclusion-im (map-reflecting-map-Equivalence-Relation R q) ∘ β) ∘ - ( map-reflecting-map-Equivalence-Relation R q)) ~ - ( map-reflecting-map-Equivalence-Relation R q) + ( ( inclusion-im (map-reflecting-map-equivalence-relation R q) ∘ β) ∘ + ( map-reflecting-map-equivalence-relation R q)) ~ + ( map-reflecting-map-equivalence-relation R q) δ = - ( inclusion-im (map-reflecting-map-Equivalence-Relation R q) ·l γ) ∙h - ( triangle-unit-im (map-reflecting-map-Equivalence-Relation R q)) + ( inclusion-im (map-reflecting-map-equivalence-relation R q) ·l γ) ∙h + ( triangle-unit-im (map-reflecting-map-equivalence-relation R q)) ``` ### Any set quotient `q : A → B` of an equivalence relation `R` on `A` is effective ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) where is-effective-is-set-quotient : - (q : reflecting-map-Equivalence-Relation R (type-Set B)) → + (q : reflecting-map-equivalence-relation R (type-Set B)) → ({l : Level} → is-set-quotient l R B q) → - is-effective R (map-reflecting-map-Equivalence-Relation R q) + is-effective R (map-reflecting-map-equivalence-relation R q) is-effective-is-set-quotient q Q x y = - inv-equiv (compute-P y) ∘e δ (map-reflecting-map-Equivalence-Relation R q y) + inv-equiv (compute-P y) ∘e δ (map-reflecting-map-equivalence-relation R q y) where - α : Σ (A → Prop l2) (reflects-Equivalence-Relation R) + α : Σ (A → Prop l2) (reflects-equivalence-relation R) α = pair - ( prop-Equivalence-Relation R x) + ( prop-equivalence-relation R x) ( λ r → eq-iff - ( transitive-Equivalence-Relation R _ _ _ r) - ( transitive-Equivalence-Relation R _ _ _ - ( symmetric-Equivalence-Relation R _ _ r))) + ( transitive-equivalence-relation R _ _ _ r) + ( transitive-equivalence-relation R _ _ _ + ( symmetric-equivalence-relation R _ _ r))) P : type-Set B → Prop l2 P = map-inv-is-equiv (Q (Prop-Set l2)) α compute-P : (a : A) → - sim-Equivalence-Relation R x a ≃ - type-Prop (P (map-reflecting-map-Equivalence-Relation R q a)) + sim-equivalence-relation R x a ≃ + type-Prop (P (map-reflecting-map-equivalence-relation R q a)) compute-P a = equiv-eq ( ap pr1 @@ -446,20 +446,20 @@ module _ ( ap pr1 ( inv (is-section-map-inv-is-equiv (Q (Prop-Set l2)) α))) ( a))) - point-P : type-Prop (P (map-reflecting-map-Equivalence-Relation R q x)) - point-P = map-equiv (compute-P x) (refl-Equivalence-Relation R x) + point-P : type-Prop (P (map-reflecting-map-equivalence-relation R q x)) + point-P = map-equiv (compute-P x) (refl-equivalence-relation R x) center-total-P : Σ (type-Set B) (λ b → type-Prop (P b)) center-total-P = - pair (map-reflecting-map-Equivalence-Relation R q x) point-P + pair (map-reflecting-map-equivalence-relation R q x) point-P contraction-total-P : (u : Σ (type-Set B) (λ b → type-Prop (P b))) → center-total-P = u contraction-total-P (pair b p) = eq-type-subtype P ( apply-universal-property-trunc-Prop ( is-surjective-is-set-quotient R B q Q b) - ( Id-Prop B (map-reflecting-map-Equivalence-Relation R q x) b) + ( Id-Prop B (map-reflecting-map-equivalence-relation R q x) b) ( λ v → - ( reflects-map-reflecting-map-Equivalence-Relation R q + ( reflects-map-reflecting-map-equivalence-relation R q ( map-inv-equiv ( compute-P (pr1 v)) ( inv-tr (type-Prop ∘ P) (pr2 v) p))) ∙ @@ -468,38 +468,38 @@ module _ is-torsorial-P = pair center-total-P contraction-total-P β : (b : type-Set B) → - map-reflecting-map-Equivalence-Relation R q x = b → type-Prop (P b) - β .(map-reflecting-map-Equivalence-Relation R q x) refl = point-P + map-reflecting-map-equivalence-relation R q x = b → type-Prop (P b) + β .(map-reflecting-map-equivalence-relation R q x) refl = point-P γ : (b : type-Set B) → is-equiv (β b) γ = fundamental-theorem-id is-torsorial-P β δ : (b : type-Set B) → - (map-reflecting-map-Equivalence-Relation R q x = b) ≃ type-Prop (P b) + (map-reflecting-map-equivalence-relation R q x = b) ≃ type-Prop (P b) δ b = pair (β b) (γ b) apply-effectiveness-is-set-quotient : - (q : reflecting-map-Equivalence-Relation R (type-Set B)) → + (q : reflecting-map-equivalence-relation R (type-Set B)) → ({l : Level} → is-set-quotient l R B q) → {x y : A} → - ( map-reflecting-map-Equivalence-Relation R q x = - map-reflecting-map-Equivalence-Relation R q y) → - sim-Equivalence-Relation R x y + ( map-reflecting-map-equivalence-relation R q x = + map-reflecting-map-equivalence-relation R q y) → + sim-equivalence-relation R x y apply-effectiveness-is-set-quotient q H {x} {y} = map-equiv (is-effective-is-set-quotient q H x y) apply-effectiveness-is-set-quotient' : - (q : reflecting-map-Equivalence-Relation R (type-Set B)) → + (q : reflecting-map-equivalence-relation R (type-Set B)) → ({l : Level} → is-set-quotient l R B q) → - {x y : A} → sim-Equivalence-Relation R x y → - map-reflecting-map-Equivalence-Relation R q x = - map-reflecting-map-Equivalence-Relation R q y + {x y : A} → sim-equivalence-relation R x y → + map-reflecting-map-equivalence-relation R q x = + map-reflecting-map-equivalence-relation R q y apply-effectiveness-is-set-quotient' q H {x} {y} = map-inv-equiv (is-effective-is-set-quotient q H x y) is-surjective-and-effective-is-set-quotient : - (q : reflecting-map-Equivalence-Relation R (type-Set B)) → + (q : reflecting-map-equivalence-relation R (type-Set B)) → ({l : Level} → is-set-quotient l R B q) → - is-surjective-and-effective R (map-reflecting-map-Equivalence-Relation R q) + is-surjective-and-effective R (map-reflecting-map-equivalence-relation R q) pr1 (is-surjective-and-effective-is-set-quotient q Q) = is-surjective-is-set-quotient R B q Q pr2 (is-surjective-and-effective-is-set-quotient q Q) = @@ -510,26 +510,26 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (B : Set l3) - (q : reflecting-map-Equivalence-Relation R (type-Set B)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (B : Set l3) + (q : reflecting-map-equivalence-relation R (type-Set B)) where private module _ ( E : is-surjective-and-effective R - ( map-reflecting-map-Equivalence-Relation R q)) + ( map-reflecting-map-equivalence-relation R q)) { l : Level} ( X : Set l) - ( f : reflecting-map-Equivalence-Relation R (type-Set X)) + ( f : reflecting-map-equivalence-relation R (type-Set X)) where P-Prop : (b : type-Set B) (x : type-Set X) → Prop (l1 ⊔ l3 ⊔ l) P-Prop b x = ∃-Prop A ( λ a → - ( map-reflecting-map-Equivalence-Relation R f a = x) × - ( map-reflecting-map-Equivalence-Relation R q a = b)) + ( map-reflecting-map-equivalence-relation R f a = x) × + ( map-reflecting-map-equivalence-relation R q a = b)) P : (b : type-Set B) (x : type-Set X) → UU (l1 ⊔ l3 ⊔ l) P b x = type-Prop (P-Prop b x) @@ -562,7 +562,7 @@ module _ α = map-inv-is-equiv ( dependent-universal-property-surj-is-surjective - ( map-reflecting-map-Equivalence-Relation R q) + ( map-reflecting-map-equivalence-relation R q) ( pr1 E) ( λ b → pair @@ -572,12 +572,12 @@ module _ β : (a : A) → - ( α (map-reflecting-map-Equivalence-Relation R q a)) = + ( α (map-reflecting-map-equivalence-relation R q a)) = ( pair (pr1 f a) (unit-trunc-Prop (pair a (pair refl refl)))) β = htpy-eq ( is-section-map-inv-is-equiv ( dependent-universal-property-surj-is-surjective - ( map-reflecting-map-Equivalence-Relation R q) + ( map-reflecting-map-equivalence-relation R q) ( pr1 E) ( λ b → pair (Σ (type-Set X) (P b)) (is-prop-total-P b))) ( λ a → @@ -587,7 +587,7 @@ module _ { l : Level} ( E : is-surjective-and-effective R - ( map-reflecting-map-Equivalence-Relation R q)) → + ( map-reflecting-map-equivalence-relation R q)) → is-set-quotient l R B q is-set-quotient-is-surjective-and-effective E X = is-equiv-is-contr-map @@ -597,20 +597,20 @@ module _ ( equiv-tot ( λ _ → equiv-ap-inclusion-subtype - ( reflects-Equivalence-Relation-Prop R X))) + ( reflects-prop-equivalence-relation R X))) ( is-prop-map-is-emb ( is-epimorphism-is-surjective-Set (pr1 E) X) ( pr1 f))) ( pair ( λ b → pr1 (α E X f b)) ( eq-type-subtype - ( reflects-Equivalence-Relation-Prop R X) + ( reflects-prop-equivalence-relation R X) ( eq-htpy (λ a → ap pr1 (β E X f a)))))) universal-property-set-quotient-is-surjective-and-effective : ( E : is-surjective-and-effective R - ( map-reflecting-map-Equivalence-Relation R q)) + ( map-reflecting-map-equivalence-relation R q)) { l : Level} → universal-property-set-quotient l R B q universal-property-set-quotient-is-surjective-and-effective E = universal-property-set-quotient-is-set-quotient R B q @@ -621,7 +621,7 @@ module _ ```agda module _ - {l1 l2 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) + {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where universal-property-equivalence-class : @@ -648,17 +648,17 @@ module _ map-universal-property-equivalence-class : {l4 : Level} (C : Set l4) - (g : reflecting-map-Equivalence-Relation R (type-Set C)) → + (g : reflecting-map-equivalence-relation R (type-Set C)) → equivalence-class R → type-Set C map-universal-property-equivalence-class C g = pr1 (center (universal-property-equivalence-class C g)) triangle-universal-property-equivalence-class : {l4 : Level} (C : Set l4) - (g : reflecting-map-Equivalence-Relation R (type-Set C)) → + (g : reflecting-map-equivalence-relation R (type-Set C)) → ( ( map-universal-property-equivalence-class C g) ∘ ( class R)) ~ - ( map-reflecting-map-Equivalence-Relation R g) + ( map-reflecting-map-equivalence-relation R g) triangle-universal-property-equivalence-class C g = pr2 (center (universal-property-equivalence-class C g)) ``` @@ -667,18 +667,18 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (Q : Set l3) - (q : reflecting-map-Equivalence-Relation R (type-Set Q)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (Q : Set l3) + (q : reflecting-map-equivalence-relation R (type-Set Q)) (U : {l : Level} → is-set-quotient l R Q q) where ind-is-set-quotient : {l : Level} (P : type-Set Q → Prop l) → - ((a : A) → type-Prop (P (map-reflecting-map-Equivalence-Relation R q a))) → + ((a : A) → type-Prop (P (map-reflecting-map-equivalence-relation R q a))) → ((x : type-Set Q) → type-Prop (P x)) ind-is-set-quotient = apply-dependent-universal-property-surj-is-surjective - ( map-reflecting-map-Equivalence-Relation R q) + ( map-reflecting-map-equivalence-relation R q) ( is-surjective-is-set-quotient R Q q U) ``` @@ -686,19 +686,19 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} (R : Equivalence-Relation l2 A) (Q : Set l3) - (q : reflecting-map-Equivalence-Relation R (type-Set Q)) + {l1 l2 l3 : Level} {A : UU l1} (R : equivalence-relation l2 A) (Q : Set l3) + (q : reflecting-map-equivalence-relation R (type-Set Q)) (U : {l : Level} → is-set-quotient l R Q q) where is-injective-map-universal-property-set-quotient-is-set-quotient : {l4 : Level} (B : Set l4) - (f : reflecting-map-Equivalence-Relation R (type-Set B)) + (f : reflecting-map-equivalence-relation R (type-Set B)) ( H : (x y : A) → - ( map-reflecting-map-Equivalence-Relation R f x = - map-reflecting-map-Equivalence-Relation R f y) → - sim-Equivalence-Relation R x y) → + ( map-reflecting-map-equivalence-relation R f x = + map-reflecting-map-equivalence-relation R f y) → + sim-equivalence-relation R x y) → is-injective ( map-universal-property-set-quotient-is-set-quotient R Q q U B f) is-injective-map-universal-property-set-quotient-is-set-quotient @@ -713,12 +713,12 @@ module _ ( ind-is-set-quotient R Q q U ( λ v → function-Prop - ( ( map-reflecting-map-Equivalence-Relation R f a) = + ( ( map-reflecting-map-equivalence-relation R f a) = ( map-universal-property-set-quotient-is-set-quotient R Q q U B f v)) - ( Id-Prop Q (map-reflecting-map-Equivalence-Relation R q a) v)) + ( Id-Prop Q (map-reflecting-map-equivalence-relation R q a) v)) ( λ b p → - reflects-map-reflecting-map-Equivalence-Relation R q + reflects-map-reflecting-map-equivalence-relation R q ( H a b ( ( p) ∙ ( triangle-universal-property-set-quotient-is-set-quotient @@ -733,11 +733,11 @@ module _ is-emb-map-universal-property-set-quotient-is-set-quotient : {l4 : Level} (B : Set l4) - (f : reflecting-map-Equivalence-Relation R (type-Set B)) + (f : reflecting-map-equivalence-relation R (type-Set B)) ( H : (x y : A) → - ( map-reflecting-map-Equivalence-Relation R f x = - map-reflecting-map-Equivalence-Relation R f y) → - sim-Equivalence-Relation R x y) → + ( map-reflecting-map-equivalence-relation R f x = + map-reflecting-map-equivalence-relation R f y) → + sim-equivalence-relation R x y) → is-emb ( map-universal-property-set-quotient-is-set-quotient R Q q U B f) is-emb-map-universal-property-set-quotient-is-set-quotient B f H = diff --git a/src/foundation/universal-property-set-truncation.lagda.md b/src/foundation/universal-property-set-truncation.lagda.md index 6835733581..c1bdf47e4a 100644 --- a/src/foundation/universal-property-set-truncation.lagda.md +++ b/src/foundation/universal-property-set-truncation.lagda.md @@ -56,7 +56,7 @@ universal-property-set-truncation : (B : Set l2) (f : A → type-Set B) → UU (lsuc l ⊔ l1 ⊔ l2) universal-property-set-truncation l {A = A} B f = (C : Set l) (g : A → type-Set C) → - is-contr (Σ (type-hom-Set B C) (λ h → h ∘ f ~ g)) + is-contr (Σ (hom-Set B C) (λ h → h ∘ f ~ g)) ``` ### The dependent universal property of set truncations @@ -88,7 +88,7 @@ abstract is-set-truncation-universal-property l B f up-f C = is-equiv-is-contr-map ( λ g → is-contr-equiv - ( Σ (type-hom-Set B C) (λ h → h ∘ f ~ g)) + ( Σ (hom-Set B C) (λ h → h ∘ f ~ g)) ( equiv-tot (λ h → equiv-funext)) ( up-f C g)) ``` @@ -103,14 +103,14 @@ abstract is-set-truncation l B f → universal-property-set-truncation l B f universal-property-is-set-truncation l B f is-settr-f C g = is-contr-equiv' - ( Σ (type-hom-Set B C) (λ h → (h ∘ f) = g)) + ( Σ (hom-Set B C) (λ h → (h ∘ f) = g)) ( equiv-tot (λ h → equiv-funext)) ( is-contr-map-is-equiv (is-settr-f C) g) map-is-set-truncation : {l1 l2 l3 : Level} {A : UU l1} (B : Set l2) (f : A → type-Set B) → ({l : Level} → is-set-truncation l B f) → - (C : Set l3) (g : A → type-Set C) → type-hom-Set B C + (C : Set l3) (g : A → type-Set C) → hom-Set B C map-is-set-truncation B f is-settr-f C g = pr1 (center (universal-property-is-set-truncation _ B f is-settr-f C g)) @@ -186,7 +186,7 @@ abstract {l1 l2 l3 : Level} {A : UU l1} (B : Set l2) (f : A → type-Set B) → ( {l : Level} → is-set-quotient l - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f)) → is-set-truncation l3 B f @@ -194,7 +194,7 @@ abstract is-equiv-comp ( pr1) ( precomp-Set-Quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( X)) @@ -202,8 +202,8 @@ abstract ( is-equiv-pr1-is-contr ( λ h → is-proof-irrelevant-is-prop - ( is-prop-reflects-Equivalence-Relation - ( mere-eq-Equivalence-Relation A) X h) + ( is-prop-reflects-equivalence-relation + ( mere-eq-equivalence-relation A) X h) ( reflects-mere-eq X h))) ``` @@ -215,22 +215,22 @@ abstract {l1 l2 l3 : Level} {A : UU l1} (B : Set l2) (f : A → type-Set B) → ( {l : Level} → is-set-truncation l B f) → is-set-quotient l3 - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) is-set-quotient-is-set-truncation {A = A} B f H X = is-equiv-right-factor ( pr1) ( precomp-Set-Quotient - ( mere-eq-Equivalence-Relation A) + ( mere-eq-equivalence-relation A) ( B) ( reflecting-map-mere-eq B f) ( X)) ( is-equiv-pr1-is-contr ( λ h → is-proof-irrelevant-is-prop - ( is-prop-reflects-Equivalence-Relation - ( mere-eq-Equivalence-Relation A) X h) + ( is-prop-reflects-equivalence-relation + ( mere-eq-equivalence-relation A) X h) ( reflects-mere-eq X h))) ( H X) ``` diff --git a/src/foundation/vectors-set-quotients.lagda.md b/src/foundation/vectors-set-quotients.lagda.md index 4d56e123e6..063b44e67e 100644 --- a/src/foundation/vectors-set-quotients.lagda.md +++ b/src/foundation/vectors-set-quotients.lagda.md @@ -56,17 +56,17 @@ of the set quotients of each `Ai`. ### The induced relation on the vector of types ```agda -all-sim-Equivalence-Relation : +all-sim-equivalence-relation : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → - ( Equivalence-Relation l2 (multivariable-input n A)) -all-sim-Equivalence-Relation {l1} {l2} zero-ℕ A R = - raise-indiscrete-Equivalence-Relation l2 (raise-unit l1) -all-sim-Equivalence-Relation (succ-ℕ n) A R = - prod-Equivalence-Relation (R (inr star)) - ( all-sim-Equivalence-Relation n + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → + ( equivalence-relation l2 (multivariable-input n A)) +all-sim-equivalence-relation {l1} {l2} zero-ℕ A R = + raise-indiscrete-equivalence-relation l2 (raise-unit l1) +all-sim-equivalence-relation (succ-ℕ n) A R = + prod-equivalence-relation (R (inr star)) + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))) ``` @@ -78,7 +78,7 @@ set-quotient-vector : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → UU (l1 ⊔ l2) set-quotient-vector n A R = multivariable-input n (λ i → ( set-quotient (R i))) @@ -87,7 +87,7 @@ is-set-set-quotient-vector : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → is-set (set-quotient-vector n A R) is-set-set-quotient-vector zero-ℕ A R = is-set-raise-unit is-set-set-quotient-vector (succ-ℕ n) A R = @@ -101,7 +101,7 @@ set-quotient-vector-Set : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → Set (l1 ⊔ l2) pr1 (set-quotient-vector-Set n A R) = set-quotient-vector n A R @@ -112,7 +112,7 @@ quotient-vector-map : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → multivariable-input n A → set-quotient-vector n A R quotient-vector-map zero-ℕ A R a = raise-star @@ -128,9 +128,9 @@ reflects-quotient-vector-map : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → - reflects-Equivalence-Relation - ( all-sim-Equivalence-Relation n A R) + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → + reflects-equivalence-relation + ( all-sim-equivalence-relation n A R) ( quotient-vector-map n A R) reflects-quotient-vector-map zero-ℕ A R p = refl reflects-quotient-vector-map (succ-ℕ n) A R (p , p') = @@ -144,9 +144,9 @@ reflecting-map-quotient-vector-map : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → - reflecting-map-Equivalence-Relation - ( all-sim-Equivalence-Relation n A R) + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → + reflecting-map-equivalence-relation + ( all-sim-equivalence-relation n A R) ( set-quotient-vector n A R) pr1 (reflecting-map-quotient-vector-map n A R) = quotient-vector-map n A R @@ -157,13 +157,13 @@ equiv-set-quotient-vector : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → - set-quotient-vector n A R ≃ set-quotient (all-sim-Equivalence-Relation n A R) + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → + set-quotient-vector n A R ≃ set-quotient (all-sim-equivalence-relation n A R) pr1 (equiv-set-quotient-vector zero-ℕ A R) _ = quotient-map _ raise-star pr1 (pr1 (pr2 (equiv-set-quotient-vector zero-ℕ A R))) _ = raise-star pr2 (pr1 (pr2 (equiv-set-quotient-vector {l1} {l2} zero-ℕ A R))) = induction-set-quotient - ( raise-indiscrete-Equivalence-Relation l2 (raise-unit l1)) + ( raise-indiscrete-equivalence-relation l2 (raise-unit l1)) ( λ x → pair _ (is-set-set-quotient _ _ x)) ( λ x → apply-effectiveness-quotient-map' _ raise-star) pr1 (pr2 (pr2 (equiv-set-quotient-vector zero-ℕ A R))) _ = raise-star @@ -176,11 +176,11 @@ equiv-set-quotient-vector (succ-ℕ n) A R = ( λ x → R (inl x))) ≃ set-quotient (R (inr star)) × ( set-quotient - (all-sim-Equivalence-Relation n + (all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x)))) by lemma - ≃ set-quotient (all-sim-Equivalence-Relation (succ-ℕ n) A R) + ≃ set-quotient (all-sim-equivalence-relation (succ-ℕ n) A R) by (equiv-quotient-prod-prod-set-quotient _ _) where lemma : @@ -190,7 +190,7 @@ equiv-set-quotient-vector (succ-ℕ n) A R = (λ x → R (inl x)))) ≃ ( set-quotient (R (inr star)) × ( set-quotient - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))))) pr1 (pr1 lemma (qa0 , qa)) = qa0 @@ -212,10 +212,10 @@ map-equiv-equiv-set-quotient-vector-quotient-map : { l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( map-equiv (equiv-set-quotient-vector n A R) ∘ ( quotient-vector-map n A R)) ~ - ( quotient-map (all-sim-Equivalence-Relation n A R)) + ( quotient-map (all-sim-equivalence-relation n A R)) map-equiv-equiv-set-quotient-vector-quotient-map zero-ℕ A R (map-raise star) = refl map-equiv-equiv-set-quotient-vector-quotient-map (succ-ℕ n) A R (a0 , a) = @@ -229,7 +229,7 @@ map-equiv-equiv-set-quotient-vector-quotient-map (succ-ℕ n) A R (a0 , a) = ( λ x → R (inl x)) a) ∙ ( triangle-uniqueness-prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n (λ z → tail-functional-vec n A z) + ( all-sim-equivalence-relation n (λ z → tail-functional-vec n A z) ( λ i → R (inl i))) ( a0 , a)) @@ -237,10 +237,10 @@ inv-precomp-vector-set-quotient : { l l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → (X : Set l) → - reflecting-map-Equivalence-Relation - ( all-sim-Equivalence-Relation n A R) + reflecting-map-equivalence-relation + ( all-sim-equivalence-relation n A R) ( type-Set X) → ((set-quotient-vector n A R) → type-Set X) inv-precomp-vector-set-quotient zero-ℕ A R X f (map-raise star) = @@ -248,7 +248,7 @@ inv-precomp-vector-set-quotient zero-ℕ A R X f (map-raise star) = inv-precomp-vector-set-quotient (succ-ℕ n) A R X f (qa0 , qa) = inv-precomp-set-quotient-prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))) ( X) @@ -260,10 +260,10 @@ abstract { l l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( precomp-Set-Quotient - ( all-sim-Equivalence-Relation n A R) + ( all-sim-equivalence-relation n A R) ( set-quotient-vector-Set n A R) ( reflecting-map-quotient-vector-map n A R) ( X)) ∘ @@ -273,10 +273,10 @@ abstract eq-pair-Σ ( eq-htpy (λ where (map-raise star) → refl)) ( eq-is-prop - ( is-prop-reflects-Equivalence-Relation - ( raise-indiscrete-Equivalence-Relation l2 (raise-unit l1)) + ( is-prop-reflects-equivalence-relation + ( raise-indiscrete-equivalence-relation l2 (raise-unit l1)) ( X) - ( map-reflecting-map-Equivalence-Relation _ f))) + ( map-reflecting-map-equivalence-relation _ f))) is-section-inv-precomp-vector-set-quotient (succ-ℕ n) A R X f = eq-pair-Σ ( eq-htpy @@ -284,35 +284,35 @@ abstract ( ap ( inv-precomp-set-quotient-prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))) X f) ( eq-pair-Σ refl ( map-equiv-equiv-set-quotient-vector-quotient-map n _ _ a)) ∙ ( htpy-eq ( ap - ( map-reflecting-map-Equivalence-Relation _) + ( map-reflecting-map-equivalence-relation _) ( is-section-inv-precomp-set-quotient-prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))) X f)) ( a0 , a))))) ( eq-is-prop - ( is-prop-reflects-Equivalence-Relation - ( all-sim-Equivalence-Relation (succ-ℕ n) A R) + ( is-prop-reflects-equivalence-relation + ( all-sim-equivalence-relation (succ-ℕ n) A R) ( X) - ( map-reflecting-map-Equivalence-Relation _ f))) + ( map-reflecting-map-equivalence-relation _ f))) section-precomp-vector-set-quotient : { l l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( section ( precomp-Set-Quotient - ( all-sim-Equivalence-Relation n A R) + ( all-sim-equivalence-relation n A R) ( set-quotient-vector-Set n A R) ( reflecting-map-quotient-vector-map n A R) ( X))) @@ -326,11 +326,11 @@ abstract { l l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( X : Set l) → ( retraction ( precomp-Set-Quotient - ( all-sim-Equivalence-Relation n A R) + ( all-sim-equivalence-relation n A R) ( set-quotient-vector-Set n A R) ( reflecting-map-quotient-vector-map n A R) ( X))) @@ -343,16 +343,16 @@ abstract is-inv-map-inv-equiv-f ∙ lemma-f where precomp-f : - reflecting-map-Equivalence-Relation - ( prod-Equivalence-Relation (R (inr star)) - ( all-sim-Equivalence-Relation n + reflecting-map-equivalence-relation + ( prod-equivalence-relation (R (inr star)) + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x)))) ( type-Set X) precomp-f = precomp-Set-Quotient - ( prod-Equivalence-Relation (R (inr star)) - ( all-sim-Equivalence-Relation n + ( prod-equivalence-relation (R (inr star)) + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x)))) ( set-quotient-vector-Set (succ-ℕ n) A R) @@ -362,7 +362,7 @@ abstract ( set-quotient-vector (succ-ℕ n) A R) → ( prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x)))) set-quotient-vector-prod-set-quotient (qa0' , qa') = @@ -371,7 +371,7 @@ abstract map-inv-equiv-f : ( prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x)))) → ( type-Set X) @@ -392,22 +392,22 @@ abstract is-retraction-inv-precomp-f : ( inv-precomp-set-quotient-prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))) ( X) ( precomp-Set-Quotient - ( prod-Equivalence-Relation (R (inr star)) - ( all-sim-Equivalence-Relation n + ( prod-equivalence-relation (R (inr star)) + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x)))) ( prod-set-quotient-Set ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x)))) ( reflecting-map-prod-quotient-map (R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x)))) ( X) @@ -416,7 +416,7 @@ abstract is-retraction-inv-precomp-f = is-retraction-inv-precomp-set-quotient-prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))) ( X) @@ -425,7 +425,7 @@ abstract is-inv-map-inv-equiv-f : ( inv-precomp-set-quotient-prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n + ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))) ( X) @@ -435,7 +435,7 @@ abstract ap ( inv-precomp-set-quotient-prod-set-quotient ( R (inr star)) - ( all-sim-Equivalence-Relation n (tail-functional-vec n A) + ( all-sim-equivalence-relation n (tail-functional-vec n A) ( λ x → R (inl x))) ( X)) ( eq-pair-Σ @@ -449,10 +449,10 @@ abstract ( map-equiv-equiv-set-quotient-vector-quotient-map _ _ _ a)))))) ( eq-is-prop - ( is-prop-reflects-Equivalence-Relation - ( prod-Equivalence-Relation + ( is-prop-reflects-equivalence-relation + ( prod-equivalence-relation ( R (inr star)) - ( all-sim-Equivalence-Relation n _ _)) + ( all-sim-equivalence-relation n _ _)) ( X) _))) ∙ is-retraction-inv-precomp-f @@ -460,9 +460,9 @@ is-set-quotient-vector-set-quotient : { l l1 l2 : Level} ( n : ℕ) ( A : functional-vec (UU l1) n) - ( R : (i : Fin n) → Equivalence-Relation l2 (A i)) → + ( R : (i : Fin n) → equivalence-relation l2 (A i)) → ( is-set-quotient l - ( all-sim-Equivalence-Relation n A R) + ( all-sim-equivalence-relation n A R) ( set-quotient-vector-Set n A R) ( reflecting-map-quotient-vector-map n A R)) pr1 (is-set-quotient-vector-set-quotient n A R X) = diff --git a/src/group-theory.lagda.md b/src/group-theory.lagda.md index 5db11c554a..42f39e0f21 100644 --- a/src/group-theory.lagda.md +++ b/src/group-theory.lagda.md @@ -6,6 +6,7 @@ module group-theory where open import group-theory.abelian-groups public +open import group-theory.abelianization-groups public open import group-theory.addition-homomorphisms-abelian-groups public open import group-theory.automorphism-groups public open import group-theory.cartesian-products-abelian-groups public @@ -69,6 +70,7 @@ open import group-theory.exponents-groups public open import group-theory.free-concrete-group-actions public open import group-theory.free-groups-with-one-generator public open import group-theory.full-subgroups public +open import group-theory.full-subsemigroups public open import group-theory.function-abelian-groups public open import group-theory.function-commutative-monoids public open import group-theory.function-groups public @@ -91,6 +93,7 @@ open import group-theory.homomorphisms-groups-equipped-with-normal-subgroups pub open import group-theory.homomorphisms-monoids public open import group-theory.homomorphisms-semigroups public open import group-theory.images-of-group-homomorphisms public +open import group-theory.images-of-semigroup-homomorphisms public open import group-theory.integer-multiples-of-elements-abelian-groups public open import group-theory.integer-powers-of-elements-groups public open import group-theory.intersections-subgroups-abelian-groups public @@ -104,8 +107,9 @@ open import group-theory.isomorphisms-groups public open import group-theory.isomorphisms-monoids public open import group-theory.isomorphisms-semigroups public open import group-theory.iterated-cartesian-products-concrete-groups public -open import group-theory.kernels public +open import group-theory.kernels-homomorphisms-abelian-groups public open import group-theory.kernels-homomorphisms-concrete-groups public +open import group-theory.kernels-homomorphisms-groups public open import group-theory.large-semigroups public open import group-theory.loop-groups-sets public open import group-theory.mere-equivalences-concrete-group-actions public @@ -147,6 +151,8 @@ open import group-theory.principal-group-actions public open import group-theory.principal-torsors-concrete-groups public open import group-theory.products-of-elements-monoids public open import group-theory.products-of-tuples-of-elements-commutative-monoids public +open import group-theory.pullbacks-subgroups public +open import group-theory.pullbacks-subsemigroups public open import group-theory.quotient-groups public open import group-theory.quotient-groups-concrete-groups public open import group-theory.quotients-abelian-groups public @@ -172,9 +178,11 @@ open import group-theory.subsets-abelian-groups public open import group-theory.subsets-commutative-monoids public open import group-theory.subsets-groups public open import group-theory.subsets-monoids public +open import group-theory.subsets-semigroups public open import group-theory.substitution-functor-concrete-group-actions public open import group-theory.substitution-functor-group-actions public open import group-theory.surjective-group-homomorphisms public +open import group-theory.surjective-semigroup-homomorphisms public open import group-theory.symmetric-concrete-groups public open import group-theory.symmetric-groups public open import group-theory.torsion-elements-groups public diff --git a/src/group-theory/abelian-groups.lagda.md b/src/group-theory/abelian-groups.lagda.md index 69e860c4a4..22fb7110a0 100644 --- a/src/group-theory/abelian-groups.lagda.md +++ b/src/group-theory/abelian-groups.lagda.md @@ -11,9 +11,11 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.binary-embeddings open import foundation.binary-equivalences +open import foundation.cartesian-product-types open import foundation.dependent-pair-types open import foundation.embeddings open import foundation.equivalences +open import foundation.full-subtypes open import foundation.function-types open import foundation.homotopies open import foundation.identity-types @@ -25,10 +27,18 @@ open import foundation.universe-levels open import group-theory.central-elements-groups open import group-theory.commutative-monoids +open import group-theory.commutator-subgroups +open import group-theory.commutators-of-elements-groups open import group-theory.conjugation open import group-theory.groups +open import group-theory.homomorphisms-groups open import group-theory.monoids +open import group-theory.nullifying-group-homomorphisms +open import group-theory.pullbacks-subgroups open import group-theory.semigroups +open import group-theory.subgroups +open import group-theory.subgroups-generated-by-families-of-elements-groups +open import group-theory.trivial-subgroups open import lists.concatenation-lists open import lists.lists @@ -40,15 +50,24 @@ open import structured-types.pointed-types-equipped-with-automorphisms ## Idea -Abelian groups are groups of which the group operation is commutative +**Abelian groups** are [groups](group-theory.groups.md) of which the group +operation is commutative. It is common to write abelian groups additively, i.e., +to write + +```text + x + y +``` + +for the group operation of an abelian group, `0` for its unit element, and `-x` +for the inverse of `x`. ## Definition ### The condition of being an abelian group ```agda -is-abelian-group-Prop : {l : Level} → Group l → Prop l -is-abelian-group-Prop G = +is-abelian-prop-Group : {l : Level} → Group l → Prop l +is-abelian-prop-Group G = Π-Prop ( type-Group G) ( λ x → @@ -58,12 +77,12 @@ is-abelian-group-Prop G = Id-Prop (set-Group G) (mul-Group G x y) (mul-Group G y x))) is-abelian-Group : {l : Level} → Group l → UU l -is-abelian-Group G = type-Prop (is-abelian-group-Prop G) +is-abelian-Group G = type-Prop (is-abelian-prop-Group G) is-prop-is-abelian-Group : {l : Level} (G : Group l) → is-prop (is-abelian-Group G) is-prop-is-abelian-Group G = - is-prop-type-Prop (is-abelian-group-Prop G) + is-prop-type-Prop (is-abelian-prop-Group G) ``` ### The type of abelian groups @@ -120,11 +139,14 @@ module _ is-zero-Ab : type-Ab → UU l is-zero-Ab = is-unit-Group group-Ab + is-zero-Ab' : type-Ab → UU l + is-zero-Ab' = is-unit-Group' group-Ab + is-prop-is-zero-Ab : (x : type-Ab) → is-prop (is-zero-Ab x) is-prop-is-zero-Ab = is-prop-is-unit-Group group-Ab - is-zero-ab-Prop : type-Ab → Prop l - is-zero-ab-Prop = is-unit-group-Prop group-Ab + is-zero-prop-Ab : type-Ab → Prop l + is-zero-prop-Ab = is-unit-prop-Group group-Ab left-unit-law-add-Ab : (x : type-Ab) → add-Ab zero-Ab x = x left-unit-law-add-Ab = left-unit-law-mul-Group group-Ab @@ -162,21 +184,21 @@ module _ (a b c : type-Ab) → add-Ab (add-Ab a b) c = add-Ab (add-Ab a c) b right-swap-add-Ab a b c = ( associative-add-Ab a b c) ∙ - ( ( ap (add-Ab a) (commutative-add-Ab b c)) ∙ - ( inv (associative-add-Ab a c b))) + ( ap (add-Ab a) (commutative-add-Ab b c)) ∙ + ( inv (associative-add-Ab a c b)) left-swap-add-Ab : (a b c : type-Ab) → add-Ab a (add-Ab b c) = add-Ab b (add-Ab a c) left-swap-add-Ab a b c = ( inv (associative-add-Ab a b c)) ∙ - ( ( ap (add-Ab' c) (commutative-add-Ab a b)) ∙ - ( associative-add-Ab b a c)) + ( ap (add-Ab' c) (commutative-add-Ab a b)) ∙ + ( associative-add-Ab b a c) distributive-neg-add-Ab : (x y : type-Ab) → neg-Ab (add-Ab x y) = add-Ab (neg-Ab x) (neg-Ab y) distributive-neg-add-Ab x y = - ( distributive-inv-mul-Group group-Ab x y) ∙ + ( distributive-inv-mul-Group group-Ab) ∙ ( commutative-add-Ab (neg-Ab y) (neg-Ab x)) neg-neg-Ab : (x : type-Ab) → neg-Ab (neg-Ab x) = x @@ -194,6 +216,38 @@ module _ transpose-eq-neg-Ab' = transpose-eq-inv-Group' group-Ab ``` +### The underlying commutative monoid of an abelian group + +```agda +module _ + {l : Level} (A : Ab l) + where + + monoid-Ab : Monoid l + pr1 monoid-Ab = semigroup-Ab A + pr1 (pr2 monoid-Ab) = zero-Ab A + pr1 (pr2 (pr2 monoid-Ab)) = left-unit-law-add-Ab A + pr2 (pr2 (pr2 monoid-Ab)) = right-unit-law-add-Ab A + + commutative-monoid-Ab : Commutative-Monoid l + pr1 commutative-monoid-Ab = monoid-Ab + pr2 commutative-monoid-Ab = commutative-add-Ab A +``` + +### The structure of an abelian group + +```agda +structure-abelian-group : + {l1 : Level} → UU l1 → UU l1 +structure-abelian-group X = + Σ (structure-group X) (λ p → is-abelian-Group (compute-structure-group X p)) + +compute-structure-abelian-group : + {l1 : Level} → (X : UU l1) → structure-abelian-group X → Ab l1 +pr1 (compute-structure-abelian-group X (p , q)) = compute-structure-group X p +pr2 (compute-structure-abelian-group X (p , q)) = q +``` + ### Conjugation in an abelian group ```agda @@ -214,26 +268,44 @@ module _ conjugation-Ab' = conjugation-Group' (group-Ab A) ``` -## Properties +### Commutators in an abelian group -### Abelian groups are commutative monoids +```agda +module _ + {l : Level} (A : Ab l) + where + + commutator-Ab : type-Ab A → type-Ab A → type-Ab A + commutator-Ab x y = commutator-Group (group-Ab A) x y +``` + +### The commutator subgroup of an abelian group ```agda module _ {l : Level} (A : Ab l) where - monoid-Ab : Monoid l - pr1 monoid-Ab = semigroup-Ab A - pr1 (pr2 monoid-Ab) = zero-Ab A - pr1 (pr2 (pr2 monoid-Ab)) = left-unit-law-add-Ab A - pr2 (pr2 (pr2 monoid-Ab)) = right-unit-law-add-Ab A + family-of-commutators-Ab : type-Ab A × type-Ab A → type-Ab A + family-of-commutators-Ab = family-of-commutators-Group (group-Ab A) - commutative-monoid-Ab : Commutative-Monoid l - pr1 commutative-monoid-Ab = monoid-Ab - pr2 commutative-monoid-Ab = commutative-add-Ab A + commutator-subgroup-Ab : Subgroup l (group-Ab A) + commutator-subgroup-Ab = commutator-subgroup-Group (group-Ab A) +``` + +### Any abelian group element yields a type equipped with an automorphism + +```agda +module _ + {l : Level} (A : Ab l) (a : type-Ab A) + where + + pointed-type-with-aut-Ab : Pointed-Type-With-Aut l + pointed-type-with-aut-Ab = pointed-type-with-aut-Group (group-Ab A) a ``` +## Properties + ### Addition on an abelian group is a binary equivalence #### Addition on the left is an equivalence @@ -507,6 +579,17 @@ module _ ### Conjugation is the identity function +**Proof:** Consider two elements `x` and `y` of an abelian group. Then + +```text + (x + y) - x = (y + x) - x = y, +``` + +where the last step holds at once since the function `_ - x` is a +[retraction](foundation-core.retractions.md) of the function `_ + x`. + +Note that this is a fairly common way to make quick calculations. + ```agda module _ {l : Level} (A : Ab l) @@ -634,6 +717,8 @@ module _ ### A group is abelian if and only if every element is central +**Proof:** These two conditions are the same on the nose. + ```agda module _ {l : Level} (G : Group l) @@ -648,27 +733,160 @@ module _ every-element-central-is-abelian-Group = id ``` -### Any group element yields a type equipped with an automorphism +### A group is abelian if and only if every commutator is equal to the unit + +**Proof:** For any two elements `u` and `v` in a group we have the +[logical equivalence](foundation.logical-equivalences.md) + +```text + (uv⁻¹ = 1) ↔ (u = v). +``` + +Since the [commutator](group-theory.commutators-of-elements-groups.md) of `x` +and `y` is defined as `[x,y] := (xy)(yx)⁻¹`, we see that the claim is a direct +consequence of this logical equivalence. ```agda module _ - {l : Level} (A : Ab l) (a : type-Ab A) + {l : Level} (G : Group l) where - pointed-type-with-aut-Ab : Pointed-Type-With-Aut l - pointed-type-with-aut-Ab = pointed-type-with-aut-Group (group-Ab A) a + is-abelian-is-unit-commutator-Group : + ((x y : type-Group G) → is-unit-Group G (commutator-Group G x y)) → + is-abelian-Group G + is-abelian-is-unit-commutator-Group H x y = + eq-is-unit-right-div-Group G (H x y) + + is-abelian-is-unit-commutator-Group' : + ((x y : type-Group G) → is-unit-Group' G (commutator-Group G x y)) → + is-abelian-Group G + is-abelian-is-unit-commutator-Group' H x y = + eq-is-unit-right-div-Group G (inv (H x y)) + + is-unit-commutator-is-abelian-Group : + is-abelian-Group G → + (x y : type-Group G) → is-unit-Group G (commutator-Group G x y) + is-unit-commutator-is-abelian-Group H x y = + is-unit-right-div-eq-Group G (H x y) + + is-unit-commutator-is-abelian-Group' : + is-abelian-Group G → + (x y : type-Group G) → is-unit-Group' G (commutator-Group G x y) + is-unit-commutator-is-abelian-Group' H x y = + inv (is-unit-right-div-eq-Group G (H x y)) + +module _ + {l : Level} (A : Ab l) + where + + is-zero-commutator-Ab : + (x y : type-Ab A) → is-zero-Ab A (commutator-Ab A x y) + is-zero-commutator-Ab = + is-unit-commutator-is-abelian-Group (group-Ab A) (commutative-add-Ab A) + + is-zero-commutator-Ab' : + (x y : type-Ab A) → is-zero-Ab' A (commutator-Ab A x y) + is-zero-commutator-Ab' = + is-unit-commutator-is-abelian-Group' (group-Ab A) (commutative-add-Ab A) ``` -### Equip a type with a structure of abelian groups +### A group is abelian if and only if its commutator subgroup is trivial + +**Proof:** We saw above that a group is abelian if and only if every commutator +is the unit element. The latter condition holds if and only if the +[subgroup generated by](group-theory.subgroups-generated-by-families-of-elements-groups.md) +the commutators, i.e., the commutator subgroup, is +[trivial](group-theory.trivial-subgroups.md). ```agda -structure-abelian-group : - {l1 : Level} → UU l1 → UU l1 -structure-abelian-group X = - Σ (structure-group X) (λ p → is-abelian-Group (compute-structure-group X p)) +module _ + {l : Level} (G : Group l) + where -compute-structure-abelian-group : - {l1 : Level} → (X : UU l1) → structure-abelian-group X → Ab l1 -pr1 (compute-structure-abelian-group X (p , q)) = compute-structure-group X p -pr2 (compute-structure-abelian-group X (p , q)) = q + is-abelian-is-trivial-commutator-subgroup-Group : + is-trivial-Subgroup G (commutator-subgroup-Group G) → + is-abelian-Group G + is-abelian-is-trivial-commutator-subgroup-Group H = + is-abelian-is-unit-commutator-Group' G + ( λ x y → + is-family-of-units-is-trivial-subgroup-family-of-elements-Group G + ( family-of-commutators-Group G) + ( H) + ( x , y)) + +module _ + {l : Level} (A : Ab l) + where + + abstract + is-trivial-commutator-subgroup-Ab : + is-trivial-Subgroup (group-Ab A) (commutator-subgroup-Ab A) + is-trivial-commutator-subgroup-Ab = + is-trivial-subgroup-family-of-elements-Group + ( group-Ab A) + ( family-of-commutators-Ab A) + ( λ (x , y) → is-zero-commutator-Ab' A x y) +``` + +### Every group homomorphism into an abelian group nullifies the commutator subgroup + +**Proof:** Consider a [group homomorphism](group-theory.homomorphisms-groups.md) +`f : G → A` into an abelian group `A`. Our goal is to show that `f` +[nullifies](group-theory.nullifying-group-homomorphisms.md) the commutator +subgroup `[G,G]`, i.e., that `[G,G]` is contained in the +[kernel](group-theory.kernels-homomorphisms-groups.md) of `f`. + +Since `A` is abelian it follows that the commutator subgroup of `A` is +[trivial](group-theory.trivial-subgroups.md). Furthermore, any group +homomorphism maps the commutator subgroup to the commutator subgroup, i.e., we +have `f [G,G] ⊆ [A,A]`. Since the commutator subgroup `[A,A]` is trivial, this +means that `f` nullifies the commutator subgroup of `G`. + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (A : Ab l2) + where + + nullifies-commutator-normal-subgroup-hom-group-Ab : + (f : hom-Group G (group-Ab A)) → + nullifies-normal-subgroup-hom-Group G + ( group-Ab A) + ( f) + ( commutator-normal-subgroup-Group G) + nullifies-commutator-normal-subgroup-hom-group-Ab f = + transitive-leq-Subgroup G + ( commutator-subgroup-Group G) + ( pullback-Subgroup G + ( group-Ab A) + ( f) + ( commutator-subgroup-Group (group-Ab A))) + ( pullback-Subgroup G (group-Ab A) f (trivial-Subgroup (group-Ab A))) + ( λ x → is-trivial-commutator-subgroup-Ab A _) + ( preserves-commutator-subgroup-hom-Group G (group-Ab A) f) + + is-equiv-hom-nullifying-hom-group-Ab : + is-equiv + ( hom-nullifying-hom-Group G + ( group-Ab A) + ( commutator-normal-subgroup-Group G)) + is-equiv-hom-nullifying-hom-group-Ab = + is-equiv-inclusion-is-full-subtype + ( λ f → + nullifies-normal-subgroup-prop-hom-Group G + ( group-Ab A) + ( f) + ( commutator-normal-subgroup-Group G)) + ( nullifies-commutator-normal-subgroup-hom-group-Ab) + + compute-nullifying-hom-group-Ab : + nullifying-hom-Group G (group-Ab A) (commutator-normal-subgroup-Group G) ≃ + hom-Group G (group-Ab A) + compute-nullifying-hom-group-Ab = + equiv-inclusion-is-full-subtype + ( λ f → + nullifies-normal-subgroup-prop-hom-Group G + ( group-Ab A) + ( f) + ( commutator-normal-subgroup-Group G)) + ( nullifies-commutator-normal-subgroup-hom-group-Ab) ``` diff --git a/src/group-theory/abelianization-groups.lagda.md b/src/group-theory/abelianization-groups.lagda.md new file mode 100644 index 0000000000..fb0f88c5ad --- /dev/null +++ b/src/group-theory/abelianization-groups.lagda.md @@ -0,0 +1,460 @@ +# Abelianization of groups + +```agda +{-# OPTIONS --lossy-unification #-} + +module group-theory.abelianization-groups where +``` + +
Imports + +```agda +open import category-theory.adjunctions-large-categories +open import category-theory.adjunctions-large-precategories +open import category-theory.functors-large-categories +open import category-theory.functors-large-precategories +open import category-theory.natural-transformations-functors-large-categories +open import category-theory.natural-transformations-functors-large-precategories + +open import foundation.commuting-squares-of-maps +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.function-types +open import foundation.identity-types +open import foundation.set-quotients +open import foundation.sets +open import foundation.universe-levels +open import foundation.whiskering-homotopies + +open import group-theory.abelian-groups +open import group-theory.category-of-abelian-groups +open import group-theory.category-of-groups +open import group-theory.commutator-subgroups +open import group-theory.commuting-squares-of-group-homomorphisms +open import group-theory.functoriality-quotient-groups +open import group-theory.groups +open import group-theory.homomorphisms-abelian-groups +open import group-theory.homomorphisms-groups +open import group-theory.normal-subgroups +open import group-theory.nullifying-group-homomorphisms +open import group-theory.quotient-groups +``` + +
+ +## Idea + +Consider a [group homomorphism](group-theory.homomorphisms-groups.md) +`f : G → A` from a [group](group-theory.groups.md) `G` into an +[abelian group](group-theory.abelian-groups.md) `A`. We say that `f` **is an +abelianization** of `G` if the precomposition function + +```text + - ∘ f : hom A B → hom G B +``` + +is an [equivalence](foundation-core.equivalences.md) for any abelian group `B`. + +The **abelianization** `Gᵃᵇ` of a group `G` always exists, and can be +constructed as the [quotient group](group-theory.quotient-groups.md) `G/[G,G]` +of `G` modulo its [commutator subgroup](group-theory.commutator-subgroups.md). +Therefore we obtain an +[adjunction](category-theory.adjunctions-large-categories.md) + +```text + hom Gᵃᵇ A ≃ hom G A, +``` + +i.e., the abelianization is left adjoint to the inclusion functor from the +[category of abelian groups](group-theory.category-of-abelian-groups.md) into +the [category of groups](group-theory.category-of-groups.md). + +## Definitions + +### The predicate of being an abelianization + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (A : Ab l2) (f : hom-Group G (group-Ab A)) + where + + is-abelianization-Group : UUω + is-abelianization-Group = + {l : Level} (B : Ab l) → + is-equiv (λ h → comp-hom-Group G (group-Ab A) (group-Ab B) h f) +``` + +### The abelianization of a group + +```agda +module _ + {l1 : Level} (G : Group l1) + where + + group-abelianization-Group : Group l1 + group-abelianization-Group = + quotient-Group G (commutator-normal-subgroup-Group G) + + hom-abelianization-Group : hom-Group G group-abelianization-Group + hom-abelianization-Group = + quotient-hom-Group G (commutator-normal-subgroup-Group G) + + set-abelianization-Group : Set l1 + set-abelianization-Group = set-Group group-abelianization-Group + + type-abelianization-Group : UU l1 + type-abelianization-Group = type-Group group-abelianization-Group + + zero-abelianization-Group : type-abelianization-Group + zero-abelianization-Group = unit-Group group-abelianization-Group + + add-abelianization-Group : + (x y : type-abelianization-Group) → type-abelianization-Group + add-abelianization-Group = mul-Group group-abelianization-Group + + neg-abelianization-Group : + type-abelianization-Group → type-abelianization-Group + neg-abelianization-Group = inv-Group group-abelianization-Group + + associative-add-abelianization-Group : + (x y z : type-abelianization-Group) → + add-abelianization-Group (add-abelianization-Group x y) z = + add-abelianization-Group x (add-abelianization-Group y z) + associative-add-abelianization-Group = + associative-mul-Group group-abelianization-Group + + left-unit-law-add-abelianization-Group : + (x : type-abelianization-Group) → + add-abelianization-Group zero-abelianization-Group x = x + left-unit-law-add-abelianization-Group = + left-unit-law-mul-Group group-abelianization-Group + + right-unit-law-add-abelianization-Group : + (x : type-abelianization-Group) → + add-abelianization-Group x zero-abelianization-Group = x + right-unit-law-add-abelianization-Group = + right-unit-law-mul-Group group-abelianization-Group + + left-inverse-law-add-abelianization-Group : + (x : type-abelianization-Group) → + add-abelianization-Group (neg-abelianization-Group x) x = + zero-abelianization-Group + left-inverse-law-add-abelianization-Group = + left-inverse-law-mul-Group group-abelianization-Group + + right-inverse-law-add-abelianization-Group : + (x : type-abelianization-Group) → + add-abelianization-Group x (neg-abelianization-Group x) = + zero-abelianization-Group + right-inverse-law-add-abelianization-Group = + right-inverse-law-mul-Group group-abelianization-Group + + map-abelianization-Group : + type-Group G → type-abelianization-Group + map-abelianization-Group = + map-hom-Group G group-abelianization-Group hom-abelianization-Group + + compute-add-abelianization-Group : + (x y : type-Group G) → + add-abelianization-Group + ( map-abelianization-Group x) + ( map-abelianization-Group y) = + map-abelianization-Group (mul-Group G x y) + compute-add-abelianization-Group = + compute-mul-quotient-Group G (commutator-normal-subgroup-Group G) + + abstract + commutative-add-abelianization-Group : + (x y : type-abelianization-Group) → + add-abelianization-Group x y = add-abelianization-Group y x + commutative-add-abelianization-Group = + double-induction-quotient-Group G G + ( commutator-normal-subgroup-Group G) + ( commutator-normal-subgroup-Group G) + ( λ x y → Id-Prop set-abelianization-Group _ _) + ( λ x y → + ( compute-add-abelianization-Group x y) ∙ + ( apply-effectiveness-map-quotient-hom-Group' G + ( commutator-normal-subgroup-Group G) + ( sim-left-sim-congruence-Normal-Subgroup G + ( commutator-normal-subgroup-Group G) + ( mul-Group G x y) + ( mul-Group G y x) + ( contains-commutator-commutator-subgroup-Group G x y))) ∙ + ( inv (compute-add-abelianization-Group y x))) + + abelianization-Group : Ab l1 + pr1 abelianization-Group = group-abelianization-Group + pr2 abelianization-Group = commutative-add-abelianization-Group +``` + +### The abelianization functor + +```agda +abelianization-hom-Group : + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) → + hom-Ab (abelianization-Group G) (abelianization-Group H) +abelianization-hom-Group G H f = + hom-quotient-Group G H + ( commutator-normal-subgroup-Group G) + ( commutator-normal-subgroup-Group H) + ( f , preserves-commutator-subgroup-hom-Group G H f) + +preserves-id-abelianization-functor-Group : + {l1 : Level} (G : Group l1) → + abelianization-hom-Group G G (id-hom-Group G) = + id-hom-Ab (abelianization-Group G) +preserves-id-abelianization-functor-Group G = + preserves-id-hom-quotient-Group' G + ( commutator-normal-subgroup-Group G) + ( preserves-commutator-subgroup-hom-Group G G (id-hom-Group G)) + +preserves-comp-abelianization-functor-Group : + {l1 l2 l3 : Level} (G : Group l1) (H : Group l2) (K : Group l3) + (g : hom-Group H K) (f : hom-Group G H) → + abelianization-hom-Group G K (comp-hom-Group G H K g f) = + comp-hom-Ab + ( abelianization-Group G) + ( abelianization-Group H) + ( abelianization-Group K) + ( abelianization-hom-Group H K g) + ( abelianization-hom-Group G H f) +preserves-comp-abelianization-functor-Group G H K g f = + preserves-comp-hom-quotient-Group' G H K + ( commutator-normal-subgroup-Group G) + ( commutator-normal-subgroup-Group H) + ( commutator-normal-subgroup-Group K) + ( g , preserves-commutator-subgroup-hom-Group H K g) + ( f , preserves-commutator-subgroup-hom-Group G H f) + ( preserves-commutator-subgroup-hom-Group G K (comp-hom-Group G H K g f)) + +abelianization-functor-Group : + functor-Large-Category id Group-Large-Category Ab-Large-Category +obj-functor-Large-Precategory + abelianization-functor-Group = + abelianization-Group +hom-functor-Large-Precategory + abelianization-functor-Group {l1} {l2} {G} {H} = + abelianization-hom-Group G H +preserves-comp-functor-Large-Precategory + abelianization-functor-Group {l1} {l2} {l3} {G} {H} {K} = + preserves-comp-abelianization-functor-Group G H K +preserves-id-functor-Large-Precategory + abelianization-functor-Group {l1} {G} = + preserves-id-abelianization-functor-Group G +``` + +### The unit of the abelianization adjunction + +```agda +hom-unit-abelianization-Group : + {l1 : Level} (G : Group l1) → hom-Group G (group-abelianization-Group G) +hom-unit-abelianization-Group G = + quotient-hom-Group G (commutator-normal-subgroup-Group G) + +naturality-unit-abelianization-Group : + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) → + coherence-square-hom-Group G H + ( group-abelianization-Group G) + ( group-abelianization-Group H) + ( f) + ( hom-unit-abelianization-Group G) + ( hom-unit-abelianization-Group H) + ( abelianization-hom-Group G H f) +naturality-unit-abelianization-Group G H f = + naturality-hom-quotient-Group G H + ( commutator-normal-subgroup-Group G) + ( commutator-normal-subgroup-Group H) + ( f , preserves-commutator-subgroup-hom-Group G H f) + +naturality-unit-abelianization-Group' : + naturality-family-of-morphisms-functor-Large-Category + ( Group-Large-Category) + ( Group-Large-Category) + ( id-functor-Large-Category Group-Large-Category) + ( comp-functor-Large-Category + ( Group-Large-Category) + ( Ab-Large-Category) + ( Group-Large-Category) + ( forgetful-functor-Ab) + ( abelianization-functor-Group)) + ( hom-unit-abelianization-Group) +naturality-unit-abelianization-Group' {X = G} {H} f = + eq-htpy-hom-Group G + ( group-abelianization-Group H) + ( naturality-unit-abelianization-Group G H f) + +unit-abelianization-Group : + natural-transformation-Large-Category + ( Group-Large-Category) + ( Group-Large-Category) + ( id-functor-Large-Category Group-Large-Category) + ( comp-functor-Large-Category + ( Group-Large-Category) + ( Ab-Large-Category) + ( Group-Large-Category) + ( forgetful-functor-Ab) + ( abelianization-functor-Group)) + +hom-natural-transformation-Large-Precategory + unit-abelianization-Group = + hom-unit-abelianization-Group +naturality-natural-transformation-Large-Precategory + unit-abelianization-Group = + naturality-unit-abelianization-Group' +``` + +### The universal property of abelianization + +**Proof:** Since the abelianization of `G` is constructed as the quotient group +`G/[G,G]`, we immediately obtain that the precomposition function + +```text + hom-Group Gᵃᵇ H → nullifying-hom-Group G H [G,G] +``` + +is an equivalence for any group `H`. That is, any group homomorphism `f : G → H` +of which the [kernel](group-theory.kernels-homomorphisms-groups.md) contains the +commutator subgroup `[G,G]` extends uniquely to the abelianization. + +Since abelian groups have [trivial](group-theory.trivial-subgroups.md) +commutator subgroups and since the inclusion `f [G,G] ⊆ [H,H]` holds for any +group homomorphism, it follows that any group homomorphism `G → A` into an +abelian group `A` extends uniquely to the abelianization `Gᵃᵇ`. This proves the +claim. + +```agda +module _ + {l1 : Level} (G : Group l1) + where + + is-quotient-group-abelianization-Group : + universal-property-quotient-Group G + ( commutator-normal-subgroup-Group G) + ( group-abelianization-Group G) + ( nullifying-quotient-hom-Group G (commutator-normal-subgroup-Group G)) + is-quotient-group-abelianization-Group = + is-quotient-group-quotient-Group G (commutator-normal-subgroup-Group G) + + is-abelianization-abelianization-Group : + is-abelianization-Group G + ( abelianization-Group G) + ( hom-unit-abelianization-Group G) + is-abelianization-abelianization-Group A = + is-equiv-comp + ( hom-nullifying-hom-Group G + ( group-Ab A) + ( commutator-normal-subgroup-Group G)) + ( precomp-nullifying-hom-Group G + ( commutator-normal-subgroup-Group G) + ( group-abelianization-Group G) + ( nullifying-quotient-hom-Group G + ( commutator-normal-subgroup-Group G)) + ( group-Ab A)) + ( is-quotient-group-abelianization-Group (group-Ab A)) + ( is-equiv-hom-nullifying-hom-group-Ab G A) +``` + +### The abelianization adjunction + +```agda +equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab : + {l1 l2 : Level} (G : Group l1) (A : Ab l2) → + hom-Ab (abelianization-Group G) A ≃ hom-Group G (group-Ab A) +pr1 (equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab G A) h = + comp-hom-Group G + ( group-abelianization-Group G) + ( group-Ab A) + ( h) + ( hom-unit-abelianization-Group G) +pr2 (equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab G A) = + is-abelianization-abelianization-Group G A + +naturality-equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab : + {l1 l2 l3 l4 : Level} + (G : Group l1) (H : Group l2) (f : hom-Group G H) + (A : Ab l3) (B : Ab l4) (g : hom-Ab A B) → + coherence-square-maps + ( map-equiv (equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab H A)) + ( λ h → + comp-hom-Ab + ( abelianization-Group G) + ( abelianization-Group H) + ( B) + ( comp-hom-Ab (abelianization-Group H) A B g h) + ( abelianization-hom-Group G H f)) + ( λ h → + comp-hom-Group G H + ( group-Ab B) + ( comp-hom-Group H (group-Ab A) (group-Ab B) g h) + ( f)) + ( map-equiv (equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab G B)) +naturality-equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab + G H f A B g h = + eq-htpy-hom-Group G + ( group-Ab B) + ( ( map-hom-Ab A B g ∘ map-hom-Ab (abelianization-Group H) A h) ·l + ( naturality-unit-abelianization-Group G H f)) + +is-adjoint-pair-abelianization-forgetful-functor-Ab : + is-adjoint-pair-Large-Category + ( Group-Large-Category) + ( Ab-Large-Category) + ( abelianization-functor-Group) + ( forgetful-functor-Ab) +equiv-is-adjoint-pair-Large-Precategory + is-adjoint-pair-abelianization-forgetful-functor-Ab G A = + inv-equiv (equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab G A) +naturality-equiv-is-adjoint-pair-Large-Precategory + is-adjoint-pair-abelianization-forgetful-functor-Ab + { X1 = G} + { X2 = H} + { Y1 = A} + { Y2 = B} + ( f) + ( g) = + coherence-square-inv-horizontal + ( equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab G A) + ( λ h → + comp-hom-Ab + ( abelianization-Group H) + ( abelianization-Group G) + ( B) + ( comp-hom-Ab (abelianization-Group G) A B g h) + ( abelianization-hom-Group H G f)) + ( λ h → + comp-hom-Group H G + ( group-Ab B) + ( comp-hom-Group G (group-Ab A) (group-Ab B) g h) + ( f)) + ( equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab H B) + ( naturality-equiv-is-adjoint-pair-abelianization-forgetful-functor-Ab + H G f A B g) + +abelianization-adjunction-Group : + Adjunction-Large-Category + ( λ l → l) + ( λ l → l) + ( Group-Large-Category) + ( Ab-Large-Category) +left-adjoint-Adjunction-Large-Precategory + abelianization-adjunction-Group = + abelianization-functor-Group +right-adjoint-Adjunction-Large-Precategory + abelianization-adjunction-Group = + forgetful-functor-Ab +is-adjoint-pair-Adjunction-Large-Precategory + abelianization-adjunction-Group = + is-adjoint-pair-abelianization-forgetful-functor-Ab +``` + +## External links + +- [Abelianization](https://groupprops.subwiki.org/wiki/Abelianization) at + Groupprops +- [Abelianization](https://ncatlab.org/nlab/show/abelianization) at $n$lab +- [Abelianization](https://en.wikipedia.org/wiki/Commutator_subgroup#Abelianization) + at Wikipedia +- [Abelianization](https://mathworld.wolfram.com/Abelianization.html) at Wolfram + Mathworld +- [abelianization](https://www.wikidata.org/wiki/Q318598) at Wikidata diff --git a/src/group-theory/addition-homomorphisms-abelian-groups.lagda.md b/src/group-theory/addition-homomorphisms-abelian-groups.lagda.md index dd2c1da45a..8c5fd68978 100644 --- a/src/group-theory/addition-homomorphisms-abelian-groups.lagda.md +++ b/src/group-theory/addition-homomorphisms-abelian-groups.lagda.md @@ -40,10 +40,10 @@ module _ add-hom-Ab : hom-Ab A B → hom-Ab A B → hom-Ab A B pr1 (add-hom-Ab f g) x = add-Ab B (map-hom-Ab A B f x) (map-hom-Ab A B g x) - pr2 (add-hom-Ab f g) x y = + pr2 (add-hom-Ab f g) {x} {y} = ( ap-add-Ab B - ( preserves-add-hom-Ab A B f x y) - ( preserves-add-hom-Ab A B g x y)) ∙ + ( preserves-add-hom-Ab A B f) + ( preserves-add-hom-Ab A B g)) ∙ ( interchange-add-add-Ab B ( map-hom-Ab A B f x) ( map-hom-Ab A B f y) @@ -52,12 +52,12 @@ module _ zero-hom-Ab : hom-Ab A B pr1 zero-hom-Ab x = zero-Ab B - pr2 zero-hom-Ab x y = inv (left-unit-law-add-Ab B (zero-Ab B)) + pr2 zero-hom-Ab = inv (left-unit-law-add-Ab B (zero-Ab B)) neg-hom-Ab : hom-Ab A B → hom-Ab A B pr1 (neg-hom-Ab f) x = neg-Ab B (map-hom-Ab A B f x) - pr2 (neg-hom-Ab f) x y = - ( ap (neg-Ab B) (preserves-add-hom-Ab A B f x y)) ∙ + pr2 (neg-hom-Ab f) {x} {y} = + ( ap (neg-Ab B) (preserves-add-hom-Ab A B f)) ∙ ( distributive-neg-add-Ab B (map-hom-Ab A B f x) (map-hom-Ab A B f y)) ``` @@ -173,9 +173,7 @@ module _ comp-hom-Ab A B C h (add-hom-Ab A B f g) = add-hom-Ab A C (comp-hom-Ab A B C h f) (comp-hom-Ab A B C h g) left-distributive-comp-add-hom-Ab h f g = - eq-htpy-hom-Ab A C - ( λ x → - preserves-add-hom-Ab B C h (map-hom-Ab A B f x) (map-hom-Ab A B g x)) + eq-htpy-hom-Ab A C (λ x → preserves-add-hom-Ab B C h) right-distributive-comp-add-hom-Ab : (g h : hom-Ab B C) (f : hom-Ab A B) → @@ -203,5 +201,5 @@ module _ hom-ev-element-hom-Ab : hom-Ab (ab-hom-Ab A B) B pr1 hom-ev-element-hom-Ab = ev-element-hom-Ab - pr2 hom-ev-element-hom-Ab = preserves-add-ev-element-hom-Ab + pr2 hom-ev-element-hom-Ab {x} {y} = preserves-add-ev-element-hom-Ab x y ``` diff --git a/src/group-theory/category-of-abelian-groups.lagda.md b/src/group-theory/category-of-abelian-groups.lagda.md index 34a9f54fbd..6f778a9f5a 100644 --- a/src/group-theory/category-of-abelian-groups.lagda.md +++ b/src/group-theory/category-of-abelian-groups.lagda.md @@ -9,10 +9,14 @@ module group-theory.category-of-abelian-groups where ```agda open import category-theory.categories open import category-theory.full-large-subcategories +open import category-theory.functors-large-categories +open import category-theory.functors-large-precategories open import category-theory.large-categories open import category-theory.large-precategories open import category-theory.precategories +open import foundation.function-types +open import foundation.identity-types open import foundation.universe-levels open import group-theory.abelian-groups @@ -31,22 +35,45 @@ The **category of abelian groups** is the ## Definitions -### The category of abelian groups +### The large category of abelian groups ```agda Ab-Large-Category : Large-Category lsuc _⊔_ Ab-Large-Category = large-category-Full-Large-Subcategory ( Group-Large-Category) - ( is-abelian-group-Prop) + ( is-abelian-prop-Group) +``` + +### The large precategory of abelian groups +```agda Ab-Large-Precategory : Large-Precategory lsuc _⊔_ Ab-Large-Precategory = large-precategory-Large-Category Ab-Large-Category +``` +### The category of abelian groups of a given universe level + +```agda Ab-Category : (l : Level) → Category (lsuc l) l Ab-Category = category-Large-Category Ab-Large-Category +``` +### The precategory of abelian groups of a given universe level + +```agda Ab-Precategory : (l : Level) → Precategory (lsuc l) l Ab-Precategory = precategory-Large-Category Ab-Large-Category ``` + +### The forgetful functor from abelian groups to groups + +```agda +forgetful-functor-Ab : + functor-Large-Category (λ l → l) Ab-Large-Category Group-Large-Category +forgetful-functor-Ab = + forgetful-functor-Full-Large-Subcategory + ( Group-Large-Category) + ( is-abelian-prop-Group) +``` diff --git a/src/group-theory/cayleys-theorem.lagda.md b/src/group-theory/cayleys-theorem.lagda.md index 9fda54bbb2..a2d63f05eb 100644 --- a/src/group-theory/cayleys-theorem.lagda.md +++ b/src/group-theory/cayleys-theorem.lagda.md @@ -37,8 +37,8 @@ module _ preserves-mul-map-Cayleys-theorem : preserves-mul-Group G (symmetric-Group (set-Group G)) map-Cayleys-theorem - preserves-mul-map-Cayleys-theorem x y = - eq-htpy-equiv (associative-mul-Group G x y) + preserves-mul-map-Cayleys-theorem {x} {y} = + eq-htpy-equiv (λ z → associative-mul-Group G x y z) hom-Cayleys-theorem : hom-Group G (symmetric-Group (set-Group G)) pr1 hom-Cayleys-theorem = map-Cayleys-theorem diff --git a/src/group-theory/centers-groups.lagda.md b/src/group-theory/centers-groups.lagda.md index 7b84d52084..a92e3af960 100644 --- a/src/group-theory/centers-groups.lagda.md +++ b/src/group-theory/centers-groups.lagda.md @@ -33,13 +33,17 @@ module _ where subtype-center-Group : type-Group G → Prop l - subtype-center-Group = is-central-element-group-Prop G + subtype-center-Group = is-central-element-prop-Group G subgroup-center-Group : Subgroup l G - pr1 subgroup-center-Group = subtype-center-Group - pr1 (pr2 subgroup-center-Group) = is-central-element-unit-Group G - pr1 (pr2 (pr2 subgroup-center-Group)) = is-central-element-mul-Group G - pr2 (pr2 (pr2 subgroup-center-Group)) = is-central-element-inv-Group G + pr1 subgroup-center-Group = + subtype-center-Group + pr1 (pr2 subgroup-center-Group) = + is-central-element-unit-Group G + pr1 (pr2 (pr2 subgroup-center-Group)) = + is-central-element-mul-Group G + pr2 (pr2 (pr2 subgroup-center-Group)) = + is-central-element-inv-Group G group-center-Group : Group l group-center-Group = group-Subgroup G subgroup-center-Group @@ -71,13 +75,13 @@ module _ is-in-subgroup-inclusion-Subgroup G subgroup-center-Group x preserves-mul-inclusion-center-Group : - (x y : type-center-Group) → + {x y : type-center-Group} → inclusion-center-Group (mul-center-Group x y) = mul-Group G ( inclusion-center-Group x) ( inclusion-center-Group y) - preserves-mul-inclusion-center-Group = - preserves-mul-inclusion-Subgroup G subgroup-center-Group + preserves-mul-inclusion-center-Group {x} {y} = + preserves-mul-inclusion-Subgroup G subgroup-center-Group {x} {y} hom-inclusion-center-Group : hom-Group group-center-Group G diff --git a/src/group-theory/centers-monoids.lagda.md b/src/group-theory/centers-monoids.lagda.md index a7649fc922..39deb28916 100644 --- a/src/group-theory/centers-monoids.lagda.md +++ b/src/group-theory/centers-monoids.lagda.md @@ -33,7 +33,7 @@ module _ where subtype-center-Monoid : type-Monoid M → Prop l - subtype-center-Monoid = is-central-element-monoid-Prop M + subtype-center-Monoid = is-central-element-prop-Monoid M center-Monoid : Submonoid l M pr1 center-Monoid = subtype-center-Monoid @@ -64,13 +64,13 @@ module _ inclusion-Submonoid M center-Monoid preserves-mul-inclusion-center-Monoid : - (x y : type-center-Monoid) → + {x y : type-center-Monoid} → inclusion-center-Monoid (mul-center-Monoid x y) = mul-Monoid M ( inclusion-center-Monoid x) ( inclusion-center-Monoid y) - preserves-mul-inclusion-center-Monoid = - preserves-mul-inclusion-Submonoid M center-Monoid + preserves-mul-inclusion-center-Monoid {x} {y} = + preserves-mul-inclusion-Submonoid M center-Monoid {x} {y} hom-inclusion-center-Monoid : hom-Monoid monoid-center-Monoid M diff --git a/src/group-theory/centers-semigroups.lagda.md b/src/group-theory/centers-semigroups.lagda.md index 226eb0dcb3..9997e96a0c 100644 --- a/src/group-theory/centers-semigroups.lagda.md +++ b/src/group-theory/centers-semigroups.lagda.md @@ -32,11 +32,11 @@ module _ where subtype-center-Semigroup : type-Semigroup G → Prop l - subtype-center-Semigroup = is-central-element-semigroup-Prop G + subtype-center-Semigroup = is-central-element-prop-Semigroup G center-Semigroup : Subsemigroup l G pr1 center-Semigroup = subtype-center-Semigroup - pr2 center-Semigroup = is-central-element-mul-Semigroup G + pr2 center-Semigroup {x} {y} = is-central-element-mul-Semigroup G x y semigroup-center-Semigroup : Semigroup l semigroup-center-Semigroup = semigroup-Subsemigroup G center-Semigroup @@ -62,13 +62,13 @@ module _ inclusion-Subsemigroup G center-Semigroup preserves-mul-inclusion-center-Semigroup : - (x y : type-center-Semigroup) → + {x y : type-center-Semigroup} → inclusion-center-Semigroup (mul-center-Semigroup x y) = mul-Semigroup G ( inclusion-center-Semigroup x) ( inclusion-center-Semigroup y) - preserves-mul-inclusion-center-Semigroup = - preserves-mul-inclusion-Subsemigroup G center-Semigroup + preserves-mul-inclusion-center-Semigroup {x} {y} = + preserves-mul-inclusion-Subsemigroup G center-Semigroup {x} {y} hom-inclusion-center-Semigroup : hom-Semigroup semigroup-center-Semigroup G diff --git a/src/group-theory/central-elements-groups.lagda.md b/src/group-theory/central-elements-groups.lagda.md index a3c07884ff..21cd4b9353 100644 --- a/src/group-theory/central-elements-groups.lagda.md +++ b/src/group-theory/central-elements-groups.lagda.md @@ -32,9 +32,9 @@ module _ {l : Level} (G : Group l) where - is-central-element-group-Prop : type-Group G → Prop l - is-central-element-group-Prop = - is-central-element-monoid-Prop (monoid-Group G) + is-central-element-prop-Group : type-Group G → Prop l + is-central-element-prop-Group = + is-central-element-prop-Monoid (monoid-Group G) is-central-element-Group : type-Group G → UU l is-central-element-Group = is-central-element-Monoid (monoid-Group G) @@ -67,11 +67,11 @@ module _ where is-central-element-mul-Group : - (x y : type-Group G) → + {x y : type-Group G} → is-central-element-Group G x → is-central-element-Group G y → is-central-element-Group G (mul-Group G x y) - is-central-element-mul-Group = - is-central-element-mul-Monoid (monoid-Group G) + is-central-element-mul-Group {x} {y} = + is-central-element-mul-Monoid (monoid-Group G) x y ``` ### The inverse of a central element is central @@ -82,12 +82,12 @@ module _ where is-central-element-inv-Group : - (x : type-Group G) → is-central-element-Group G x → + {x : type-Group G} → is-central-element-Group G x → is-central-element-Group G (inv-Group G x) - is-central-element-inv-Group x H y = + is-central-element-inv-Group {x} H y = ( inv (inv-left-div-Group G y x)) ∙ - ( ( ap (inv-Group G) (inv (H (inv-Group G y)))) ∙ - ( inv-right-div-Group G x y)) + ( ap (inv-Group G) (inv (H (inv-Group G y)))) ∙ + ( inv-right-div-Group G x y) ``` ### The central elements are closed under conjugation @@ -109,7 +109,7 @@ module _ is-central-element-Group G (conjugation-Group G y x) is-central-element-conjugation-Group x y H = is-closed-under-eq-subtype' - ( is-central-element-group-Prop G) + ( is-central-element-prop-Group G) ( H) ( is-fixed-point-conjugation-is-central-element-Group x y H) ``` diff --git a/src/group-theory/central-elements-monoids.lagda.md b/src/group-theory/central-elements-monoids.lagda.md index 741798c32d..bece727ced 100644 --- a/src/group-theory/central-elements-monoids.lagda.md +++ b/src/group-theory/central-elements-monoids.lagda.md @@ -29,9 +29,9 @@ module _ {l : Level} (M : Monoid l) where - is-central-element-monoid-Prop : type-Monoid M → Prop l - is-central-element-monoid-Prop = - is-central-element-semigroup-Prop (semigroup-Monoid M) + is-central-element-prop-Monoid : type-Monoid M → Prop l + is-central-element-prop-Monoid = + is-central-element-prop-Semigroup (semigroup-Monoid M) is-central-element-Monoid : type-Monoid M → UU l is-central-element-Monoid = diff --git a/src/group-theory/central-elements-semigroups.lagda.md b/src/group-theory/central-elements-semigroups.lagda.md index fddd194c7f..cedeca3a11 100644 --- a/src/group-theory/central-elements-semigroups.lagda.md +++ b/src/group-theory/central-elements-semigroups.lagda.md @@ -30,8 +30,8 @@ module _ {l : Level} (G : Semigroup l) where - is-central-element-semigroup-Prop : type-Semigroup G → Prop l - is-central-element-semigroup-Prop x = + is-central-element-prop-Semigroup : type-Semigroup G → Prop l + is-central-element-prop-Semigroup x = Π-Prop ( type-Semigroup G) ( λ y → @@ -42,12 +42,12 @@ module _ is-central-element-Semigroup : type-Semigroup G → UU l is-central-element-Semigroup x = - type-Prop (is-central-element-semigroup-Prop x) + type-Prop (is-central-element-prop-Semigroup x) is-prop-is-central-element-Semigroup : (x : type-Semigroup G) → is-prop (is-central-element-Semigroup x) is-prop-is-central-element-Semigroup x = - is-prop-type-Prop (is-central-element-semigroup-Prop x) + is-prop-type-Prop (is-central-element-prop-Semigroup x) ``` ## Properties @@ -65,8 +65,8 @@ module _ is-central-element-Semigroup G (mul-Semigroup G x y) is-central-element-mul-Semigroup x y H K z = ( associative-mul-Semigroup G x y z) ∙ - ( ( ap (mul-Semigroup G x) (K z)) ∙ - ( ( inv (associative-mul-Semigroup G x z y)) ∙ - ( ( ap (mul-Semigroup' G y) (H z)) ∙ - ( associative-mul-Semigroup G z x y)))) + ( ap (mul-Semigroup G x) (K z)) ∙ + ( inv (associative-mul-Semigroup G x z y)) ∙ + ( ap (mul-Semigroup' G y) (H z)) ∙ + ( associative-mul-Semigroup G z x y) ``` diff --git a/src/group-theory/centralizer-subgroups.lagda.md b/src/group-theory/centralizer-subgroups.lagda.md index 94d4cbfbe3..9e44de697c 100644 --- a/src/group-theory/centralizer-subgroups.lagda.md +++ b/src/group-theory/centralizer-subgroups.lagda.md @@ -63,14 +63,14 @@ module _ is-closed-under-multiplication-centralizer-subset-Group : is-closed-under-multiplication-subset-Group G subset-centralizer-subset-Group - is-closed-under-multiplication-centralizer-subset-Group x y u v z s = + is-closed-under-multiplication-centralizer-subset-Group {x} {y} u v z s = ( compute-conjugation-mul-Group G x y z) ∙ - ( ( ap (conjugation-Group G x) (v z s)) ∙ - ( u z s)) + ( ap (conjugation-Group G x) (v z s)) ∙ + ( u z s) is-closed-under-inverses-centralizer-subset-Group : is-closed-under-inverses-subset-Group G subset-centralizer-subset-Group - is-closed-under-inverses-centralizer-subset-Group x u y s = + is-closed-under-inverses-centralizer-subset-Group {x} u y s = transpose-eq-conjugation-inv-Group G (inv (u y s)) centralizer-subset-Group : Subgroup (l1 ⊔ l2) G diff --git a/src/group-theory/commutative-monoids.lagda.md b/src/group-theory/commutative-monoids.lagda.md index a5090c0872..61fd30c897 100644 --- a/src/group-theory/commutative-monoids.lagda.md +++ b/src/group-theory/commutative-monoids.lagda.md @@ -115,10 +115,10 @@ module _ mul-Commutative-Monoid (mul-Commutative-Monoid x z) y right-swap-mul-Commutative-Monoid x y z = ( associative-mul-Commutative-Monoid x y z) ∙ - ( ( ap - ( mul-Commutative-Monoid x) - ( commutative-mul-Commutative-Monoid y z)) ∙ - ( inv (associative-mul-Commutative-Monoid x z y))) + ( ap + ( mul-Commutative-Monoid x) + ( commutative-mul-Commutative-Monoid y z)) ∙ + ( inv (associative-mul-Commutative-Monoid x z y)) left-swap-mul-Commutative-Monoid : (x y z : type-Commutative-Monoid) → @@ -126,10 +126,10 @@ module _ mul-Commutative-Monoid y (mul-Commutative-Monoid x z) left-swap-mul-Commutative-Monoid x y z = ( inv (associative-mul-Commutative-Monoid x y z)) ∙ - ( ( ap - ( mul-Commutative-Monoid' z) - ( commutative-mul-Commutative-Monoid x y)) ∙ - ( associative-mul-Commutative-Monoid y x z)) + ( ap + ( mul-Commutative-Monoid' z) + ( commutative-mul-Commutative-Monoid x y)) ∙ + ( associative-mul-Commutative-Monoid y x z) ``` ### The unit element of a commutative monoid @@ -161,7 +161,7 @@ module _ is-unit-Commutative-Monoid : type-Commutative-Monoid M → UU l is-unit-Commutative-Monoid x = Id x unit-Commutative-Monoid - is-unit-monoid-Prop : type-Commutative-Monoid M → Prop l - is-unit-monoid-Prop x = + is-unit-prop-Commutative-Monoid : type-Commutative-Monoid M → Prop l + is-unit-prop-Commutative-Monoid x = Id-Prop (set-Commutative-Monoid M) x unit-Commutative-Monoid ``` diff --git a/src/group-theory/commutator-subgroups.lagda.md b/src/group-theory/commutator-subgroups.lagda.md index 68818b300c..9309698b09 100644 --- a/src/group-theory/commutator-subgroups.lagda.md +++ b/src/group-theory/commutator-subgroups.lagda.md @@ -10,6 +10,7 @@ module group-theory.commutator-subgroups where open import foundation.cartesian-product-types open import foundation.dependent-pair-types open import foundation.existential-quantification +open import foundation.function-types open import foundation.identity-types open import foundation.propositional-truncations open import foundation.universe-levels @@ -18,7 +19,9 @@ open import group-theory.commutators-of-elements-groups open import group-theory.conjugation open import group-theory.groups open import group-theory.homomorphisms-groups +open import group-theory.images-of-group-homomorphisms open import group-theory.normal-subgroups +open import group-theory.pullbacks-subgroups open import group-theory.subgroups open import group-theory.subgroups-generated-by-families-of-elements-groups open import group-theory.subgroups-generated-by-subsets-groups @@ -31,7 +34,7 @@ open import group-theory.subsets-groups Consider a [group](group-theory.groups.md) `G`. The **commutator subgroup** `[G,G]` of `G` is the -[subgroup generated by](group-theory.subgroups-generated-by-subsets-groups.md) +[subgroup generated by](group-theory.subgroups-generated-by-families-of-elements-groups.md) the [commutators](group-theory.commutators-of-elements-groups.md) of `G`. ## Definitions @@ -143,6 +146,70 @@ module _ pr2 commutator-normal-subgroup-Group = is-normal-commutator-subgroup-Group ``` +## Properties + +### Every group homomorphism `f : G → H` maps `[G,G]` to `[H,H]` + +There are two equivalent ways to express this fact: + +1. The [image](group-theory.images-of-group-homomorphisms.md) `im f [G,G]` of + the commutator subgroup of `G` is contained in the commutator subgroup of + `H`. +2. The commutator subgroup of `G` is contained in the + [pullback](group-theory.pullbacks-subgroups.md) of the commutator subgroup + `[H,H]` along the [group homomorphism](group-theory.homomorphisms-groups.md) + `f`. + +Indeed, by the image-pullback +[Galois connection](order-theory.galois-connections-large-posets.md) there is a +[logical equivalence](foundation.logical-equivalences.md) + +```text + (im f [G,G] ⊆ [H,H]) ↔ ([G,G] ⊆ pullback f [H,H]). +``` + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + where + + contains-image-commutator-subgroup-hom-Group : + leq-Subgroup H + ( im-hom-Subgroup G H f (commutator-subgroup-Group G)) + ( commutator-subgroup-Group H) + contains-image-commutator-subgroup-hom-Group = + leq-subgroup-is-subgroup-generated-by-family-of-elements-Group H + ( map-hom-Group G H f ∘ family-of-commutators-Group G) + ( im-hom-Subgroup G H f (commutator-subgroup-Group G)) + ( is-subgroup-generated-by-family-of-elements-image-subgroup-family-of-elements-Group + ( G) + ( H) + ( f) + ( family-of-commutators-Group G)) + ( commutator-subgroup-Group H) + ( λ x → + is-closed-under-eq-commutator-subgroup-Group' H + ( contains-commutator-commutator-subgroup-Group H _ _) + ( preserves-commutator-hom-Group G H f)) + + preserves-commutator-subgroup-hom-Group : + leq-Subgroup G + ( commutator-subgroup-Group G) + ( pullback-Subgroup G H f (commutator-subgroup-Group H)) + preserves-commutator-subgroup-hom-Group = + forward-implication-is-image-subgroup-im-hom-Subgroup G H f + ( commutator-subgroup-Group G) + ( commutator-subgroup-Group H) + ( contains-image-commutator-subgroup-hom-Group) +``` + +## See also + +- The fact that the commutator subgroup is + [trivial](group-theory.trivial-subgroups.md) if and only if the ambient group + is abelian is recorded in + [`group-theory.abelian-groups`](group-theory.abelian-groups.md). + ## External links - [Commutator subgroup](https://ncatlab.org/nlab/show/commutator%20subgroup) at diff --git a/src/group-theory/commutators-of-elements-groups.lagda.md b/src/group-theory/commutators-of-elements-groups.lagda.md index 73c714ac98..faf2370475 100644 --- a/src/group-theory/commutators-of-elements-groups.lagda.md +++ b/src/group-theory/commutators-of-elements-groups.lagda.md @@ -14,6 +14,7 @@ open import foundation.universe-levels open import group-theory.commuting-elements-groups open import group-theory.conjugation open import group-theory.groups +open import group-theory.homomorphisms-groups ```
@@ -105,6 +106,34 @@ module _ ( ap (inv-Group G) (distributive-conjugation-mul-Group G u y x)))) ``` +### Group homomorphisms preserve commutators + +**Proof:** Consider a [group homomorphism](group-theory.homomorphisms-groups.md) +`f : G → H` and two elements `x y : G`. Then we calculate + +```text + f([x,y]) ≐ f((xy)(yx)⁻¹) + = f(xy)f(yx)⁻¹ + = (f(x)f(y))(f(y)f(x))⁻¹ + ≐ [f(x),f(y)]. +``` + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + where + + preserves-commutator-hom-Group : + {x y : type-Group G} → + map-hom-Group G H f (commutator-Group G x y) = + commutator-Group H (map-hom-Group G H f x) (map-hom-Group G H f y) + preserves-commutator-hom-Group = + ( preserves-right-div-hom-Group G H f) ∙ + ( ap-right-div-Group H + ( preserves-mul-hom-Group G H f) + ( preserves-mul-hom-Group G H f)) +``` + ## External links - [Commutator](https://www.wikidata.org/wiki/Q2989763) at Wikidata diff --git a/src/group-theory/commuting-elements-semigroups.lagda.md b/src/group-theory/commuting-elements-semigroups.lagda.md index 8ef65abb95..4c5d7998e8 100644 --- a/src/group-theory/commuting-elements-semigroups.lagda.md +++ b/src/group-theory/commuting-elements-semigroups.lagda.md @@ -88,16 +88,16 @@ module _ x * (y * z) = y * (x * z) left-swap-commute-Semigroup x y z H = ( inv (associative-mul-Semigroup G _ _ _)) ∙ - ( ( ap (_* z) H) ∙ - ( associative-mul-Semigroup G _ _ _)) + ( ap (_* z) H) ∙ + ( associative-mul-Semigroup G _ _ _) right-swap-commute-Semigroup : (x y z : type-Semigroup G) → commute-Semigroup G y z → (x * y) * z = (x * z) * y right-swap-commute-Semigroup x y z H = ( associative-mul-Semigroup G _ _ _) ∙ - ( ( ap (x *_) H) ∙ - ( inv (associative-mul-Semigroup G _ _ _))) + ( ap (x *_) H) ∙ + ( inv (associative-mul-Semigroup G _ _ _)) ``` ### If `x` commutes with `y` and with `z`, then `x` commutes with `yz` diff --git a/src/group-theory/congruence-relations-abelian-groups.lagda.md b/src/group-theory/congruence-relations-abelian-groups.lagda.md index b70e1c92b7..42bbff50e4 100644 --- a/src/group-theory/congruence-relations-abelian-groups.lagda.md +++ b/src/group-theory/congruence-relations-abelian-groups.lagda.md @@ -33,7 +33,7 @@ underlying group of `A`. ```agda is-congruence-Ab : {l1 l2 : Level} (A : Ab l1) → - Equivalence-Relation l2 (type-Ab A) → + equivalence-relation l2 (type-Ab A) → UU (l1 ⊔ l2) is-congruence-Ab A = is-congruence-Group (group-Ab A) @@ -44,8 +44,9 @@ module _ {l1 l2 : Level} (A : Ab l1) (R : congruence-Ab l2 A) where - eq-rel-congruence-Ab : Equivalence-Relation l2 (type-Ab A) - eq-rel-congruence-Ab = eq-rel-congruence-Group (group-Ab A) R + equivalence-relation-congruence-Ab : equivalence-relation l2 (type-Ab A) + equivalence-relation-congruence-Ab = + equivalence-relation-congruence-Group (group-Ab A) R prop-congruence-Ab : Relation-Prop l2 (type-Ab A) prop-congruence-Ab = prop-congruence-Group (group-Ab A) R @@ -93,7 +94,7 @@ module _ is-transitive sim-congruence-Ab transitive-congruence-Ab = transitive-congruence-Group (group-Ab A) R - add-congruence-Ab : is-congruence-Ab A eq-rel-congruence-Ab + add-congruence-Ab : is-congruence-Ab A equivalence-relation-congruence-Ab add-congruence-Ab = mul-congruence-Group (group-Ab A) R left-add-congruence-Ab : @@ -202,9 +203,9 @@ extensionality-congruence-Ab : extensionality-congruence-Ab A = extensionality-congruence-Group (group-Ab A) -eq-relate-same-elements-congruence-Ab : +equivalence-relationate-same-elements-congruence-Ab : {l1 l2 : Level} (A : Ab l1) (R S : congruence-Ab l2 A) → relate-same-elements-congruence-Ab A R S → R = S -eq-relate-same-elements-congruence-Ab A = - eq-relate-same-elements-congruence-Group (group-Ab A) +equivalence-relationate-same-elements-congruence-Ab A = + equivalence-relationate-same-elements-congruence-Group (group-Ab A) ``` diff --git a/src/group-theory/congruence-relations-commutative-monoids.lagda.md b/src/group-theory/congruence-relations-commutative-monoids.lagda.md index 27958b6b34..8382d96b1f 100644 --- a/src/group-theory/congruence-relations-commutative-monoids.lagda.md +++ b/src/group-theory/congruence-relations-commutative-monoids.lagda.md @@ -31,21 +31,21 @@ the underlying monoid of `M`. ## Definition ```agda -is-congruence-commutative-monoid-Prop : +is-congruence-prop-Commutative-Monoid : {l1 l2 : Level} (M : Commutative-Monoid l1) → - Equivalence-Relation l2 (type-Commutative-Monoid M) → Prop (l1 ⊔ l2) -is-congruence-commutative-monoid-Prop M = - is-congruence-monoid-Prop (monoid-Commutative-Monoid M) + equivalence-relation l2 (type-Commutative-Monoid M) → Prop (l1 ⊔ l2) +is-congruence-prop-Commutative-Monoid M = + is-congruence-prop-Monoid (monoid-Commutative-Monoid M) is-congruence-Commutative-Monoid : {l1 l2 : Level} (M : Commutative-Monoid l1) → - Equivalence-Relation l2 (type-Commutative-Monoid M) → UU (l1 ⊔ l2) + equivalence-relation l2 (type-Commutative-Monoid M) → UU (l1 ⊔ l2) is-congruence-Commutative-Monoid M = is-congruence-Monoid (monoid-Commutative-Monoid M) is-prop-is-congruence-Commutative-Monoid : {l1 l2 : Level} (M : Commutative-Monoid l1) - (R : Equivalence-Relation l2 (type-Commutative-Monoid M)) → + (R : equivalence-relation l2 (type-Commutative-Monoid M)) → is-prop (is-congruence-Commutative-Monoid M R) is-prop-is-congruence-Commutative-Monoid M = is-prop-is-congruence-Monoid (monoid-Commutative-Monoid M) @@ -60,10 +60,10 @@ module _ (R : congruence-Commutative-Monoid l2 M) where - eq-rel-congruence-Commutative-Monoid : - Equivalence-Relation l2 (type-Commutative-Monoid M) - eq-rel-congruence-Commutative-Monoid = - eq-rel-congruence-Monoid (monoid-Commutative-Monoid M) R + equivalence-relation-congruence-Commutative-Monoid : + equivalence-relation l2 (type-Commutative-Monoid M) + equivalence-relation-congruence-Commutative-Monoid = + equivalence-relation-congruence-Monoid (monoid-Commutative-Monoid M) R prop-congruence-Commutative-Monoid : Relation-Prop l2 (type-Commutative-Monoid M) @@ -124,7 +124,8 @@ module _ transitive-congruence-Monoid (monoid-Commutative-Monoid M) R mul-congruence-Commutative-Monoid : - is-congruence-Commutative-Monoid M eq-rel-congruence-Commutative-Monoid + is-congruence-Commutative-Monoid M + equivalence-relation-congruence-Commutative-Monoid mul-congruence-Commutative-Monoid = mul-congruence-Monoid (monoid-Commutative-Monoid M) R ``` @@ -178,10 +179,11 @@ extensionality-congruence-Commutative-Monoid : extensionality-congruence-Commutative-Monoid M = extensionality-congruence-Monoid (monoid-Commutative-Monoid M) -eq-relate-same-elements-congruence-Commutative-Monoid : +equivalence-relationate-same-elements-congruence-Commutative-Monoid : {l1 l2 : Level} (M : Commutative-Monoid l1) (R S : congruence-Commutative-Monoid l2 M) → relate-same-elements-congruence-Commutative-Monoid M R S → R = S -eq-relate-same-elements-congruence-Commutative-Monoid M = - eq-relate-same-elements-congruence-Monoid (monoid-Commutative-Monoid M) +equivalence-relationate-same-elements-congruence-Commutative-Monoid M = + equivalence-relationate-same-elements-congruence-Monoid + ( monoid-Commutative-Monoid M) ``` diff --git a/src/group-theory/congruence-relations-groups.lagda.md b/src/group-theory/congruence-relations-groups.lagda.md index 74ab935aad..f4759809e8 100644 --- a/src/group-theory/congruence-relations-groups.lagda.md +++ b/src/group-theory/congruence-relations-groups.lagda.md @@ -37,32 +37,34 @@ that for every `x1 x2 y1 y2 : G` such that `x1 ≡ x2` and `y1 ≡ y2` we have ```agda is-congruence-Group : {l1 l2 : Level} (G : Group l1) → - Equivalence-Relation l2 (type-Group G) → UU (l1 ⊔ l2) + equivalence-relation l2 (type-Group G) → UU (l1 ⊔ l2) is-congruence-Group G R = is-congruence-Semigroup (semigroup-Group G) R congruence-Group : {l : Level} (l2 : Level) (G : Group l) → UU (l ⊔ lsuc l2) congruence-Group l2 G = - Σ (Equivalence-Relation l2 (type-Group G)) (is-congruence-Group G) + Σ (equivalence-relation l2 (type-Group G)) (is-congruence-Group G) module _ {l1 l2 : Level} (G : Group l1) (R : congruence-Group l2 G) where - eq-rel-congruence-Group : Equivalence-Relation l2 (type-Group G) - eq-rel-congruence-Group = pr1 R + equivalence-relation-congruence-Group : equivalence-relation l2 (type-Group G) + equivalence-relation-congruence-Group = pr1 R prop-congruence-Group : Relation-Prop l2 (type-Group G) - prop-congruence-Group = prop-Equivalence-Relation eq-rel-congruence-Group + prop-congruence-Group = + prop-equivalence-relation equivalence-relation-congruence-Group sim-congruence-Group : (x y : type-Group G) → UU l2 - sim-congruence-Group = sim-Equivalence-Relation eq-rel-congruence-Group + sim-congruence-Group = + sim-equivalence-relation equivalence-relation-congruence-Group is-prop-sim-congruence-Group : (x y : type-Group G) → is-prop (sim-congruence-Group x y) is-prop-sim-congruence-Group = - is-prop-sim-Equivalence-Relation eq-rel-congruence-Group + is-prop-sim-equivalence-relation equivalence-relation-congruence-Group concatenate-eq-sim-congruence-Group : {x1 x2 y : type-Group G} → @@ -81,25 +83,26 @@ module _ concatenate-eq-sim-eq-congruence-Group refl H refl = H refl-congruence-Group : is-reflexive sim-congruence-Group - refl-congruence-Group = refl-Equivalence-Relation eq-rel-congruence-Group + refl-congruence-Group = + refl-equivalence-relation equivalence-relation-congruence-Group symmetric-congruence-Group : is-symmetric sim-congruence-Group symmetric-congruence-Group = - symmetric-Equivalence-Relation eq-rel-congruence-Group + symmetric-equivalence-relation equivalence-relation-congruence-Group equiv-symmetric-congruence-Group : (x y : type-Group G) → sim-congruence-Group x y ≃ sim-congruence-Group y x equiv-symmetric-congruence-Group x y = - equiv-symmetric-Equivalence-Relation eq-rel-congruence-Group + equiv-symmetric-equivalence-relation equivalence-relation-congruence-Group transitive-congruence-Group : is-transitive sim-congruence-Group transitive-congruence-Group = - transitive-Equivalence-Relation eq-rel-congruence-Group + transitive-equivalence-relation equivalence-relation-congruence-Group mul-congruence-Group : - is-congruence-Group G eq-rel-congruence-Group + is-congruence-Group G equivalence-relation-congruence-Group mul-congruence-Group = pr2 R left-mul-congruence-Group : @@ -156,8 +159,8 @@ module _ concatenate-eq-sim-eq-congruence-Group ( inv ( ( associative-mul-Group G x (inv-Group G y) y) ∙ - ( ( ap (mul-Group G x) (left-inverse-law-mul-Group G y)) ∙ - ( right-unit-law-mul-Group G x)))) + ( ap (mul-Group G x) (left-inverse-law-mul-Group G y)) ∙ + ( right-unit-law-mul-Group G x))) ( right-mul-congruence-Group H y) ( left-unit-law-mul-Group G y) @@ -200,10 +203,10 @@ module _ ( inv-Group G x) ( y) ( inv-Group G y)) ∙ - ( ( ap - ( mul-Group G (inv-Group G x)) - ( right-inverse-law-mul-Group G y)) ∙ - ( right-unit-law-mul-Group G (inv-Group G x))))) + ( ap + ( mul-Group G (inv-Group G x)) + ( right-inverse-law-mul-Group G y)) ∙ + ( right-unit-law-mul-Group G (inv-Group G x)))) ( symmetric-congruence-Group _ _ ( right-mul-congruence-Group ( left-mul-congruence-Group (inv-Group G x) H) @@ -257,9 +260,9 @@ extensionality-congruence-Group : extensionality-congruence-Group G = extensionality-congruence-Semigroup (semigroup-Group G) -eq-relate-same-elements-congruence-Group : +equivalence-relationate-same-elements-congruence-Group : {l1 l2 : Level} (G : Group l1) (R S : congruence-Group l2 G) → relate-same-elements-congruence-Group G R S → R = S -eq-relate-same-elements-congruence-Group G = - eq-relate-same-elements-congruence-Semigroup (semigroup-Group G) +equivalence-relationate-same-elements-congruence-Group G = + equivalence-relationate-same-elements-congruence-Semigroup (semigroup-Group G) ``` diff --git a/src/group-theory/congruence-relations-monoids.lagda.md b/src/group-theory/congruence-relations-monoids.lagda.md index e13779c806..6d18181709 100644 --- a/src/group-theory/congruence-relations-monoids.lagda.md +++ b/src/group-theory/congruence-relations-monoids.lagda.md @@ -31,45 +31,48 @@ semigroup of `M`. ## Definition ```agda -is-congruence-monoid-Prop : +is-congruence-prop-Monoid : {l1 l2 : Level} (M : Monoid l1) → - Equivalence-Relation l2 (type-Monoid M) → Prop (l1 ⊔ l2) -is-congruence-monoid-Prop M = is-congruence-semigroup-Prop (semigroup-Monoid M) + equivalence-relation l2 (type-Monoid M) → Prop (l1 ⊔ l2) +is-congruence-prop-Monoid M = is-congruence-prop-Semigroup (semigroup-Monoid M) is-congruence-Monoid : {l1 l2 : Level} (M : Monoid l1) → - Equivalence-Relation l2 (type-Monoid M) → UU (l1 ⊔ l2) + equivalence-relation l2 (type-Monoid M) → UU (l1 ⊔ l2) is-congruence-Monoid M R = is-congruence-Semigroup (semigroup-Monoid M) R is-prop-is-congruence-Monoid : {l1 l2 : Level} (M : Monoid l1) - (R : Equivalence-Relation l2 (type-Monoid M)) → + (R : equivalence-relation l2 (type-Monoid M)) → is-prop (is-congruence-Monoid M R) is-prop-is-congruence-Monoid M = is-prop-is-congruence-Semigroup (semigroup-Monoid M) congruence-Monoid : {l : Level} (l2 : Level) (M : Monoid l) → UU (l ⊔ lsuc l2) congruence-Monoid l2 M = - Σ (Equivalence-Relation l2 (type-Monoid M)) (is-congruence-Monoid M) + Σ (equivalence-relation l2 (type-Monoid M)) (is-congruence-Monoid M) module _ {l1 l2 : Level} (M : Monoid l1) (R : congruence-Monoid l2 M) where - eq-rel-congruence-Monoid : Equivalence-Relation l2 (type-Monoid M) - eq-rel-congruence-Monoid = pr1 R + equivalence-relation-congruence-Monoid : + equivalence-relation l2 (type-Monoid M) + equivalence-relation-congruence-Monoid = pr1 R prop-congruence-Monoid : Relation-Prop l2 (type-Monoid M) - prop-congruence-Monoid = prop-Equivalence-Relation eq-rel-congruence-Monoid + prop-congruence-Monoid = + prop-equivalence-relation equivalence-relation-congruence-Monoid sim-congruence-Monoid : (x y : type-Monoid M) → UU l2 - sim-congruence-Monoid = sim-Equivalence-Relation eq-rel-congruence-Monoid + sim-congruence-Monoid = + sim-equivalence-relation equivalence-relation-congruence-Monoid is-prop-sim-congruence-Monoid : (x y : type-Monoid M) → is-prop (sim-congruence-Monoid x y) is-prop-sim-congruence-Monoid = - is-prop-sim-Equivalence-Relation eq-rel-congruence-Monoid + is-prop-sim-equivalence-relation equivalence-relation-congruence-Monoid concatenate-sim-eq-congruence-Monoid : {x y z : type-Monoid M} → sim-congruence-Monoid x y → y = z → @@ -87,24 +90,25 @@ module _ concatenate-eq-sim-eq-congruence-Monoid refl H refl = H refl-congruence-Monoid : is-reflexive sim-congruence-Monoid - refl-congruence-Monoid = refl-Equivalence-Relation eq-rel-congruence-Monoid + refl-congruence-Monoid = + refl-equivalence-relation equivalence-relation-congruence-Monoid symmetric-congruence-Monoid : is-symmetric sim-congruence-Monoid symmetric-congruence-Monoid = - symmetric-Equivalence-Relation eq-rel-congruence-Monoid + symmetric-equivalence-relation equivalence-relation-congruence-Monoid equiv-symmetric-congruence-Monoid : (x y : type-Monoid M) → sim-congruence-Monoid x y ≃ sim-congruence-Monoid y x equiv-symmetric-congruence-Monoid x y = - equiv-symmetric-Equivalence-Relation eq-rel-congruence-Monoid + equiv-symmetric-equivalence-relation equivalence-relation-congruence-Monoid transitive-congruence-Monoid : is-transitive sim-congruence-Monoid transitive-congruence-Monoid = - transitive-Equivalence-Relation eq-rel-congruence-Monoid + transitive-equivalence-relation equivalence-relation-congruence-Monoid mul-congruence-Monoid : - is-congruence-Monoid M eq-rel-congruence-Monoid + is-congruence-Monoid M equivalence-relation-congruence-Monoid mul-congruence-Monoid = pr2 R ``` @@ -150,9 +154,10 @@ extensionality-congruence-Monoid : extensionality-congruence-Monoid M = extensionality-congruence-Semigroup (semigroup-Monoid M) -eq-relate-same-elements-congruence-Monoid : +equivalence-relationate-same-elements-congruence-Monoid : {l1 l2 : Level} (M : Monoid l1) (R S : congruence-Monoid l2 M) → relate-same-elements-congruence-Monoid M R S → R = S -eq-relate-same-elements-congruence-Monoid M = - eq-relate-same-elements-congruence-Semigroup (semigroup-Monoid M) +equivalence-relationate-same-elements-congruence-Monoid M = + equivalence-relationate-same-elements-congruence-Semigroup + ( semigroup-Monoid M) ``` diff --git a/src/group-theory/congruence-relations-semigroups.lagda.md b/src/group-theory/congruence-relations-semigroups.lagda.md index 4cdfc6968c..b5ef45ac67 100644 --- a/src/group-theory/congruence-relations-semigroups.lagda.md +++ b/src/group-theory/congruence-relations-semigroups.lagda.md @@ -33,10 +33,10 @@ such that for every `x1 x2 y1 y2 : G` such that `x1 ≡ x2` and `y1 ≡ y2` we h ## Definition ```agda -is-congruence-semigroup-Prop : +is-congruence-prop-Semigroup : {l1 l2 : Level} (G : Semigroup l1) → - Equivalence-Relation l2 (type-Semigroup G) → Prop (l1 ⊔ l2) -is-congruence-semigroup-Prop G R = + equivalence-relation l2 (type-Semigroup G) → Prop (l1 ⊔ l2) +is-congruence-prop-Semigroup G R = Π-Prop' ( type-Semigroup G) ( λ x1 → @@ -50,71 +50,73 @@ is-congruence-semigroup-Prop G R = ( type-Semigroup G) ( λ y2 → function-Prop - ( sim-Equivalence-Relation R x1 x2) + ( sim-equivalence-relation R x1 x2) ( function-Prop - ( sim-Equivalence-Relation R y1 y2) - ( prop-Equivalence-Relation R + ( sim-equivalence-relation R y1 y2) + ( prop-equivalence-relation R ( mul-Semigroup G x1 y1) ( mul-Semigroup G x2 y2))))))) is-congruence-Semigroup : {l1 l2 : Level} (G : Semigroup l1) → - Equivalence-Relation l2 (type-Semigroup G) → UU (l1 ⊔ l2) + equivalence-relation l2 (type-Semigroup G) → UU (l1 ⊔ l2) is-congruence-Semigroup G R = - type-Prop (is-congruence-semigroup-Prop G R) + type-Prop (is-congruence-prop-Semigroup G R) is-prop-is-congruence-Semigroup : {l1 l2 : Level} (G : Semigroup l1) - (R : Equivalence-Relation l2 (type-Semigroup G)) → + (R : equivalence-relation l2 (type-Semigroup G)) → is-prop (is-congruence-Semigroup G R) is-prop-is-congruence-Semigroup G R = - is-prop-type-Prop (is-congruence-semigroup-Prop G R) + is-prop-type-Prop (is-congruence-prop-Semigroup G R) congruence-Semigroup : {l : Level} (l2 : Level) (G : Semigroup l) → UU (l ⊔ lsuc l2) congruence-Semigroup l2 G = - Σ (Equivalence-Relation l2 (type-Semigroup G)) (is-congruence-Semigroup G) + Σ (equivalence-relation l2 (type-Semigroup G)) (is-congruence-Semigroup G) module _ {l1 l2 : Level} (G : Semigroup l1) (R : congruence-Semigroup l2 G) where - eq-rel-congruence-Semigroup : Equivalence-Relation l2 (type-Semigroup G) - eq-rel-congruence-Semigroup = pr1 R + equivalence-relation-congruence-Semigroup : + equivalence-relation l2 (type-Semigroup G) + equivalence-relation-congruence-Semigroup = pr1 R prop-congruence-Semigroup : Relation-Prop l2 (type-Semigroup G) prop-congruence-Semigroup = - prop-Equivalence-Relation eq-rel-congruence-Semigroup + prop-equivalence-relation equivalence-relation-congruence-Semigroup sim-congruence-Semigroup : (x y : type-Semigroup G) → UU l2 sim-congruence-Semigroup = - sim-Equivalence-Relation eq-rel-congruence-Semigroup + sim-equivalence-relation equivalence-relation-congruence-Semigroup is-prop-sim-congruence-Semigroup : (x y : type-Semigroup G) → is-prop (sim-congruence-Semigroup x y) is-prop-sim-congruence-Semigroup = - is-prop-sim-Equivalence-Relation eq-rel-congruence-Semigroup + is-prop-sim-equivalence-relation equivalence-relation-congruence-Semigroup refl-congruence-Semigroup : is-reflexive sim-congruence-Semigroup refl-congruence-Semigroup = - refl-Equivalence-Relation eq-rel-congruence-Semigroup + refl-equivalence-relation equivalence-relation-congruence-Semigroup symmetric-congruence-Semigroup : is-symmetric sim-congruence-Semigroup symmetric-congruence-Semigroup = - symmetric-Equivalence-Relation eq-rel-congruence-Semigroup + symmetric-equivalence-relation equivalence-relation-congruence-Semigroup equiv-symmetric-congruence-Semigroup : (x y : type-Semigroup G) → sim-congruence-Semigroup x y ≃ sim-congruence-Semigroup y x equiv-symmetric-congruence-Semigroup x y = - equiv-symmetric-Equivalence-Relation eq-rel-congruence-Semigroup + equiv-symmetric-equivalence-relation + ( equivalence-relation-congruence-Semigroup) transitive-congruence-Semigroup : is-transitive sim-congruence-Semigroup transitive-congruence-Semigroup = - transitive-Equivalence-Relation eq-rel-congruence-Semigroup + transitive-equivalence-relation equivalence-relation-congruence-Semigroup mul-congruence-Semigroup : - is-congruence-Semigroup G eq-rel-congruence-Semigroup + is-congruence-Semigroup G equivalence-relation-congruence-Semigroup mul-congruence-Semigroup = pr2 R ``` @@ -127,26 +129,26 @@ relate-same-elements-congruence-Semigroup : {l1 l2 l3 : Level} (G : Semigroup l1) → congruence-Semigroup l2 G → congruence-Semigroup l3 G → UU (l1 ⊔ l2 ⊔ l3) relate-same-elements-congruence-Semigroup G R S = - relate-same-elements-Equivalence-Relation - ( eq-rel-congruence-Semigroup G R) - ( eq-rel-congruence-Semigroup G S) + relate-same-elements-equivalence-relation + ( equivalence-relation-congruence-Semigroup G R) + ( equivalence-relation-congruence-Semigroup G S) refl-relate-same-elements-congruence-Semigroup : {l1 l2 : Level} (G : Semigroup l1) (R : congruence-Semigroup l2 G) → relate-same-elements-congruence-Semigroup G R R refl-relate-same-elements-congruence-Semigroup G R = - refl-relate-same-elements-Equivalence-Relation - ( eq-rel-congruence-Semigroup G R) + refl-relate-same-elements-equivalence-relation + ( equivalence-relation-congruence-Semigroup G R) is-torsorial-relate-same-elements-congruence-Semigroup : {l1 l2 : Level} (G : Semigroup l1) (R : congruence-Semigroup l2 G) → is-torsorial (relate-same-elements-congruence-Semigroup G R) is-torsorial-relate-same-elements-congruence-Semigroup G R = is-torsorial-Eq-subtype - ( is-torsorial-relate-same-elements-Equivalence-Relation - ( eq-rel-congruence-Semigroup G R)) + ( is-torsorial-relate-same-elements-equivalence-relation + ( equivalence-relation-congruence-Semigroup G R)) ( is-prop-is-congruence-Semigroup G) - ( eq-rel-congruence-Semigroup G R) + ( equivalence-relation-congruence-Semigroup G R) ( refl-relate-same-elements-congruence-Semigroup G R) ( mul-congruence-Semigroup G R) @@ -172,9 +174,9 @@ pr1 (extensionality-congruence-Semigroup G R S) = pr2 (extensionality-congruence-Semigroup G R S) = is-equiv-relate-same-elements-eq-congruence-Semigroup G R S -eq-relate-same-elements-congruence-Semigroup : +equivalence-relationate-same-elements-congruence-Semigroup : {l1 l2 : Level} (G : Semigroup l1) (R S : congruence-Semigroup l2 G) → relate-same-elements-congruence-Semigroup G R S → R = S -eq-relate-same-elements-congruence-Semigroup G R S = +equivalence-relationate-same-elements-congruence-Semigroup G R S = map-inv-equiv (extensionality-congruence-Semigroup G R S) ``` diff --git a/src/group-theory/conjugation.lagda.md b/src/group-theory/conjugation.lagda.md index c6a6e28e3b..e07bdb3b39 100644 --- a/src/group-theory/conjugation.lagda.md +++ b/src/group-theory/conjugation.lagda.md @@ -71,25 +71,25 @@ module _ {l1 : Level} (G : Group l1) where - conjugation-Abstract-Group-Action : Abstract-Group-Action G l1 - pr1 conjugation-Abstract-Group-Action = set-Group G - pr1 (pr2 conjugation-Abstract-Group-Action) g = equiv-conjugation-Group G g - pr2 (pr2 conjugation-Abstract-Group-Action) g h = + conjugation-action-Group : action-Group G l1 + pr1 conjugation-action-Group = set-Group G + pr1 (pr2 conjugation-action-Group) g = equiv-conjugation-Group G g + pr2 (pr2 conjugation-action-Group) {g} {h} = eq-htpy-equiv ( λ x → ( ap-mul-Group G ( associative-mul-Group G g h x) - ( distributive-inv-mul-Group G g h)) ∙ - ( ( inv - ( associative-mul-Group G - ( mul-Group G g (mul-Group G h x)) - ( inv-Group G h) - ( inv-Group G g))) ∙ - ( ap - ( mul-Group' G (inv-Group G g)) - ( associative-mul-Group G g - ( mul-Group G h x) - ( inv-Group G h))))) + ( distributive-inv-mul-Group G)) ∙ + ( inv + ( associative-mul-Group G + ( mul-Group G g (mul-Group G h x)) + ( inv-Group G h) + ( inv-Group G g))) ∙ + ( ap + ( mul-Group' G (inv-Group G g)) + ( associative-mul-Group G g + ( mul-Group G h x) + ( inv-Group G h)))) ``` ### The predicate on subsets of groups of being closed under conjugation @@ -133,15 +133,15 @@ module _ compute-conjugation-mul-Group x y z = ( ap-mul-Group G ( associative-mul-Group G x y z) - ( distributive-inv-mul-Group G x y)) ∙ - ( ( inv - ( associative-mul-Group G - ( mul-Group G x (mul-Group G y z)) - ( inv-Group G y) - ( inv-Group G x))) ∙ - ( ap - ( mul-Group' G (inv-Group G x)) - ( associative-mul-Group G x (mul-Group G y z) (inv-Group G y)))) + ( distributive-inv-mul-Group G)) ∙ + ( inv + ( associative-mul-Group G + ( mul-Group G x (mul-Group G y z)) + ( inv-Group G y) + ( inv-Group G x))) ∙ + ( ap + ( mul-Group' G (inv-Group G x)) + ( associative-mul-Group G x (mul-Group G y z) (inv-Group G y))) compute-conjugation-mul-Group' : (x y : type-Group G) → @@ -150,23 +150,23 @@ module _ compute-conjugation-mul-Group' x y z = ( ap ( mul-Group' G (mul-Group G x y)) - ( ( ap (mul-Group' G z) (distributive-inv-mul-Group G x y)) ∙ + ( ( ap (mul-Group' G z) (distributive-inv-mul-Group G)) ∙ ( associative-mul-Group G ( inv-Group G y) ( inv-Group G x) ( z)))) ∙ - ( ( associative-mul-Group G + ( associative-mul-Group G + ( inv-Group G y) + ( left-div-Group G x z) + ( mul-Group G x y)) ∙ + ( ap + ( left-div-Group G y) + ( inv (associative-mul-Group G (left-div-Group G x z) x y))) ∙ + ( inv + ( associative-mul-Group G ( inv-Group G y) - ( left-div-Group G x z) - ( mul-Group G x y)) ∙ - ( ( ap - ( left-div-Group G y) - ( inv (associative-mul-Group G (left-div-Group G x z) x y))) ∙ - ( inv - ( associative-mul-Group G - ( inv-Group G y) - ( conjugation-Group' G x z) - ( y))))) + ( conjugation-Group' G x z) + ( y))) htpy-conjugation-Group : (x : type-Group G) → @@ -208,10 +208,10 @@ module _ mul-Group G (conjugation-Group G x y) x = mul-Group G x y left-conjugation-law-mul-Group x y = ( associative-mul-Group G (mul-Group G x y) (inv-Group G x) x) ∙ - ( ( ap - ( mul-Group G (mul-Group G x y)) - ( left-inverse-law-mul-Group G x)) ∙ - ( right-unit-law-mul-Group G (mul-Group G x y))) + ( ap + ( mul-Group G (mul-Group G x y)) + ( left-inverse-law-mul-Group G x)) ∙ + ( right-unit-law-mul-Group G (mul-Group G x y)) left-conjugation-law-mul-Group' : (x y : type-Group G) → @@ -227,10 +227,10 @@ module _ distributive-conjugation-mul-Group x y z = ( ap ( mul-Group' G (inv-Group G x)) - ( ( ( inv (associative-mul-Group G x y z)) ∙ - ( ap - ( mul-Group' G z) - ( inv (is-section-right-div-Group G x (mul-Group G x y))))) ∙ + ( ( inv (associative-mul-Group G x y z)) ∙ + ( ap + ( mul-Group' G z) + ( inv (is-section-right-div-Group G x (mul-Group G x y)))) ∙ ( associative-mul-Group G ( conjugation-Group G x y) ( x) @@ -248,33 +248,29 @@ module _ ( inv (inv-inv-Group G (conjugation-Group G x (inv-Group G y)))) ∙ ( ap ( inv-Group G) - ( ( distributive-inv-mul-Group G - ( mul-Group G x (inv-Group G y)) - ( inv-Group G x)) ∙ - ( ( ap-mul-Group G - ( inv-inv-Group G x) - ( ( distributive-inv-mul-Group G x (inv-Group G y)) ∙ - ( ap - ( mul-Group' G (inv-Group G x)) - ( inv-inv-Group G y)))) ∙ - ( inv (associative-mul-Group G x y ( inv-Group G x)))))) + ( ( distributive-inv-mul-Group G) ∙ + ( ap-mul-Group G + ( inv-inv-Group G x) + ( ( distributive-inv-mul-Group G) ∙ + ( ap + ( mul-Group' G (inv-Group G x)) + ( inv-inv-Group G y)))) ∙ + ( inv (associative-mul-Group G x y ( inv-Group G x))))) conjugation-inv-Group' : (x y : type-Group G) → conjugation-Group' G x (inv-Group G y) = inv-Group G (conjugation-Group' G x y) conjugation-inv-Group' x y = - ( ap (mul-Group' G x) (inv (distributive-inv-mul-Group G y x))) ∙ - ( ( ap - ( mul-Group G (inv-Group G (mul-Group G y x))) - ( inv (inv-inv-Group G x))) ∙ - ( ( inv - ( distributive-inv-mul-Group G - ( inv-Group G x) - ( mul-Group G y x))) ∙ - ( ap - ( inv-Group G) - ( inv (associative-mul-Group G (inv-Group G x) y x))))) + ( ap (mul-Group' G x) (inv (distributive-inv-mul-Group G))) ∙ + ( ap + ( mul-Group G (inv-Group G (mul-Group G y x))) + ( inv (inv-inv-Group G x))) ∙ + ( inv + ( distributive-inv-mul-Group G)) ∙ + ( ap + ( inv-Group G) + ( inv (associative-mul-Group G (inv-Group G x) y x))) conjugation-left-div-Group : (x y : type-Group G) → @@ -379,11 +375,11 @@ module _ conjugation-hom-Group : type-Group G → hom-Group G G pr1 (conjugation-hom-Group x) = conjugation-Group G x - pr2 (conjugation-hom-Group x) = distributive-conjugation-mul-Group G x + pr2 (conjugation-hom-Group x) = distributive-conjugation-mul-Group G x _ _ conjugation-equiv-Group : type-Group G → equiv-Group G G pr1 (conjugation-equiv-Group x) = equiv-conjugation-Group G x - pr2 (conjugation-equiv-Group x) = distributive-conjugation-mul-Group G x + pr2 (conjugation-equiv-Group x) = distributive-conjugation-mul-Group G x _ _ conjugation-iso-Group : type-Group G → iso-Group G G conjugation-iso-Group x = iso-equiv-Group G G (conjugation-equiv-Group x) @@ -395,3 +391,19 @@ module _ preserves-integer-powers-conjugation-Group k g = preserves-integer-powers-hom-Group G G (conjugation-hom-Group g) k ``` + +### Any group homomorphism preserves conjugation + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + where + + preserves-conjugation-hom-Group : + {x y : type-Group G} → + map-hom-Group G H f (conjugation-Group G x y) = + conjugation-Group H (map-hom-Group G H f x) (map-hom-Group G H f y) + preserves-conjugation-hom-Group = + ( preserves-right-div-hom-Group G H f) ∙ + ( ap (mul-Group' H _) (preserves-mul-hom-Group G H f)) +``` diff --git a/src/group-theory/cores-monoids.lagda.md b/src/group-theory/cores-monoids.lagda.md index 52392767dd..ab9d3a1329 100644 --- a/src/group-theory/cores-monoids.lagda.md +++ b/src/group-theory/cores-monoids.lagda.md @@ -42,7 +42,7 @@ module _ where subtype-core-Monoid : type-Monoid M → Prop l - subtype-core-Monoid = is-invertible-element-monoid-Prop M + subtype-core-Monoid = is-invertible-element-prop-Monoid M submonoid-core-Monoid : Submonoid l M pr1 submonoid-core-Monoid = subtype-core-Monoid @@ -130,13 +130,13 @@ module _ inclusion-Submonoid M submonoid-core-Monoid preserves-mul-inclusion-core-Monoid : - (x y : type-core-Monoid) → + {x y : type-core-Monoid} → inclusion-core-Monoid (mul-core-Monoid x y) = mul-Monoid M ( inclusion-core-Monoid x) ( inclusion-core-Monoid y) - preserves-mul-inclusion-core-Monoid = - preserves-mul-inclusion-Submonoid M submonoid-core-Monoid + preserves-mul-inclusion-core-Monoid {x} {y} = + preserves-mul-inclusion-Submonoid M submonoid-core-Monoid {x} {y} hom-inclusion-core-Monoid : hom-Monoid monoid-core-Monoid M @@ -161,13 +161,13 @@ module _ preserves-invertible-elements-hom-Monoid M N f (pr2 x) preserves-mul-hom-core-hom-Monoid : - (x y : type-core-Monoid M) → + {x y : type-core-Monoid M} → map-core-hom-Monoid (mul-core-Monoid M x y) = mul-core-Monoid N (map-core-hom-Monoid x) (map-core-hom-Monoid y) - preserves-mul-hom-core-hom-Monoid x y = + preserves-mul-hom-core-hom-Monoid = eq-type-subtype ( subtype-core-Monoid N) - ( preserves-mul-hom-Monoid M N f (pr1 x) (pr1 y)) + ( preserves-mul-hom-Monoid M N f) hom-core-hom-Monoid : hom-Group (core-Monoid M) (core-Monoid N) pr1 hom-core-hom-Monoid = map-core-hom-Monoid @@ -179,7 +179,7 @@ module _ preserves-unit-hom-Group (core-Monoid M) (core-Monoid N) hom-core-hom-Monoid preserves-inv-hom-core-hom-Monoid : - (x : type-core-Monoid M) → + {x : type-core-Monoid M} → map-core-hom-Monoid (inv-core-Monoid M x) = inv-core-Monoid N (map-core-hom-Monoid x) preserves-inv-hom-core-hom-Monoid = diff --git a/src/group-theory/decidable-subgroups.lagda.md b/src/group-theory/decidable-subgroups.lagda.md index 5fe8da6dbc..47ca7c90a8 100644 --- a/src/group-theory/decidable-subgroups.lagda.md +++ b/src/group-theory/decidable-subgroups.lagda.md @@ -300,8 +300,8 @@ module _ ( group-Decidable-Subgroup G H) ( G) ( map-inclusion-Decidable-Subgroup G H) - preserves-mul-inclusion-Decidable-Subgroup = - preserves-mul-inclusion-Subgroup G (subgroup-Decidable-Subgroup G H) + preserves-mul-inclusion-Decidable-Subgroup {x} {y} = + preserves-mul-inclusion-Subgroup G (subgroup-Decidable-Subgroup G H) {x} {y} preserves-unit-inclusion-Decidable-Subgroup : preserves-unit-Group @@ -316,9 +316,10 @@ module _ ( group-Decidable-Subgroup G H) ( G) ( map-inclusion-Decidable-Subgroup G H) - preserves-inverses-inclusion-Decidable-Subgroup = + preserves-inverses-inclusion-Decidable-Subgroup {x} = preserves-inverses-inclusion-Subgroup G ( subgroup-Decidable-Subgroup G H) + { x} hom-inclusion-Decidable-Subgroup : hom-Group (group-Decidable-Subgroup G H) G @@ -372,10 +373,10 @@ module _ is-prop-right-sim-Decidable-Subgroup = is-prop-right-sim-Subgroup G (subgroup-Decidable-Subgroup G H) - prop-right-eq-rel-Decidable-Subgroup : + prop-right-equivalence-relation-Decidable-Subgroup : (x y : type-Group G) → Prop l2 - prop-right-eq-rel-Decidable-Subgroup = - prop-right-eq-rel-Subgroup G (subgroup-Decidable-Subgroup G H) + prop-right-equivalence-relation-Decidable-Subgroup = + prop-right-equivalence-relation-Subgroup G (subgroup-Decidable-Subgroup G H) refl-right-sim-Decidable-Subgroup : is-reflexive right-sim-Decidable-Subgroup @@ -392,9 +393,10 @@ module _ transitive-right-sim-Decidable-Subgroup = transitive-right-sim-Subgroup G (subgroup-Decidable-Subgroup G H) - right-eq-rel-Decidable-Subgroup : Equivalence-Relation l2 (type-Group G) - right-eq-rel-Decidable-Subgroup = - right-eq-rel-Subgroup G (subgroup-Decidable-Subgroup G H) + right-equivalence-relation-Decidable-Subgroup : + equivalence-relation l2 (type-Group G) + right-equivalence-relation-Decidable-Subgroup = + right-equivalence-relation-Subgroup G (subgroup-Decidable-Subgroup G H) ``` #### The equivalence relation where `x ~ y` if and only if there exists `u : H` such that `ux = y` @@ -413,9 +415,10 @@ module _ is-prop-left-sim-Decidable-Subgroup = is-prop-left-sim-Subgroup G (subgroup-Decidable-Subgroup G H) - prop-left-eq-rel-Decidable-Subgroup : (x y : type-Group G) → Prop l2 - prop-left-eq-rel-Decidable-Subgroup = - prop-left-eq-rel-Subgroup G (subgroup-Decidable-Subgroup G H) + prop-left-equivalence-relation-Decidable-Subgroup : + (x y : type-Group G) → Prop l2 + prop-left-equivalence-relation-Decidable-Subgroup = + prop-left-equivalence-relation-Subgroup G (subgroup-Decidable-Subgroup G H) refl-left-sim-Decidable-Subgroup : is-reflexive left-sim-Decidable-Subgroup @@ -432,7 +435,8 @@ module _ transitive-left-sim-Decidable-Subgroup = transitive-left-sim-Subgroup G (subgroup-Decidable-Subgroup G H) - left-eq-rel-Decidable-Subgroup : Equivalence-Relation l2 (type-Group G) - left-eq-rel-Decidable-Subgroup = - left-eq-rel-Subgroup G (subgroup-Decidable-Subgroup G H) + left-equivalence-relation-Decidable-Subgroup : + equivalence-relation l2 (type-Group G) + left-equivalence-relation-Decidable-Subgroup = + left-equivalence-relation-Subgroup G (subgroup-Decidable-Subgroup G H) ``` diff --git a/src/group-theory/e8-lattice.lagda.md b/src/group-theory/e8-lattice.lagda.md index 843bc6e783..24069833f6 100644 --- a/src/group-theory/e8-lattice.lagda.md +++ b/src/group-theory/e8-lattice.lagda.md @@ -27,5 +27,5 @@ The E₈ lattice itself is a subset of the following set. ```agda ambient-set-E8-lattice : Set lzero ambient-set-E8-lattice = - coprod-Set (hom-Set (Fin-Set 8) ℤ-Set) (hom-Set (Fin-Set 8) ℤ-Set) + coprod-Set (hom-set-Set (Fin-Set 8) ℤ-Set) (hom-set-Set (Fin-Set 8) ℤ-Set) ``` diff --git a/src/group-theory/epimorphisms-groups.lagda.md b/src/group-theory/epimorphisms-groups.lagda.md index 9092b64bb2..be41b90450 100644 --- a/src/group-theory/epimorphisms-groups.lagda.md +++ b/src/group-theory/epimorphisms-groups.lagda.md @@ -42,15 +42,15 @@ module _ (H : Group l2) (f : hom-Group G H) where - is-epi-Group-Prop : Prop (l1 ⊔ l2 ⊔ lsuc l3) - is-epi-Group-Prop = + is-epi-prop-hom-Group : Prop (l1 ⊔ l2 ⊔ lsuc l3) + is-epi-prop-hom-Group = is-epi-prop-Large-Precategory Group-Large-Precategory l3 G H f - is-epi-Group : UU (l1 ⊔ l2 ⊔ lsuc l3) - is-epi-Group = type-Prop is-epi-Group-Prop + is-epi-hom-Group : UU (l1 ⊔ l2 ⊔ lsuc l3) + is-epi-hom-Group = type-Prop is-epi-prop-hom-Group - is-prop-is-epi-Group : is-prop is-epi-Group - is-prop-is-epi-Group = is-prop-type-Prop is-epi-Group-Prop + is-prop-is-epi-hom-Group : is-prop is-epi-hom-Group + is-prop-is-epi-hom-Group = is-prop-type-Prop is-epi-prop-hom-Group ``` ## Properties @@ -63,7 +63,7 @@ module _ (H : Group l2) (f : iso-Group G H) where - is-epi-iso-Group : is-epi-Group l3 G H (hom-iso-Group G H f) + is-epi-iso-Group : is-epi-hom-Group l3 G H (hom-iso-Group G H f) is-epi-iso-Group = is-epi-iso-Large-Precategory Group-Large-Precategory l3 G H f ``` diff --git a/src/group-theory/equivalences-concrete-group-actions.lagda.md b/src/group-theory/equivalences-concrete-group-actions.lagda.md index a5e9a8877d..85cc15496e 100644 --- a/src/group-theory/equivalences-concrete-group-actions.lagda.md +++ b/src/group-theory/equivalences-concrete-group-actions.lagda.md @@ -145,11 +145,11 @@ module _ ( hom-equiv-action-Concrete-Group G X Y e) ( hom-equiv-action-Concrete-Group G X Y f) - htpy-equiv-action-Concrete-Group-Prop : + htpy-prop-equiv-action-Concrete-Group : (e f : equiv-action-Concrete-Group G X Y) → Prop (l2 ⊔ l3) - pr1 (htpy-equiv-action-Concrete-Group-Prop e f) = + pr1 (htpy-prop-equiv-action-Concrete-Group e f) = htpy-equiv-action-Concrete-Group G X Y e f - pr2 (htpy-equiv-action-Concrete-Group-Prop e f) = + pr2 (htpy-prop-equiv-action-Concrete-Group e f) = is-prop-htpy-equiv-action-Concrete-Group e f is-set-equiv-action-Concrete-Group : diff --git a/src/group-theory/equivalences-group-actions.lagda.md b/src/group-theory/equivalences-group-actions.lagda.md index 93d9e20b16..266df6c62c 100644 --- a/src/group-theory/equivalences-group-actions.lagda.md +++ b/src/group-theory/equivalences-group-actions.lagda.md @@ -35,202 +35,182 @@ open import group-theory.symmetric-groups ## Idea -A morphism of G-sets is said to be an equivalence if its underlying map is an -equivalence. +A [morphism of `G`-sets](group-theory.group-actions.md) is said to be an +**equivalence** if its underlying map is an +[equivalence](foundation-core.equivalences.md). ## Definition ```agda module _ {l1 l2 l3 : Level} (G : Group l1) - (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) + (X : action-Group G l2) (Y : action-Group G l3) where - is-equiv-hom-Abstract-Group-Action : - hom-Abstract-Group-Action G X Y → UU (l2 ⊔ l3) - is-equiv-hom-Abstract-Group-Action f = - is-equiv (map-hom-Abstract-Group-Action G X Y f) + is-equiv-hom-action-Group : hom-action-Group G X Y → UU (l2 ⊔ l3) + is-equiv-hom-action-Group f = is-equiv (map-hom-action-Group G X Y f) - equiv-Abstract-Group-Action : UU (l1 ⊔ l2 ⊔ l3) - equiv-Abstract-Group-Action = - Σ ( type-Abstract-Group-Action G X ≃ type-Abstract-Group-Action G Y) + equiv-action-Group : UU (l1 ⊔ l2 ⊔ l3) + equiv-action-Group = + Σ ( type-action-Group G X ≃ type-action-Group G Y) ( λ e → ( g : type-Group G) → coherence-square-maps ( map-equiv e) - ( mul-Abstract-Group-Action G X g) - ( mul-Abstract-Group-Action G Y g) + ( mul-action-Group G X g) + ( mul-action-Group G Y g) ( map-equiv e)) - equiv-equiv-Abstract-Group-Action : - equiv-Abstract-Group-Action → - type-Abstract-Group-Action G X ≃ type-Abstract-Group-Action G Y - equiv-equiv-Abstract-Group-Action = pr1 - - map-equiv-Abstract-Group-Action : - equiv-Abstract-Group-Action → - type-Abstract-Group-Action G X → type-Abstract-Group-Action G Y - map-equiv-Abstract-Group-Action e = - map-equiv (equiv-equiv-Abstract-Group-Action e) - - is-equiv-map-equiv-Abstract-Group-Action : - (e : equiv-Abstract-Group-Action) → - is-equiv (map-equiv-Abstract-Group-Action e) - is-equiv-map-equiv-Abstract-Group-Action e = - is-equiv-map-equiv (equiv-equiv-Abstract-Group-Action e) - - coherence-square-equiv-Abstract-Group-Action : - (e : equiv-Abstract-Group-Action) (g : type-Group G) → + equiv-equiv-action-Group : + equiv-action-Group → type-action-Group G X ≃ type-action-Group G Y + equiv-equiv-action-Group = pr1 + + map-equiv-action-Group : + equiv-action-Group → type-action-Group G X → type-action-Group G Y + map-equiv-action-Group e = + map-equiv (equiv-equiv-action-Group e) + + is-equiv-map-equiv-action-Group : + (e : equiv-action-Group) → is-equiv (map-equiv-action-Group e) + is-equiv-map-equiv-action-Group e = + is-equiv-map-equiv (equiv-equiv-action-Group e) + + coherence-square-equiv-action-Group : + (e : equiv-action-Group) (g : type-Group G) → coherence-square-maps - ( map-equiv-Abstract-Group-Action e) - ( mul-Abstract-Group-Action G X g) - ( mul-Abstract-Group-Action G Y g) - ( map-equiv-Abstract-Group-Action e) - coherence-square-equiv-Abstract-Group-Action = pr2 - - hom-equiv-Abstract-Group-Action : - equiv-Abstract-Group-Action → hom-Abstract-Group-Action G X Y - pr1 (hom-equiv-Abstract-Group-Action e) = - map-equiv-Abstract-Group-Action e - pr2 (hom-equiv-Abstract-Group-Action e) = - coherence-square-equiv-Abstract-Group-Action e - - is-equiv-hom-equiv-Abstract-Group-Action : - (e : equiv-Abstract-Group-Action) → - is-equiv-hom-Abstract-Group-Action (hom-equiv-Abstract-Group-Action e) - is-equiv-hom-equiv-Abstract-Group-Action = - is-equiv-map-equiv-Abstract-Group-Action + ( map-equiv-action-Group e) + ( mul-action-Group G X g) + ( mul-action-Group G Y g) + ( map-equiv-action-Group e) + coherence-square-equiv-action-Group = pr2 + + hom-equiv-action-Group : + equiv-action-Group → hom-action-Group G X Y + pr1 (hom-equiv-action-Group e) = map-equiv-action-Group e + pr2 (hom-equiv-action-Group e) = coherence-square-equiv-action-Group e + + is-equiv-hom-equiv-action-Group : + (e : equiv-action-Group) → + is-equiv-hom-action-Group (hom-equiv-action-Group e) + is-equiv-hom-equiv-action-Group = + is-equiv-map-equiv-action-Group ``` ```agda module _ - {l1 l2 l3 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) (e : equiv-Abstract-Group-Action G X Y) + {l1 l2 l3 : Level} (G : Group l1) (X : action-Group G l2) + (Y : action-Group G l3) (e : equiv-action-Group G X Y) where - htpy-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → UU (l2 ⊔ l3) - htpy-equiv-Abstract-Group-Action f = - htpy-hom-Abstract-Group-Action G X Y - ( hom-equiv-Abstract-Group-Action G X Y e) - ( hom-equiv-Abstract-Group-Action G X Y f) - - refl-htpy-equiv-Abstract-Group-Action : htpy-equiv-Abstract-Group-Action e - refl-htpy-equiv-Abstract-Group-Action = - refl-htpy-hom-Abstract-Group-Action G X Y - ( hom-equiv-Abstract-Group-Action G X Y e) - - htpy-eq-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → - Id e f → htpy-equiv-Abstract-Group-Action f - htpy-eq-equiv-Abstract-Group-Action .e refl = - refl-htpy-equiv-Abstract-Group-Action - - is-torsorial-htpy-equiv-Abstract-Group-Action : - is-torsorial htpy-equiv-Abstract-Group-Action - is-torsorial-htpy-equiv-Abstract-Group-Action = + htpy-equiv-action-Group : (f : equiv-action-Group G X Y) → UU (l2 ⊔ l3) + htpy-equiv-action-Group f = + htpy-hom-action-Group G X Y + ( hom-equiv-action-Group G X Y e) + ( hom-equiv-action-Group G X Y f) + + refl-htpy-equiv-action-Group : htpy-equiv-action-Group e + refl-htpy-equiv-action-Group = + refl-htpy-hom-action-Group G X Y (hom-equiv-action-Group G X Y e) + + htpy-eq-equiv-action-Group : + (f : equiv-action-Group G X Y) → Id e f → htpy-equiv-action-Group f + htpy-eq-equiv-action-Group .e refl = refl-htpy-equiv-action-Group + + is-torsorial-htpy-equiv-action-Group : is-torsorial htpy-equiv-action-Group + is-torsorial-htpy-equiv-action-Group = is-contr-equiv - ( Σ ( Σ ( hom-Abstract-Group-Action G X Y) (λ f → is-equiv (pr1 f))) + ( Σ ( Σ ( hom-action-Group G X Y) (λ f → is-equiv (pr1 f))) ( λ f → - htpy-hom-Abstract-Group-Action G X Y - ( hom-equiv-Abstract-Group-Action G X Y e) + htpy-hom-action-Group G X Y + ( hom-equiv-action-Group G X Y e) ( pr1 f))) ( equiv-Σ ( λ f → - htpy-hom-Abstract-Group-Action G X Y - ( hom-equiv-Abstract-Group-Action G X Y e) + htpy-hom-action-Group G X Y + ( hom-equiv-action-Group G X Y e) ( pr1 f)) ( equiv-right-swap-Σ) ( λ ((f , E) , H) → id-equiv)) ( is-torsorial-Eq-subtype - ( is-torsorial-htpy-hom-Abstract-Group-Action G X Y - ( hom-equiv-Abstract-Group-Action G X Y e)) + ( is-torsorial-htpy-hom-action-Group G X Y + ( hom-equiv-action-Group G X Y e)) ( λ f → is-property-is-equiv (pr1 f)) - ( hom-equiv-Abstract-Group-Action G X Y e) + ( hom-equiv-action-Group G X Y e) ( refl-htpy) ( is-equiv-map-equiv (pr1 e))) - is-equiv-htpy-eq-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → - is-equiv (htpy-eq-equiv-Abstract-Group-Action f) - is-equiv-htpy-eq-equiv-Abstract-Group-Action = + is-equiv-htpy-eq-equiv-action-Group : + (f : equiv-action-Group G X Y) → is-equiv (htpy-eq-equiv-action-Group f) + is-equiv-htpy-eq-equiv-action-Group = fundamental-theorem-id - is-torsorial-htpy-equiv-Abstract-Group-Action - htpy-eq-equiv-Abstract-Group-Action - - extensionality-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → - Id e f ≃ htpy-equiv-Abstract-Group-Action f - pr1 (extensionality-equiv-Abstract-Group-Action f) = - htpy-eq-equiv-Abstract-Group-Action f - pr2 (extensionality-equiv-Abstract-Group-Action f) = - is-equiv-htpy-eq-equiv-Abstract-Group-Action f - - eq-htpy-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → - htpy-equiv-Abstract-Group-Action f → Id e f - eq-htpy-equiv-Abstract-Group-Action f = - map-inv-is-equiv (is-equiv-htpy-eq-equiv-Abstract-Group-Action f) + is-torsorial-htpy-equiv-action-Group + htpy-eq-equiv-action-Group + + extensionality-equiv-action-Group : + (f : equiv-action-Group G X Y) → Id e f ≃ htpy-equiv-action-Group f + pr1 (extensionality-equiv-action-Group f) = + htpy-eq-equiv-action-Group f + pr2 (extensionality-equiv-action-Group f) = + is-equiv-htpy-eq-equiv-action-Group f + + eq-htpy-equiv-action-Group : + (f : equiv-action-Group G X Y) → htpy-equiv-action-Group f → Id e f + eq-htpy-equiv-action-Group f = + map-inv-is-equiv (is-equiv-htpy-eq-equiv-action-Group f) module _ - {l1 l2 l3 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) + {l1 l2 l3 : Level} (G : Group l1) + (X : action-Group G l2) (Y : action-Group G l3) where - inv-equiv-Abstract-Group-Action : - equiv-Abstract-Group-Action G X Y → equiv-Abstract-Group-Action G Y X - pr1 (inv-equiv-Abstract-Group-Action (pair e H)) = inv-equiv e - pr2 (inv-equiv-Abstract-Group-Action (pair e H)) g = + inv-equiv-action-Group : + equiv-action-Group G X Y → equiv-action-Group G Y X + pr1 (inv-equiv-action-Group (e , H)) = inv-equiv e + pr2 (inv-equiv-action-Group (e , H)) g = coherence-square-inv-horizontal ( e) - ( mul-Abstract-Group-Action G X g) - ( mul-Abstract-Group-Action G Y g) + ( mul-action-Group G X g) + ( mul-action-Group G Y g) ( e) ( H g) module _ {l1 l2 l3 l4 : Level} (G : Group l1) - (X : Abstract-Group-Action G l2) (Y : Abstract-Group-Action G l3) - (Z : Abstract-Group-Action G l4) + (X : action-Group G l2) (Y : action-Group G l3) (Z : action-Group G l4) where - comp-equiv-Abstract-Group-Action : - equiv-Abstract-Group-Action G Y Z → equiv-Abstract-Group-Action G X Y → - equiv-Abstract-Group-Action G X Z - pr1 (comp-equiv-Abstract-Group-Action (pair f K) (pair e H)) = f ∘e e - pr2 (comp-equiv-Abstract-Group-Action (pair f K) (pair e H)) g = + comp-equiv-action-Group : + equiv-action-Group G Y Z → equiv-action-Group G X Y → + equiv-action-Group G X Z + pr1 (comp-equiv-action-Group (f , K) (e , H)) = f ∘e e + pr2 (comp-equiv-action-Group (f , K) (e , H)) g = pasting-horizontal-coherence-square-maps ( map-equiv e) ( map-equiv f) - ( mul-Abstract-Group-Action G X g) - ( mul-Abstract-Group-Action G Y g) - ( mul-Abstract-Group-Action G Z g) + ( mul-action-Group G X g) + ( mul-action-Group G Y g) + ( mul-action-Group G Z g) ( map-equiv e) ( map-equiv f) ( H g) ( K g) module _ - {l1 l2 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) + {l1 l2 : Level} (G : Group l1) (X : action-Group G l2) where - id-equiv-Abstract-Group-Action : - equiv-Abstract-Group-Action G X X - pr1 id-equiv-Abstract-Group-Action = id-equiv - pr2 id-equiv-Abstract-Group-Action g = refl-htpy + id-equiv-action-Group : equiv-action-Group G X X + pr1 id-equiv-action-Group = id-equiv + pr2 id-equiv-action-Group g = refl-htpy - equiv-eq-Abstract-Group-Action : - (Y : Abstract-Group-Action G l2) → - Id X Y → equiv-Abstract-Group-Action G X Y - equiv-eq-Abstract-Group-Action .X refl = id-equiv-Abstract-Group-Action + equiv-eq-action-Group : + (Y : action-Group G l2) → Id X Y → equiv-action-Group G X Y + equiv-eq-action-Group .X refl = id-equiv-action-Group abstract - is-torsorial-equiv-Abstract-Group-Action : - is-torsorial - ( λ (Y : Abstract-Group-Action G l2) → - equiv-Abstract-Group-Action G X Y) - is-torsorial-equiv-Abstract-Group-Action = + is-torsorial-equiv-action-Group : + is-torsorial (λ (Y : action-Group G l2) → equiv-action-Group G X Y) + is-torsorial-equiv-action-Group = is-torsorial-Eq-structure ( λ Y ν e → (g : type-Group G) → @@ -238,7 +218,7 @@ module _ ( e ∘e map-hom-Group G (symmetric-Group (pr1 X)) (pr2 X) g) ( map-hom-Group G (symmetric-Group Y) ν g ∘e e)) ( is-torsorial-equiv-Set (pr1 X)) - ( pair (pr1 X) id-equiv) + ( pr1 X , id-equiv) ( is-contr-equiv ( Σ ( hom-Group G (symmetric-Group (pr1 X))) ( htpy-hom-Group G (symmetric-Group (pr1 X)) (pr2 X))) @@ -255,111 +235,89 @@ module _ ( pr2 X))) abstract - is-equiv-equiv-eq-Abstract-Group-Action : - (Y : Abstract-Group-Action G l2) → - is-equiv (equiv-eq-Abstract-Group-Action Y) - is-equiv-equiv-eq-Abstract-Group-Action = + is-equiv-equiv-eq-action-Group : + (Y : action-Group G l2) → is-equiv (equiv-eq-action-Group Y) + is-equiv-equiv-eq-action-Group = fundamental-theorem-id - is-torsorial-equiv-Abstract-Group-Action - equiv-eq-Abstract-Group-Action - - eq-equiv-Abstract-Group-Action : - (Y : Abstract-Group-Action G l2) → - equiv-Abstract-Group-Action G X Y → Id X Y - eq-equiv-Abstract-Group-Action Y = - map-inv-is-equiv (is-equiv-equiv-eq-Abstract-Group-Action Y) - - extensionality-Abstract-Group-Action : - (Y : Abstract-Group-Action G l2) → - Id X Y ≃ equiv-Abstract-Group-Action G X Y - pr1 (extensionality-Abstract-Group-Action Y) = - equiv-eq-Abstract-Group-Action Y - pr2 (extensionality-Abstract-Group-Action Y) = - is-equiv-equiv-eq-Abstract-Group-Action Y + is-torsorial-equiv-action-Group + equiv-eq-action-Group + + eq-equiv-action-Group : + (Y : action-Group G l2) → equiv-action-Group G X Y → X = Y + eq-equiv-action-Group Y = + map-inv-is-equiv (is-equiv-equiv-eq-action-Group Y) + + extensionality-action-Group : + (Y : action-Group G l2) → (X = Y) ≃ equiv-action-Group G X Y + pr1 (extensionality-action-Group Y) = + equiv-eq-action-Group Y + pr2 (extensionality-action-Group Y) = + is-equiv-equiv-eq-action-Group Y module _ - {l1 l2 l3 l4 l5 : Level} (G : Group l1) (X1 : Abstract-Group-Action G l2) - (X2 : Abstract-Group-Action G l3) (X3 : Abstract-Group-Action G l4) - (X4 : Abstract-Group-Action G l5) + {l1 l2 l3 l4 l5 : Level} (G : Group l1) + (X1 : action-Group G l2) (X2 : action-Group G l3) + (X3 : action-Group G l4) (X4 : action-Group G l5) where - associative-comp-equiv-Abstract-Group-Action : - (h : equiv-Abstract-Group-Action G X3 X4) - (g : equiv-Abstract-Group-Action G X2 X3) - (f : equiv-Abstract-Group-Action G X1 X2) → - Id - ( comp-equiv-Abstract-Group-Action G X1 X2 X4 - ( comp-equiv-Abstract-Group-Action G X2 X3 X4 h g) - ( f)) - ( comp-equiv-Abstract-Group-Action G X1 X3 X4 h - ( comp-equiv-Abstract-Group-Action G X1 X2 X3 g f)) - associative-comp-equiv-Abstract-Group-Action h g f = - eq-htpy-equiv-Abstract-Group-Action G X1 X4 - ( comp-equiv-Abstract-Group-Action G X1 X2 X4 - ( comp-equiv-Abstract-Group-Action G X2 X3 X4 h g) + associative-comp-equiv-action-Group : + (h : equiv-action-Group G X3 X4) + (g : equiv-action-Group G X2 X3) + (f : equiv-action-Group G X1 X2) → + comp-equiv-action-Group G X1 X2 X4 + ( comp-equiv-action-Group G X2 X3 X4 h g) + ( f) = + comp-equiv-action-Group G X1 X3 X4 h + ( comp-equiv-action-Group G X1 X2 X3 g f) + associative-comp-equiv-action-Group h g f = + eq-htpy-equiv-action-Group G X1 X4 + ( comp-equiv-action-Group G X1 X2 X4 + ( comp-equiv-action-Group G X2 X3 X4 h g) ( f)) - ( comp-equiv-Abstract-Group-Action G X1 X3 X4 h - ( comp-equiv-Abstract-Group-Action G X1 X2 X3 g f)) + ( comp-equiv-action-Group G X1 X3 X4 h + ( comp-equiv-action-Group G X1 X2 X3 g f)) ( refl-htpy) module _ - {l1 l2 l3 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) + {l1 l2 l3 : Level} (G : Group l1) + (X : action-Group G l2) (Y : action-Group G l3) where - left-unit-law-comp-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → - Id - ( comp-equiv-Abstract-Group-Action G X Y Y - ( id-equiv-Abstract-Group-Action G Y) - ( f)) - ( f) - left-unit-law-comp-equiv-Abstract-Group-Action f = - eq-htpy-equiv-Abstract-Group-Action G X Y - ( comp-equiv-Abstract-Group-Action G X Y Y - ( id-equiv-Abstract-Group-Action G Y) - ( f)) + left-unit-law-comp-equiv-action-Group : + (f : equiv-action-Group G X Y) → + comp-equiv-action-Group G X Y Y (id-equiv-action-Group G Y) f = f + left-unit-law-comp-equiv-action-Group f = + eq-htpy-equiv-action-Group G X Y + ( comp-equiv-action-Group G X Y Y (id-equiv-action-Group G Y) f) ( f) ( refl-htpy) - right-unit-law-comp-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → - Id - ( comp-equiv-Abstract-Group-Action G X X Y f - ( id-equiv-Abstract-Group-Action G X)) - ( f) - right-unit-law-comp-equiv-Abstract-Group-Action f = - eq-htpy-equiv-Abstract-Group-Action G X Y - ( comp-equiv-Abstract-Group-Action G X X Y f - ( id-equiv-Abstract-Group-Action G X)) + right-unit-law-comp-equiv-action-Group : + (f : equiv-action-Group G X Y) → + comp-equiv-action-Group G X X Y f (id-equiv-action-Group G X) = f + right-unit-law-comp-equiv-action-Group f = + eq-htpy-equiv-action-Group G X Y + ( comp-equiv-action-Group G X X Y f (id-equiv-action-Group G X)) ( f) ( refl-htpy) - left-inverse-law-comp-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → - Id - ( comp-equiv-Abstract-Group-Action G X Y X - ( inv-equiv-Abstract-Group-Action G X Y f) - ( f)) - ( id-equiv-Abstract-Group-Action G X) - left-inverse-law-comp-equiv-Abstract-Group-Action f = - eq-htpy-equiv-Abstract-Group-Action G X X - ( comp-equiv-Abstract-Group-Action G X Y X - ( inv-equiv-Abstract-Group-Action G X Y f) - ( f)) - ( id-equiv-Abstract-Group-Action G X) + left-inverse-law-comp-equiv-action-Group : + (f : equiv-action-Group G X Y) → + comp-equiv-action-Group G X Y X (inv-equiv-action-Group G X Y f) f = + id-equiv-action-Group G X + left-inverse-law-comp-equiv-action-Group f = + eq-htpy-equiv-action-Group G X X + ( comp-equiv-action-Group G X Y X (inv-equiv-action-Group G X Y f) f) + ( id-equiv-action-Group G X) ( is-retraction-map-inv-equiv (pr1 f)) - right-inverse-law-comp-equiv-Abstract-Group-Action : - (f : equiv-Abstract-Group-Action G X Y) → - Id - ( comp-equiv-Abstract-Group-Action G Y X Y f - ( inv-equiv-Abstract-Group-Action G X Y f)) - ( id-equiv-Abstract-Group-Action G Y) - right-inverse-law-comp-equiv-Abstract-Group-Action f = - eq-htpy-equiv-Abstract-Group-Action G Y Y - ( comp-equiv-Abstract-Group-Action G Y X Y f - ( inv-equiv-Abstract-Group-Action G X Y f)) - ( id-equiv-Abstract-Group-Action G Y) + right-inverse-law-comp-equiv-action-Group : + (f : equiv-action-Group G X Y) → + comp-equiv-action-Group G Y X Y f (inv-equiv-action-Group G X Y f) = + id-equiv-action-Group G Y + right-inverse-law-comp-equiv-action-Group f = + eq-htpy-equiv-action-Group G Y Y + ( comp-equiv-action-Group G Y X Y f (inv-equiv-action-Group G X Y f)) + ( id-equiv-action-Group G Y) ( is-section-map-inv-equiv (pr1 f)) ``` diff --git a/src/group-theory/equivalences-semigroups.lagda.md b/src/group-theory/equivalences-semigroups.lagda.md index 4ff46f9546..11178cdb9a 100644 --- a/src/group-theory/equivalences-semigroups.lagda.md +++ b/src/group-theory/equivalences-semigroups.lagda.md @@ -82,7 +82,7 @@ module _ pr1 (pr1 (center-total-preserves-mul-id-Semigroup)) = mul-Semigroup G pr2 (pr1 (center-total-preserves-mul-id-Semigroup)) = associative-mul-Semigroup G - pr2 (center-total-preserves-mul-id-Semigroup) x y = refl + pr2 (center-total-preserves-mul-id-Semigroup) = refl contraction-total-preserves-mul-id-Semigroup : ( t : Σ ( has-associative-mul (type-Semigroup G)) @@ -90,7 +90,7 @@ module _ preserves-mul-Semigroup G (pair (set-Semigroup G) μ) id)) → Id center-total-preserves-mul-id-Semigroup t contraction-total-preserves-mul-id-Semigroup - (pair (pair μ-G' associative-G') μ-id) = + ( (μ-G' , associative-G') , μ-id) = eq-type-subtype ( λ μ → preserves-mul-prop-Semigroup G (pair (set-Semigroup G) μ) id) @@ -108,10 +108,12 @@ module _ Id-Prop ( set-Semigroup G) ( μ (μ x y) z) (μ x (μ y z)))))) - ( eq-htpy (λ x → eq-htpy (λ y → μ-id x y)))) + ( eq-htpy (λ x → eq-htpy (λ y → μ-id)))) is-torsorial-preserves-mul-id-Semigroup : - is-torsorial (λ μ → preserves-mul (mul-Semigroup G) (pr1 μ) id) + is-torsorial + ( λ (μ : has-associative-mul (type-Semigroup G)) → + preserves-mul (mul-Semigroup G) (pr1 μ) id) pr1 is-torsorial-preserves-mul-id-Semigroup = center-total-preserves-mul-id-Semigroup pr2 is-torsorial-preserves-mul-id-Semigroup = diff --git a/src/group-theory/exponents-groups.lagda.md b/src/group-theory/exponents-groups.lagda.md index 1540d6e228..4df222fea0 100644 --- a/src/group-theory/exponents-groups.lagda.md +++ b/src/group-theory/exponents-groups.lagda.md @@ -14,7 +14,7 @@ open import foundation.universe-levels open import group-theory.free-groups-with-one-generator open import group-theory.groups open import group-theory.intersections-subgroups-groups -open import group-theory.kernels +open import group-theory.kernels-homomorphisms-groups open import group-theory.subgroups ``` diff --git a/src/group-theory/free-groups-with-one-generator.lagda.md b/src/group-theory/free-groups-with-one-generator.lagda.md index f3bd5fdeea..fa229df465 100644 --- a/src/group-theory/free-groups-with-one-generator.lagda.md +++ b/src/group-theory/free-groups-with-one-generator.lagda.md @@ -82,14 +82,14 @@ module _ hom-element-Group : hom-Group ℤ-Group G pr1 hom-element-Group = map-hom-element-Group - pr2 hom-element-Group = preserves-mul-map-hom-element-Group + pr2 hom-element-Group {x} {y} = preserves-mul-map-hom-element-Group x y htpy-hom-element-Group : (h : hom-Group ℤ-Group G) → map-hom-Group ℤ-Group G h one-ℤ = g → htpy-hom-Group ℤ-Group G hom-element-Group h htpy-hom-element-Group h p = htpy-map-ℤ-Pointed-Type-With-Aut - ( pair (pointed-type-Group G) (equiv-mul-Group G g)) + ( pointed-type-Group G , equiv-mul-Group G g) ( pair ( map-hom-Group ℤ-Group G h) ( pair @@ -98,8 +98,8 @@ module _ ( ap ( map-hom-Group ℤ-Group G h) ( is-left-add-one-succ-ℤ x)) ∙ - ( ( preserves-mul-hom-Group ℤ-Group G h one-ℤ x) ∙ - ( ap ( mul-Group' G (map-hom-Group ℤ-Group G h x)) p))))) + ( preserves-mul-hom-Group ℤ-Group G h) ∙ + ( ap ( mul-Group' G (map-hom-Group ℤ-Group G h x)) p)))) is-torsorial-hom-element-Group : is-torsorial (λ h → map-hom-Group ℤ-Group G h one-ℤ = g) @@ -107,7 +107,7 @@ module _ hom-element-Group pr2 (pr1 is-torsorial-hom-element-Group) = right-unit-law-mul-Group G g - pr2 is-torsorial-hom-element-Group (pair h p) = + pr2 is-torsorial-hom-element-Group (h , p) = eq-type-subtype ( λ f → Id-Prop (set-Group G) (map-hom-Group ℤ-Group G f one-ℤ) g) ( eq-htpy-hom-Group ℤ-Group G diff --git a/src/group-theory/full-subgroups.lagda.md b/src/group-theory/full-subgroups.lagda.md index 09f1268b8e..5200efc0f3 100644 --- a/src/group-theory/full-subgroups.lagda.md +++ b/src/group-theory/full-subgroups.lagda.md @@ -24,7 +24,10 @@ open import group-theory.subsets-groups ## Idea -The full subset of a group is a normal subgroup. +The **full subgroup** of a [group](group-theory.groups.md) `G` is the +[subgroup](group-theory.subgroups.md) consisting of all elements of the group +`G`. In other words, the full subgroup is the subgroup whose underlying subset +is the [full subset](foundation.full-subtypes.md) of the group. ## Definition @@ -64,21 +67,24 @@ contains-unit-full-Subgroup G = is-in-full-subtype (unit-Group G) is-closed-under-multiplication-full-Subgroup : {l1 l2 : Level} (G : Group l1) → is-closed-under-multiplication-subset-Group G (subset-full-Subgroup l2 G) -is-closed-under-multiplication-full-Subgroup G x y _ _ = +is-closed-under-multiplication-full-Subgroup G {x} {y} _ _ = is-in-full-subtype (mul-Group G x y) is-closed-under-inverses-full-Subgroup : {l1 l2 : Level} (G : Group l1) → is-closed-under-inverses-subset-Group G (subset-full-Subgroup l2 G) -is-closed-under-inverses-full-Subgroup G x _ = +is-closed-under-inverses-full-Subgroup G {x} _ = is-in-full-subtype (inv-Group G x) full-Subgroup : {l1 : Level} (l2 : Level) (G : Group l1) → Subgroup l2 G -pr1 (full-Subgroup l2 G) = subset-full-Subgroup l2 G -pr1 (pr2 (full-Subgroup l2 G)) = contains-unit-full-Subgroup G -pr1 (pr2 (pr2 (full-Subgroup l2 G))) = - is-closed-under-multiplication-full-Subgroup G -pr2 (pr2 (pr2 (full-Subgroup l2 G))) = is-closed-under-inverses-full-Subgroup G +pr1 (full-Subgroup l2 G) = + subset-full-Subgroup l2 G +pr1 (pr2 (full-Subgroup l2 G)) = + contains-unit-full-Subgroup G +pr1 (pr2 (pr2 (full-Subgroup l2 G))) {x} {y} = + is-closed-under-multiplication-full-Subgroup G {x} {y} +pr2 (pr2 (pr2 (full-Subgroup l2 G))) {x} = + is-closed-under-inverses-full-Subgroup G {x} module _ {l1 l2 : Level} (G : Group l1) @@ -103,13 +109,14 @@ module _ preserves-mul-inclusion-full-Subgroup : preserves-mul-Group group-full-Subgroup G inclusion-full-Subgroup - preserves-mul-inclusion-full-Subgroup = - preserves-mul-inclusion-Subgroup G (full-Subgroup l2 G) + preserves-mul-inclusion-full-Subgroup {x} {y} = + preserves-mul-inclusion-Subgroup G (full-Subgroup l2 G) {x} {y} equiv-group-inclusion-full-Subgroup : equiv-Group group-full-Subgroup G - pr1 equiv-group-inclusion-full-Subgroup = equiv-inclusion-full-Subgroup - pr2 equiv-group-inclusion-full-Subgroup = - preserves-mul-inclusion-full-Subgroup + pr1 equiv-group-inclusion-full-Subgroup = + equiv-inclusion-full-Subgroup + pr2 equiv-group-inclusion-full-Subgroup {x} {y} = + preserves-mul-inclusion-full-Subgroup {x} {y} iso-full-Subgroup : iso-Group group-full-Subgroup G iso-full-Subgroup = diff --git a/src/group-theory/full-subsemigroups.lagda.md b/src/group-theory/full-subsemigroups.lagda.md new file mode 100644 index 0000000000..507941cd28 --- /dev/null +++ b/src/group-theory/full-subsemigroups.lagda.md @@ -0,0 +1,173 @@ +# The full subsemigroup of a semigroup + +```agda +module group-theory.full-subsemigroups where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.full-subtypes +open import foundation.propositions +open import foundation.universe-levels + +open import group-theory.equivalences-semigroups +open import group-theory.homomorphisms-semigroups +open import group-theory.isomorphisms-semigroups +open import group-theory.semigroups +open import group-theory.subsemigroups +open import group-theory.subsets-semigroups +``` + +
+ +## Idea + +The **full subsemigroup** of a [semigroup](group-theory.semigroups.md) `G` is +the [subsemigroup](group-theory.subsemigroups.md) consisting of all elements of +the semigroup `G`. In other words, the full subsemigroup is the subsemigroup +whose underlying subset is the [full subset](foundation.full-subtypes.md) of the +semigroup. + +## Definition + +### Full subsemigroups + +```agda +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Subsemigroup l2 G) + where + + is-full-prop-Subsemigroup : Prop (l1 ⊔ l2) + is-full-prop-Subsemigroup = is-full-subtype-Prop (subset-Subsemigroup G H) + + is-full-Subsemigroup : UU (l1 ⊔ l2) + is-full-Subsemigroup = type-Prop is-full-prop-Subsemigroup + + is-prop-is-full-Subsemigroup : is-prop is-full-Subsemigroup + is-prop-is-full-Subsemigroup = is-prop-type-Prop is-full-prop-Subsemigroup +``` + +### The full subsemigroup at each universe level + +```agda +subset-full-Subsemigroup : + {l1 : Level} (l2 : Level) (G : Semigroup l1) → subset-Semigroup l2 G +subset-full-Subsemigroup l2 G = full-subtype l2 (type-Semigroup G) + +type-full-Subsemigroup : + {l1 : Level} (l2 : Level) (G : Semigroup l1) → UU (l1 ⊔ l2) +type-full-Subsemigroup l2 G = type-full-subtype l2 (type-Semigroup G) + +is-closed-under-multiplication-full-Subsemigroup : + {l1 l2 : Level} (G : Semigroup l1) → + is-closed-under-multiplication-subset-Semigroup G + ( subset-full-Subsemigroup l2 G) +is-closed-under-multiplication-full-Subsemigroup G {x} {y} _ _ = + is-in-full-subtype (mul-Semigroup G x y) + +full-Subsemigroup : + {l1 : Level} (l2 : Level) (G : Semigroup l1) → Subsemigroup l2 G +pr1 (full-Subsemigroup l2 G) = + subset-full-Subsemigroup l2 G +pr2 (full-Subsemigroup l2 G) {x} {y} = + is-closed-under-multiplication-full-Subsemigroup G {x} {y} + +module _ + {l1 l2 : Level} (G : Semigroup l1) + where + + inclusion-full-Subsemigroup : type-full-Subsemigroup l2 G → type-Semigroup G + inclusion-full-Subsemigroup = + inclusion-Subsemigroup G (full-Subsemigroup l2 G) + + is-equiv-inclusion-full-Subsemigroup : is-equiv inclusion-full-Subsemigroup + is-equiv-inclusion-full-Subsemigroup = is-equiv-inclusion-full-subtype + + equiv-inclusion-full-Subsemigroup : + type-full-Subsemigroup l2 G ≃ type-Semigroup G + pr1 equiv-inclusion-full-Subsemigroup = inclusion-full-Subsemigroup + pr2 equiv-inclusion-full-Subsemigroup = is-equiv-inclusion-full-Subsemigroup + + semigroup-full-Subsemigroup : Semigroup (l1 ⊔ l2) + semigroup-full-Subsemigroup = + semigroup-Subsemigroup G (full-Subsemigroup l2 G) + + hom-inclusion-full-Subsemigroup : hom-Semigroup semigroup-full-Subsemigroup G + hom-inclusion-full-Subsemigroup = + hom-inclusion-Subsemigroup G (full-Subsemigroup l2 G) + + preserves-mul-inclusion-full-Subsemigroup : + preserves-mul-Semigroup + ( semigroup-full-Subsemigroup) + ( G) + ( inclusion-full-Subsemigroup) + preserves-mul-inclusion-full-Subsemigroup {x} {y} = + preserves-mul-inclusion-Subsemigroup G (full-Subsemigroup l2 G) {x} {y} + + equiv-semigroup-inclusion-full-Subsemigroup : + equiv-Semigroup semigroup-full-Subsemigroup G + pr1 equiv-semigroup-inclusion-full-Subsemigroup = + equiv-inclusion-full-Subsemigroup + pr2 equiv-semigroup-inclusion-full-Subsemigroup {x} {y} = + preserves-mul-inclusion-full-Subsemigroup {x} {y} + + iso-full-Subsemigroup : iso-Semigroup semigroup-full-Subsemigroup G + iso-full-Subsemigroup = + iso-equiv-Semigroup + ( semigroup-full-Subsemigroup) + ( G) + ( equiv-semigroup-inclusion-full-Subsemigroup) + + inv-iso-full-Subsemigroup : + iso-Semigroup G semigroup-full-Subsemigroup + inv-iso-full-Subsemigroup = + inv-iso-Semigroup semigroup-full-Subsemigroup G iso-full-Subsemigroup +``` + +## Properties + +### A subsemigroup is full if and only if the inclusion is an isomorphism + +```agda +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Subsemigroup l2 G) + where + + is-iso-inclusion-is-full-Subsemigroup : + is-full-Subsemigroup G H → + is-iso-Semigroup + ( semigroup-Subsemigroup G H) + ( G) + ( hom-inclusion-Subsemigroup G H) + is-iso-inclusion-is-full-Subsemigroup K = + is-iso-is-equiv-hom-Semigroup + ( semigroup-Subsemigroup G H) + ( G) + ( hom-inclusion-Subsemigroup G H) + ( is-equiv-inclusion-is-full-subtype (subset-Subsemigroup G H) K) + + iso-inclusion-is-full-Subsemigroup : + is-full-Subsemigroup G H → iso-Semigroup (semigroup-Subsemigroup G H) G + pr1 (iso-inclusion-is-full-Subsemigroup K) = + hom-inclusion-Subsemigroup G H + pr2 (iso-inclusion-is-full-Subsemigroup K) = + is-iso-inclusion-is-full-Subsemigroup K + + is-full-is-iso-inclusion-Subsemigroup : + is-iso-Semigroup + ( semigroup-Subsemigroup G H) + ( G) + ( hom-inclusion-Subsemigroup G H) → + is-full-Subsemigroup G H + is-full-is-iso-inclusion-Subsemigroup K = + is-full-is-equiv-inclusion-subtype + ( subset-Subsemigroup G H) + ( is-equiv-is-iso-Semigroup + ( semigroup-Subsemigroup G H) + ( G) + ( hom-inclusion-Subsemigroup G H) + ( K)) +``` diff --git a/src/group-theory/functoriality-quotient-groups.lagda.md b/src/group-theory/functoriality-quotient-groups.lagda.md index 19006f774b..91f0b9d98b 100644 --- a/src/group-theory/functoriality-quotient-groups.lagda.md +++ b/src/group-theory/functoriality-quotient-groups.lagda.md @@ -109,20 +109,30 @@ module _ where abstract - preserves-id-hom-quotient-Group : - hom-quotient-Group G G N N (id-reflecting-hom-Group G N) = + preserves-id-hom-quotient-Group' : + (p : reflects-normal-subgroup-hom-Group G G N N (id-hom-Group G)) → + hom-quotient-Group G G N N (id-reflecting-hom-Group' G N p) = id-hom-Group (quotient-Group G N) - preserves-id-hom-quotient-Group = + preserves-id-hom-quotient-Group' p = ap ( pr1) ( eq-is-contr' ( unique-mapping-property-quotient-Group G N ( quotient-Group G N) ( nullifying-quotient-hom-Group G N)) - ( hom-quotient-Group G G N N (id-reflecting-hom-Group G N) , - naturality-hom-quotient-Group G G N N (id-reflecting-hom-Group G N)) + ( hom-quotient-Group G G N N (id-reflecting-hom-Group' G N p) , + naturality-hom-quotient-Group G G N N + ( id-reflecting-hom-Group' G N p)) ( id-hom-Group (quotient-Group G N) , refl-htpy)) + + abstract + preserves-id-hom-quotient-Group : + hom-quotient-Group G G N N (id-reflecting-hom-Group G N) = + id-hom-Group (quotient-Group G N) + preserves-id-hom-quotient-Group = + preserves-id-hom-quotient-Group' + ( reflects-normal-subgroup-id-hom-Group G N) ``` #### The functorial action preserves composition @@ -137,17 +147,21 @@ module _ where abstract - preserves-comp-hom-quotient-Group : + preserves-comp-hom-quotient-Group' : (g : reflecting-hom-Group H K M N) - (f : reflecting-hom-Group G H L M) → - hom-quotient-Group G K L N (comp-reflecting-hom-Group G H K L M N g f) = + (f : reflecting-hom-Group G H L M) + (p : + reflects-normal-subgroup-hom-Group G K L N + ( hom-comp-reflecting-hom-Group G H K L M N g f)) → + hom-quotient-Group G K L N + ( comp-reflecting-hom-Group' G H K L M N g f p) = comp-hom-Group ( quotient-Group G L) ( quotient-Group H M) ( quotient-Group K N) ( hom-quotient-Group H K M N g) ( hom-quotient-Group G H L M f) - preserves-comp-hom-quotient-Group g f = + preserves-comp-hom-quotient-Group' g f p = ap ( pr1) ( eq-is-contr' @@ -158,11 +172,11 @@ module _ ( L) ( N) ( nullifying-quotient-hom-Group K N) - ( comp-reflecting-hom-Group G H K L M N g f))) + ( comp-reflecting-hom-Group' G H K L M N g f p))) ( ( hom-quotient-Group G K L N - ( comp-reflecting-hom-Group G H K L M N g f)) , + ( comp-reflecting-hom-Group' G H K L M N g f p)) , ( naturality-hom-quotient-Group G K L N - ( comp-reflecting-hom-Group G H K L M N g f))) + ( comp-reflecting-hom-Group' G H K L M N g f p))) ( comp-hom-Group ( quotient-Group G L) ( quotient-Group H M) @@ -179,6 +193,21 @@ module _ ( map-hom-quotient-Group H K M N g) ( naturality-hom-quotient-Group G H L M f) ( naturality-hom-quotient-Group H K M N g)))) + + abstract + preserves-comp-hom-quotient-Group : + (g : reflecting-hom-Group H K M N) + (f : reflecting-hom-Group G H L M) → + hom-quotient-Group G K L N (comp-reflecting-hom-Group G H K L M N g f) = + comp-hom-Group + ( quotient-Group G L) + ( quotient-Group H M) + ( quotient-Group K N) + ( hom-quotient-Group H K M N g) + ( hom-quotient-Group G H L M f) + preserves-comp-hom-quotient-Group g f = + preserves-comp-hom-quotient-Group' g f + ( reflects-normal-subgroup-comp-reflecting-hom-Group G H K L M N g f) ``` #### The quotient group functor diff --git a/src/group-theory/generating-elements-groups.lagda.md b/src/group-theory/generating-elements-groups.lagda.md index 404159da0b..41643d2ee7 100644 --- a/src/group-theory/generating-elements-groups.lagda.md +++ b/src/group-theory/generating-elements-groups.lagda.md @@ -392,14 +392,17 @@ module _ ( trivial-hom-Group G H) ( is-injective-is-emb ( U H) - ( is-in-kernel-quotient-hom-is-in-Normal-Subgroup G N - ( contains-element-image-hom-element-Group G g))) + ( inv + ( is-in-kernel-quotient-hom-is-in-Normal-Subgroup G N + ( contains-element-image-hom-element-Group G g)))) is-surjective-hom-element-is-emb-ev-element-hom-Group : is-surjective-hom-element-Group G g is-surjective-hom-element-is-emb-ev-element-hom-Group x = is-in-normal-subgroup-is-in-kernel-quotient-hom-Group G N - ( is-trivial-quotient-hom-image-hom-element-is-emb-ev-element-hom-Group x) + ( inv + ( is-trivial-quotient-hom-image-hom-element-is-emb-ev-element-hom-Group + x)) ``` #### A group element `g : G` is generating if and only if for every group `H` the evaluation map `hom(G,H) → H` at `g` is an embedding diff --git a/src/group-theory/group-actions.lagda.md b/src/group-theory/group-actions.lagda.md index d648cf4432..26f4f6cc6e 100644 --- a/src/group-theory/group-actions.lagda.md +++ b/src/group-theory/group-actions.lagda.md @@ -36,65 +36,64 @@ module _ {l1 : Level} (G : Group l1) where - Abstract-Group-Action : (l : Level) → UU (l1 ⊔ lsuc l) - Abstract-Group-Action l = + action-Group : (l : Level) → UU (l1 ⊔ lsuc l) + action-Group l = Σ (Set l) (λ X → hom-Group G (symmetric-Group X)) module _ - {l1 l2 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) + {l1 l2 : Level} (G : Group l1) (X : action-Group G l2) where - set-Abstract-Group-Action : Set l2 - set-Abstract-Group-Action = pr1 X + set-action-Group : Set l2 + set-action-Group = pr1 X - type-Abstract-Group-Action : UU l2 - type-Abstract-Group-Action = type-Set set-Abstract-Group-Action + type-action-Group : UU l2 + type-action-Group = type-Set set-action-Group - is-set-type-Abstract-Group-Action : is-set type-Abstract-Group-Action - is-set-type-Abstract-Group-Action = is-set-type-Set set-Abstract-Group-Action + is-set-type-action-Group : is-set type-action-Group + is-set-type-action-Group = is-set-type-Set set-action-Group - equiv-mul-Abstract-Group-Action : - type-Group G → type-Abstract-Group-Action ≃ type-Abstract-Group-Action - equiv-mul-Abstract-Group-Action = - map-hom-Group G (symmetric-Group set-Abstract-Group-Action) (pr2 X) + equiv-mul-action-Group : + type-Group G → type-action-Group ≃ type-action-Group + equiv-mul-action-Group = + map-hom-Group G (symmetric-Group set-action-Group) (pr2 X) - mul-Abstract-Group-Action : - type-Group G → type-Abstract-Group-Action → type-Abstract-Group-Action - mul-Abstract-Group-Action g = - map-equiv (equiv-mul-Abstract-Group-Action g) + mul-action-Group : + type-Group G → type-action-Group → type-action-Group + mul-action-Group g = + map-equiv (equiv-mul-action-Group g) - mul-Abstract-Group-Action' : - type-Abstract-Group-Action → type-Group G → type-Abstract-Group-Action - mul-Abstract-Group-Action' x g = mul-Abstract-Group-Action g x + mul-action-Group' : + type-action-Group → type-Group G → type-action-Group + mul-action-Group' x g = mul-action-Group g x - preserves-unit-mul-Abstract-Group-Action : - (mul-Abstract-Group-Action (unit-Group G)) ~ id - preserves-unit-mul-Abstract-Group-Action = + preserves-unit-mul-action-Group : + (mul-action-Group (unit-Group G)) ~ id + preserves-unit-mul-action-Group = htpy-eq ( ap pr1 ( preserves-unit-hom-Group G - ( symmetric-Group set-Abstract-Group-Action) + ( symmetric-Group set-action-Group) ( pr2 X))) - preserves-mul-Abstract-Group-Action : - (g : type-Group G) (h : type-Group G) (x : type-Abstract-Group-Action) → + preserves-mul-action-Group : + (g : type-Group G) (h : type-Group G) (x : type-action-Group) → Id - ( mul-Abstract-Group-Action (mul-Group G g h) x) - ( mul-Abstract-Group-Action g (mul-Abstract-Group-Action h x)) - preserves-mul-Abstract-Group-Action g h = + ( mul-action-Group (mul-Group G g h) x) + ( mul-action-Group g (mul-action-Group h x)) + preserves-mul-action-Group g h = htpy-eq ( ap pr1 ( preserves-mul-hom-Group G - ( symmetric-Group set-Abstract-Group-Action) (pr2 X) g h)) - - transpose-eq-mul-Abstract-Group-Action : - (g : type-Group G) (x y : type-Abstract-Group-Action) → - Id (mul-Abstract-Group-Action g x) y → - Id x (mul-Abstract-Group-Action (inv-Group G g) y) - transpose-eq-mul-Abstract-Group-Action g x - .(mul-Abstract-Group-Action g x) refl = + ( symmetric-Group set-action-Group) (pr2 X))) + + transpose-eq-mul-action-Group : + (g : type-Group G) (x y : type-action-Group) → + Id (mul-action-Group g x) y → + Id x (mul-action-Group (inv-Group G g) y) + transpose-eq-mul-action-Group g x ._ refl = ( inv - ( ( ap (mul-Abstract-Group-Action' x) (left-inverse-law-mul-Group G g)) ∙ - ( preserves-unit-mul-Abstract-Group-Action x))) ∙ - ( preserves-mul-Abstract-Group-Action (inv-Group G g) g x) + ( ( ap (mul-action-Group' x) (left-inverse-law-mul-Group G g)) ∙ + ( preserves-unit-mul-action-Group x))) ∙ + ( preserves-mul-action-Group (inv-Group G g) g x) ``` diff --git a/src/group-theory/groups.lagda.md b/src/group-theory/groups.lagda.md index 9479e24602..90fd778a20 100644 --- a/src/group-theory/groups.lagda.md +++ b/src/group-theory/groups.lagda.md @@ -131,14 +131,24 @@ module _ unit-Group = pr1 is-unital-Group is-unit-Group : type-Group → UU l - is-unit-Group x = Id x unit-Group + is-unit-Group x = x = unit-Group + + is-unit-Group' : type-Group → UU l + is-unit-Group' x = unit-Group = x is-prop-is-unit-Group : (x : type-Group) → is-prop (is-unit-Group x) is-prop-is-unit-Group x = is-set-type-Group x unit-Group - is-unit-group-Prop : type-Group → Prop l - pr1 (is-unit-group-Prop x) = is-unit-Group x - pr2 (is-unit-group-Prop x) = is-prop-is-unit-Group x + is-prop-is-unit-Group' : (x : type-Group) → is-prop (is-unit-Group' x) + is-prop-is-unit-Group' x = is-set-type-Group unit-Group x + + is-unit-prop-Group : type-Group → Prop l + pr1 (is-unit-prop-Group x) = is-unit-Group x + pr2 (is-unit-prop-Group x) = is-prop-is-unit-Group x + + is-unit-prop-Group' : type-Group → Prop l + pr1 (is-unit-prop-Group' x) = is-unit-Group' x + pr2 (is-unit-prop-Group' x) = is-prop-is-unit-Group' x left-unit-law-mul-Group : (x : type-Group) → Id (mul-Group unit-Group x) x @@ -176,7 +186,7 @@ module _ Id (inv-Group unit-Group) unit-Group inv-unit-Group = ( inv (left-unit-law-mul-Group (inv-Group unit-Group))) ∙ - ( right-inverse-law-mul-Group unit-Group) + ( right-inverse-law-mul-Group unit-Group) left-swap-mul-Group : {x y z : type-Group} → mul-Group x y = mul-Group y x → @@ -200,6 +210,20 @@ module _ interchange-mul-mul-Semigroup semigroup-Group ``` +### The structure of a group + +```agda +structure-group : + {l1 : Level} → UU l1 → UU l1 +structure-group X = + Σ (structure-semigroup X) (λ p → is-group (compute-structure-semigroup X p)) + +compute-structure-group : + {l1 : Level} → (X : UU l1) → structure-group X → Group l1 +pr1 (compute-structure-group X (p , q)) = compute-structure-semigroup X p +pr2 (compute-structure-group X (p , q)) = q +``` + ## Properties ### Multiplication by `x` from the left is an equivalence @@ -378,10 +402,10 @@ module _ ```agda distributive-inv-mul-Group : - (x y : type-Group G) → + {x y : type-Group G} → inv-Group G (mul-Group G x y) = mul-Group G (inv-Group G y) (inv-Group G x) - distributive-inv-mul-Group x y = + distributive-inv-mul-Group {x} {y} = transpose-eq-mul-Group ( ( transpose-eq-mul-Group ( ( associative-mul-Group G (inv-Group G (mul-Group G x y)) x y) ∙ @@ -392,7 +416,7 @@ module _ (x y : type-Group G) → mul-Group G x y = mul-Group G y x → inv-Group G (mul-Group G x y) = mul-Group G (inv-Group G x) (inv-Group G y) distributive-inv-mul-Group' x y H = - ( distributive-inv-mul-Group x y) ∙ + ( distributive-inv-mul-Group) ∙ ( inv (double-transpose-eq-mul-Group (double-transpose-eq-mul-Group H))) ``` @@ -466,7 +490,7 @@ module _ equational-reasoning inv-Group G (left-div-Group x y) = left-div-Group y (inv-Group G (inv-Group G x)) - by distributive-inv-mul-Group (inv-Group G x) y + by distributive-inv-mul-Group = left-div-Group y x by ap (left-div-Group y) (inv-inv-Group x) ``` @@ -481,7 +505,7 @@ module _ equational-reasoning inv-Group G (right-div-Group x y) = right-div-Group (inv-Group G (inv-Group G y)) x - by distributive-inv-mul-Group x (inv-Group G y) + by distributive-inv-mul-Group = right-div-Group y x by ap (mul-Group' G (inv-Group G x)) (inv-inv-Group y) ``` @@ -557,9 +581,9 @@ abstract ( λ e → is-prop-all-elements-equal (all-elements-equal-is-group G e)) -is-group-Prop : {l : Level} (G : Semigroup l) → Prop l -pr1 (is-group-Prop G) = is-group G -pr2 (is-group-Prop G) = is-prop-is-group G +is-group-prop-Semigroup : {l : Level} (G : Semigroup l) → Prop l +pr1 (is-group-prop-Semigroup G) = is-group G +pr2 (is-group-prop-Semigroup G) = is-prop-is-group G ``` ### Any idempotent element in a group is the unit @@ -608,17 +632,3 @@ module _ pr1 pointed-type-with-aut-Group = pointed-type-Group G pr2 pointed-type-with-aut-Group = equiv-mul-Group G g ``` - -### Equip a type with a structure of group - -```agda -structure-group : - {l1 : Level} → UU l1 → UU l1 -structure-group X = - Σ (structure-semigroup X) (λ p → is-group (compute-structure-semigroup X p)) - -compute-structure-group : - {l1 : Level} → (X : UU l1) → structure-group X → Group l1 -pr1 (compute-structure-group X (p , q)) = compute-structure-semigroup X p -pr2 (compute-structure-group X (p , q)) = q -``` diff --git a/src/group-theory/homomorphisms-abelian-groups.lagda.md b/src/group-theory/homomorphisms-abelian-groups.lagda.md index 8e1cba0426..89535d39e8 100644 --- a/src/group-theory/homomorphisms-abelian-groups.lagda.md +++ b/src/group-theory/homomorphisms-abelian-groups.lagda.md @@ -64,8 +64,8 @@ module _ where preserves-negatives-Ab : (type-Ab A → type-Ab B) → UU (l1 ⊔ l2) - preserves-negatives-Ab f = - (x : type-Ab A) → Id (f (neg-Ab A x)) (neg-Ab B (f x)) + preserves-negatives-Ab = + preserves-inverses-Group (group-Ab A) (group-Ab B) ``` ### Homomorphisms of abelian groups diff --git a/src/group-theory/homomorphisms-concrete-groups.lagda.md b/src/group-theory/homomorphisms-concrete-groups.lagda.md index 3bc213099f..d61de489f6 100644 --- a/src/group-theory/homomorphisms-concrete-groups.lagda.md +++ b/src/group-theory/homomorphisms-concrete-groups.lagda.md @@ -81,7 +81,7 @@ module _ ( ∞-group-Concrete-Group H) preserves-mul-map-hom-Concrete-Group : - (f : hom-Concrete-Group) (x y : type-Concrete-Group G) → + (f : hom-Concrete-Group) {x y : type-Concrete-Group G} → Id ( map-hom-Concrete-Group f (mul-Concrete-Group G x y)) ( mul-Concrete-Group H diff --git a/src/group-theory/homomorphisms-generated-subgroups.lagda.md b/src/group-theory/homomorphisms-generated-subgroups.lagda.md index 6636319e6d..3f3d1b219b 100644 --- a/src/group-theory/homomorphisms-generated-subgroups.lagda.md +++ b/src/group-theory/homomorphisms-generated-subgroups.lagda.md @@ -43,8 +43,11 @@ open import univalent-combinatorics.standard-finite-types ## Idea -A group homomorphism from a subgroup generated by a subset `S` is defined by its -values on `S`. +A [group homomorphism](group-theory.homomorphisms-groups.md) from a +[subgroup generated by a subset](group-theory.subgroups-generated-by-subsets-groups.md) +`S` is defined by its values on `S`. + +## Theorem ```agda module _ @@ -59,49 +62,44 @@ module _ ( group-Subgroup G (subgroup-subset-Group G S)) ( G') ( f) - ( pair - ( ev-formal-combination-subset-Group G S l) - ( unit-trunc-Prop (pair l refl)))) + ( ( ev-formal-combination-subset-Group G S l) , + ( unit-trunc-Prop (l , refl)))) ( fold-list ( unit-Group G') - ( λ (pair s x) → + ( λ (s , x) → mul-Group ( G') ( map-hom-Group ( group-Subgroup G (subgroup-subset-Group G S)) ( G') ( f) - ( pair - ( ev-formal-combination-subset-Group G S (unit-list (pair s x))) - ( unit-trunc-Prop (pair (unit-list (pair s x)) refl))))) + ( ( ev-formal-combination-subset-Group G S (unit-list (s , x))) , + ( unit-trunc-Prop (unit-list (s , x) , refl))))) ( l)) distributivity-hom-group-ev-formal-combination f nil = preserves-unit-hom-Group (group-Subgroup G (subgroup-subset-Group G S)) G' f - distributivity-hom-group-ev-formal-combination f (cons (pair s x) l) = + distributivity-hom-group-ev-formal-combination f (cons (s , x) l) = ( ap ( map-hom-Group (group-Subgroup G (subgroup-subset-Group G S)) G' f) ( eq-pair-Σ ( preserves-concat-ev-formal-combination-subset-Group G S - ( unit-list (pair s x)) + ( unit-list (s , x)) ( l)) ( eq-is-prop is-prop-type-trunc-Prop))) ∙ - ( preserves-mul-hom-Group - ( group-Subgroup G (subgroup-subset-Group G S)) - ( G') - ( f) - ( pair - ( ev-formal-combination-subset-Group G S (unit-list (pair s x))) - ( unit-trunc-Prop (pair (unit-list (pair s x)) refl))) - ( pair - ( ev-formal-combination-subset-Group G S l) - ( unit-trunc-Prop (pair l refl))) ∙ - ( ap - ( mul-Group G' - ( map-hom-Group (group-Subgroup G (subgroup-subset-Group G S)) G' f - ( pair - ( ev-formal-combination-subset-Group G S (unit-list (pair s x))) - ( unit-trunc-Prop (pair (unit-list (pair s x)) refl))))) - ( distributivity-hom-group-ev-formal-combination f l))) + ( preserves-mul-hom-Group + ( group-Subgroup G (subgroup-subset-Group G S)) + ( G') + ( f)) ∙ + ( ap + ( mul-Group G' + ( map-hom-Group + ( group-Subgroup G (subgroup-subset-Group G S)) + ( G') + ( f) + ( pair + ( ev-formal-combination-subset-Group G S (unit-list (s , x))) + ( unit-trunc-Prop (unit-list (s , x) , refl))))) + ( distributivity-hom-group-ev-formal-combination f l)) map-restriction-generating-subset-Subgroup : hom-Group (group-Subgroup G (subgroup-subset-Group G S)) G' → @@ -115,9 +113,9 @@ module _ ( ev-formal-combination-subset-Group ( G) ( S) - ( unit-list (pair (inr star) x))) + ( unit-list (inr star , x))) ( unit-trunc-Prop - ( pair (unit-list (pair (inr star) x)) refl))) + ( unit-list (inr star , x) , refl))) is-emb-map-restriction-generating-subset-Subgroup : is-emb (map-restriction-generating-subset-Subgroup) @@ -142,52 +140,28 @@ module _ ( G') ( g) ( x))) - ( λ (pair y Q) → + ( λ (y , Q) → ( ap ( map-hom-Group ( group-Subgroup G (subgroup-subset-Group G S)) ( G') ( f)) ( eq-pair-Σ (inv Q) (eq-is-prop is-prop-type-trunc-Prop))) ∙ - ( ( distributivity-hom-group-ev-formal-combination f y) ∙ - ( ( ap - ( λ F → - fold-list (unit-Group G') (λ Y → mul-Group G' (F Y)) y) - { x = - λ z → - ( map-hom-Group - ( group-Subgroup G (subgroup-subset-Group G S)) - ( G') - ( f) - ( pair - ( ev-formal-combination-subset-Group - ( G) - ( S) - ( unit-list z)) - ( unit-trunc-Prop (pair (unit-list z) refl))))} - { y = - λ z → - ( map-hom-Group - ( group-Subgroup G (subgroup-subset-Group G S)) - ( G') - ( g) - ( pair - ( ev-formal-combination-subset-Group - ( G) - ( S) - ( unit-list z)) - ( unit-trunc-Prop (pair (unit-list z) refl))))} - ( eq-htpy (lemma (htpy-eq P)))) ∙ - ( ( inv - ( distributivity-hom-group-ev-formal-combination g y)) ∙ - ( ap - ( map-hom-Group - ( group-Subgroup G (subgroup-subset-Group G S)) - ( G') - ( g)) - ( eq-pair-Σ - ( Q) - ( eq-is-prop is-prop-type-trunc-Prop))))))))) + ( distributivity-hom-group-ev-formal-combination f y) ∙ + ( ap + ( λ F → + fold-list (unit-Group G') (λ Y → mul-Group G' (F Y)) y) + ( eq-htpy (lemma (htpy-eq P)))) ∙ + ( inv + ( distributivity-hom-group-ev-formal-combination g y)) ∙ + ( ap + ( map-hom-Group + ( group-Subgroup G (subgroup-subset-Group G S)) + ( G') + ( g)) + ( eq-pair-Σ + ( Q) + ( eq-is-prop is-prop-type-trunc-Prop)))))) ( λ p → eq-is-prop ( is-trunc-Π @@ -214,8 +188,8 @@ module _ ( ev-formal-combination-subset-Group ( G) ( S) - ( unit-list (pair (inr star) x))) - ( unit-trunc-Prop (pair (unit-list (pair (inr star) x)) refl)))) + ( unit-list (inr star , x))) + ( unit-trunc-Prop (unit-list (pair (inr star) x) , refl)))) ( map-hom-Group ( group-Subgroup G (subgroup-subset-Group G S)) ( G') @@ -224,9 +198,9 @@ module _ ( ev-formal-combination-subset-Group ( G) ( S) - ( unit-list (pair (inr star) x))) + ( unit-list (inr star , x))) ( unit-trunc-Prop - ( pair (unit-list (pair (inr star) x)) refl))))) → + ( unit-list (pair (inr star) x) , refl))))) → ( z : Fin 2 × type-subtype S) → Id ( map-hom-Group @@ -235,69 +209,78 @@ module _ ( f) ( pair ( ev-formal-combination-subset-Group G S (unit-list z)) - ( unit-trunc-Prop (pair (unit-list z) refl)))) + ( unit-trunc-Prop (unit-list z , refl)))) ( map-hom-Group ( group-Subgroup G (subgroup-subset-Group G S)) ( G') ( g) ( pair ( ev-formal-combination-subset-Group G S (unit-list z)) - ( unit-trunc-Prop (pair (unit-list z) refl)))) - lemma P (pair (inl (inr star)) (pair x s)) = + ( unit-trunc-Prop (unit-list z , refl)))) + lemma P (inl (inr star) , x , s) = ( ap ( map-hom-Group (group-Subgroup G (subgroup-subset-Group G S)) G' f) ( eq-pair-Σ ( right-unit-law-mul-Group G (inv-Group G x)) ( eq-is-prop is-prop-type-trunc-Prop))) ∙ - ( preserves-inv-hom-Group - ( group-Subgroup G (subgroup-subset-Group G S)) - ( G') - ( f) - ( pair - ( x) - ( unit-trunc-Prop - ( pair - ( unit-list (pair (inr star) (pair x s))) - ( right-unit-law-mul-Group G x)))) ∙ - ( (ap - ( inv-Group G') - ( ( ap + ( preserves-inv-hom-Group + ( group-Subgroup G (subgroup-subset-Group G S)) + ( G') + ( f)) ∙ + ( ap + ( inv-Group G') + ( ( ap + ( map-hom-Group + ( group-Subgroup G (subgroup-subset-Group G S)) + ( G') + ( f)) + ( eq-pair-Σ + { s = + pair + ( x) + ( unit-trunc-Prop + ( pair + ( unit-list (inr star , x , s)) + ( right-unit-law-mul-Group G x)))} + ( inv (right-unit-law-mul-Group G x)) + ( eq-is-prop is-prop-type-trunc-Prop))) ∙ + ( ( P (x , s)) ∙ + ( ap ( map-hom-Group ( group-Subgroup G (subgroup-subset-Group G S)) ( G') - ( f)) + ( g)) ( eq-pair-Σ - ( inv (right-unit-law-mul-Group G x)) - ( eq-is-prop is-prop-type-trunc-Prop))) ∙ - ( ( P (pair x s)) ∙ - ( ap - ( map-hom-Group - ( group-Subgroup G (subgroup-subset-Group G S)) - ( G') - ( g)) - ( eq-pair-Σ - ( right-unit-law-mul-Group G x) - ( eq-is-prop is-prop-type-trunc-Prop)))))) ∙ - ( ( inv - ( preserves-inv-hom-Group - ( group-Subgroup G (subgroup-subset-Group G S)) - ( G') - ( g) - ( pair - ( x) - ( unit-trunc-Prop - ( pair - ( unit-list (pair (inr star) (pair x s))) - ( right-unit-law-mul-Group G x)))))) ∙ - ( ap - ( map-hom-Group - ( group-Subgroup G (subgroup-subset-Group G S)) - ( G') - ( g)) - ( eq-pair-Σ - ( inv (right-unit-law-mul-Group G (inv-Group G x))) - ( eq-is-prop is-prop-type-trunc-Prop)))))) - lemma P (pair (inr star) x) = P x + { s = + pair + ( mul-Group G x (unit-Group G)) + ( unit-trunc-Prop + ( pair + ( unit-list (inr star , x , s)) + ( refl)))} + { t = + pair + ( x) + ( unit-trunc-Prop + ( pair + ( unit-list (inr star , x , s)) + ( right-unit-law-mul-Group G x)))} + ( right-unit-law-mul-Group G x) + ( eq-is-prop is-prop-type-trunc-Prop)))))) ∙ + ( inv + ( preserves-inv-hom-Group + ( group-Subgroup G (subgroup-subset-Group G S)) + ( G') + ( g))) ∙ + ( ap + ( map-hom-Group + ( group-Subgroup G (subgroup-subset-Group G S)) + ( G') + ( g)) + ( eq-pair-Σ + ( inv (right-unit-law-mul-Group G (inv-Group G x))) + ( eq-is-prop is-prop-type-trunc-Prop))) + lemma P (inr star , x) = P x restriction-generating-subset-Subgroup : hom-Group (group-Subgroup G (subgroup-subset-Group G S)) G' ↪ @@ -325,7 +308,7 @@ module _ ( G) ( G') ( f) - ( pair pr1 (λ x y → refl))) + ( pr1 , λ {x} {y} → refl)) ( is-epi-iso-Group l3 ( group-Subgroup G (subgroup-subset-Group G S)) ( G) diff --git a/src/group-theory/homomorphisms-group-actions.lagda.md b/src/group-theory/homomorphisms-group-actions.lagda.md index e2b038716b..8919a837be 100644 --- a/src/group-theory/homomorphisms-group-actions.lagda.md +++ b/src/group-theory/homomorphisms-group-actions.lagda.md @@ -30,81 +30,108 @@ open import group-theory.groups ## Idea -A morphism of group actions from a G-set X to a G-set Y is a map from X to Y -preserving the group action. +A **morphism of group actions** from a [`G`-set](group-theory.group-actions.md) +`X` to a `G`-set `Y` is a map from the underlying [set](foundation-core.sets.md) +of `X` to the underlying set of `Y` **preserving the group action**. This means +that for any element `g` of the [group](group-theory.groups.md) `G` the square + +```text + f + X -----> Y + | | + μ g | | μ g + V V + X -----> Y + f +``` + +[commutes](foundation-core.commuting-squares-of-maps.md). ## Definitions +### The predicate on maps between underlying types of group actions to preserve the group action + +```agda +module _ + {l1 l2 l3 : Level} (G : Group l1) + (X : action-Group G l2) (Y : action-Group G l3) + where + + preserves-action-Group : + (type-action-Group G X → type-action-Group G Y) → UU (l1 ⊔ l2 ⊔ l3) + preserves-action-Group f = + (g : type-Group G) → + coherence-square-maps f (mul-action-Group G X g) (mul-action-Group G Y g) f +``` + ### Morphisms of G-sets ```agda module _ {l1 l2 l3 : Level} (G : Group l1) - (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) + (X : action-Group G l2) (Y : action-Group G l3) where - hom-Abstract-Group-Action : UU (l1 ⊔ l2 ⊔ l3) - hom-Abstract-Group-Action = - Σ ( type-Set (pr1 X) → type-Set (pr1 Y)) - ( λ f → - ( g : type-Group G) → - coherence-square-maps - ( f) - ( mul-Abstract-Group-Action G X g) - ( mul-Abstract-Group-Action G Y g) - ( f)) - - map-hom-Abstract-Group-Action : - hom-Abstract-Group-Action → type-Set (pr1 X) → type-Set (pr1 Y) - map-hom-Abstract-Group-Action = pr1 - - coherence-square-hom-Abstract-Group-Action : - (f : hom-Abstract-Group-Action) (g : type-Group G) → - coherence-square-maps - ( map-hom-Abstract-Group-Action f) - ( mul-Abstract-Group-Action G X g) - ( mul-Abstract-Group-Action G Y g) - ( map-hom-Abstract-Group-Action f) - coherence-square-hom-Abstract-Group-Action = pr2 + hom-action-Group : UU (l1 ⊔ l2 ⊔ l3) + hom-action-Group = + Σ ( type-action-Group G X → type-action-Group G Y) + ( preserves-action-Group G X Y) + + map-hom-action-Group : + hom-action-Group → type-action-Group G X → type-action-Group G Y + map-hom-action-Group = pr1 + + preserves-action-hom-action-Group : + (f : hom-action-Group) → + preserves-action-Group G X Y (map-hom-action-Group f) + preserves-action-hom-action-Group = pr2 ``` ### The identity morphism ```agda module _ - {l1 l2 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) + {l1 l2 : Level} (G : Group l1) (X : action-Group G l2) where - id-hom-Abstract-Group-Action : hom-Abstract-Group-Action G X X - pr1 id-hom-Abstract-Group-Action = id - pr2 id-hom-Abstract-Group-Action g = refl-htpy + id-hom-action-Group : hom-action-Group G X X + pr1 id-hom-action-Group = id + pr2 id-hom-action-Group g = refl-htpy ``` ### Composition of morphisms ```agda module _ - {l1 l2 l3 l4 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) (Z : Abstract-Group-Action G l4) + {l1 l2 l3 l4 : Level} (G : Group l1) + (X : action-Group G l2) (Y : action-Group G l3) (Z : action-Group G l4) where - comp-hom-Abstract-Group-Action : - hom-Abstract-Group-Action G Y Z → - hom-Abstract-Group-Action G X Y → - hom-Abstract-Group-Action G X Z - pr1 (comp-hom-Abstract-Group-Action (pair g K) (pair f H)) = g ∘ f - pr2 (comp-hom-Abstract-Group-Action (pair g K) (pair f H)) x = + map-comp-hom-action-Group : + hom-action-Group G Y Z → hom-action-Group G X Y → + type-action-Group G X → type-action-Group G Z + map-comp-hom-action-Group g f = + map-hom-action-Group G Y Z g ∘ map-hom-action-Group G X Y f + + preserves-action-comp-hom-action-Group : + (g : hom-action-Group G Y Z) (f : hom-action-Group G X Y) → + preserves-action-Group G X Z (map-comp-hom-action-Group g f) + preserves-action-comp-hom-action-Group g f x = pasting-horizontal-coherence-square-maps - ( f) - ( g) - ( mul-Abstract-Group-Action G X x) - ( mul-Abstract-Group-Action G Y x) - ( mul-Abstract-Group-Action G Z x) - ( f) - ( g) - ( H x) - ( K x) + ( map-hom-action-Group G X Y f) + ( map-hom-action-Group G Y Z g) + ( mul-action-Group G X x) + ( mul-action-Group G Y x) + ( mul-action-Group G Z x) + ( map-hom-action-Group G X Y f) + ( map-hom-action-Group G Y Z g) + ( preserves-action-hom-action-Group G X Y f x) + ( preserves-action-hom-action-Group G Y Z g x) + + comp-hom-action-Group : + hom-action-Group G Y Z → hom-action-Group G X Y → hom-action-Group G X Z + pr1 (comp-hom-action-Group g f) = map-comp-hom-action-Group g f + pr2 (comp-hom-action-Group g f) = preserves-action-comp-hom-action-Group g f ``` ## Properties @@ -113,114 +140,108 @@ module _ ```agda module _ - {l1 l2 l3 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) (f : hom-Abstract-Group-Action G X Y) + {l1 l2 l3 : Level} (G : Group l1) (X : action-Group G l2) + (Y : action-Group G l3) (f : hom-action-Group G X Y) where - htpy-hom-Abstract-Group-Action : - (g : hom-Abstract-Group-Action G X Y) → UU (l2 ⊔ l3) - htpy-hom-Abstract-Group-Action g = pr1 f ~ pr1 g + htpy-hom-action-Group : + (g : hom-action-Group G X Y) → UU (l2 ⊔ l3) + htpy-hom-action-Group g = + map-hom-action-Group G X Y f ~ map-hom-action-Group G X Y g - refl-htpy-hom-Abstract-Group-Action : htpy-hom-Abstract-Group-Action f - refl-htpy-hom-Abstract-Group-Action = refl-htpy + refl-htpy-hom-action-Group : htpy-hom-action-Group f + refl-htpy-hom-action-Group = refl-htpy - htpy-eq-hom-Abstract-Group-Action : - (g : hom-Abstract-Group-Action G X Y) → - Id f g → htpy-hom-Abstract-Group-Action g - htpy-eq-hom-Abstract-Group-Action .f refl = - refl-htpy-hom-Abstract-Group-Action + htpy-eq-hom-action-Group : + (g : hom-action-Group G X Y) → + f = g → htpy-hom-action-Group g + htpy-eq-hom-action-Group .f refl = + refl-htpy-hom-action-Group - is-torsorial-htpy-hom-Abstract-Group-Action : - is-torsorial htpy-hom-Abstract-Group-Action - is-torsorial-htpy-hom-Abstract-Group-Action = + is-torsorial-htpy-hom-action-Group : + is-torsorial htpy-hom-action-Group + is-torsorial-htpy-hom-action-Group = is-torsorial-Eq-subtype - ( is-torsorial-htpy (pr1 f)) + ( is-torsorial-htpy (map-hom-action-Group G X Y f)) ( λ g → is-prop-Π ( λ x → is-prop-Π ( λ y → is-set-type-Set - ( set-Abstract-Group-Action G Y) - ( g (mul-Abstract-Group-Action G X x y)) - ( mul-Abstract-Group-Action G Y x (g y))))) - ( pr1 f) + ( set-action-Group G Y) + ( g (mul-action-Group G X x y)) + ( mul-action-Group G Y x (g y))))) + ( map-hom-action-Group G X Y f) ( refl-htpy) - ( pr2 f) + ( preserves-action-hom-action-Group G X Y f) - is-equiv-htpy-eq-hom-Abstract-Group-Action : - (g : hom-Abstract-Group-Action G X Y) → - is-equiv (htpy-eq-hom-Abstract-Group-Action g) - is-equiv-htpy-eq-hom-Abstract-Group-Action = + is-equiv-htpy-eq-hom-action-Group : + (g : hom-action-Group G X Y) → is-equiv (htpy-eq-hom-action-Group g) + is-equiv-htpy-eq-hom-action-Group = fundamental-theorem-id - is-torsorial-htpy-hom-Abstract-Group-Action - htpy-eq-hom-Abstract-Group-Action - - extensionality-hom-Abstract-Group-Action : - (g : hom-Abstract-Group-Action G X Y) → - Id f g ≃ htpy-hom-Abstract-Group-Action g - pr1 (extensionality-hom-Abstract-Group-Action g) = - htpy-eq-hom-Abstract-Group-Action g - pr2 (extensionality-hom-Abstract-Group-Action g) = - is-equiv-htpy-eq-hom-Abstract-Group-Action g - - eq-htpy-hom-Abstract-Group-Action : - (g : hom-Abstract-Group-Action G X Y) → - htpy-hom-Abstract-Group-Action g → Id f g - eq-htpy-hom-Abstract-Group-Action g = - map-inv-is-equiv (is-equiv-htpy-eq-hom-Abstract-Group-Action g) + is-torsorial-htpy-hom-action-Group + htpy-eq-hom-action-Group + + extensionality-hom-action-Group : + (g : hom-action-Group G X Y) → (f = g) ≃ htpy-hom-action-Group g + pr1 (extensionality-hom-action-Group g) = + htpy-eq-hom-action-Group g + pr2 (extensionality-hom-action-Group g) = + is-equiv-htpy-eq-hom-action-Group g + + eq-htpy-hom-action-Group : + (g : hom-action-Group G X Y) → htpy-hom-action-Group g → f = g + eq-htpy-hom-action-Group g = + map-inv-is-equiv (is-equiv-htpy-eq-hom-action-Group g) ``` ### The type of morphisms of group actions is a set ```agda module _ - {l1 l2 l3 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) + {l1 l2 l3 : Level} (G : Group l1) (X : action-Group G l2) + (Y : action-Group G l3) where - is-set-hom-Abstract-Group-Action : - is-set (hom-Abstract-Group-Action G X Y) - is-set-hom-Abstract-Group-Action f g = + is-set-hom-action-Group : + is-set (hom-action-Group G X Y) + is-set-hom-action-Group f g = is-prop-equiv - ( extensionality-hom-Abstract-Group-Action G X Y f g) + ( extensionality-hom-action-Group G X Y f g) ( is-prop-Π ( λ x → - is-set-type-Abstract-Group-Action G Y - ( map-hom-Abstract-Group-Action G X Y f x) - ( map-hom-Abstract-Group-Action G X Y g x))) + is-set-type-action-Group G Y + ( map-hom-action-Group G X Y f x) + ( map-hom-action-Group G X Y g x))) - hom-set-Abstract-Group-Action : Set (l1 ⊔ l2 ⊔ l3) - pr1 hom-set-Abstract-Group-Action = hom-Abstract-Group-Action G X Y - pr2 hom-set-Abstract-Group-Action = is-set-hom-Abstract-Group-Action + hom-set-action-Group : Set (l1 ⊔ l2 ⊔ l3) + pr1 hom-set-action-Group = hom-action-Group G X Y + pr2 hom-set-action-Group = is-set-hom-action-Group ``` ### Composition is associative ```agda module _ - {l1 l2 l3 l4 l5 : Level} (G : Group l1) (X1 : Abstract-Group-Action G l2) - (X2 : Abstract-Group-Action G l3) (X3 : Abstract-Group-Action G l4) - (X4 : Abstract-Group-Action G l5) + {l1 l2 l3 l4 l5 : Level} (G : Group l1) (X1 : action-Group G l2) + (X2 : action-Group G l3) (X3 : action-Group G l4) + (X4 : action-Group G l5) where - associative-comp-hom-Abstract-Group-Action : - (h : hom-Abstract-Group-Action G X3 X4) - (g : hom-Abstract-Group-Action G X2 X3) - (f : hom-Abstract-Group-Action G X1 X2) → - Id - ( comp-hom-Abstract-Group-Action G X1 X2 X4 - ( comp-hom-Abstract-Group-Action G X2 X3 X4 h g) + associative-comp-hom-action-Group : + (h : hom-action-Group G X3 X4) + (g : hom-action-Group G X2 X3) + (f : hom-action-Group G X1 X2) → + comp-hom-action-Group G X1 X2 X4 (comp-hom-action-Group G X2 X3 X4 h g) f = + comp-hom-action-Group G X1 X3 X4 h (comp-hom-action-Group G X1 X2 X3 g f) + associative-comp-hom-action-Group h g f = + eq-htpy-hom-action-Group G X1 X4 + ( comp-hom-action-Group G X1 X2 X4 + ( comp-hom-action-Group G X2 X3 X4 h g) ( f)) - ( comp-hom-Abstract-Group-Action G X1 X3 X4 h - ( comp-hom-Abstract-Group-Action G X1 X2 X3 g f)) - associative-comp-hom-Abstract-Group-Action h g f = - eq-htpy-hom-Abstract-Group-Action G X1 X4 - ( comp-hom-Abstract-Group-Action G X1 X2 X4 - ( comp-hom-Abstract-Group-Action G X2 X3 X4 h g) - ( f)) - ( comp-hom-Abstract-Group-Action G X1 X3 X4 h - ( comp-hom-Abstract-Group-Action G X1 X2 X3 g f)) + ( comp-hom-action-Group G X1 X3 X4 h + ( comp-hom-action-Group G X1 X2 X3 g f)) ( refl-htpy) ``` @@ -228,35 +249,25 @@ module _ ```agda module _ - {l1 l2 l3 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) + {l1 l2 l3 : Level} (G : Group l1) (X : action-Group G l2) + (Y : action-Group G l3) where - left-unit-law-comp-hom-Abstract-Group-Action : - (f : hom-Abstract-Group-Action G X Y) → - Id - ( comp-hom-Abstract-Group-Action G X Y Y - ( id-hom-Abstract-Group-Action G Y) - ( f)) - ( f) - left-unit-law-comp-hom-Abstract-Group-Action f = - eq-htpy-hom-Abstract-Group-Action G X Y - ( comp-hom-Abstract-Group-Action G X Y Y - ( id-hom-Abstract-Group-Action G Y) - ( f)) + left-unit-law-comp-hom-action-Group : + (f : hom-action-Group G X Y) → + comp-hom-action-Group G X Y Y (id-hom-action-Group G Y) f = f + left-unit-law-comp-hom-action-Group f = + eq-htpy-hom-action-Group G X Y + ( comp-hom-action-Group G X Y Y (id-hom-action-Group G Y) f) ( f) ( refl-htpy) - right-unit-law-comp-hom-Abstract-Group-Action : - (f : hom-Abstract-Group-Action G X Y) → - Id - ( comp-hom-Abstract-Group-Action G X X Y f - ( id-hom-Abstract-Group-Action G X)) - ( f) - right-unit-law-comp-hom-Abstract-Group-Action f = - eq-htpy-hom-Abstract-Group-Action G X Y - ( comp-hom-Abstract-Group-Action G X X Y f - ( id-hom-Abstract-Group-Action G X)) + right-unit-law-comp-hom-action-Group : + (f : hom-action-Group G X Y) → + comp-hom-action-Group G X X Y f (id-hom-action-Group G X) = f + right-unit-law-comp-hom-action-Group f = + eq-htpy-hom-action-Group G X Y + ( comp-hom-action-Group G X X Y f (id-hom-action-Group G X)) ( f) ( refl-htpy) ``` diff --git a/src/group-theory/homomorphisms-groups-equipped-with-normal-subgroups.lagda.md b/src/group-theory/homomorphisms-groups-equipped-with-normal-subgroups.lagda.md index 9fe717d619..824132ed84 100644 --- a/src/group-theory/homomorphisms-groups-equipped-with-normal-subgroups.lagda.md +++ b/src/group-theory/homomorphisms-groups-equipped-with-normal-subgroups.lagda.md @@ -16,6 +16,8 @@ open import foundation.universe-levels open import group-theory.groups open import group-theory.homomorphisms-groups open import group-theory.normal-subgroups +open import group-theory.pullbacks-subgroups +open import group-theory.subgroups ``` @@ -55,8 +57,7 @@ module _ reflects-normal-subgroup-hom-Group : hom-Group G H → UU (l1 ⊔ l3 ⊔ l4) reflects-normal-subgroup-hom-Group f = - (x : type-Group G) → is-in-Normal-Subgroup G N x → - is-in-Normal-Subgroup H M (map-hom-Group G H f x) + leq-Normal-Subgroup G N (pullback-Normal-Subgroup G H f M) reflecting-hom-Group : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) reflecting-hom-Group = Σ (hom-Group G H) reflects-normal-subgroup-hom-Group @@ -84,14 +85,36 @@ module _ ### The identity reflecting group homomorphism +We define two variations of the identity reflecting group homomorphism. We will +define the standard identity reflecting group homomorphism, but we will also we +define a generalized version which takes as an argument an arbitrary element of + +```text + reflects-normal-subgroup-hom-Group G G N N (id-hom-Group G). +``` + +The purpose is that in functoriality proofs, the proof that the identity +homomorphism is reflecting is not always the standard one. + ```agda module _ {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) where + reflects-normal-subgroup-id-hom-Group : + reflects-normal-subgroup-hom-Group G G N N (id-hom-Group G) + reflects-normal-subgroup-id-hom-Group = + refl-leq-subtype (subset-Normal-Subgroup G N) + + id-reflecting-hom-Group' : + (p : reflects-normal-subgroup-hom-Group G G N N (id-hom-Group G)) → + reflecting-hom-Group G G N N + pr1 (id-reflecting-hom-Group' p) = id-hom-Group G + pr2 (id-reflecting-hom-Group' p) = p + id-reflecting-hom-Group : reflecting-hom-Group G G N N - pr1 id-reflecting-hom-Group = id-hom-Group G - pr2 id-reflecting-hom-Group = refl-leq-subtype (subset-Normal-Subgroup G N) + id-reflecting-hom-Group = + id-reflecting-hom-Group' reflects-normal-subgroup-id-hom-Group ``` ### Composition of reflecting group homomorphisms @@ -134,14 +157,22 @@ module _ ( map-reflecting-hom-Group G H L M f)) ( reflects-normal-subgroup-reflecting-hom-Group G H L M f) + comp-reflecting-hom-Group' : + (g : reflecting-hom-Group H K M N) (f : reflecting-hom-Group G H L M) → + (p : + reflects-normal-subgroup-hom-Group G K L N + ( hom-comp-reflecting-hom-Group g f)) → + reflecting-hom-Group G K L N + pr1 (comp-reflecting-hom-Group' g f p) = hom-comp-reflecting-hom-Group g f + pr2 (comp-reflecting-hom-Group' g f p) = p + comp-reflecting-hom-Group : reflecting-hom-Group H K M N → reflecting-hom-Group G H L M → reflecting-hom-Group G K L N - pr1 (comp-reflecting-hom-Group g f) = - hom-comp-reflecting-hom-Group g f - pr2 (comp-reflecting-hom-Group g f) = - reflects-normal-subgroup-comp-reflecting-hom-Group g f + comp-reflecting-hom-Group g f = + comp-reflecting-hom-Group' g f + ( reflects-normal-subgroup-comp-reflecting-hom-Group g f) ``` ### Homotopies of reflecting homomorphisms diff --git a/src/group-theory/homomorphisms-groups.lagda.md b/src/group-theory/homomorphisms-groups.lagda.md index a0fb24b5d3..eb556e6e6b 100644 --- a/src/group-theory/homomorphisms-groups.lagda.md +++ b/src/group-theory/homomorphisms-groups.lagda.md @@ -228,29 +228,25 @@ module _ ( f : hom-Group G H) → preserves-unit-Group (map-hom-Group G H f) preserves-unit-hom-Group f = ( inv (left-unit-law-mul-Group H (map-hom-Group G H f (unit-Group G)))) ∙ - ( ( ap - ( λ x → mul-Group H x (map-hom-Group G H f (unit-Group G))) - ( inv - ( left-inverse-law-mul-Group H - ( map-hom-Group G H f (unit-Group G))))) ∙ - ( ( associative-mul-Group H + ( ap + ( λ x → mul-Group H x (map-hom-Group G H f (unit-Group G))) + ( inv + ( left-inverse-law-mul-Group H + ( map-hom-Group G H f (unit-Group G))))) ∙ + ( associative-mul-Group H + ( inv-Group H (map-hom-Group G H f (unit-Group G))) + ( map-hom-Group G H f (unit-Group G)) + ( map-hom-Group G H f (unit-Group G))) ∙ + ( ap + ( mul-Group H (inv-Group H (map-hom-Group G H f (unit-Group G)))) + ( inv (preserves-mul-hom-Group G H f))) ∙ + ( ap + ( λ x → + mul-Group H ( inv-Group H (map-hom-Group G H f (unit-Group G))) - ( map-hom-Group G H f (unit-Group G)) - ( map-hom-Group G H f (unit-Group G))) ∙ - ( ( ap - ( mul-Group H (inv-Group H (map-hom-Group G H f (unit-Group G)))) - ( inv - ( preserves-mul-hom-Group G H f - ( unit-Group G) - ( unit-Group G)))) ∙ - ( ( ap - ( λ x → - mul-Group H - ( inv-Group H (map-hom-Group G H f (unit-Group G))) - ( map-hom-Group G H f x)) - ( left-unit-law-mul-Group G (unit-Group G))) ∙ - ( left-inverse-law-mul-Group H - ( map-hom-Group G H f (unit-Group G))))))) + ( map-hom-Group G H f x)) + ( left-unit-law-mul-Group G (unit-Group G))) ∙ + ( left-inverse-law-mul-Group H (map-hom-Group G H f (unit-Group G))) ``` ### Group homomorphisms preserve inverses @@ -263,37 +259,36 @@ module _ preserves-inverses-Group : (type-Group G → type-Group H) → UU (l1 ⊔ l2) preserves-inverses-Group f = - (x : type-Group G) → Id (f (inv-Group G x)) (inv-Group H (f x)) + {x : type-Group G} → Id (f (inv-Group G x)) (inv-Group H (f x)) abstract preserves-inv-hom-Group : (f : hom-Group G H) → preserves-inverses-Group (map-hom-Group G H f) - preserves-inv-hom-Group f x = + preserves-inv-hom-Group f {x} = ( inv ( right-unit-law-mul-Group H (map-hom-Group G H f (inv-Group G x)))) ∙ - ( ( ap - ( mul-Group H (map-hom-Group G H f (inv-Group G x))) - ( inv (right-inverse-law-mul-Group H (map-hom-Group G H f x)))) ∙ - ( ( inv - ( associative-mul-Group H - ( map-hom-Group G H f (inv-Group G x)) - ( map-hom-Group G H f x) - ( inv-Group H (map-hom-Group G H f x)))) ∙ - ( ( inv - ( ap - ( λ y → mul-Group H y (inv-Group H (map-hom-Group G H f x))) - ( preserves-mul-hom-Group G H f (inv-Group G x) x))) ∙ - ( ( ap - ( λ y → - mul-Group H - ( map-hom-Group G H f y) - ( inv-Group H (map-hom-Group G H f x))) - ( left-inverse-law-mul-Group G x)) ∙ - ( ( ap - ( λ y → mul-Group H y (inv-Group H (map-hom-Group G H f x))) - ( preserves-unit-hom-Group G H f)) ∙ - ( left-unit-law-mul-Group H - ( inv-Group H (map-hom-Group G H f x)))))))) + ( ap + ( mul-Group H (map-hom-Group G H f (inv-Group G x))) + ( inv (right-inverse-law-mul-Group H (map-hom-Group G H f x)))) ∙ + ( inv + ( associative-mul-Group H + ( map-hom-Group G H f (inv-Group G x)) + ( map-hom-Group G H f x) + ( inv-Group H (map-hom-Group G H f x)))) ∙ + ( inv + ( ap + ( λ y → mul-Group H y (inv-Group H (map-hom-Group G H f x))) + ( preserves-mul-hom-Group G H f))) ∙ + ( ap + ( λ y → + mul-Group H + ( map-hom-Group G H f y) + ( inv-Group H (map-hom-Group G H f x))) + ( left-inverse-law-mul-Group G x)) ∙ + ( ap + ( λ y → mul-Group H y (inv-Group H (map-hom-Group G H f x))) + ( preserves-unit-hom-Group G H f)) ∙ + ( left-unit-law-mul-Group H (inv-Group H (map-hom-Group G H f x))) ``` ### Group homomorphisms preserve all group structure @@ -343,14 +338,14 @@ module _ map-hom-Group G H f (left-div-Group G x y) = left-div-Group H (map-hom-Group G H f x) (map-hom-Group G H f y) preserves-left-div-hom-Group = - ( preserves-mul-hom-Group G H f _ _) ∙ - ( ap (mul-Group' H _) (preserves-inv-hom-Group G H f _)) + ( preserves-mul-hom-Group G H f) ∙ + ( ap (mul-Group' H _) (preserves-inv-hom-Group G H f)) preserves-right-div-hom-Group : {x y : type-Group G} → map-hom-Group G H f (right-div-Group G x y) = right-div-Group H (map-hom-Group G H f x) (map-hom-Group G H f y) preserves-right-div-hom-Group = - ( preserves-mul-hom-Group G H f _ _) ∙ - ( ap (mul-Group H _) (preserves-inv-hom-Group G H f _)) + ( preserves-mul-hom-Group G H f) ∙ + ( ap (mul-Group H _) (preserves-inv-hom-Group G H f)) ``` diff --git a/src/group-theory/homomorphisms-monoids.lagda.md b/src/group-theory/homomorphisms-monoids.lagda.md index 25a2e9bc49..5db8bb736c 100644 --- a/src/group-theory/homomorphisms-monoids.lagda.md +++ b/src/group-theory/homomorphisms-monoids.lagda.md @@ -44,9 +44,9 @@ module _ {l1 l2 : Level} (M1 : Monoid l1) (M2 : Monoid l2) where - preserves-unit-hom-semigroup-Prop : + preserves-unit-prop-hom-Semigroup : hom-Semigroup (semigroup-Monoid M1) (semigroup-Monoid M2) → Prop l2 - preserves-unit-hom-semigroup-Prop f = + preserves-unit-prop-hom-Semigroup f = Id-Prop ( set-Monoid M2) ( map-hom-Semigroup @@ -59,19 +59,19 @@ module _ preserves-unit-hom-Semigroup : hom-Semigroup (semigroup-Monoid M1) (semigroup-Monoid M2) → UU l2 preserves-unit-hom-Semigroup f = - type-Prop (preserves-unit-hom-semigroup-Prop f) + type-Prop (preserves-unit-prop-hom-Semigroup f) is-prop-preserves-unit-hom-Semigroup : (f : hom-Semigroup (semigroup-Monoid M1) (semigroup-Monoid M2)) → is-prop (preserves-unit-hom-Semigroup f) is-prop-preserves-unit-hom-Semigroup f = - is-prop-type-Prop (preserves-unit-hom-semigroup-Prop f) + is-prop-type-Prop (preserves-unit-prop-hom-Semigroup f) hom-set-Monoid : Set (l1 ⊔ l2) hom-set-Monoid = set-subset ( hom-set-Semigroup (semigroup-Monoid M1) (semigroup-Monoid M2)) - ( preserves-unit-hom-semigroup-Prop) + ( preserves-unit-prop-hom-Semigroup) hom-Monoid : UU (l1 ⊔ l2) hom-Monoid = type-Set hom-set-Monoid @@ -280,11 +280,11 @@ module _ pr1 (preserves-invertible-elements-hom-Monoid (y , p , q)) = map-hom-Monoid M N f y pr1 (pr2 (preserves-invertible-elements-hom-Monoid (y , p , q))) = - ( inv (preserves-mul-hom-Monoid M N f _ y)) ∙ + ( inv (preserves-mul-hom-Monoid M N f)) ∙ ( ap (map-hom-Monoid M N f) p) ∙ ( preserves-unit-hom-Monoid M N f) pr2 (pr2 (preserves-invertible-elements-hom-Monoid (y , p , q))) = - ( inv (preserves-mul-hom-Monoid M N f y _)) ∙ + ( inv (preserves-mul-hom-Monoid M N f)) ∙ ( ap (map-hom-Monoid M N f) q) ∙ ( preserves-unit-hom-Monoid M N f) ``` diff --git a/src/group-theory/homomorphisms-semigroups.lagda.md b/src/group-theory/homomorphisms-semigroups.lagda.md index f1ee2da696..308788322a 100644 --- a/src/group-theory/homomorphisms-semigroups.lagda.md +++ b/src/group-theory/homomorphisms-semigroups.lagda.md @@ -40,7 +40,10 @@ module _ where preserves-mul : (μA : A → A → A) (μB : B → B → B) → (A → B) → UU (l1 ⊔ l2) - preserves-mul μA μB f = (x y : A) → Id (f (μA x y)) (μB (f x) (f y)) + preserves-mul μA μB f = {x y : A} → f (μA x y) = μB (f x) (f y) + + preserves-mul' : (μA : A → A → A) (μB : B → B → B) → (A → B) → UU (l1 ⊔ l2) + preserves-mul' μA μB f = (x y : A) → f (μA x y) = μB (f x) (f y) module _ {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2) @@ -49,10 +52,10 @@ module _ preserves-mul-prop-Semigroup : (type-Semigroup G → type-Semigroup H) → Prop (l1 ⊔ l2) preserves-mul-prop-Semigroup f = - Π-Prop + Π-Prop' ( type-Semigroup G) ( λ x → - Π-Prop + Π-Prop' ( type-Semigroup G) ( λ y → Id-Prop @@ -63,10 +66,10 @@ module _ preserves-mul-prop-Semigroup' : (type-Semigroup G → type-Semigroup H) → Prop (l1 ⊔ l2) preserves-mul-prop-Semigroup' f = - Π-Prop + Π-Prop' ( type-Semigroup G) ( λ x → - Π-Prop + Π-Prop' ( type-Semigroup G) ( λ y → Id-Prop @@ -163,7 +166,7 @@ module _ preserves-mul-id-Semigroup : {l : Level} (G : Semigroup l) → preserves-mul-Semigroup G G id -preserves-mul-id-Semigroup G x y = refl +preserves-mul-id-Semigroup G = refl ``` ### The identity homomorphism of semigroups @@ -190,13 +193,11 @@ module _ preserves-mul-comp-hom-Semigroup : preserves-mul-Semigroup G K map-comp-hom-Semigroup - preserves-mul-comp-hom-Semigroup x y = + preserves-mul-comp-hom-Semigroup = ( ap ( map-hom-Semigroup H K g) - ( preserves-mul-hom-Semigroup G H f x y)) ∙ - ( preserves-mul-hom-Semigroup H K g - ( map-hom-Semigroup G H f x) - ( map-hom-Semigroup G H f y)) + ( preserves-mul-hom-Semigroup G H f)) ∙ + ( preserves-mul-hom-Semigroup H K g) comp-hom-Semigroup : hom-Semigroup G K pr1 comp-hom-Semigroup = map-comp-hom-Semigroup diff --git a/src/group-theory/images-of-group-homomorphisms.lagda.md b/src/group-theory/images-of-group-homomorphisms.lagda.md index fbc809b7a3..90366ef507 100644 --- a/src/group-theory/images-of-group-homomorphisms.lagda.md +++ b/src/group-theory/images-of-group-homomorphisms.lagda.md @@ -13,27 +13,44 @@ open import foundation.images open import foundation.images-subtypes open import foundation.logical-equivalences open import foundation.propositional-truncations +open import foundation.subtypes open import foundation.universal-property-image open import foundation.universe-levels -open import group-theory.full-subgroups open import group-theory.groups open import group-theory.homomorphisms-groups +open import group-theory.pullbacks-subgroups open import group-theory.subgroups open import group-theory.subsets-groups -open import group-theory.surjective-group-homomorphisms + +open import order-theory.galois-connections-large-posets +open import order-theory.order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-preorders ``` ## Idea -The [image](foundation.images.md) of a -[group homomorphism](group-theory.homomorphisms-groups.md) `f : G → H` contains -the unit element and is closed under multiplication and inverses. It is -therefore a [subgroup](group-theory.subgroups.md) of the -[group](group-theory.groups.md) `H`. Alternatively, it can be described as the -least subgroup of `H` that contains all the values of `f`. +The **image** of a [group homomorphism](group-theory.homomorphisms-groups.md) +`f : G → H` consists of the [image](foundation.images.md) of the underlying map +of `f`. This [subset](group-theory.subsets-groups.md) contains the unit element +and is closed under multiplication and inverses. It is therefore a +[subgroup](group-theory.subgroups.md) of the [group](group-theory.groups.md) +`H`. Alternatively, it can be described as the least subgroup of `H` that +contains all the values of `f`. + +More generally, the **image of a subgroup** `S` under a group homomorphism +`f : G → H` is the subgroup consisting of all the elements in the image of the +underlying [subset](foundation-core.subtypes.md) of `S` under the underlying map +of `f`. Since the image of a subgroup satisfies the following adjoint relation + +```text + (im f S ⊆ T) ↔ (S ⊆ T ∘ f) +``` + +it follows that we obtain a +[Galois connection](order-theory.galois-connections.md). ## Definitions @@ -52,7 +69,21 @@ module _ ((g : type-Group G) → is-in-Subgroup H L (map-hom-Group G H f g)) ``` -### The image subgroup of a group homomorphism +### The universal property of the image subgroup of a subgroup + +```agda +module _ + {l1 l2 l3 l4 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + (S : Subgroup l3 G) (T : Subgroup l4 H) + where + + is-image-subgroup-hom-Group : UUω + is-image-subgroup-hom-Group = + {l : Level} (U : Subgroup l H) → + leq-Subgroup H T U ↔ leq-Subgroup G S (pullback-Subgroup G H f U) +``` + +### The image subgroup under a group homomorphism ```agda module _ @@ -76,24 +107,24 @@ module _ abstract is-closed-under-multiplication-image-hom-Group : is-closed-under-multiplication-subset-Group H subset-image-hom-Group - is-closed-under-multiplication-image-hom-Group x y K L = + is-closed-under-multiplication-image-hom-Group {x} {y} K L = apply-twice-universal-property-trunc-Prop K L ( subset-image-hom-Group (mul-Group H x y)) ( λ where ( g , refl) (h , refl) → unit-trunc-Prop - ( mul-Group G g h , preserves-mul-hom-Group G H f g h)) + ( mul-Group G g h , preserves-mul-hom-Group G H f)) abstract is-closed-under-inverses-image-hom-Group : is-closed-under-inverses-subset-Group H subset-image-hom-Group - is-closed-under-inverses-image-hom-Group x K = + is-closed-under-inverses-image-hom-Group {x} K = apply-universal-property-trunc-Prop K ( subset-image-hom-Group (inv-Group H x)) ( λ where ( g , refl) → unit-trunc-Prop - ( inv-Group G g , preserves-inv-hom-Group G H f g)) + ( inv-Group G g , preserves-inv-hom-Group G H f)) is-subgroup-image-hom-Group : is-subgroup-subset-Group H subset-image-hom-Group @@ -129,7 +160,7 @@ module _ backward-implication (is-image-image-hom-Group K) ``` -### The image of a subgroup of a group homomorphism +### The image of a subgroup under a group homomorphism ```agda module _ @@ -141,6 +172,9 @@ module _ subset-im-hom-Subgroup = im-subtype (map-hom-Group G H f) (subset-Subgroup G K) + is-in-im-hom-Subgroup : type-Group H → UU (l1 ⊔ l2 ⊔ l3) + is-in-im-hom-Subgroup = is-in-subtype subset-im-hom-Subgroup + contains-unit-im-hom-Subgroup : contains-unit-subset-Group H subset-im-hom-Subgroup contains-unit-im-hom-Subgroup = @@ -149,26 +183,26 @@ module _ abstract is-closed-under-multiplication-im-hom-Subgroup : is-closed-under-multiplication-subset-Group H subset-im-hom-Subgroup - is-closed-under-multiplication-im-hom-Subgroup x y u v = + is-closed-under-multiplication-im-hom-Subgroup {x} {y} u v = apply-twice-universal-property-trunc-Prop u v ( subset-im-hom-Subgroup (mul-Group H x y)) ( λ where ((x' , k) , refl) ((y' , l) , refl) → unit-trunc-Prop ( ( mul-Subgroup G K (x' , k) (y' , l)) , - ( preserves-mul-hom-Group G H f x' y'))) + ( preserves-mul-hom-Group G H f))) abstract is-closed-under-inverses-im-hom-Subgroup : is-closed-under-inverses-subset-Group H subset-im-hom-Subgroup - is-closed-under-inverses-im-hom-Subgroup x u = + is-closed-under-inverses-im-hom-Subgroup {x} u = apply-universal-property-trunc-Prop u ( subset-im-hom-Subgroup (inv-Group H x)) ( λ where ((x' , k) , refl) → unit-trunc-Prop ( ( inv-Subgroup G K (x' , k)) , - ( preserves-inv-hom-Group G H f x'))) + ( preserves-inv-hom-Group G H f))) im-hom-Subgroup : Subgroup (l1 ⊔ l2 ⊔ l3) H pr1 im-hom-Subgroup = @@ -179,24 +213,114 @@ module _ is-closed-under-multiplication-im-hom-Subgroup pr2 (pr2 (pr2 im-hom-Subgroup)) = is-closed-under-inverses-im-hom-Subgroup -``` -## Properties + forward-implication-is-image-subgroup-im-hom-Subgroup : + {l : Level} (U : Subgroup l H) → + leq-Subgroup H im-hom-Subgroup U → + leq-Subgroup G K (pullback-Subgroup G H f U) + forward-implication-is-image-subgroup-im-hom-Subgroup U = + forward-implication-adjoint-relation-image-pullback-subtype + ( map-hom-Group G H f) + ( subset-Subgroup G K) + ( subset-Subgroup H U) + + backward-implication-is-image-subgroup-im-hom-Subgroup : + {l : Level} (U : Subgroup l H) → + leq-Subgroup G K (pullback-Subgroup G H f U) → + leq-Subgroup H im-hom-Subgroup U + backward-implication-is-image-subgroup-im-hom-Subgroup U = + backward-implication-adjoint-relation-image-pullback-subtype + ( map-hom-Group G H f) + ( subset-Subgroup G K) + ( subset-Subgroup H U) + + is-image-subgroup-im-hom-Subgroup : + is-image-subgroup-hom-Group G H f K im-hom-Subgroup + is-image-subgroup-im-hom-Subgroup U = + adjoint-relation-image-pullback-subtype + ( map-hom-Group G H f) + ( subset-Subgroup G K) + ( subset-Subgroup H U) +``` -### A group homomorphism is surjective if and only if its image is the full subgroup +### The image-pullback Galois connection on subgroups ```agda module _ {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) where - is-surjective-is-full-subgroup-image-hom-Group : - is-full-Subgroup H (image-hom-Group G H f) → - is-surjective-hom-Group G H f - is-surjective-is-full-subgroup-image-hom-Group u = u + preserves-order-im-hom-Subgroup : + {l3 l4 : Level} (K : Subgroup l3 G) (L : Subgroup l4 G) → + leq-Subgroup G K L → + leq-Subgroup H (im-hom-Subgroup G H f K) (im-hom-Subgroup G H f L) + preserves-order-im-hom-Subgroup K L = + preserves-order-im-subtype + ( map-hom-Group G H f) + ( subset-Subgroup G K) + ( subset-Subgroup G L) + + im-subgroup-hom-large-poset-hom-Group : + hom-Large-Poset + ( λ l → l1 ⊔ l2 ⊔ l) + ( Subgroup-Large-Poset G) + ( Subgroup-Large-Poset H) + map-hom-Large-Preorder im-subgroup-hom-large-poset-hom-Group = + im-hom-Subgroup G H f + preserves-order-hom-Large-Preorder im-subgroup-hom-large-poset-hom-Group = + preserves-order-im-hom-Subgroup + + image-pullback-galois-connection-Subgroup : + galois-connection-Large-Poset + ( λ l → l1 ⊔ l2 ⊔ l) + ( λ l → l) + ( Subgroup-Large-Poset G) + ( Subgroup-Large-Poset H) + lower-adjoint-galois-connection-Large-Poset + image-pullback-galois-connection-Subgroup = + im-subgroup-hom-large-poset-hom-Group + upper-adjoint-galois-connection-Large-Poset + image-pullback-galois-connection-Subgroup = + pullback-subgroup-hom-large-poset-hom-Group G H f + adjoint-relation-galois-connection-Large-Poset + image-pullback-galois-connection-Subgroup K = + is-image-subgroup-im-hom-Subgroup G H f K +``` + +## Properties + +### Any subgroup `U` of `H` has the same elements as `im f K` if and only if `U` satisfies the universal property of the image of `K` under `f` + +```agda +module _ + {l1 l2 l3 l4 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + (K : Subgroup l3 G) (U : Subgroup l4 H) + where - is-full-subgroup-image-is-surjective-hom-Group : - is-surjective-hom-Group G H f → - is-full-Subgroup H (image-hom-Group G H f) - is-full-subgroup-image-is-surjective-hom-Group u = u + is-image-subgroup-has-same-elements-Subgroup : + has-same-elements-Subgroup H (im-hom-Subgroup G H f K) U → + is-image-subgroup-hom-Group G H f K U + is-image-subgroup-has-same-elements-Subgroup s = + is-lower-element-sim-galois-connection-Large-Poset + ( Subgroup-Large-Poset G) + ( Subgroup-Large-Poset H) + ( image-pullback-galois-connection-Subgroup G H f) + ( K) + ( U) + ( similar-has-same-elements-Subgroup H (im-hom-Subgroup G H f K) U s) + + has-same-elements-is-image-Subgroup : + is-image-subgroup-hom-Group G H f K U → + has-same-elements-Subgroup H (im-hom-Subgroup G H f K) U + has-same-elements-is-image-Subgroup i = + has-same-elements-similar-Subgroup H + ( im-hom-Subgroup G H f K) + ( U) + ( sim-is-lower-element-galois-connection-Large-Poset + ( Subgroup-Large-Poset G) + ( Subgroup-Large-Poset H) + ( image-pullback-galois-connection-Subgroup G H f) + ( K) + ( U) + ( i)) ``` diff --git a/src/group-theory/images-of-semigroup-homomorphisms.lagda.md b/src/group-theory/images-of-semigroup-homomorphisms.lagda.md new file mode 100644 index 0000000000..eced916451 --- /dev/null +++ b/src/group-theory/images-of-semigroup-homomorphisms.lagda.md @@ -0,0 +1,245 @@ +# Images of semigroup homomorphisms + +```agda +module group-theory.images-of-semigroup-homomorphisms where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.images +open import foundation.images-subtypes +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.universal-property-image +open import foundation.universe-levels + +open import group-theory.homomorphisms-semigroups +open import group-theory.pullbacks-subsemigroups +open import group-theory.semigroups +open import group-theory.subsemigroups +open import group-theory.subsets-semigroups + +open import order-theory.galois-connections-large-posets +open import order-theory.order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-preorders +``` + +
+ +## Idea + +The **image** of a +[semigroup homomorphism](group-theory.homomorphisms-semigroups.md) `f : G → H` +consists of the [image](foundation.images.md) of the underlying map of `f`. This +[subset](group-theory.subsets-semigroups.md) is closed under multiplication, so +it is a [subsemigroup](group-theory.subsemigroups.md) of the +[semigroup](group-theory.semigroups.md) `H`. Alternatively, it can be described +as the least subsemigroup of `H` that contains all the values of `f`. + +More generally, the **image of a subsemigroup** `S` under a semigroup +homomorphism `f : G → H` is the subsemigroup consisting of all the elements in +the image of the underlying [subset](foundation-core.subtypes.md) of `S` under +the underlying map of `f`. Since the image of a subsemigroup satisfies the +following adjoint relation + +```text + (im f S ⊆ T) ↔ (S ⊆ T ∘ f) +``` + +it follows that we obtain a +[Galois connection](order-theory.galois-connections.md). + +## Definitions + +### The universal property of the image of a semigroup homomorphism + +```agda +module _ + {l1 l2 l3 : Level} (G : Semigroup l1) (H : Semigroup l2) + (f : hom-Semigroup G H) (K : Subsemigroup l3 H) + where + + is-image-hom-Semigroup : UUω + is-image-hom-Semigroup = + {l : Level} (L : Subsemigroup l H) → + leq-Subsemigroup H K L ↔ + ( (g : type-Semigroup G) → + is-in-Subsemigroup H L (map-hom-Semigroup G H f g)) +``` + +### The universal property of the image subsemigroup of a subsemigroup + +```agda +module _ + {l1 l2 l3 l4 : Level} (G : Semigroup l1) (H : Semigroup l2) + (f : hom-Semigroup G H) (S : Subsemigroup l3 G) (T : Subsemigroup l4 H) + where + + is-image-subsemigroup-hom-Semigroup : UUω + is-image-subsemigroup-hom-Semigroup = + {l : Level} (U : Subsemigroup l H) → + leq-Subsemigroup H T U ↔ + leq-Subsemigroup G S (pullback-Subsemigroup G H f U) +``` + +### The image subsemigroup under a semigroup homomorphism + +```agda +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2) (f : hom-Semigroup G H) + where + + subset-image-hom-Semigroup : subset-Semigroup (l1 ⊔ l2) H + subset-image-hom-Semigroup = subtype-im (map-hom-Semigroup G H f) + + is-image-subtype-subset-image-hom-Semigroup : + is-image-subtype (map-hom-Semigroup G H f) subset-image-hom-Semigroup + is-image-subtype-subset-image-hom-Semigroup = + is-image-subtype-subtype-im (map-hom-Semigroup G H f) + + abstract + is-closed-under-multiplication-image-hom-Semigroup : + is-closed-under-multiplication-subset-Semigroup H + subset-image-hom-Semigroup + is-closed-under-multiplication-image-hom-Semigroup {x} {y} K L = + apply-twice-universal-property-trunc-Prop K L + ( subset-image-hom-Semigroup (mul-Semigroup H x y)) + ( λ where + ( g , refl) (h , refl) → + unit-trunc-Prop + ( mul-Semigroup G g h , preserves-mul-hom-Semigroup G H f)) + + image-hom-Semigroup : Subsemigroup (l1 ⊔ l2) H + pr1 image-hom-Semigroup = subset-image-hom-Semigroup + pr2 image-hom-Semigroup = is-closed-under-multiplication-image-hom-Semigroup + + is-image-image-hom-Semigroup : + is-image-hom-Semigroup G H f image-hom-Semigroup + is-image-image-hom-Semigroup K = + is-image-subtype-subset-image-hom-Semigroup (subset-Subsemigroup H K) + + contains-values-image-hom-Semigroup : + (g : type-Semigroup G) → + is-in-Subsemigroup H image-hom-Semigroup (map-hom-Semigroup G H f g) + contains-values-image-hom-Semigroup = + forward-implication + ( is-image-image-hom-Semigroup image-hom-Semigroup) + ( refl-leq-Subsemigroup H image-hom-Semigroup) + + leq-image-hom-Semigroup : + {l : Level} (K : Subsemigroup l H) → + ( ( g : type-Semigroup G) → + is-in-Subsemigroup H K (map-hom-Semigroup G H f g)) → + leq-Subsemigroup H image-hom-Semigroup K + leq-image-hom-Semigroup K = + backward-implication (is-image-image-hom-Semigroup K) +``` + +### The image of a subsemigroup under a semigroup homomorphism + +```agda +module _ + {l1 l2 l3 : Level} (G : Semigroup l1) (H : Semigroup l2) + (f : hom-Semigroup G H) (K : Subsemigroup l3 G) + where + + subset-im-hom-Subsemigroup : subset-Semigroup (l1 ⊔ l2 ⊔ l3) H + subset-im-hom-Subsemigroup = + im-subtype (map-hom-Semigroup G H f) (subset-Subsemigroup G K) + + abstract + is-closed-under-multiplication-im-hom-Subsemigroup : + is-closed-under-multiplication-subset-Semigroup H + subset-im-hom-Subsemigroup + is-closed-under-multiplication-im-hom-Subsemigroup {x} {y} u v = + apply-twice-universal-property-trunc-Prop u v + ( subset-im-hom-Subsemigroup (mul-Semigroup H x y)) + ( λ where + ((x' , k) , refl) ((y' , l) , refl) → + unit-trunc-Prop + ( ( mul-Subsemigroup G K (x' , k) (y' , l)) , + ( preserves-mul-hom-Semigroup G H f))) + + im-hom-Subsemigroup : Subsemigroup (l1 ⊔ l2 ⊔ l3) H + pr1 im-hom-Subsemigroup = + subset-im-hom-Subsemigroup + pr2 im-hom-Subsemigroup = + is-closed-under-multiplication-im-hom-Subsemigroup + + forward-implication-is-image-subsemigroup-im-hom-Subsemigroup : + {l : Level} (U : Subsemigroup l H) → + leq-Subsemigroup H im-hom-Subsemigroup U → + leq-Subsemigroup G K (pullback-Subsemigroup G H f U) + forward-implication-is-image-subsemigroup-im-hom-Subsemigroup U = + forward-implication-adjoint-relation-image-pullback-subtype + ( map-hom-Semigroup G H f) + ( subset-Subsemigroup G K) + ( subset-Subsemigroup H U) + + backward-implication-is-image-subsemigroup-im-hom-Subsemigroup : + {l : Level} (U : Subsemigroup l H) → + leq-Subsemigroup G K (pullback-Subsemigroup G H f U) → + leq-Subsemigroup H im-hom-Subsemigroup U + backward-implication-is-image-subsemigroup-im-hom-Subsemigroup U = + backward-implication-adjoint-relation-image-pullback-subtype + ( map-hom-Semigroup G H f) + ( subset-Subsemigroup G K) + ( subset-Subsemigroup H U) + + is-image-subsemigroup-im-hom-Subsemigroup : + is-image-subsemigroup-hom-Semigroup G H f K im-hom-Subsemigroup + is-image-subsemigroup-im-hom-Subsemigroup U = + adjoint-relation-image-pullback-subtype + ( map-hom-Semigroup G H f) + ( subset-Subsemigroup G K) + ( subset-Subsemigroup H U) +``` + +### The image-pullback Galois connection on subsemigroups + +```agda +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2) (f : hom-Semigroup G H) + where + + preserves-order-im-hom-Subsemigroup : + {l3 l4 : Level} (K : Subsemigroup l3 G) (L : Subsemigroup l4 G) → + leq-Subsemigroup G K L → + leq-Subsemigroup H + ( im-hom-Subsemigroup G H f K) + ( im-hom-Subsemigroup G H f L) + preserves-order-im-hom-Subsemigroup K L = + preserves-order-im-subtype + ( map-hom-Semigroup G H f) + ( subset-Subsemigroup G K) + ( subset-Subsemigroup G L) + + im-hom-subsemigroup-hom-Large-Poset : + hom-Large-Poset + ( λ l → l1 ⊔ l2 ⊔ l) + ( Subsemigroup-Large-Poset G) + ( Subsemigroup-Large-Poset H) + map-hom-Large-Preorder im-hom-subsemigroup-hom-Large-Poset = + im-hom-Subsemigroup G H f + preserves-order-hom-Large-Preorder im-hom-subsemigroup-hom-Large-Poset = + preserves-order-im-hom-Subsemigroup + + image-pullback-galois-connection-Subsemigroup : + galois-connection-Large-Poset + ( λ l → l1 ⊔ l2 ⊔ l) + ( λ l → l) + ( Subsemigroup-Large-Poset G) + ( Subsemigroup-Large-Poset H) + lower-adjoint-galois-connection-Large-Poset + image-pullback-galois-connection-Subsemigroup = + im-hom-subsemigroup-hom-Large-Poset + upper-adjoint-galois-connection-Large-Poset + image-pullback-galois-connection-Subsemigroup = + pullback-hom-large-poset-Subsemigroup G H f + adjoint-relation-galois-connection-Large-Poset + image-pullback-galois-connection-Subsemigroup K = + is-image-subsemigroup-im-hom-Subsemigroup G H f K +``` diff --git a/src/group-theory/integer-multiples-of-elements-abelian-groups.lagda.md b/src/group-theory/integer-multiples-of-elements-abelian-groups.lagda.md index 9d975823fe..3f55ca21ca 100644 --- a/src/group-theory/integer-multiples-of-elements-abelian-groups.lagda.md +++ b/src/group-theory/integer-multiples-of-elements-abelian-groups.lagda.md @@ -286,8 +286,10 @@ module _ where hom-integer-multiple-Ab : hom-Ab A A - pr1 hom-integer-multiple-Ab = integer-multiple-Ab A k - pr2 hom-integer-multiple-Ab = left-distributive-integer-multiple-add-Ab A k + pr1 hom-integer-multiple-Ab = + integer-multiple-Ab A k + pr2 hom-integer-multiple-Ab {x} {y} = + left-distributive-integer-multiple-add-Ab A k x y ``` ### Multiples by products of integers are iterated integer multiples diff --git a/src/group-theory/integer-powers-of-elements-groups.lagda.md b/src/group-theory/integer-powers-of-elements-groups.lagda.md index e72085d40e..e934125857 100644 --- a/src/group-theory/integer-powers-of-elements-groups.lagda.md +++ b/src/group-theory/integer-powers-of-elements-groups.lagda.md @@ -171,7 +171,7 @@ module _ right-unit-law-mul-Group G (inv-Group G g) integer-power-in-neg-Group (succ-ℕ n) g = ( ap (mul-Group G (inv-Group G g)) (integer-power-in-neg-Group n g)) ∙ - ( inv (distributive-inv-mul-Group G (power-Group G (succ-ℕ n) g) g)) ∙ + ( inv (distributive-inv-mul-Group G)) ∙ ( ap (inv-Group G) (power-succ-Group G (succ-ℕ n) g)) ``` @@ -592,24 +592,22 @@ module _ map-hom-Group G H f (integer-power-Group G k x) = integer-power-Group H k (map-hom-Group G H f x) preserves-integer-powers-hom-Group (inl zero-ℕ) x = - ( preserves-mul-hom-Group G H f (inv-Group G x) (unit-Group G)) ∙ + ( preserves-mul-hom-Group G H f) ∙ ( ap-mul-Group H - ( preserves-inv-hom-Group G H f x) + ( preserves-inv-hom-Group G H f) ( preserves-unit-hom-Group G H f)) preserves-integer-powers-hom-Group (inl (succ-ℕ k)) x = - ( preserves-mul-hom-Group G H f - ( inv-Group G x) - ( integer-power-Group G (inl k) x)) ∙ + ( preserves-mul-hom-Group G H f) ∙ ( ap-mul-Group H - ( preserves-inv-hom-Group G H f x) + ( preserves-inv-hom-Group G H f) ( preserves-integer-powers-hom-Group (inl k) x)) preserves-integer-powers-hom-Group (inr (inl _)) x = preserves-unit-hom-Group G H f preserves-integer-powers-hom-Group (inr (inr zero-ℕ)) x = - ( preserves-mul-hom-Group G H f x (unit-Group G)) ∙ + ( preserves-mul-hom-Group G H f) ∙ ( ap (mul-Group H (map-hom-Group G H f x)) (preserves-unit-hom-Group G H f)) preserves-integer-powers-hom-Group (inr (inr (succ-ℕ k))) x = - ( preserves-mul-hom-Group G H f x (integer-power-Group G (inr (inr k)) x)) ∙ + ( preserves-mul-hom-Group G H f) ∙ ( ap ( mul-Group H (map-hom-Group G H f x)) ( preserves-integer-powers-hom-Group (inr (inr k)) x)) diff --git a/src/group-theory/intersections-subgroups-groups.lagda.md b/src/group-theory/intersections-subgroups-groups.lagda.md index f760ba1918..485c7fe03b 100644 --- a/src/group-theory/intersections-subgroups-groups.lagda.md +++ b/src/group-theory/intersections-subgroups-groups.lagda.md @@ -51,26 +51,28 @@ module _ pr2 contains-unit-intersection-Subgroup = contains-unit-Subgroup G K is-closed-under-multiplication-intersection-Subgroup : - (x y : type-Group G) → + {x y : type-Group G} → is-in-intersection-Subgroup x → is-in-intersection-Subgroup y → is-in-intersection-Subgroup (mul-Group G x y) pr1 ( is-closed-under-multiplication-intersection-Subgroup - x y (pH , pK) (qH , qK)) = - is-closed-under-multiplication-Subgroup G H x y pH qH + ( pH , pK) + ( qH , qK)) = + is-closed-under-multiplication-Subgroup G H pH qH pr2 ( is-closed-under-multiplication-intersection-Subgroup - x y (pH , pK) (qH , qK)) = - is-closed-under-multiplication-Subgroup G K x y pK qK + ( pH , pK) + ( qH , qK)) = + is-closed-under-multiplication-Subgroup G K pK qK is-closed-under-inverses-intersection-Subgroup : - (x : type-Group G) → + {x : type-Group G} → is-in-intersection-Subgroup x → is-in-intersection-Subgroup (inv-Group G x) - pr1 (is-closed-under-inverses-intersection-Subgroup x (pH , pK)) = - is-closed-under-inverses-Subgroup G H x pH - pr2 (is-closed-under-inverses-intersection-Subgroup x (pH , pK)) = - is-closed-under-inverses-Subgroup G K x pK + pr1 (is-closed-under-inverses-intersection-Subgroup (pH , pK)) = + is-closed-under-inverses-Subgroup G H pH + pr2 (is-closed-under-inverses-intersection-Subgroup (pH , pK)) = + is-closed-under-inverses-Subgroup G K pK is-subgroup-intersection-Subgroup : is-subgroup-subset-Group G subset-intersection-Subgroup @@ -109,15 +111,14 @@ module _ is-closed-under-multiplication-intersection-family-of-subgroups-Group : is-closed-under-multiplication-subset-Group G subset-intersection-family-of-subgroups-Group - is-closed-under-multiplication-intersection-family-of-subgroups-Group - x y p q i = - is-closed-under-multiplication-Subgroup G (H i) x y (p i) (q i) + is-closed-under-multiplication-intersection-family-of-subgroups-Group p q i = + is-closed-under-multiplication-Subgroup G (H i) (p i) (q i) is-closed-under-inverses-intersection-family-of-subgroups-Group : is-closed-under-inverses-subset-Group G subset-intersection-family-of-subgroups-Group - is-closed-under-inverses-intersection-family-of-subgroups-Group x p i = - is-closed-under-inverses-Subgroup G (H i) x (p i) + is-closed-under-inverses-intersection-family-of-subgroups-Group p i = + is-closed-under-inverses-Subgroup G (H i) (p i) is-subgroup-intersection-family-of-subgroups-Group : is-subgroup-subset-Group G subset-intersection-family-of-subgroups-Group diff --git a/src/group-theory/invertible-elements-monoids.lagda.md b/src/group-theory/invertible-elements-monoids.lagda.md index 48b96d5a9b..4894967ba4 100644 --- a/src/group-theory/invertible-elements-monoids.lagda.md +++ b/src/group-theory/invertible-elements-monoids.lagda.md @@ -149,10 +149,10 @@ module _ ( Id-Prop (set-Monoid M) (mul-Monoid M x z) (unit-Monoid M)) ( Id-Prop (set-Monoid M) (mul-Monoid M z x) (unit-Monoid M))) ( ( inv (left-unit-law-mul-Monoid M y)) ∙ - ( ( inv (ap (λ z → mul-Monoid M z y) q')) ∙ - ( ( associative-mul-Monoid M y' x y) ∙ - ( ( ap (mul-Monoid M y') p) ∙ - ( right-unit-law-mul-Monoid M y'))))) + ( inv (ap (λ z → mul-Monoid M z y) q')) ∙ + ( associative-mul-Monoid M y' x y) ∙ + ( ap (mul-Monoid M y') p) ∙ + ( right-unit-law-mul-Monoid M y')) is-prop-is-invertible-element-Monoid : (x : type-Monoid M) → is-prop (is-invertible-element-Monoid M x) @@ -160,10 +160,10 @@ module _ is-prop-all-elements-equal ( all-elements-equal-is-invertible-element-Monoid x) - is-invertible-element-monoid-Prop : type-Monoid M → Prop l - pr1 (is-invertible-element-monoid-Prop x) = + is-invertible-element-prop-Monoid : type-Monoid M → Prop l + pr1 (is-invertible-element-prop-Monoid x) = is-invertible-element-Monoid M x - pr2 (is-invertible-element-monoid-Prop x) = + pr2 (is-invertible-element-prop-Monoid x) = is-prop-is-invertible-element-Monoid x ``` diff --git a/src/group-theory/isomorphisms-abelian-groups.lagda.md b/src/group-theory/isomorphisms-abelian-groups.lagda.md index 4e5767f446..7d636cd570 100644 --- a/src/group-theory/isomorphisms-abelian-groups.lagda.md +++ b/src/group-theory/isomorphisms-abelian-groups.lagda.md @@ -122,7 +122,7 @@ module _ map-iso-Ab = map-iso-Group (group-Ab A) (group-Ab B) preserves-add-iso-Ab : - (f : iso-Ab) (x y : type-Ab A) → + (f : iso-Ab) {x y : type-Ab A} → map-iso-Ab f (add-Ab A x y) = add-Ab B (map-iso-Ab f x) (map-iso-Ab f y) preserves-add-iso-Ab = preserves-mul-iso-Group (group-Ab A) (group-Ab B) @@ -137,7 +137,7 @@ module _ map-inv-iso-Ab = map-inv-iso-Group (group-Ab A) (group-Ab B) preserves-add-inv-iso-Ab : - (f : iso-Ab) (x y : type-Ab B) → + (f : iso-Ab) {x y : type-Ab B} → map-inv-iso-Ab f (add-Ab B x y) = add-Ab A (map-inv-iso-Ab f x) (map-inv-iso-Ab f y) preserves-add-inv-iso-Ab = @@ -187,7 +187,7 @@ abstract {l : Level} (A B : Ab l) → Id A B ≃ iso-Ab A B equiv-iso-eq-Ab' A B = ( extensionality-Group' (group-Ab A) (group-Ab B)) ∘e - ( equiv-ap-inclusion-subtype is-abelian-group-Prop {A} {B}) + ( equiv-ap-inclusion-subtype is-abelian-prop-Group {A} {B}) abstract is-torsorial-iso-Ab : diff --git a/src/group-theory/isomorphisms-group-actions.lagda.md b/src/group-theory/isomorphisms-group-actions.lagda.md index c91df924be..1a64bd1dbf 100644 --- a/src/group-theory/isomorphisms-group-actions.lagda.md +++ b/src/group-theory/isomorphisms-group-actions.lagda.md @@ -28,99 +28,99 @@ open import group-theory.precategory-of-group-actions ```agda module _ - {l1 l2 l3 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) + {l1 l2 l3 : Level} (G : Group l1) (X : action-Group G l2) + (Y : action-Group G l3) where private - C = Abstract-Group-Action-Large-Precategory G + C = action-Group-Large-Precategory G - is-iso-Abstract-Group-Action : - (f : hom-Abstract-Group-Action G X Y) → UU (l1 ⊔ l2 ⊔ l3) - is-iso-Abstract-Group-Action = + is-iso-action-Group : + (f : hom-action-Group G X Y) → UU (l1 ⊔ l2 ⊔ l3) + is-iso-action-Group = is-iso-Large-Precategory C {X = X} {Y = Y} - iso-Abstract-Group-Action : UU (l1 ⊔ l2 ⊔ l3) - iso-Abstract-Group-Action = iso-Large-Precategory C X Y + iso-action-Group : UU (l1 ⊔ l2 ⊔ l3) + iso-action-Group = iso-Large-Precategory C X Y - hom-iso-Abstract-Group-Action : - iso-Abstract-Group-Action → hom-Abstract-Group-Action G X Y - hom-iso-Abstract-Group-Action = hom-iso-Large-Precategory C {X = X} {Y = Y} + hom-iso-action-Group : + iso-action-Group → hom-action-Group G X Y + hom-iso-action-Group = hom-iso-Large-Precategory C {X = X} {Y = Y} - map-iso-Abstract-Group-Action : - iso-Abstract-Group-Action → - type-Abstract-Group-Action G X → type-Abstract-Group-Action G Y - map-iso-Abstract-Group-Action f = - map-hom-Abstract-Group-Action G X Y (hom-iso-Abstract-Group-Action f) + map-iso-action-Group : + iso-action-Group → + type-action-Group G X → type-action-Group G Y + map-iso-action-Group f = + map-hom-action-Group G X Y (hom-iso-action-Group f) - coherence-square-iso-Abstract-Group-Action : - (f : iso-Abstract-Group-Action) (g : type-Group G) → + preserves-action-iso-action-Group : + (f : iso-action-Group) (g : type-Group G) → coherence-square-maps - ( map-iso-Abstract-Group-Action f) - ( mul-Abstract-Group-Action G X g) - ( mul-Abstract-Group-Action G Y g) - ( map-iso-Abstract-Group-Action f) - coherence-square-iso-Abstract-Group-Action f = - coherence-square-hom-Abstract-Group-Action G X Y - ( hom-iso-Abstract-Group-Action f) - - hom-inv-iso-Abstract-Group-Action : - iso-Abstract-Group-Action → hom-Abstract-Group-Action G Y X - hom-inv-iso-Abstract-Group-Action = + ( map-iso-action-Group f) + ( mul-action-Group G X g) + ( mul-action-Group G Y g) + ( map-iso-action-Group f) + preserves-action-iso-action-Group f = + preserves-action-hom-action-Group G X Y + ( hom-iso-action-Group f) + + hom-inv-iso-action-Group : + iso-action-Group → hom-action-Group G Y X + hom-inv-iso-action-Group = hom-inv-iso-Large-Precategory C {X = X} {Y = Y} - map-hom-inv-iso-Abstract-Group-Action : - iso-Abstract-Group-Action → - type-Abstract-Group-Action G Y → type-Abstract-Group-Action G X - map-hom-inv-iso-Abstract-Group-Action f = - map-hom-Abstract-Group-Action G Y X - ( hom-inv-iso-Abstract-Group-Action f) + map-hom-inv-iso-action-Group : + iso-action-Group → + type-action-Group G Y → type-action-Group G X + map-hom-inv-iso-action-Group f = + map-hom-action-Group G Y X + ( hom-inv-iso-action-Group f) - is-section-hom-inv-iso-Abstract-Group-Action : - (f : iso-Abstract-Group-Action) → + is-section-hom-inv-iso-action-Group : + (f : iso-action-Group) → Id - ( comp-hom-Abstract-Group-Action G Y X Y - ( hom-iso-Abstract-Group-Action f) - ( hom-inv-iso-Abstract-Group-Action f)) - ( id-hom-Abstract-Group-Action G Y) - is-section-hom-inv-iso-Abstract-Group-Action = + ( comp-hom-action-Group G Y X Y + ( hom-iso-action-Group f) + ( hom-inv-iso-action-Group f)) + ( id-hom-action-Group G Y) + is-section-hom-inv-iso-action-Group = is-section-hom-inv-iso-Large-Precategory C {X = X} {Y = Y} - is-retraction-hom-inv-iso-Abstract-Group-Action : - (f : iso-Abstract-Group-Action) → + is-retraction-hom-inv-iso-action-Group : + (f : iso-action-Group) → Id - ( comp-hom-Abstract-Group-Action G X Y X - ( hom-inv-iso-Abstract-Group-Action f) - ( hom-iso-Abstract-Group-Action f)) - ( id-hom-Abstract-Group-Action G X) - is-retraction-hom-inv-iso-Abstract-Group-Action = + ( comp-hom-action-Group G X Y X + ( hom-inv-iso-action-Group f) + ( hom-iso-action-Group f)) + ( id-hom-action-Group G X) + is-retraction-hom-inv-iso-action-Group = is-retraction-hom-inv-iso-Large-Precategory C {X = X} {Y = Y} - is-iso-iso-Abstract-Group-Action : - (f : iso-Abstract-Group-Action) → - is-iso-Abstract-Group-Action (hom-iso-Abstract-Group-Action f) - is-iso-iso-Abstract-Group-Action = + is-iso-iso-action-Group : + (f : iso-action-Group) → + is-iso-action-Group (hom-iso-action-Group f) + is-iso-iso-action-Group = is-iso-iso-Large-Precategory C {X = X} {Y = Y} - equiv-iso-Abstract-Group-Action : - iso-Abstract-Group-Action → equiv-Abstract-Group-Action G X Y - pr1 (pr1 (equiv-iso-Abstract-Group-Action f)) = - map-iso-Abstract-Group-Action f - pr2 (pr1 (equiv-iso-Abstract-Group-Action f)) = + equiv-iso-action-Group : + iso-action-Group → equiv-action-Group G X Y + pr1 (pr1 (equiv-iso-action-Group f)) = + map-iso-action-Group f + pr2 (pr1 (equiv-iso-action-Group f)) = is-equiv-is-invertible - ( map-hom-inv-iso-Abstract-Group-Action f) - ( htpy-eq-hom-Abstract-Group-Action G Y Y - ( comp-hom-Abstract-Group-Action G Y X Y - ( hom-iso-Abstract-Group-Action f) - ( hom-inv-iso-Abstract-Group-Action f)) - ( id-hom-Abstract-Group-Action G Y) - ( is-section-hom-inv-iso-Abstract-Group-Action f)) - ( htpy-eq-hom-Abstract-Group-Action G X X - ( comp-hom-Abstract-Group-Action G X Y X - ( hom-inv-iso-Abstract-Group-Action f) - ( hom-iso-Abstract-Group-Action f)) - ( id-hom-Abstract-Group-Action G X) - ( is-retraction-hom-inv-iso-Abstract-Group-Action f)) - pr2 (equiv-iso-Abstract-Group-Action f) = - coherence-square-iso-Abstract-Group-Action f + ( map-hom-inv-iso-action-Group f) + ( htpy-eq-hom-action-Group G Y Y + ( comp-hom-action-Group G Y X Y + ( hom-iso-action-Group f) + ( hom-inv-iso-action-Group f)) + ( id-hom-action-Group G Y) + ( is-section-hom-inv-iso-action-Group f)) + ( htpy-eq-hom-action-Group G X X + ( comp-hom-action-Group G X Y X + ( hom-inv-iso-action-Group f) + ( hom-iso-action-Group f)) + ( id-hom-action-Group G X) + ( is-retraction-hom-inv-iso-action-Group f)) + pr2 (equiv-iso-action-Group f) = + preserves-action-iso-action-Group f ``` diff --git a/src/group-theory/isomorphisms-groups.lagda.md b/src/group-theory/isomorphisms-groups.lagda.md index 6f76fcd074..5ae26ca135 100644 --- a/src/group-theory/isomorphisms-groups.lagda.md +++ b/src/group-theory/isomorphisms-groups.lagda.md @@ -133,7 +133,7 @@ module _ map-iso-Group = map-iso-Semigroup (semigroup-Group G) (semigroup-Group H) preserves-mul-iso-Group : - (f : iso-Group) (x y : type-Group G) → + (f : iso-Group) {x y : type-Group G} → map-iso-Group f (mul-Group G x y) = mul-Group H (map-iso-Group f x) (map-iso-Group f y) preserves-mul-iso-Group = @@ -153,7 +153,7 @@ module _ map-inv-iso-Semigroup (semigroup-Group G) (semigroup-Group H) preserves-mul-inv-iso-Group : - (f : iso-Group) (x y : type-Group H) → + (f : iso-Group) {x y : type-Group H} → map-inv-iso-Group f (mul-Group H x y) = mul-Group G (map-inv-iso-Group f x) (map-inv-iso-Group f y) preserves-mul-inv-iso-Group = @@ -236,7 +236,7 @@ module _ ( extensionality-Semigroup ( semigroup-Group G) ( semigroup-Group H)) ∘e - ( equiv-ap-inclusion-subtype is-group-Prop {s = G} {t = H}) + ( equiv-ap-inclusion-subtype is-group-prop-Semigroup {s = G} {t = H}) abstract is-torsorial-iso-Group : is-torsorial (λ (H : Group l) → iso-Group G H) diff --git a/src/group-theory/isomorphisms-monoids.lagda.md b/src/group-theory/isomorphisms-monoids.lagda.md index 1200c0d8ae..5ed4766a19 100644 --- a/src/group-theory/isomorphisms-monoids.lagda.md +++ b/src/group-theory/isomorphisms-monoids.lagda.md @@ -96,7 +96,7 @@ module _ map-iso-Monoid f = map-hom-Monoid M N (hom-iso-Monoid f) preserves-mul-iso-Monoid : - (f : iso-Monoid) (x y : type-Monoid M) → + (f : iso-Monoid) {x y : type-Monoid M} → map-iso-Monoid f (mul-Monoid M x y) = mul-Monoid N (map-iso-Monoid f x) (map-iso-Monoid f y) preserves-mul-iso-Monoid f = @@ -119,7 +119,7 @@ module _ map-hom-Monoid N M (hom-inv-iso-Monoid f) preserves-mul-inv-iso-Monoid : - (f : iso-Monoid) (x y : type-Monoid N) → + (f : iso-Monoid) {x y : type-Monoid N} → map-inv-iso-Monoid f (mul-Monoid N x y) = mul-Monoid M (map-inv-iso-Monoid f x) (map-inv-iso-Monoid f y) preserves-mul-inv-iso-Monoid f = diff --git a/src/group-theory/isomorphisms-semigroups.lagda.md b/src/group-theory/isomorphisms-semigroups.lagda.md index 9b02b7058e..2c2bb15a9a 100644 --- a/src/group-theory/isomorphisms-semigroups.lagda.md +++ b/src/group-theory/isomorphisms-semigroups.lagda.md @@ -115,82 +115,86 @@ module _ iso-Semigroup : UU (l1 ⊔ l2) iso-Semigroup = iso-Large-Precategory Semigroup-Large-Precategory G H - hom-iso-Semigroup : iso-Semigroup → hom-Semigroup G H +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2) (f : iso-Semigroup G H) + where + + hom-iso-Semigroup : hom-Semigroup G H hom-iso-Semigroup = - hom-iso-Large-Precategory Semigroup-Large-Precategory {X = G} {Y = H} + hom-iso-Large-Precategory Semigroup-Large-Precategory {X = G} {Y = H} f - map-iso-Semigroup : iso-Semigroup → type-Semigroup G → type-Semigroup H - map-iso-Semigroup f = map-hom-Semigroup G H (hom-iso-Semigroup f) + map-iso-Semigroup : type-Semigroup G → type-Semigroup H + map-iso-Semigroup = map-hom-Semigroup G H hom-iso-Semigroup preserves-mul-iso-Semigroup : - (f : iso-Semigroup) (x y : type-Semigroup G) → - map-iso-Semigroup f (mul-Semigroup G x y) = - mul-Semigroup H (map-iso-Semigroup f x) (map-iso-Semigroup f y) - preserves-mul-iso-Semigroup f = - preserves-mul-hom-Semigroup G H (hom-iso-Semigroup f) - - is-iso-iso-Semigroup : - (f : iso-Semigroup) → is-iso-Semigroup G H (hom-iso-Semigroup f) + {x y : type-Semigroup G} → + map-iso-Semigroup (mul-Semigroup G x y) = + mul-Semigroup H (map-iso-Semigroup x) (map-iso-Semigroup y) + preserves-mul-iso-Semigroup = + preserves-mul-hom-Semigroup G H hom-iso-Semigroup + + is-iso-iso-Semigroup : is-iso-Semigroup G H hom-iso-Semigroup is-iso-iso-Semigroup = - is-iso-iso-Large-Precategory Semigroup-Large-Precategory {X = G} {Y = H} + is-iso-iso-Large-Precategory Semigroup-Large-Precategory {X = G} {Y = H} f - hom-inv-iso-Semigroup : iso-Semigroup → hom-Semigroup H G + inv-iso-Semigroup : iso-Semigroup H G + inv-iso-Semigroup = + inv-iso-Large-Precategory Semigroup-Large-Precategory {X = G} {Y = H} f + + hom-inv-iso-Semigroup : hom-Semigroup H G hom-inv-iso-Semigroup = - hom-inv-iso-Large-Precategory Semigroup-Large-Precategory {X = G} {Y = H} + hom-inv-iso-Large-Precategory Semigroup-Large-Precategory {X = G} {Y = H} f - map-inv-iso-Semigroup : - iso-Semigroup → type-Semigroup H → type-Semigroup G - map-inv-iso-Semigroup f = - map-hom-Semigroup H G (hom-inv-iso-Semigroup f) + map-inv-iso-Semigroup : type-Semigroup H → type-Semigroup G + map-inv-iso-Semigroup = + map-hom-Semigroup H G hom-inv-iso-Semigroup preserves-mul-inv-iso-Semigroup : - (f : iso-Semigroup) (x y : type-Semigroup H) → - map-inv-iso-Semigroup f (mul-Semigroup H x y) = - mul-Semigroup G (map-inv-iso-Semigroup f x) (map-inv-iso-Semigroup f y) - preserves-mul-inv-iso-Semigroup f = - preserves-mul-hom-Semigroup H G (hom-inv-iso-Semigroup f) + {x y : type-Semigroup H} → + map-inv-iso-Semigroup (mul-Semigroup H x y) = + mul-Semigroup G (map-inv-iso-Semigroup x) (map-inv-iso-Semigroup y) + preserves-mul-inv-iso-Semigroup = + preserves-mul-hom-Semigroup H G hom-inv-iso-Semigroup is-section-hom-inv-iso-Semigroup : - (f : iso-Semigroup) → - comp-hom-Semigroup H G H (hom-iso-Semigroup f) (hom-inv-iso-Semigroup f) = + comp-hom-Semigroup H G H hom-iso-Semigroup hom-inv-iso-Semigroup = id-hom-Semigroup H is-section-hom-inv-iso-Semigroup = is-section-hom-inv-iso-Large-Precategory ( Semigroup-Large-Precategory) { X = G} { Y = H} + ( f) is-section-map-inv-iso-Semigroup : - (f : iso-Semigroup) → - (map-iso-Semigroup f ∘ map-inv-iso-Semigroup f) ~ id - is-section-map-inv-iso-Semigroup f = + map-iso-Semigroup ∘ map-inv-iso-Semigroup ~ id + is-section-map-inv-iso-Semigroup = htpy-eq-hom-Semigroup H H ( comp-hom-Semigroup H G H - ( hom-iso-Semigroup f) - ( hom-inv-iso-Semigroup f)) + ( hom-iso-Semigroup) + ( hom-inv-iso-Semigroup)) ( id-hom-Semigroup H) - ( is-section-hom-inv-iso-Semigroup f) + ( is-section-hom-inv-iso-Semigroup) is-retraction-hom-inv-iso-Semigroup : - (f : iso-Semigroup) → - comp-hom-Semigroup G H G (hom-inv-iso-Semigroup f) (hom-iso-Semigroup f) = + comp-hom-Semigroup G H G hom-inv-iso-Semigroup hom-iso-Semigroup = id-hom-Semigroup G is-retraction-hom-inv-iso-Semigroup = is-retraction-hom-inv-iso-Large-Precategory ( Semigroup-Large-Precategory) { X = G} { Y = H} + ( f) is-retraction-map-inv-iso-Semigroup : - (f : iso-Semigroup) → - ( map-inv-iso-Semigroup f ∘ map-iso-Semigroup f) ~ id - is-retraction-map-inv-iso-Semigroup f = + map-inv-iso-Semigroup ∘ map-iso-Semigroup ~ id + is-retraction-map-inv-iso-Semigroup = htpy-eq-hom-Semigroup G G ( comp-hom-Semigroup G H G - ( hom-inv-iso-Semigroup f) - ( hom-iso-Semigroup f)) + ( hom-inv-iso-Semigroup) + ( hom-iso-Semigroup)) ( id-hom-Semigroup G) - ( is-retraction-hom-inv-iso-Semigroup f) + ( is-retraction-hom-inv-iso-Semigroup) ``` ## Properties @@ -232,24 +236,21 @@ module _ ( f : hom-Semigroup G H) ( U : is-equiv (map-hom-Semigroup G H f)) → preserves-mul-Semigroup H G (map-inv-is-equiv U) - preserves-mul-map-inv-is-equiv-Semigroup (f , μ-f) U x y = + preserves-mul-map-inv-is-equiv-Semigroup (f , μ-f) U {x} {y} = map-inv-is-equiv ( is-emb-is-equiv U ( map-inv-is-equiv U (mul-Semigroup H x y)) ( mul-Semigroup G ( map-inv-is-equiv U x) ( map-inv-is-equiv U y))) - ( ( ( is-section-map-inv-is-equiv U (mul-Semigroup H x y)) ∙ - ( ( ap - ( λ t → mul-Semigroup H t y) - ( inv (is-section-map-inv-is-equiv U x))) ∙ - ( ap - ( mul-Semigroup H (f (map-inv-is-equiv U x))) - ( inv (is-section-map-inv-is-equiv U y))))) ∙ - ( inv - ( μ-f - ( map-inv-is-equiv U x) - ( map-inv-is-equiv U y)))) + ( ( is-section-map-inv-is-equiv U (mul-Semigroup H x y)) ∙ + ( ap + ( λ t → mul-Semigroup H t y) + ( inv (is-section-map-inv-is-equiv U x))) ∙ + ( ap + ( mul-Semigroup H (f (map-inv-is-equiv U x))) + ( inv (is-section-map-inv-is-equiv U y))) ∙ + ( inv μ-f)) ``` ### A homomorphism of semigroups is an equivalence of semigroups if and only if it is an isomorphism @@ -289,6 +290,9 @@ module _ ( is-iso-is-equiv-hom-Semigroup) ( is-equiv-is-iso-Semigroup)) ∘e ( equiv-right-swap-Σ) + + iso-equiv-Semigroup : equiv-Semigroup G H → iso-Semigroup G H + iso-equiv-Semigroup = map-equiv equiv-iso-equiv-Semigroup ``` ### Two semigroups are equal if and only if they are isomorphic diff --git a/src/group-theory/kernels-homomorphisms-abelian-groups.lagda.md b/src/group-theory/kernels-homomorphisms-abelian-groups.lagda.md new file mode 100644 index 0000000000..9772e78e5d --- /dev/null +++ b/src/group-theory/kernels-homomorphisms-abelian-groups.lagda.md @@ -0,0 +1,87 @@ +# Kernels of homomorphisms between abelian groups + +```agda +module group-theory.kernels-homomorphisms-abelian-groups where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import group-theory.abelian-groups +open import group-theory.embeddings-abelian-groups +open import group-theory.homomorphisms-abelian-groups +open import group-theory.kernels-homomorphisms-groups +open import group-theory.subgroups-abelian-groups +open import group-theory.subsets-abelian-groups +``` + +
+ +## Idea + +The **kernel** of a +[group homomorphism](group-theory.homomorphisms-abelian-groups.md) `f : A → B` +between [abelian groups](group-theory.abelian-groups.md) `A` and `B` is the +[subgroup](group-theory.subgroups-abelian-groups.md) of `A` consisting of those +elements `x : A` such that `f x = zero-Ab B`. + +## Definitions + +### Kernels of group homomorphisms between abelian groups + +```agda +module _ + {l1 l2 : Level} (A : Ab l1) (B : Ab l2) (f : hom-Ab A B) + where + + subset-kernel-hom-Ab : subset-Ab l2 A + subset-kernel-hom-Ab = + subset-kernel-hom-Group (group-Ab A) (group-Ab B) f + + is-in-kernel-hom-Ab : type-Ab A → UU l2 + is-in-kernel-hom-Ab = + is-in-kernel-hom-Group (group-Ab A) (group-Ab B) f + + contains-zero-subset-kernel-hom-Ab : + is-in-kernel-hom-Ab (zero-Ab A) + contains-zero-subset-kernel-hom-Ab = + contains-unit-subset-kernel-hom-Group (group-Ab A) (group-Ab B) f + + is-closed-under-addition-subset-kernel-hom-Ab : + is-closed-under-addition-subset-Ab A subset-kernel-hom-Ab + is-closed-under-addition-subset-kernel-hom-Ab = + is-closed-under-multiplication-subset-kernel-hom-Group + ( group-Ab A) + ( group-Ab B) + ( f) + + is-closed-under-negatives-subset-kernel-hom-Ab : + is-closed-under-negatives-subset-Ab A subset-kernel-hom-Ab + is-closed-under-negatives-subset-kernel-hom-Ab = + is-closed-under-inverses-subset-kernel-hom-Group + ( group-Ab A) + ( group-Ab B) + ( f) + + kernel-hom-Ab : Subgroup-Ab l2 A + kernel-hom-Ab = + subgroup-kernel-hom-Group (group-Ab A) (group-Ab B) f + + ab-kernel-hom-Ab : Ab (l1 ⊔ l2) + ab-kernel-hom-Ab = ab-Subgroup-Ab A kernel-hom-Ab + + inclusion-kernel-hom-Ab : hom-Ab ab-kernel-hom-Ab A + inclusion-kernel-hom-Ab = + inclusion-kernel-hom-Group (group-Ab A) (group-Ab B) f + + is-emb-inclusion-kernel-hom-Ab : + is-emb-hom-Ab ab-kernel-hom-Ab A inclusion-kernel-hom-Ab + is-emb-inclusion-kernel-hom-Ab = + is-emb-inclusion-kernel-hom-Group (group-Ab A) (group-Ab B) f + + emb-inclusion-kernel-hom-Ab : emb-Ab ab-kernel-hom-Ab A + emb-inclusion-kernel-hom-Ab = + emb-inclusion-kernel-hom-Group (group-Ab A) (group-Ab B) f +``` diff --git a/src/group-theory/kernels-homomorphisms-groups.lagda.md b/src/group-theory/kernels-homomorphisms-groups.lagda.md new file mode 100644 index 0000000000..ba177596f8 --- /dev/null +++ b/src/group-theory/kernels-homomorphisms-groups.lagda.md @@ -0,0 +1,135 @@ +# Kernels of homomorphisms of groups + +```agda +module group-theory.kernels-homomorphisms-groups where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.dependent-pair-types +open import foundation.equality-cartesian-product-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.universe-levels + +open import group-theory.embeddings-groups +open import group-theory.groups +open import group-theory.homomorphisms-groups +open import group-theory.normal-subgroups +open import group-theory.subgroups +open import group-theory.subsets-groups +``` + +
+ +## Idea + +The **kernel** of a [group homomorphism](group-theory.homomorphisms-groups.md) +`f : G → H` is the [normal subgroup](group-theory.normal-subgroups.md) of `G` +consisting of those elements `x : G` such that `f x = unit-Group H`. + +## Definition + +We define the kernel as the subgroup generated by the predicate which associates +to `x` the proposition `f(x) = unit`. + +```agda +module _ + {l k : Level} (G : Group l) (H : Group k) (f : hom-Group G H) + where + + subset-kernel-hom-Group : subset-Group k G + subset-kernel-hom-Group x = + is-unit-prop-Group' H (map-hom-Group G H f x) + + is-in-kernel-hom-Group : type-Group G → UU k + is-in-kernel-hom-Group x = type-Prop (subset-kernel-hom-Group x) + + contains-unit-subset-kernel-hom-Group : + is-in-kernel-hom-Group (unit-Group G) + contains-unit-subset-kernel-hom-Group = inv (preserves-unit-hom-Group G H f) + + is-closed-under-multiplication-subset-kernel-hom-Group : + is-closed-under-multiplication-subset-Group G subset-kernel-hom-Group + is-closed-under-multiplication-subset-kernel-hom-Group p q = + ( inv (left-unit-law-mul-Group H _)) ∙ + ( ap-mul-Group H p q) ∙ + ( inv (preserves-mul-hom-Group G H f)) + + is-closed-under-inverses-subset-kernel-hom-Group : + is-closed-under-inverses-subset-Group G subset-kernel-hom-Group + is-closed-under-inverses-subset-kernel-hom-Group p = + ( inv (inv-unit-Group H)) ∙ + ( ap (inv-Group H) p) ∙ + ( inv (preserves-inv-hom-Group G H f)) + + subgroup-kernel-hom-Group : Subgroup k G + pr1 subgroup-kernel-hom-Group = subset-kernel-hom-Group + pr1 (pr2 subgroup-kernel-hom-Group) = contains-unit-subset-kernel-hom-Group + pr1 (pr2 (pr2 subgroup-kernel-hom-Group)) = + is-closed-under-multiplication-subset-kernel-hom-Group + pr2 (pr2 (pr2 subgroup-kernel-hom-Group)) = + is-closed-under-inverses-subset-kernel-hom-Group + + group-kernel-hom-Group : Group (l ⊔ k) + group-kernel-hom-Group = group-Subgroup G subgroup-kernel-hom-Group + + inclusion-kernel-hom-Group : hom-Group group-kernel-hom-Group G + inclusion-kernel-hom-Group = + hom-inclusion-Subgroup G subgroup-kernel-hom-Group + + type-kernel-hom-Group : UU (l ⊔ k) + type-kernel-hom-Group = type-Subgroup G subgroup-kernel-hom-Group + + map-inclusion-kernel-hom-Group : type-kernel-hom-Group → type-Group G + map-inclusion-kernel-hom-Group = + map-hom-Group group-kernel-hom-Group G inclusion-kernel-hom-Group + + is-in-subgroup-inclusion-kernel-hom-Group : + (x : type-kernel-hom-Group) → + is-in-kernel-hom-Group (map-inclusion-kernel-hom-Group x) + is-in-subgroup-inclusion-kernel-hom-Group = + is-in-subgroup-inclusion-Subgroup G subgroup-kernel-hom-Group + + is-emb-inclusion-kernel-hom-Group : + is-emb-hom-Group group-kernel-hom-Group G inclusion-kernel-hom-Group + is-emb-inclusion-kernel-hom-Group = + is-emb-inclusion-Subgroup G subgroup-kernel-hom-Group + + emb-inclusion-kernel-hom-Group : emb-Group group-kernel-hom-Group G + pr1 emb-inclusion-kernel-hom-Group = + inclusion-kernel-hom-Group + pr2 emb-inclusion-kernel-hom-Group = + is-emb-inclusion-kernel-hom-Group +``` + +## Properties + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + where + + is-normal-kernel-hom-Group : + is-normal-Subgroup G (subgroup-kernel-hom-Group G H f) + is-normal-kernel-hom-Group g h = + inv + ( ( preserves-mul-hom-Group G H f) ∙ + ( ap + ( mul-Group' H (map-hom-Group G H f (inv-Group G g))) + ( ( preserves-mul-hom-Group G H f) ∙ + ( inv + ( ap + ( mul-Group H (map-hom-Group G H f g)) + ( is-in-subgroup-inclusion-kernel-hom-Group G H f h))) ∙ + ( right-unit-law-mul-Group H (map-hom-Group G H f g)))) ∙ + ( ap (mul-Group H _) (preserves-inv-hom-Group G H f)) ∙ + ( right-inverse-law-mul-Group H (map-hom-Group G H f g))) + + kernel-hom-Group : Normal-Subgroup l2 G + pr1 kernel-hom-Group = subgroup-kernel-hom-Group G H f + pr2 kernel-hom-Group = is-normal-kernel-hom-Group +``` diff --git a/src/group-theory/kernels.lagda.md b/src/group-theory/kernels.lagda.md deleted file mode 100644 index 35d1ec8bbb..0000000000 --- a/src/group-theory/kernels.lagda.md +++ /dev/null @@ -1,180 +0,0 @@ -# Kernels - -```agda -module group-theory.kernels where -``` - -
Imports - -```agda -open import foundation.action-on-identifications-functions -open import foundation.dependent-pair-types -open import foundation.equality-cartesian-product-types -open import foundation.identity-types -open import foundation.propositions -open import foundation.sets -open import foundation.universe-levels - -open import group-theory.abelian-groups -open import group-theory.embeddings-abelian-groups -open import group-theory.embeddings-groups -open import group-theory.groups -open import group-theory.homomorphisms-abelian-groups -open import group-theory.homomorphisms-groups -open import group-theory.normal-subgroups -open import group-theory.subgroups -open import group-theory.subgroups-abelian-groups -open import group-theory.subsets-abelian-groups -open import group-theory.subsets-groups -``` - -
- -## Idea - -The **kernel** of a group homomorphism `f : A → B` is the subgroup of A -consisting of those elements which `f` sends to the unit of B. - -## Definition - -We define the kernel as the subgroup generated by the predicate which associates -to `x` the proposition `f(x) = unit`. - -```agda -module _ - {l k : Level} (G : Group l) (H : Group k) (f : hom-Group G H) - where - - subset-kernel-hom-Group : subset-Group k G - subset-kernel-hom-Group x = - Id-Prop (set-Group H) (map-hom-Group G H f x) (unit-Group H) - - is-in-kernel-hom-Group : type-Group G → UU k - is-in-kernel-hom-Group x = type-Prop (subset-kernel-hom-Group x) - - contains-unit-subset-kernel-hom-Group : - is-in-kernel-hom-Group (unit-Group G) - contains-unit-subset-kernel-hom-Group = preserves-unit-hom-Group G H f - - is-closed-under-multiplication-subset-kernel-hom-Group : - is-closed-under-multiplication-subset-Group G subset-kernel-hom-Group - is-closed-under-multiplication-subset-kernel-hom-Group x y p q = - ( preserves-mul-hom-Group G H f x y) ∙ - ( ( ap (λ (x , y) → mul-Group H x y) (eq-pair p q)) ∙ - ( left-unit-law-mul-Group H _)) - - is-closed-under-inverses-subset-kernel-hom-Group : - is-closed-under-inverses-subset-Group G subset-kernel-hom-Group - is-closed-under-inverses-subset-kernel-hom-Group x p = - ( preserves-inv-hom-Group G H f x) ∙ - ( ap (inv-Group H) p ∙ inv-unit-Group H) - - subgroup-kernel-hom-Group : Subgroup k G - pr1 subgroup-kernel-hom-Group = subset-kernel-hom-Group - pr1 (pr2 subgroup-kernel-hom-Group) = contains-unit-subset-kernel-hom-Group - pr1 (pr2 (pr2 subgroup-kernel-hom-Group)) = - is-closed-under-multiplication-subset-kernel-hom-Group - pr2 (pr2 (pr2 subgroup-kernel-hom-Group)) = - is-closed-under-inverses-subset-kernel-hom-Group - - group-kernel-hom-Group : Group (l ⊔ k) - group-kernel-hom-Group = group-Subgroup G subgroup-kernel-hom-Group - - inclusion-kernel-hom-Group : hom-Group group-kernel-hom-Group G - inclusion-kernel-hom-Group = - hom-inclusion-Subgroup G subgroup-kernel-hom-Group - - is-emb-inclusion-kernel-hom-Group : - is-emb-hom-Group group-kernel-hom-Group G inclusion-kernel-hom-Group - is-emb-inclusion-kernel-hom-Group = - is-emb-inclusion-Subgroup G subgroup-kernel-hom-Group - - emb-inclusion-kernel-hom-Group : emb-Group group-kernel-hom-Group G - pr1 emb-inclusion-kernel-hom-Group = - inclusion-kernel-hom-Group - pr2 emb-inclusion-kernel-hom-Group = - is-emb-inclusion-kernel-hom-Group -``` - -## Properties - -```agda -module _ - {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) - where - - is-normal-kernel-hom-Group : - is-normal-Subgroup G (subgroup-kernel-hom-Group G H f) - is-normal-kernel-hom-Group g h = - ( preserves-mul-hom-Group G H f (mul-Group G g (pr1 h)) (inv-Group G g)) ∙ - ( ( ap - ( mul-Group' H (map-hom-Group G H f (inv-Group G g))) - ( ( preserves-mul-hom-Group G H f g (pr1 h)) ∙ - ( ( ap (mul-Group H (map-hom-Group G H f g)) (pr2 h)) ∙ - ( right-unit-law-mul-Group H (map-hom-Group G H f g))))) ∙ - ( ( ap - ( mul-Group H (map-hom-Group G H f g)) - ( preserves-inv-hom-Group G H f g)) ∙ - ( right-inverse-law-mul-Group H (map-hom-Group G H f g)))) - - kernel-hom-Group : Normal-Subgroup l2 G - pr1 kernel-hom-Group = subgroup-kernel-hom-Group G H f - pr2 kernel-hom-Group = is-normal-kernel-hom-Group -``` - -### Kernels of group homomorphisms between abelian groups - -```agda -module _ - {l1 l2 : Level} (A : Ab l1) (B : Ab l2) (f : hom-Ab A B) - where - - subset-kernel-hom-Ab : subset-Ab l2 A - subset-kernel-hom-Ab = - subset-kernel-hom-Group (group-Ab A) (group-Ab B) f - - is-in-kernel-hom-Ab : type-Ab A → UU l2 - is-in-kernel-hom-Ab = - is-in-kernel-hom-Group (group-Ab A) (group-Ab B) f - - contains-zero-subset-kernel-hom-Ab : - is-in-kernel-hom-Ab (zero-Ab A) - contains-zero-subset-kernel-hom-Ab = - contains-unit-subset-kernel-hom-Group (group-Ab A) (group-Ab B) f - - is-closed-under-addition-subset-kernel-hom-Ab : - is-closed-under-addition-subset-Ab A subset-kernel-hom-Ab - is-closed-under-addition-subset-kernel-hom-Ab = - is-closed-under-multiplication-subset-kernel-hom-Group - ( group-Ab A) - ( group-Ab B) - ( f) - - is-closed-under-negatives-subset-kernel-hom-Ab : - is-closed-under-negatives-subset-Ab A subset-kernel-hom-Ab - is-closed-under-negatives-subset-kernel-hom-Ab = - is-closed-under-inverses-subset-kernel-hom-Group - ( group-Ab A) - ( group-Ab B) - ( f) - - kernel-hom-Ab : Subgroup-Ab l2 A - kernel-hom-Ab = - subgroup-kernel-hom-Group (group-Ab A) (group-Ab B) f - - ab-kernel-hom-Ab : Ab (l1 ⊔ l2) - ab-kernel-hom-Ab = ab-Subgroup-Ab A kernel-hom-Ab - - inclusion-kernel-hom-Ab : hom-Ab ab-kernel-hom-Ab A - inclusion-kernel-hom-Ab = - inclusion-kernel-hom-Group (group-Ab A) (group-Ab B) f - - is-emb-inclusion-kernel-hom-Ab : - is-emb-hom-Ab ab-kernel-hom-Ab A inclusion-kernel-hom-Ab - is-emb-inclusion-kernel-hom-Ab = - is-emb-inclusion-kernel-hom-Group (group-Ab A) (group-Ab B) f - - emb-inclusion-kernel-hom-Ab : emb-Ab ab-kernel-hom-Ab A - emb-inclusion-kernel-hom-Ab = - emb-inclusion-kernel-hom-Group (group-Ab A) (group-Ab B) f -``` diff --git a/src/group-theory/loop-groups-sets.lagda.md b/src/group-theory/loop-groups-sets.lagda.md index 6df02c2c82..e22d0fe623 100644 --- a/src/group-theory/loop-groups-sets.lagda.md +++ b/src/group-theory/loop-groups-sets.lagda.md @@ -103,12 +103,12 @@ module _ commutative-inv-map-hom-symmetric-group-loop-group-Set : (X Y : UU l) (p : Id X Y) (sX : is-set X) (sY : is-set Y) → Id - ( map-hom-symmetric-group-loop-group-Set (pair Y sY) (pair X sX) (inv p)) + ( map-hom-symmetric-group-loop-group-Set (Y , sY) (X , sX) (inv p)) ( inv-equiv - ( map-hom-symmetric-group-loop-group-Set (pair X sX) (pair Y sY) p)) + ( map-hom-symmetric-group-loop-group-Set (X , sX) (Y , sY) p)) commutative-inv-map-hom-symmetric-group-loop-group-Set X .X refl sX sY = ( inv (right-inverse-law-equiv id-equiv)) ∙ - ( left-unit-law-equiv (inv-equiv id-equiv)) + ( left-unit-law-equiv (inv-equiv id-equiv)) module _ {l : Level} (X : Set l) @@ -118,7 +118,7 @@ module _ hom-Group (loop-group-Set X) (symmetric-Group X) pr1 hom-symmetric-group-loop-group-Set = map-hom-symmetric-group-loop-group-Set X X - pr2 hom-symmetric-group-loop-group-Set p q = + pr2 hom-symmetric-group-loop-group-Set {p} {q} = ( ap equiv-eq (distributive-inv-concat p q)) ∙ ( inv (compute-equiv-eq-concat (inv q) (inv p))) @@ -126,7 +126,7 @@ module _ hom-Group (symmetric-Group X) (loop-group-Set X) pr1 hom-inv-symmetric-group-loop-group-Set = map-hom-inv-symmetric-group-loop-group-Set X X - pr2 hom-inv-symmetric-group-loop-group-Set f g = + pr2 hom-inv-symmetric-group-loop-group-Set {f} {g} = ( ap ( inv) ( inv @@ -213,29 +213,29 @@ module _ ( p) ( eq-is-prop (is-prop-is-set (type-Set X)))) ( eq-is-prop is-prop-type-trunc-Prop) - pr2 hom-abstract-automorphism-group-loop-group-Set p q = + pr2 hom-abstract-automorphism-group-loop-group-Set {p} {q} = ( ap ( λ r → eq-pair-Σ r (eq-is-prop is-prop-type-trunc-Prop)) ( ( ap - ( λ w → eq-pair-Σ (p ∙ q) w) - ( eq-is-prop (is-trunc-Id (is-prop-is-set (type-Set X) _ _)))) ∙ + ( λ w → eq-pair-Σ (p ∙ q) w) + ( eq-is-prop (is-trunc-Id (is-prop-is-set (type-Set X) _ _)))) ∙ ( interchange-concat-eq-pair-Σ ( p) ( q) ( eq-is-prop (is-prop-is-set (type-Set X))) ( eq-is-prop (is-prop-is-set (type-Set X)))))) ∙ - ( ( ap - ( λ w → - eq-pair-Σ - ( ( eq-pair-Σ p (eq-is-prop (is-prop-is-set (pr1 X)))) ∙ - ( eq-pair-Σ q (eq-is-prop (is-prop-is-set (pr1 X))))) - ( w))) - ( eq-is-prop (is-trunc-Id (is-prop-type-trunc-Prop _ _))) ∙ - ( interchange-concat-eq-pair-Σ - ( eq-pair-Σ p (eq-is-prop (is-prop-is-set (type-Set X)))) - ( eq-pair-Σ q (eq-is-prop (is-prop-is-set (type-Set X)))) - ( eq-is-prop is-prop-type-trunc-Prop) - ( eq-is-prop is-prop-type-trunc-Prop))) + ( ap + ( λ w → + eq-pair-Σ + ( ( eq-pair-Σ p (eq-is-prop (is-prop-is-set (pr1 X)))) ∙ + ( eq-pair-Σ q (eq-is-prop (is-prop-is-set (pr1 X))))) + ( w)) + ( eq-is-prop (is-trunc-Id (is-prop-type-trunc-Prop _ _)))) ∙ + ( interchange-concat-eq-pair-Σ + ( eq-pair-Σ p (eq-is-prop (is-prop-is-set (type-Set X)))) + ( eq-pair-Σ q (eq-is-prop (is-prop-is-set (type-Set X)))) + ( eq-is-prop is-prop-type-trunc-Prop) + ( eq-is-prop is-prop-type-trunc-Prop)) hom-inv-abstract-automorphism-group-loop-group-Set : hom-Group @@ -244,7 +244,7 @@ module _ ( loop-group-Set X) pr1 hom-inv-abstract-automorphism-group-loop-group-Set p = pr1 (pair-eq-Σ (pr1 (pair-eq-Σ p))) - pr2 hom-inv-abstract-automorphism-group-loop-group-Set p q = + pr2 hom-inv-abstract-automorphism-group-loop-group-Set {p} {q} = ( ap ( λ r → pr1 (pair-eq-Σ r)) ( pr1-interchange-concat-pair-eq-Σ p q)) ∙ @@ -270,17 +270,16 @@ module _ ( ap ( λ r → eq-pair-Σ r (eq-is-prop is-prop-type-trunc-Prop)) ( ( ap - ( eq-pair-Σ (pr1 (pair-eq-Σ (pr1 (pair-eq-Σ p))))) - { y = pr2 (pair-eq-Σ (pr1 (pair-eq-Σ p)))} - ( eq-is-prop (is-trunc-Id (is-prop-is-set (type-Set X) _ _)))) ∙ + ( eq-pair-Σ (pr1 (pair-eq-Σ (pr1 (pair-eq-Σ p))))) + ( eq-is-prop (is-trunc-Id (is-prop-is-set (type-Set X) _ _)))) ∙ ( is-section-pair-eq-Σ X X (pr1 (pair-eq-Σ p))))) ∙ - ( ( ap - ( eq-pair-Σ (pr1 (pair-eq-Σ p))) - ( eq-is-prop (is-trunc-Id (is-prop-type-trunc-Prop _ _)))) ∙ - ( is-section-pair-eq-Σ - ( pair X (unit-trunc-Prop refl)) - ( pair X (unit-trunc-Prop refl)) - ( p))))) + ( ap + ( eq-pair-Σ (pr1 (pair-eq-Σ p))) + ( eq-is-prop (is-trunc-Id (is-prop-type-trunc-Prop _ _)))) ∙ + ( is-section-pair-eq-Σ + ( X , unit-trunc-Prop refl) + ( X , unit-trunc-Prop refl) + ( p)))) ( eq-is-prop ( is-prop-preserves-mul-Semigroup ( semigroup-Group @@ -292,15 +291,14 @@ module _ ( id))) is-retraction-hom-inv-abstract-automorphism-group-loop-group-Set : - Id - ( comp-hom-Group - ( loop-group-Set X) - ( group-Concrete-Group - ( Automorphism-Group (Set-1-Type l) X)) - ( loop-group-Set X) - ( hom-inv-abstract-automorphism-group-loop-group-Set) - ( hom-abstract-automorphism-group-loop-group-Set)) - ( id-hom-Group (loop-group-Set X)) + comp-hom-Group + ( loop-group-Set X) + ( group-Concrete-Group + ( Automorphism-Group (Set-1-Type l) X)) + ( loop-group-Set X) + ( hom-inv-abstract-automorphism-group-loop-group-Set) + ( hom-abstract-automorphism-group-loop-group-Set) = + id-hom-Group (loop-group-Set X) is-retraction-hom-inv-abstract-automorphism-group-loop-group-Set = eq-pair-Σ ( eq-htpy @@ -308,8 +306,8 @@ module _ ( ap ( λ w → pr1 (pair-eq-Σ (pr1 w))) ( is-retraction-pair-eq-Σ - ( pair X (unit-trunc-Prop refl)) - ( pair X (unit-trunc-Prop refl)) + ( X , unit-trunc-Prop refl) + ( X , unit-trunc-Prop refl) ( pair ( eq-pair-Σ ( p) @@ -317,7 +315,7 @@ module _ ( eq-is-prop is-prop-type-trunc-Prop)))) ∙ ( ap pr1 ( is-retraction-pair-eq-Σ X X - ( pair p (eq-is-prop (is-prop-is-set (type-Set X)))))))) + ( p , eq-is-prop (is-prop-is-set (type-Set X))))))) ( eq-is-prop ( is-prop-preserves-mul-Semigroup ( semigroup-Group (loop-group-Set X)) diff --git a/src/group-theory/mere-equivalences-concrete-group-actions.lagda.md b/src/group-theory/mere-equivalences-concrete-group-actions.lagda.md index 8432d4a612..5e895381eb 100644 --- a/src/group-theory/mere-equivalences-concrete-group-actions.lagda.md +++ b/src/group-theory/mere-equivalences-concrete-group-actions.lagda.md @@ -23,25 +23,25 @@ open import group-theory.equivalences-concrete-group-actions ## Definition ```agda -mere-equiv-action-Concrete-Group-Prop : +mere-equiv-prop-action-Concrete-Group : {l1 l2 l3 : Level} (G : Concrete-Group l1) → action-Concrete-Group l2 G → action-Concrete-Group l3 G → Prop (l1 ⊔ l2 ⊔ l3) -mere-equiv-action-Concrete-Group-Prop G X Y = +mere-equiv-prop-action-Concrete-Group G X Y = trunc-Prop (equiv-action-Concrete-Group G X Y) mere-equiv-action-Concrete-Group : {l1 l2 l3 : Level} (G : Concrete-Group l1) → action-Concrete-Group l2 G → action-Concrete-Group l3 G → UU (l1 ⊔ l2 ⊔ l3) mere-equiv-action-Concrete-Group G X Y = - type-Prop (mere-equiv-action-Concrete-Group-Prop G X Y) + type-Prop (mere-equiv-prop-action-Concrete-Group G X Y) is-prop-mere-equiv-action-Concrete-Group : {l1 l2 l3 : Level} (G : Concrete-Group l1) (X : action-Concrete-Group l2 G) (Y : action-Concrete-Group l3 G) → is-prop (mere-equiv-action-Concrete-Group G X Y) is-prop-mere-equiv-action-Concrete-Group G X Y = - is-prop-type-Prop (mere-equiv-action-Concrete-Group-Prop G X Y) + is-prop-type-Prop (mere-equiv-prop-action-Concrete-Group G X Y) refl-mere-equiv-action-Concrete-Group : {l1 l2 : Level} (G : Concrete-Group l1) (X : action-Concrete-Group l2 G) → diff --git a/src/group-theory/mere-equivalences-group-actions.lagda.md b/src/group-theory/mere-equivalences-group-actions.lagda.md index 8b1a24b07a..72c1412d12 100644 --- a/src/group-theory/mere-equivalences-group-actions.lagda.md +++ b/src/group-theory/mere-equivalences-group-actions.lagda.md @@ -18,20 +18,24 @@ open import group-theory.groups +## Idea + +A **mere equivalence** of [group actions](group-theory.group-actions.md) is an +element of the +[propositional truncation](foundation.propositional-truncations.md) of the type +of [equivalences of group actions](group-theory.equivalences-group-actions.md). + ## Definition ```agda module _ {l1 l2 l3 : Level} (G : Group l1) - (X : Abstract-Group-Action G l2) - (Y : Abstract-Group-Action G l3) + (X : action-Group G l2) (Y : action-Group G l3) where - mere-equiv-Abstract-Group-Action-Prop : Prop (l1 ⊔ l2 ⊔ l3) - mere-equiv-Abstract-Group-Action-Prop = - trunc-Prop (equiv-Abstract-Group-Action G X Y) + mere-equiv-prop-action-Group : Prop (l1 ⊔ l2 ⊔ l3) + mere-equiv-prop-action-Group = trunc-Prop (equiv-action-Group G X Y) - mere-equiv-Abstract-Group-Action : UU (l1 ⊔ l2 ⊔ l3) - mere-equiv-Abstract-Group-Action = - type-Prop mere-equiv-Abstract-Group-Action-Prop + mere-equiv-action-Group : UU (l1 ⊔ l2 ⊔ l3) + mere-equiv-action-Group = type-Prop mere-equiv-prop-action-Group ``` diff --git a/src/group-theory/monoid-actions.lagda.md b/src/group-theory/monoid-actions.lagda.md index 5247c130ff..c1f806f207 100644 --- a/src/group-theory/monoid-actions.lagda.md +++ b/src/group-theory/monoid-actions.lagda.md @@ -23,53 +23,73 @@ open import group-theory.monoids ## Idea -A [monoid](group-theory.monoids.md) `M` can **act** on a -[set](foundation-core.sets.md) `A` by a -[monoid homomorphism](group-theory.homomorphisms-monoids.md) `hom M (A → A)`. +A **monoid action** of a [monoid](group-theory.monoids.md) `M` on a +[set](foundation-core.sets.md) `X` is a +[monoid homomorphism](group-theory.homomorphisms-monoids.md) from `M` into the +monoid of [endomorphisms](foundation.endomorphisms.md) `X → X`. The fact that +monoid homomorphisms preserve the monoid operation and the unit implies that a +monoid action `μ` of `M` on `X` satisfies the following laws: + +```text + μ mn x = μ m (μ n x) + μ 1 x = x. +``` ## Definition ### Monoid actions ```agda -Monoid-Action : {l1 : Level} (l : Level) (M : Monoid l1) → UU (l1 ⊔ lsuc l) -Monoid-Action l M = Σ (Set l) (λ X → hom-Monoid M (endo-Monoid X)) +action-Monoid : {l1 : Level} (l : Level) (M : Monoid l1) → UU (l1 ⊔ lsuc l) +action-Monoid l M = Σ (Set l) (λ X → hom-Monoid M (endo-Monoid X)) module _ - {l1 l2 : Level} (M : Monoid l1) (X : Monoid-Action l2 M) + {l1 l2 : Level} (M : Monoid l1) (X : action-Monoid l2 M) where - set-Monoid-Action : Set l2 - set-Monoid-Action = pr1 X - - type-Monoid-Action : UU l2 - type-Monoid-Action = type-Set set-Monoid-Action - - is-set-type-Monoid-Action : is-set type-Monoid-Action - is-set-type-Monoid-Action = is-set-type-Set set-Monoid-Action - - mul-Monoid-Action : type-Monoid M → type-Monoid-Action → type-Monoid-Action - mul-Monoid-Action = pr1 (pr1 (pr2 X)) - - ap-mul-Monoid-Action : - {m : type-Monoid M} {x y : type-Monoid-Action} → - Id x y → Id (mul-Monoid-Action m x) (mul-Monoid-Action m y) - ap-mul-Monoid-Action {m} = ap (mul-Monoid-Action m) - - ap-mul-Monoid-Action' : - {m n : type-Monoid M} (p : Id m n) {x : type-Monoid-Action} → - Id (mul-Monoid-Action m x) (mul-Monoid-Action n x) - ap-mul-Monoid-Action' p {x} = - ap (λ t → mul-Monoid-Action t x) p - - associative-mul-Monoid-Action : - (x y : type-Monoid M) (z : type-Monoid-Action) → - Id - ( mul-Monoid-Action (mul-Monoid M x y) z) - ( mul-Monoid-Action x (mul-Monoid-Action y z)) - associative-mul-Monoid-Action x y = htpy-eq (pr2 (pr1 (pr2 X)) x y) - - unit-law-mul-Monoid-Action : - (x : type-Monoid-Action) → Id (mul-Monoid-Action (unit-Monoid M) x) x - unit-law-mul-Monoid-Action = htpy-eq (pr2 (pr2 X)) + set-action-Monoid : Set l2 + set-action-Monoid = pr1 X + + type-action-Monoid : UU l2 + type-action-Monoid = type-Set set-action-Monoid + + is-set-type-action-Monoid : is-set type-action-Monoid + is-set-type-action-Monoid = is-set-type-Set set-action-Monoid + + mul-hom-monoid-action-Monoid : hom-Monoid M (endo-Monoid set-action-Monoid) + mul-hom-monoid-action-Monoid = pr2 X + + mul-action-Monoid : type-Monoid M → type-action-Monoid → type-action-Monoid + mul-action-Monoid = + map-hom-Monoid M + ( endo-Monoid set-action-Monoid) + ( mul-hom-monoid-action-Monoid) + + ap-mul-action-Monoid : + {m : type-Monoid M} {x y : type-action-Monoid} → + x = y → mul-action-Monoid m x = mul-action-Monoid m y + ap-mul-action-Monoid {m} = ap (mul-action-Monoid m) + + ap-mul-action-Monoid' : + {m n : type-Monoid M} (p : m = n) {x : type-action-Monoid} → + mul-action-Monoid m x = mul-action-Monoid n x + ap-mul-action-Monoid' p {x} = ap (λ t → mul-action-Monoid t x) p + + associative-mul-action-Monoid : + (x y : type-Monoid M) (z : type-action-Monoid) → + mul-action-Monoid (mul-Monoid M x y) z = + mul-action-Monoid x (mul-action-Monoid y z) + associative-mul-action-Monoid x y = + htpy-eq + ( preserves-mul-hom-Monoid M + ( endo-Monoid set-action-Monoid) + ( mul-hom-monoid-action-Monoid)) + + unit-law-mul-action-Monoid : + (x : type-action-Monoid) → mul-action-Monoid (unit-Monoid M) x = x + unit-law-mul-action-Monoid = + htpy-eq + ( preserves-unit-hom-Monoid M + ( endo-Monoid set-action-Monoid) + ( mul-hom-monoid-action-Monoid)) ``` diff --git a/src/group-theory/monoids.lagda.md b/src/group-theory/monoids.lagda.md index 081c84b740..ca75d3f4e3 100644 --- a/src/group-theory/monoids.lagda.md +++ b/src/group-theory/monoids.lagda.md @@ -134,9 +134,9 @@ abstract is-prop-is-unital-Semigroup G = is-prop-all-elements-equal (all-elements-equal-is-unital-Semigroup G) -is-unital-Semigroup-Prop : {l : Level} (G : Semigroup l) → Prop l -pr1 (is-unital-Semigroup-Prop G) = is-unital-Semigroup G -pr2 (is-unital-Semigroup-Prop G) = is-prop-is-unital-Semigroup G +is-unital-prop-Semigroup : {l : Level} (G : Semigroup l) → Prop l +pr1 (is-unital-prop-Semigroup G) = is-unital-Semigroup G +pr2 (is-unital-prop-Semigroup G) = is-prop-is-unital-Semigroup G ``` ### Monoids are H-spaces diff --git a/src/group-theory/monomorphisms-concrete-groups.lagda.md b/src/group-theory/monomorphisms-concrete-groups.lagda.md index 1194ff6b53..243579c974 100644 --- a/src/group-theory/monomorphisms-concrete-groups.lagda.md +++ b/src/group-theory/monomorphisms-concrete-groups.lagda.md @@ -33,18 +33,18 @@ module _ (f : hom-Concrete-Group G H) where - is-mono-hom-Concrete-Group-Prop : Prop (l1 ⊔ l2 ⊔ lsuc l3) - is-mono-hom-Concrete-Group-Prop = + is-mono-prop-hom-Concrete-Group : Prop (l1 ⊔ l2 ⊔ lsuc l3) + is-mono-prop-hom-Concrete-Group = Π-Prop ( Concrete-Group l3) ( λ F → is-emb-Prop (comp-hom-Concrete-Group F G H f)) is-mono-hom-Concrete-Group : UU (l1 ⊔ l2 ⊔ lsuc l3) - is-mono-hom-Concrete-Group = type-Prop is-mono-hom-Concrete-Group-Prop + is-mono-hom-Concrete-Group = type-Prop is-mono-prop-hom-Concrete-Group is-prop-is-mono-hom-Concrete-Group : is-prop is-mono-hom-Concrete-Group is-prop-is-mono-hom-Concrete-Group = - is-prop-type-Prop is-mono-hom-Concrete-Group-Prop + is-prop-type-Prop is-mono-prop-hom-Concrete-Group module _ {l1 : Level} (l2 : Level) (G : Concrete-Group l1) diff --git a/src/group-theory/monomorphisms-groups.lagda.md b/src/group-theory/monomorphisms-groups.lagda.md index 29df567bd3..1d60f1ef3b 100644 --- a/src/group-theory/monomorphisms-groups.lagda.md +++ b/src/group-theory/monomorphisms-groups.lagda.md @@ -35,15 +35,15 @@ module _ (H : Group l2) (f : hom-Group G H) where - is-mono-Group-Prop : Prop (l1 ⊔ l2 ⊔ lsuc l3) - is-mono-Group-Prop = + is-mono-prop-hom-Group : Prop (l1 ⊔ l2 ⊔ lsuc l3) + is-mono-prop-hom-Group = is-mono-prop-Large-Precategory Group-Large-Precategory l3 G H f - is-mono-Group : UU (l1 ⊔ l2 ⊔ lsuc l3) - is-mono-Group = type-Prop is-mono-Group-Prop + is-mono-hom-Group : UU (l1 ⊔ l2 ⊔ lsuc l3) + is-mono-hom-Group = type-Prop is-mono-prop-hom-Group - is-prop-is-mono-Group : is-prop is-mono-Group - is-prop-is-mono-Group = is-prop-type-Prop is-mono-Group-Prop + is-prop-is-mono-hom-Group : is-prop is-mono-hom-Group + is-prop-is-mono-hom-Group = is-prop-type-Prop is-mono-prop-hom-Group ``` ## Properties @@ -56,7 +56,7 @@ module _ (H : Group l2) (f : iso-Group G H) where - is-mono-iso-Group : is-mono-Group l3 G H (hom-iso-Group G H f) + is-mono-iso-Group : is-mono-hom-Group l3 G H (hom-iso-Group G H f) is-mono-iso-Group = is-mono-iso-Large-Precategory Group-Large-Precategory l3 G H f ``` diff --git a/src/group-theory/normal-closures-subgroups.lagda.md b/src/group-theory/normal-closures-subgroups.lagda.md index 99057b4147..b978b2b76a 100644 --- a/src/group-theory/normal-closures-subgroups.lagda.md +++ b/src/group-theory/normal-closures-subgroups.lagda.md @@ -149,7 +149,6 @@ module _ is-subgroup-generated-by-subset-Group G generating-subset-normal-closure-Subgroup subgroup-normal-closure-Subgroup - contains-generating-subset-normal-closure-Subgroup is-subgroup-generated-by-generating-subset-normal-closure-Subgroup = is-subgroup-generated-by-subset-subgroup-subset-Group G generating-subset-normal-closure-Subgroup @@ -204,8 +203,9 @@ module _ leq-Subgroup G H (subgroup-Normal-Subgroup G N) → leq-Normal-Subgroup G normal-closure-Subgroup N backward-implication-is-normal-closure-normal-closure-Subgroup N u = - is-subgroup-generated-by-generating-subset-normal-closure-Subgroup - ( subgroup-Normal-Subgroup G N) + backward-implication + ( is-subgroup-generated-by-generating-subset-normal-closure-Subgroup + ( subgroup-Normal-Subgroup G N)) ( contains-generating-subset-normal-closure-Normal-Subgroup N u) is-normal-closure-normal-closure-Subgroup : @@ -240,7 +240,7 @@ module _ ( u)) normal-closure-subgroup-hom-Large-Poset : - hom-set-Large-Poset + hom-Large-Poset ( λ l2 → l1 ⊔ l2) ( Subgroup-Large-Poset G) ( Normal-Subgroup-Large-Poset G) diff --git a/src/group-theory/normal-cores-subgroups.lagda.md b/src/group-theory/normal-cores-subgroups.lagda.md index bd3f67d570..967eb97ab3 100644 --- a/src/group-theory/normal-cores-subgroups.lagda.md +++ b/src/group-theory/normal-cores-subgroups.lagda.md @@ -105,9 +105,9 @@ module _ is-closed-under-multiplication-normal-core-Subgroup : is-closed-under-multiplication-subset-Group G subset-normal-core-Subgroup - pr1 (is-closed-under-multiplication-normal-core-Subgroup x y u v z) = + pr1 (is-closed-under-multiplication-normal-core-Subgroup u v z) = mul-Subgroup G H (pr1 (u z)) (pr1 (v z)) - pr2 (is-closed-under-multiplication-normal-core-Subgroup x y u v z) = + pr2 (is-closed-under-multiplication-normal-core-Subgroup u v z) = ( distributive-conjugation-mul-Group G z ( inclusion-Subgroup G H (pr1 (u z))) ( inclusion-Subgroup G H (pr1 (v z)))) ∙ @@ -115,9 +115,9 @@ module _ is-closed-under-inverses-normal-core-Subgroup : is-closed-under-inverses-subset-Group G subset-normal-core-Subgroup - pr1 (is-closed-under-inverses-normal-core-Subgroup x u z) = + pr1 (is-closed-under-inverses-normal-core-Subgroup u z) = inv-Subgroup G H (pr1 (u z)) - pr2 (is-closed-under-inverses-normal-core-Subgroup x u z) = + pr2 (is-closed-under-inverses-normal-core-Subgroup u z) = ( conjugation-inv-Group G z (inclusion-Subgroup G H (pr1 (u z)))) ∙ ( ap (inv-Group G) (pr2 (u z))) @@ -213,7 +213,7 @@ module _ ( is-contained-in-subgroup-normal-core-Subgroup G H)) normal-core-subgroup-hom-Large-Poset : - hom-set-Large-Poset + hom-Large-Poset ( λ l2 → l1 ⊔ l2) ( Subgroup-Large-Poset G) ( Normal-Subgroup-Large-Poset G) diff --git a/src/group-theory/normal-subgroups.lagda.md b/src/group-theory/normal-subgroups.lagda.md index 51d6047ddd..f53fb76257 100644 --- a/src/group-theory/normal-subgroups.lagda.md +++ b/src/group-theory/normal-subgroups.lagda.md @@ -47,9 +47,9 @@ conjugation. ## Definition ```agda -is-normal-subgroup-Prop : +is-normal-prop-Subgroup : {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) → Prop (l1 ⊔ l2) -is-normal-subgroup-Prop G H = +is-normal-prop-Subgroup G H = Π-Prop ( type-Group G) ( λ g → @@ -61,13 +61,13 @@ is-normal-subgroup-Prop G H = is-normal-Subgroup : {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) → UU (l1 ⊔ l2) -is-normal-Subgroup G H = type-Prop (is-normal-subgroup-Prop G H) +is-normal-Subgroup G H = type-Prop (is-normal-prop-Subgroup G H) is-prop-is-normal-Subgroup : {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) → is-prop (is-normal-Subgroup G H) is-prop-is-normal-Subgroup G H = - is-prop-type-Prop (is-normal-subgroup-Prop G H) + is-prop-type-Prop (is-normal-prop-Subgroup G H) is-normal-Subgroup' : {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) → UU (l1 ⊔ l2) @@ -224,8 +224,6 @@ module _ closure-property-Normal-Subgroup {x} {y} {z} p q = is-closed-under-eq-Normal-Subgroup ( is-closed-under-multiplication-Normal-Subgroup - ( conjugation-Group G x y) - ( mul-Group G x z) ( is-normal-Normal-Subgroup x y p) ( q)) ( ( associative-mul-Group G @@ -282,7 +280,7 @@ module _ (N = K) ≃ has-same-elements-Normal-Subgroup K extensionality-Normal-Subgroup = extensionality-type-subtype - ( is-normal-subgroup-Prop G) + ( is-normal-prop-Subgroup G) ( λ x y → is-normal-Normal-Subgroup G N x (pr1 y) (pr2 y)) ( λ x → pair id id) @@ -391,7 +389,7 @@ preserves-order-subgroup-Normal-Subgroup G N M = id subgroup-normal-subgroup-hom-Large-Poset : {l1 : Level} (G : Group l1) → - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( Normal-Subgroup-Large-Poset G) ( Subgroup-Large-Poset G) @@ -423,16 +421,16 @@ module _ prop-congruence-Normal-Subgroup : (x y : type-Group G) → Prop l2 prop-congruence-Normal-Subgroup = - prop-right-eq-rel-Subgroup G (subgroup-Normal-Subgroup G N) + prop-right-equivalence-relation-Subgroup G (subgroup-Normal-Subgroup G N) ``` #### The left equivalence relation obtained from a normal subgroup ```agda - left-eq-rel-congruence-Normal-Subgroup : - Equivalence-Relation l2 (type-Group G) - left-eq-rel-congruence-Normal-Subgroup = - left-eq-rel-Subgroup G (subgroup-Normal-Subgroup G N) + left-equivalence-relation-congruence-Normal-Subgroup : + equivalence-relation l2 (type-Group G) + left-equivalence-relation-congruence-Normal-Subgroup = + left-equivalence-relation-Subgroup G (subgroup-Normal-Subgroup G N) left-sim-congruence-Normal-Subgroup : type-Group G → type-Group G → UU l2 @@ -451,9 +449,7 @@ module _ is-closed-under-eq-Normal-Subgroup G N ( is-normal-Normal-Subgroup G N y ( inv-Group G (left-div-Group G x y)) - ( is-closed-under-inverses-Normal-Subgroup G N - ( left-div-Group G x y) - ( H))) + ( is-closed-under-inverses-Normal-Subgroup G N H)) ( ( ap (conjugation-Group G y) (inv-left-div-Group G x y) ∙ ( conjugation-left-div-Group G y x))) @@ -465,9 +461,7 @@ module _ is-closed-under-eq-Normal-Subgroup G N ( is-normal-Normal-Subgroup' G N x ( inv-Group G (right-div-Group G x y)) - ( is-closed-under-inverses-Normal-Subgroup G N - ( right-div-Group G x y) - ( H))) + ( is-closed-under-inverses-Normal-Subgroup G N H)) ( ( ap (conjugation-Group' G x) (inv-right-div-Group G x y)) ∙ ( conjugation-right-div-Group G y x)) ``` @@ -490,21 +484,22 @@ module _ transitive-congruence-Normal-Subgroup = transitive-right-sim-Subgroup G (subgroup-Normal-Subgroup G N) - eq-rel-congruence-Normal-Subgroup : Equivalence-Relation l2 (type-Group G) - eq-rel-congruence-Normal-Subgroup = - right-eq-rel-Subgroup G (subgroup-Normal-Subgroup G N) + equivalence-relation-congruence-Normal-Subgroup : + equivalence-relation l2 (type-Group G) + equivalence-relation-congruence-Normal-Subgroup = + right-equivalence-relation-Subgroup G (subgroup-Normal-Subgroup G N) relate-same-elements-left-sim-congruence-Normal-Subgroup : - relate-same-elements-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup) - ( left-eq-rel-congruence-Normal-Subgroup) + relate-same-elements-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup) + ( left-equivalence-relation-congruence-Normal-Subgroup) pr1 (relate-same-elements-left-sim-congruence-Normal-Subgroup x y) = left-sim-sim-congruence-Normal-Subgroup x y pr2 (relate-same-elements-left-sim-congruence-Normal-Subgroup x y) = sim-left-sim-congruence-Normal-Subgroup x y mul-congruence-Normal-Subgroup : - is-congruence-Group G eq-rel-congruence-Normal-Subgroup + is-congruence-Group G equivalence-relation-congruence-Normal-Subgroup mul-congruence-Normal-Subgroup {x} {x'} {y} {y'} p q = is-closed-under-eq-Normal-Subgroup G N @@ -518,14 +513,15 @@ module _ ( x'))) ∙ ( ap ( mul-Group' G x') - ( inv (distributive-inv-mul-Group G x y))))) ∙ + ( inv (distributive-inv-mul-Group G))))) ∙ ( associative-mul-Group G ( inv-Group G (mul-Group G x y)) ( x') ( y'))) congruence-Normal-Subgroup : congruence-Group l2 G - pr1 congruence-Normal-Subgroup = eq-rel-congruence-Normal-Subgroup + pr1 congruence-Normal-Subgroup = + equivalence-relation-congruence-Normal-Subgroup pr2 congruence-Normal-Subgroup = mul-congruence-Normal-Subgroup @@ -551,7 +547,7 @@ module _ sim-congruence-Normal-Subgroup x (unit-Group G) unit-congruence-Normal-Subgroup' {x} H = is-closed-under-eq-Normal-Subgroup' G N - ( is-closed-under-inverses-Normal-Subgroup G N x H) + ( is-closed-under-inverses-Normal-Subgroup G N H) ( right-unit-law-mul-Group G (inv-Group G x)) ``` @@ -575,14 +571,14 @@ module _ is-closed-under-multiplication-subset-congruence-Group : is-closed-under-multiplication-subset-Group G subset-congruence-Group - is-closed-under-multiplication-subset-congruence-Group x y H K = + is-closed-under-multiplication-subset-congruence-Group H K = concatenate-eq-sim-congruence-Group G R ( inv (left-unit-law-mul-Group G (unit-Group G))) ( mul-congruence-Group G R H K) is-closed-under-inverses-subset-congruence-Group : is-closed-under-inverses-subset-Group G subset-congruence-Group - is-closed-under-inverses-subset-congruence-Group x H = + is-closed-under-inverses-subset-congruence-Group H = concatenate-eq-sim-congruence-Group G R ( inv (inv-unit-Group G)) ( inv-congruence-Group G R H) @@ -671,7 +667,7 @@ is-section-normal-subgroup-congruence-Group : ( normal-subgroup-congruence-Group G R)) = ( R) is-section-normal-subgroup-congruence-Group G R = - eq-relate-same-elements-congruence-Group G + equivalence-relationate-same-elements-congruence-Group G ( congruence-Normal-Subgroup G ( normal-subgroup-congruence-Group G R)) ( R) diff --git a/src/group-theory/normal-submonoids-commutative-monoids.lagda.md b/src/group-theory/normal-submonoids-commutative-monoids.lagda.md index 66b058d798..8546913fcc 100644 --- a/src/group-theory/normal-submonoids-commutative-monoids.lagda.md +++ b/src/group-theory/normal-submonoids-commutative-monoids.lagda.md @@ -52,8 +52,8 @@ module _ {l1 l2 : Level} (M : Commutative-Monoid l1) (N : Commutative-Submonoid l2 M) where - is-normal-commutative-submonoid-Prop : Prop (l1 ⊔ l2) - is-normal-commutative-submonoid-Prop = + is-normal-prop-Commutative-Submonoid : Prop (l1 ⊔ l2) + is-normal-prop-Commutative-Submonoid = Π-Prop ( type-Commutative-Monoid M) ( λ x → @@ -69,12 +69,12 @@ module _ is-normal-Commutative-Submonoid : UU (l1 ⊔ l2) is-normal-Commutative-Submonoid = - type-Prop is-normal-commutative-submonoid-Prop + type-Prop is-normal-prop-Commutative-Submonoid is-prop-is-normal-Commutative-Submonoid : is-prop is-normal-Commutative-Submonoid is-prop-is-normal-Commutative-Submonoid = - is-prop-type-Prop is-normal-commutative-submonoid-Prop + is-prop-type-Prop is-normal-prop-Commutative-Submonoid Normal-Commutative-Submonoid : {l1 : Level} (l2 : Level) → Commutative-Monoid l1 → UU (l1 ⊔ lsuc l2) @@ -98,7 +98,7 @@ module _ subset-Commutative-Submonoid M submonoid-Normal-Commutative-Submonoid is-submonoid-Normal-Commutative-Submonoid : - is-submonoid-Commutative-Monoid M subset-Normal-Commutative-Submonoid + is-submonoid-subset-Commutative-Monoid M subset-Normal-Commutative-Submonoid is-submonoid-Normal-Commutative-Submonoid = is-submonoid-Commutative-Submonoid M submonoid-Normal-Commutative-Submonoid @@ -253,7 +253,7 @@ module _ (N = K) ≃ has-same-elements-Normal-Commutative-Submonoid K extensionality-Normal-Commutative-Submonoid = extensionality-type-subtype - ( is-normal-commutative-submonoid-Prop M) + ( is-normal-prop-Commutative-Submonoid M) ( is-normal-Normal-Commutative-Submonoid M N) ( λ x → (id , id)) ( extensionality-Commutative-Submonoid M @@ -306,20 +306,20 @@ module _ transitive-congruence-Normal-Commutative-Submonoid _ _ _ H K u = (H u) ∘iff (K u) - eq-rel-congruence-Normal-Commutative-Submonoid : - Equivalence-Relation (l1 ⊔ l2) (type-Commutative-Monoid M) - pr1 eq-rel-congruence-Normal-Commutative-Submonoid = + equivalence-relation-congruence-Normal-Commutative-Submonoid : + equivalence-relation (l1 ⊔ l2) (type-Commutative-Monoid M) + pr1 equivalence-relation-congruence-Normal-Commutative-Submonoid = rel-congruence-Normal-Commutative-Submonoid - pr1 (pr2 eq-rel-congruence-Normal-Commutative-Submonoid) = + pr1 (pr2 equivalence-relation-congruence-Normal-Commutative-Submonoid) = refl-congruence-Normal-Commutative-Submonoid - pr1 (pr2 (pr2 eq-rel-congruence-Normal-Commutative-Submonoid)) = + pr1 (pr2 (pr2 equivalence-relation-congruence-Normal-Commutative-Submonoid)) = symmetric-congruence-Normal-Commutative-Submonoid - pr2 (pr2 (pr2 eq-rel-congruence-Normal-Commutative-Submonoid)) = + pr2 (pr2 (pr2 equivalence-relation-congruence-Normal-Commutative-Submonoid)) = transitive-congruence-Normal-Commutative-Submonoid is-congruence-congruence-Normal-Commutative-Submonoid : is-congruence-Commutative-Monoid M - eq-rel-congruence-Normal-Commutative-Submonoid + equivalence-relation-congruence-Normal-Commutative-Submonoid pr1 ( is-congruence-congruence-Normal-Commutative-Submonoid {x} {x'} {y} {y'} H K u) @@ -354,7 +354,7 @@ module _ congruence-Normal-Commutative-Submonoid : congruence-Commutative-Monoid (l1 ⊔ l2) M pr1 congruence-Normal-Commutative-Submonoid = - eq-rel-congruence-Normal-Commutative-Submonoid + equivalence-relation-congruence-Normal-Commutative-Submonoid pr2 congruence-Normal-Commutative-Submonoid = is-congruence-congruence-Normal-Commutative-Submonoid ``` @@ -614,7 +614,8 @@ is-retraction-saturated-congruence-Normal-Commutative-Submonoid : ( normal-submonoid-saturated-congruence-Commutative-Monoid M R)) = ( R) is-retraction-saturated-congruence-Normal-Commutative-Submonoid l2 M R = - eq-relate-same-elements-saturated-congruence-Commutative-Monoid M + equivalence-relationate-same-elements-saturated-congruence-Commutative-Monoid + ( M) ( saturated-congruence-Normal-Commutative-Submonoid M ( normal-submonoid-saturated-congruence-Commutative-Monoid M R)) ( R) diff --git a/src/group-theory/normal-submonoids.lagda.md b/src/group-theory/normal-submonoids.lagda.md index 66d801ee88..c3c531813e 100644 --- a/src/group-theory/normal-submonoids.lagda.md +++ b/src/group-theory/normal-submonoids.lagda.md @@ -57,8 +57,8 @@ module _ {l1 l2 : Level} (M : Monoid l1) (N : Submonoid l2 M) where - is-normal-submonoid-Prop : Prop (l1 ⊔ l2) - is-normal-submonoid-Prop = + is-normal-prop-Submonoid : Prop (l1 ⊔ l2) + is-normal-prop-Submonoid = Π-Prop ( type-Monoid M) ( λ x → @@ -75,10 +75,10 @@ module _ ( subset-Submonoid M N (mul-Monoid M x y)))))) is-normal-Submonoid : UU (l1 ⊔ l2) - is-normal-Submonoid = type-Prop is-normal-submonoid-Prop + is-normal-Submonoid = type-Prop is-normal-prop-Submonoid is-prop-is-normal-Submonoid : is-prop is-normal-Submonoid - is-prop-is-normal-Submonoid = is-prop-type-Prop is-normal-submonoid-Prop + is-prop-is-normal-Submonoid = is-prop-type-Prop is-normal-prop-Submonoid Normal-Submonoid : {l1 : Level} (l2 : Level) → Monoid l1 → UU (l1 ⊔ lsuc l2) @@ -98,7 +98,8 @@ module _ subset-Normal-Submonoid = subset-Submonoid M submonoid-Normal-Submonoid - is-submonoid-Normal-Submonoid : is-submonoid-Monoid M subset-Normal-Submonoid + is-submonoid-Normal-Submonoid : + is-submonoid-subset-Monoid M subset-Normal-Submonoid is-submonoid-Normal-Submonoid = is-submonoid-Submonoid M submonoid-Normal-Submonoid @@ -213,7 +214,7 @@ module _ (N = K) ≃ has-same-elements-Normal-Submonoid K extensionality-Normal-Submonoid = extensionality-type-subtype - ( is-normal-submonoid-Prop M) + ( is-normal-prop-Submonoid M) ( is-normal-Normal-Submonoid M N) ( λ x → (id , id)) ( extensionality-Submonoid M (submonoid-Normal-Submonoid M N)) @@ -264,18 +265,19 @@ module _ is-transitive sim-congruence-Normal-Submonoid transitive-congruence-Normal-Submonoid _ _ _ H K u v = (H u v) ∘iff (K u v) - eq-rel-congruence-Normal-Submonoid : - Equivalence-Relation (l1 ⊔ l2) (type-Monoid M) - pr1 eq-rel-congruence-Normal-Submonoid = rel-congruence-Normal-Submonoid - pr1 (pr2 eq-rel-congruence-Normal-Submonoid) = + equivalence-relation-congruence-Normal-Submonoid : + equivalence-relation (l1 ⊔ l2) (type-Monoid M) + pr1 equivalence-relation-congruence-Normal-Submonoid = + rel-congruence-Normal-Submonoid + pr1 (pr2 equivalence-relation-congruence-Normal-Submonoid) = refl-congruence-Normal-Submonoid - pr1 (pr2 (pr2 eq-rel-congruence-Normal-Submonoid)) = + pr1 (pr2 (pr2 equivalence-relation-congruence-Normal-Submonoid)) = symmetric-congruence-Normal-Submonoid - pr2 (pr2 (pr2 eq-rel-congruence-Normal-Submonoid)) = + pr2 (pr2 (pr2 equivalence-relation-congruence-Normal-Submonoid)) = transitive-congruence-Normal-Submonoid is-congruence-congruence-Normal-Submonoid : - is-congruence-Monoid M eq-rel-congruence-Normal-Submonoid + is-congruence-Monoid M equivalence-relation-congruence-Normal-Submonoid pr1 (is-congruence-congruence-Normal-Submonoid {x} {x'} {y} {y'} H K u v) L = is-closed-under-eq-Normal-Submonoid M N ( forward-implication @@ -302,7 +304,8 @@ module _ ( ap (mul-Monoid' M v) (associative-mul-Monoid M u x y))) congruence-Normal-Submonoid : congruence-Monoid (l1 ⊔ l2) M - pr1 congruence-Normal-Submonoid = eq-rel-congruence-Normal-Submonoid + pr1 congruence-Normal-Submonoid = + equivalence-relation-congruence-Normal-Submonoid pr2 congruence-Normal-Submonoid = is-congruence-congruence-Normal-Submonoid ``` @@ -545,7 +548,7 @@ is-retraction-saturated-congruence-Normal-Submonoid : ( normal-submonoid-saturated-congruence-Monoid M R)) = ( R) is-retraction-saturated-congruence-Normal-Submonoid l2 M R = - eq-relate-same-elements-saturated-congruence-Monoid M + equivalence-relationate-same-elements-saturated-congruence-Monoid M ( saturated-congruence-Normal-Submonoid M ( normal-submonoid-saturated-congruence-Monoid M R)) ( R) diff --git a/src/group-theory/normalizer-subgroups.lagda.md b/src/group-theory/normalizer-subgroups.lagda.md index 26e15f2617..aa2a9ac2ad 100644 --- a/src/group-theory/normalizer-subgroups.lagda.md +++ b/src/group-theory/normalizer-subgroups.lagda.md @@ -102,11 +102,11 @@ module _ is-closed-under-multiplication-normalizer-Subgroup : is-closed-under-multiplication-subset-Group G subset-normalizer-Subgroup - pr1 (is-closed-under-multiplication-normalizer-Subgroup x y u v) w = + pr1 (is-closed-under-multiplication-normalizer-Subgroup {x} {y} u v) w = is-closed-under-eq-Subgroup' G H ( forward-implication u (forward-implication v w)) ( compute-conjugation-mul-Group G x y _) - pr2 (is-closed-under-multiplication-normalizer-Subgroup x y u v) w = + pr2 (is-closed-under-multiplication-normalizer-Subgroup {x} {y} u v) w = backward-implication v ( backward-implication u ( is-closed-under-eq-Subgroup G H w @@ -114,11 +114,11 @@ module _ is-closed-under-inverses-normalizer-Subgroup : is-closed-under-inverses-subset-Group G subset-normalizer-Subgroup - pr1 (is-closed-under-inverses-normalizer-Subgroup x u {y}) h = + pr1 (is-closed-under-inverses-normalizer-Subgroup {x} u {y}) h = backward-implication u ( is-closed-under-eq-Subgroup' G H h ( is-section-conjugation-inv-Group G x y)) - pr2 (is-closed-under-inverses-normalizer-Subgroup x u {y}) h = + pr2 (is-closed-under-inverses-normalizer-Subgroup {x} u {y}) h = is-closed-under-eq-Subgroup G H ( forward-implication u h) ( is-section-conjugation-inv-Group G x y) @@ -143,7 +143,7 @@ module _ u k h pr2 (forward-implication-is-normalizer-normalizer-Subgroup K u x k {y}) h = is-closed-under-eq-Subgroup G H - ( u (is-closed-under-inverses-Subgroup G K x k) h) + ( u (is-closed-under-inverses-Subgroup G K {x} k) h) ( is-retraction-conjugation-inv-Group G x y) backward-implication-is-normalizer-normalizer-Subgroup : diff --git a/src/group-theory/nullifying-group-homomorphisms.lagda.md b/src/group-theory/nullifying-group-homomorphisms.lagda.md index 96e87eb302..92dfe9bbae 100644 --- a/src/group-theory/nullifying-group-homomorphisms.lagda.md +++ b/src/group-theory/nullifying-group-homomorphisms.lagda.md @@ -19,7 +19,7 @@ open import foundation.universe-levels open import group-theory.groups open import group-theory.homomorphisms-groups open import group-theory.homomorphisms-groups-equipped-with-normal-subgroups -open import group-theory.kernels +open import group-theory.kernels-homomorphisms-groups open import group-theory.normal-subgroups ``` @@ -94,38 +94,39 @@ module _ reflects-equivalence-relation-nullifies-normal-subgroup-hom-Group : (f : hom-Group G K) → nullifies-normal-subgroup-hom-Group G K f H → - reflects-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup G H) + reflects-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup G H) ( map-hom-Group G K f) reflects-equivalence-relation-nullifies-normal-subgroup-hom-Group f p α = ( inv (right-unit-law-mul-Group K _)) ∙ ( inv-transpose-eq-mul-Group' K - ( ( inv (p (left-div-Group G _ _) α)) ∙ + ( ( p (left-div-Group G _ _) α) ∙ ( preserves-left-div-hom-Group G K f))) nullifies-normal-subgroup-reflects-equivalence-relation-hom-Group : (f : hom-Group G K) → - reflects-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup G H) + reflects-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup G H) ( map-hom-Group G K f) → nullifies-normal-subgroup-hom-Group G K f H nullifies-normal-subgroup-reflects-equivalence-relation-hom-Group f p x q = - ( p ( is-closed-under-multiplication-Normal-Subgroup G H _ _ - ( is-closed-under-inverses-Normal-Subgroup G H x q) - ( contains-unit-Normal-Subgroup G H))) ∙ - ( preserves-unit-hom-Group G K f) + ( inv (preserves-unit-hom-Group G K f)) ∙ + ( p ( is-closed-under-multiplication-Normal-Subgroup G H + ( is-closed-under-inverses-Normal-Subgroup G H + ( contains-unit-Normal-Subgroup G H)) + ( q))) compute-nullifying-hom-Group : - Σ ( reflecting-map-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup G H) + Σ ( reflecting-map-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup G H) ( type-Group K)) ( λ f → preserves-mul-Group G K (pr1 f)) ≃ nullifying-hom-Group G K H compute-nullifying-hom-Group = ( equiv-type-subtype ( λ f → - is-prop-reflects-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup G H) + is-prop-reflects-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup G H) ( set-Group K) ( pr1 f)) ( λ f → is-prop-leq-Normal-Subgroup G H (kernel-hom-Group G K f)) diff --git a/src/group-theory/orbits-concrete-group-actions.lagda.md b/src/group-theory/orbits-concrete-group-actions.lagda.md index 6935dd1b90..1217af68ab 100644 --- a/src/group-theory/orbits-concrete-group-actions.lagda.md +++ b/src/group-theory/orbits-concrete-group-actions.lagda.md @@ -18,6 +18,41 @@ open import group-theory.concrete-groups +## Idea + +The type of **orbits** of a +[concrete group action](group-theory.concrete-group-actions.md) of `G` on `X` is +defined to be the [total space](foundation.dependent-pair-types.md) + +```text + Σ (u : BG), X u. +``` + +of the type family `X` over the classifying type of the +[concrete group](group-theory.concrete-groups.md) `G`. The idea is that the +"standard" elements of this type are of the form `(* , x)`, where `x` is an +element of the underlying [set](foundation-core.sets.md) `X *` of `X`, and that +the type of [identifications](foundation-core.identity-types.md) from `(* , x)` +to `(* , y)` is [equivalent](foundation-core.equivalences.md) to the type + +```text + Σ (g : G), g x = y. +``` + +In other words, identifications between the elements `(* , x)` and `(* , y)` in +the type of orbits of `X` are equivalently described as group elements `g` such +that `g x = y`. + +Note that the type of orbits of a concrete group is typically a +[`1`-type](foundation-core.1-types.md). In +[Free concrete group actions](group-theory.free-concrete-group-actions.md) we +will show that the type of orbits is a set if and only if the action of `G` on +`X` is free, and in +[Transitive concrete group actions](group-theory.transitive-concrete-group-actions.md) +we will show that the type of orbits is +[`0`-connected](foundation.0-connected-types.md) if and only if the action is +transitive. + ## Definition ```agda @@ -27,3 +62,8 @@ orbit-action-Concrete-Group : orbit-action-Concrete-Group G X = Σ (classifying-type-Concrete-Group G) (type-Set ∘ X) ``` + +## See also + +- [Free concrete group actions](group-theory.free-concrete-group-actions.md) +- [Transitive concrete group actions](group-theory.transitive-concrete-group-actions.md) diff --git a/src/group-theory/orbits-group-actions.lagda.md b/src/group-theory/orbits-group-actions.lagda.md index 9818c39da2..6cacd944fa 100644 --- a/src/group-theory/orbits-group-actions.lagda.md +++ b/src/group-theory/orbits-group-actions.lagda.md @@ -19,18 +19,20 @@ open import group-theory.groups ## Idea -The orbit of an element `x` in a G-set `X` is the set of elements of the form -`gx`. +The [groupoid](category-theory.groupoids.md) of **orbits** of a +[group action](group-theory.group-actions.md) consists of elements of `X`, and a +morphism from `x` to `y` is given by an element `g` of the +[group](group-theory.groups.md) `G` such that `gx = y`. ## Definition ```agda module _ - {l1 l2 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) + {l1 l2 : Level} (G : Group l1) (X : action-Group G l2) where - hom-orbit-Abstract-Group-Action : - (x y : type-Abstract-Group-Action G X) → UU (l1 ⊔ l2) - hom-orbit-Abstract-Group-Action x y = - Σ (type-Group G) (λ g → Id (mul-Abstract-Group-Action G X g x) y) + hom-orbit-action-Group : + (x y : type-action-Group G X) → UU (l1 ⊔ l2) + hom-orbit-action-Group x y = + Σ (type-Group G) (λ g → mul-action-Group G X g x = y) ``` diff --git a/src/group-theory/orbits-monoid-actions.lagda.md b/src/group-theory/orbits-monoid-actions.lagda.md index 71d9de6103..eff79dedb7 100644 --- a/src/group-theory/orbits-monoid-actions.lagda.md +++ b/src/group-theory/orbits-monoid-actions.lagda.md @@ -28,9 +28,11 @@ open import group-theory.monoids ## Idea -Given a monoid action `M → endo-Monoid X` we can define a category in which the -objects are the elements of the set `X` and a morphism from `x` to `y` is an -element `m` of the monoid `M` such that `mx = y`. +The [precategory](category-theory.precategories.md) of **orbits** of a +[monoid action](group-theory.monoid-actions.md) of `M` on `X` consists of the +elements of the [set](foundation-core.sets.md) `X` as the objects, and a +morphism from `x` to `y` is an element `m` of the +[monoid](group-theory.monoids.md) `M` such that `mx = y`. ## Definition @@ -38,155 +40,155 @@ element `m` of the monoid `M` such that `mx = y`. ```agda module _ - {l1 l2 : Level} (M : Monoid l1) (X : Monoid-Action l2 M) + {l1 l2 : Level} (M : Monoid l1) (X : action-Monoid l2 M) where - hom-orbit-Monoid-Action : (x y : type-Monoid-Action M X) → UU (l1 ⊔ l2) - hom-orbit-Monoid-Action x y = - Σ (type-Monoid M) ( λ m → Id (mul-Monoid-Action M X m x) y) + hom-orbit-action-Monoid : (x y : type-action-Monoid M X) → UU (l1 ⊔ l2) + hom-orbit-action-Monoid x y = + Σ (type-Monoid M) ( λ m → Id (mul-action-Monoid M X m x) y) - element-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} → hom-orbit-Monoid-Action x y → type-Monoid M - element-hom-orbit-Monoid-Action f = pr1 f + element-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} → hom-orbit-action-Monoid x y → type-Monoid M + element-hom-orbit-action-Monoid f = pr1 f - eq-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f : hom-orbit-Monoid-Action x y) → - Id (mul-Monoid-Action M X (element-hom-orbit-Monoid-Action f) x) y - eq-hom-orbit-Monoid-Action f = pr2 f + eq-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → + Id (mul-action-Monoid M X (element-hom-orbit-action-Monoid f) x) y + eq-hom-orbit-action-Monoid f = pr2 f - htpy-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f g : hom-orbit-Monoid-Action x y) → + htpy-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → UU l1 - htpy-hom-orbit-Monoid-Action {x} {y} f g = + htpy-hom-orbit-action-Monoid {x} {y} f g = Id - ( element-hom-orbit-Monoid-Action f) - ( element-hom-orbit-Monoid-Action g) - - refl-htpy-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f : hom-orbit-Monoid-Action x y) → - htpy-hom-orbit-Monoid-Action f f - refl-htpy-hom-orbit-Monoid-Action f = refl - - htpy-eq-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f g : hom-orbit-Monoid-Action x y) → - Id f g → htpy-hom-orbit-Monoid-Action f g - htpy-eq-hom-orbit-Monoid-Action f .f refl = - refl-htpy-hom-orbit-Monoid-Action f - - is-torsorial-htpy-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f : hom-orbit-Monoid-Action x y) → - is-torsorial (htpy-hom-orbit-Monoid-Action f) - is-torsorial-htpy-hom-orbit-Monoid-Action {x} {y} f = + ( element-hom-orbit-action-Monoid f) + ( element-hom-orbit-action-Monoid g) + + refl-htpy-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → + htpy-hom-orbit-action-Monoid f f + refl-htpy-hom-orbit-action-Monoid f = refl + + htpy-eq-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → + Id f g → htpy-hom-orbit-action-Monoid f g + htpy-eq-hom-orbit-action-Monoid f .f refl = + refl-htpy-hom-orbit-action-Monoid f + + is-torsorial-htpy-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → + is-torsorial (htpy-hom-orbit-action-Monoid f) + is-torsorial-htpy-hom-orbit-action-Monoid {x} {y} f = is-torsorial-Eq-subtype - ( is-torsorial-path (element-hom-orbit-Monoid-Action f)) + ( is-torsorial-path (element-hom-orbit-action-Monoid f)) ( λ u → - is-set-type-Monoid-Action M X (mul-Monoid-Action M X u x) y) - ( element-hom-orbit-Monoid-Action f) + is-set-type-action-Monoid M X (mul-action-Monoid M X u x) y) + ( element-hom-orbit-action-Monoid f) ( refl) - ( eq-hom-orbit-Monoid-Action f) + ( eq-hom-orbit-action-Monoid f) - is-equiv-htpy-eq-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f g : hom-orbit-Monoid-Action x y) → - is-equiv (htpy-eq-hom-orbit-Monoid-Action f g) - is-equiv-htpy-eq-hom-orbit-Monoid-Action f = + is-equiv-htpy-eq-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → + is-equiv (htpy-eq-hom-orbit-action-Monoid f g) + is-equiv-htpy-eq-hom-orbit-action-Monoid f = fundamental-theorem-id - ( is-torsorial-htpy-hom-orbit-Monoid-Action f) - ( htpy-eq-hom-orbit-Monoid-Action f) - - extensionality-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f g : hom-orbit-Monoid-Action x y) → - Id f g ≃ htpy-hom-orbit-Monoid-Action f g - pr1 (extensionality-hom-orbit-Monoid-Action f g) = - htpy-eq-hom-orbit-Monoid-Action f g - pr2 (extensionality-hom-orbit-Monoid-Action f g) = - is-equiv-htpy-eq-hom-orbit-Monoid-Action f g - - eq-htpy-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} {f g : hom-orbit-Monoid-Action x y} → - htpy-hom-orbit-Monoid-Action f g → Id f g - eq-htpy-hom-orbit-Monoid-Action {x} {y} {f} {g} = - map-inv-is-equiv (is-equiv-htpy-eq-hom-orbit-Monoid-Action f g) - - is-prop-htpy-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f g : hom-orbit-Monoid-Action x y) → - is-prop (htpy-hom-orbit-Monoid-Action f g) - is-prop-htpy-hom-orbit-Monoid-Action f g = + ( is-torsorial-htpy-hom-orbit-action-Monoid f) + ( htpy-eq-hom-orbit-action-Monoid f) + + extensionality-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → + Id f g ≃ htpy-hom-orbit-action-Monoid f g + pr1 (extensionality-hom-orbit-action-Monoid f g) = + htpy-eq-hom-orbit-action-Monoid f g + pr2 (extensionality-hom-orbit-action-Monoid f g) = + is-equiv-htpy-eq-hom-orbit-action-Monoid f g + + eq-htpy-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} {f g : hom-orbit-action-Monoid x y} → + htpy-hom-orbit-action-Monoid f g → Id f g + eq-htpy-hom-orbit-action-Monoid {x} {y} {f} {g} = + map-inv-is-equiv (is-equiv-htpy-eq-hom-orbit-action-Monoid f g) + + is-prop-htpy-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → + is-prop (htpy-hom-orbit-action-Monoid f g) + is-prop-htpy-hom-orbit-action-Monoid f g = is-set-type-Monoid M - ( element-hom-orbit-Monoid-Action f) - ( element-hom-orbit-Monoid-Action g) + ( element-hom-orbit-action-Monoid f) + ( element-hom-orbit-action-Monoid g) - is-set-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} → - is-set (hom-orbit-Monoid-Action x y) - is-set-hom-orbit-Monoid-Action {x} {y} f g = + is-set-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} → + is-set (hom-orbit-action-Monoid x y) + is-set-hom-orbit-action-Monoid {x} {y} f g = is-prop-equiv - ( extensionality-hom-orbit-Monoid-Action f g) - ( is-prop-htpy-hom-orbit-Monoid-Action f g) + ( extensionality-hom-orbit-action-Monoid f g) + ( is-prop-htpy-hom-orbit-action-Monoid f g) hom-orbit-monoid-action-Set : - (x y : type-Monoid-Action M X) → Set (l1 ⊔ l2) - pr1 (hom-orbit-monoid-action-Set x y) = hom-orbit-Monoid-Action x y - pr2 (hom-orbit-monoid-action-Set x y) = is-set-hom-orbit-Monoid-Action - - id-hom-orbit-Monoid-Action : - (x : type-Monoid-Action M X) → hom-orbit-Monoid-Action x x - pr1 (id-hom-orbit-Monoid-Action x) = unit-Monoid M - pr2 (id-hom-orbit-Monoid-Action x) = unit-law-mul-Monoid-Action M X x - - comp-hom-orbit-Monoid-Action : - {x y z : type-Monoid-Action M X} → - hom-orbit-Monoid-Action y z → hom-orbit-Monoid-Action x y → - hom-orbit-Monoid-Action x z - pr1 (comp-hom-orbit-Monoid-Action g f) = + (x y : type-action-Monoid M X) → Set (l1 ⊔ l2) + pr1 (hom-orbit-monoid-action-Set x y) = hom-orbit-action-Monoid x y + pr2 (hom-orbit-monoid-action-Set x y) = is-set-hom-orbit-action-Monoid + + id-hom-orbit-action-Monoid : + (x : type-action-Monoid M X) → hom-orbit-action-Monoid x x + pr1 (id-hom-orbit-action-Monoid x) = unit-Monoid M + pr2 (id-hom-orbit-action-Monoid x) = unit-law-mul-action-Monoid M X x + + comp-hom-orbit-action-Monoid : + {x y z : type-action-Monoid M X} → + hom-orbit-action-Monoid y z → hom-orbit-action-Monoid x y → + hom-orbit-action-Monoid x z + pr1 (comp-hom-orbit-action-Monoid g f) = mul-Monoid M - ( element-hom-orbit-Monoid-Action g) - ( element-hom-orbit-Monoid-Action f) - pr2 (comp-hom-orbit-Monoid-Action {x} g f) = - ( associative-mul-Monoid-Action M X - ( element-hom-orbit-Monoid-Action g) - ( element-hom-orbit-Monoid-Action f) + ( element-hom-orbit-action-Monoid g) + ( element-hom-orbit-action-Monoid f) + pr2 (comp-hom-orbit-action-Monoid {x} g f) = + ( associative-mul-action-Monoid M X + ( element-hom-orbit-action-Monoid g) + ( element-hom-orbit-action-Monoid f) ( x)) ∙ - ( ( ap-mul-Monoid-Action M X (eq-hom-orbit-Monoid-Action f)) ∙ - ( eq-hom-orbit-Monoid-Action g)) + ( ap-mul-action-Monoid M X (eq-hom-orbit-action-Monoid f)) ∙ + ( eq-hom-orbit-action-Monoid g) - associative-comp-hom-orbit-Monoid-Action : - {x y z w : type-Monoid-Action M X} (h : hom-orbit-Monoid-Action z w) - (g : hom-orbit-Monoid-Action y z) (f : hom-orbit-Monoid-Action x y) → + associative-comp-hom-orbit-action-Monoid : + {x y z w : type-action-Monoid M X} (h : hom-orbit-action-Monoid z w) + (g : hom-orbit-action-Monoid y z) (f : hom-orbit-action-Monoid x y) → Id - ( comp-hom-orbit-Monoid-Action (comp-hom-orbit-Monoid-Action h g) f) - ( comp-hom-orbit-Monoid-Action h (comp-hom-orbit-Monoid-Action g f)) - associative-comp-hom-orbit-Monoid-Action h g f = - eq-htpy-hom-orbit-Monoid-Action + ( comp-hom-orbit-action-Monoid (comp-hom-orbit-action-Monoid h g) f) + ( comp-hom-orbit-action-Monoid h (comp-hom-orbit-action-Monoid g f)) + associative-comp-hom-orbit-action-Monoid h g f = + eq-htpy-hom-orbit-action-Monoid ( associative-mul-Monoid M - ( element-hom-orbit-Monoid-Action h) - ( element-hom-orbit-Monoid-Action g) - ( element-hom-orbit-Monoid-Action f)) - - left-unit-law-comp-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f : hom-orbit-Monoid-Action x y) → - Id (comp-hom-orbit-Monoid-Action (id-hom-orbit-Monoid-Action y) f) f - left-unit-law-comp-hom-orbit-Monoid-Action f = - eq-htpy-hom-orbit-Monoid-Action - ( left-unit-law-mul-Monoid M (element-hom-orbit-Monoid-Action f)) - - right-unit-law-comp-hom-orbit-Monoid-Action : - {x y : type-Monoid-Action M X} (f : hom-orbit-Monoid-Action x y) → - Id (comp-hom-orbit-Monoid-Action f (id-hom-orbit-Monoid-Action x)) f - right-unit-law-comp-hom-orbit-Monoid-Action f = - eq-htpy-hom-orbit-Monoid-Action - ( right-unit-law-mul-Monoid M (element-hom-orbit-Monoid-Action f)) - - orbit-monoid-action-Precategoryegory : Precategory l2 (l1 ⊔ l2) - pr1 orbit-monoid-action-Precategoryegory = type-Monoid-Action M X - pr1 (pr2 orbit-monoid-action-Precategoryegory) = hom-orbit-monoid-action-Set - pr1 (pr1 (pr2 (pr2 orbit-monoid-action-Precategoryegory))) = - comp-hom-orbit-Monoid-Action - pr2 (pr1 (pr2 (pr2 orbit-monoid-action-Precategoryegory))) = - associative-comp-hom-orbit-Monoid-Action - pr1 (pr2 (pr2 (pr2 orbit-monoid-action-Precategoryegory))) = - id-hom-orbit-Monoid-Action - pr1 (pr2 (pr2 (pr2 (pr2 orbit-monoid-action-Precategoryegory)))) = - left-unit-law-comp-hom-orbit-Monoid-Action - pr2 (pr2 (pr2 (pr2 (pr2 orbit-monoid-action-Precategoryegory)))) = - right-unit-law-comp-hom-orbit-Monoid-Action + ( element-hom-orbit-action-Monoid h) + ( element-hom-orbit-action-Monoid g) + ( element-hom-orbit-action-Monoid f)) + + left-unit-law-comp-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → + Id (comp-hom-orbit-action-Monoid (id-hom-orbit-action-Monoid y) f) f + left-unit-law-comp-hom-orbit-action-Monoid f = + eq-htpy-hom-orbit-action-Monoid + ( left-unit-law-mul-Monoid M (element-hom-orbit-action-Monoid f)) + + right-unit-law-comp-hom-orbit-action-Monoid : + {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → + Id (comp-hom-orbit-action-Monoid f (id-hom-orbit-action-Monoid x)) f + right-unit-law-comp-hom-orbit-action-Monoid f = + eq-htpy-hom-orbit-action-Monoid + ( right-unit-law-mul-Monoid M (element-hom-orbit-action-Monoid f)) + + orbit-monoid-action-Precategory : Precategory l2 (l1 ⊔ l2) + pr1 orbit-monoid-action-Precategory = type-action-Monoid M X + pr1 (pr2 orbit-monoid-action-Precategory) = hom-orbit-monoid-action-Set + pr1 (pr1 (pr2 (pr2 orbit-monoid-action-Precategory))) = + comp-hom-orbit-action-Monoid + pr2 (pr1 (pr2 (pr2 orbit-monoid-action-Precategory))) = + associative-comp-hom-orbit-action-Monoid + pr1 (pr2 (pr2 (pr2 orbit-monoid-action-Precategory))) = + id-hom-orbit-action-Monoid + pr1 (pr2 (pr2 (pr2 (pr2 orbit-monoid-action-Precategory)))) = + left-unit-law-comp-hom-orbit-action-Monoid + pr2 (pr2 (pr2 (pr2 (pr2 orbit-monoid-action-Precategory)))) = + right-unit-law-comp-hom-orbit-action-Monoid ``` diff --git a/src/group-theory/orders-of-elements-groups.lagda.md b/src/group-theory/orders-of-elements-groups.lagda.md index faf5a46ccc..78115f630b 100644 --- a/src/group-theory/orders-of-elements-groups.lagda.md +++ b/src/group-theory/orders-of-elements-groups.lagda.md @@ -14,7 +14,7 @@ open import foundation.universe-levels open import group-theory.free-groups-with-one-generator open import group-theory.groups -open import group-theory.kernels +open import group-theory.kernels-homomorphisms-groups open import group-theory.normal-subgroups open import group-theory.subgroups open import group-theory.subsets-groups diff --git a/src/group-theory/powers-of-elements-monoids.lagda.md b/src/group-theory/powers-of-elements-monoids.lagda.md index 10141084d6..4cc4d89acd 100644 --- a/src/group-theory/powers-of-elements-monoids.lagda.md +++ b/src/group-theory/powers-of-elements-monoids.lagda.md @@ -136,14 +136,14 @@ module _ ( power-Monoid M m x)) distributive-power-add-Monoid m (succ-ℕ n) {x} = ( power-succ-Monoid M (m +ℕ n) x) ∙ - ( ( ap (mul-Monoid' M x) (distributive-power-add-Monoid m n)) ∙ - ( ( associative-mul-Monoid M - ( power-Monoid M m x) - ( power-Monoid M n x) - ( x)) ∙ - ( ap - ( mul-Monoid M (power-Monoid M m x)) - ( inv (power-succ-Monoid M n x))))) + ( ap (mul-Monoid' M x) (distributive-power-add-Monoid m n)) ∙ + ( associative-mul-Monoid M + ( power-Monoid M m x) + ( power-Monoid M n x) + ( x)) ∙ + ( ap + ( mul-Monoid M (power-Monoid M m x)) + ( inv (power-succ-Monoid M n x))) ``` ### If `x` commutes with `y` then so do their powers @@ -163,11 +163,10 @@ module _ commute-powers-Monoid' (succ-ℕ zero-ℕ) {x} {y} H = H commute-powers-Monoid' (succ-ℕ (succ-ℕ n)) {x} {y} H = ( associative-mul-Monoid M (power-Monoid M (succ-ℕ n) x) x y) ∙ - ( ( ap (mul-Monoid M (power-Monoid M (succ-ℕ n) x)) H) ∙ - ( ( inv - ( associative-mul-Monoid M (power-Monoid M (succ-ℕ n) x) y x)) ∙ - ( ( ap (mul-Monoid' M x) (commute-powers-Monoid' (succ-ℕ n) H)) ∙ - ( associative-mul-Monoid M y (power-Monoid M (succ-ℕ n) x) x)))) + ( ap (mul-Monoid M (power-Monoid M (succ-ℕ n) x)) H) ∙ + ( inv (associative-mul-Monoid M (power-Monoid M (succ-ℕ n) x) y x)) ∙ + ( ap (mul-Monoid' M x) (commute-powers-Monoid' (succ-ℕ n) H)) ∙ + ( associative-mul-Monoid M y (power-Monoid M (succ-ℕ n) x) x) commute-powers-Monoid : (m n : ℕ) {x y : type-Monoid M} → @@ -186,63 +185,57 @@ module _ ( right-unit-law-mul-Monoid M (power-Monoid M (succ-ℕ m) _)) ∙ ( inv (left-unit-law-mul-Monoid M (power-Monoid M (succ-ℕ m) _))) commute-powers-Monoid (succ-ℕ m) (succ-ℕ n) {x} {y} H = - ( ap-mul-Monoid M - ( power-succ-Monoid M m x) - ( power-succ-Monoid M n y)) ∙ - ( ( associative-mul-Monoid M + ( ap-mul-Monoid M (power-succ-Monoid M m x) (power-succ-Monoid M n y)) ∙ + ( associative-mul-Monoid M + ( power-Monoid M m x) + ( x) + ( mul-Monoid M (power-Monoid M n y) y)) ∙ + ( ap + ( mul-Monoid M (power-Monoid M m x)) + ( ( inv (associative-mul-Monoid M x (power-Monoid M n y) y)) ∙ + ( ap + ( mul-Monoid' M y) + ( inv (commute-powers-Monoid' n (inv H)))) ∙ + ( associative-mul-Monoid M (power-Monoid M n y) x y) ∙ + ( ap (mul-Monoid M (power-Monoid M n y)) H) ∙ + ( inv (associative-mul-Monoid M (power-Monoid M n y) y x)))) ∙ + ( inv + ( associative-mul-Monoid M ( power-Monoid M m x) - ( x) - ( mul-Monoid M (power-Monoid M n y) y)) ∙ - ( ( ap - ( mul-Monoid M (power-Monoid M m x)) - ( ( inv (associative-mul-Monoid M x (power-Monoid M n y) y)) ∙ - ( ( ap - ( mul-Monoid' M y) - ( inv (commute-powers-Monoid' n (inv H)))) ∙ - ( ( associative-mul-Monoid M (power-Monoid M n y) x y) ∙ - ( ( ap (mul-Monoid M (power-Monoid M n y)) H) ∙ - ( inv - ( associative-mul-Monoid M - ( power-Monoid M n y) - ( y) - ( x)))))))) ∙ - ( ( inv - ( associative-mul-Monoid M - ( power-Monoid M m x) - ( mul-Monoid M (power-Monoid M n y) y) - ( x))) ∙ - ( ( ap - ( mul-Monoid' M x) - ( ( inv - ( associative-mul-Monoid M - ( power-Monoid M m x) - ( power-Monoid M n y) - ( y))) ∙ - ( ( ap - ( mul-Monoid' M y) - ( commute-powers-Monoid m n H)) ∙ - ( ( associative-mul-Monoid M - ( power-Monoid M n y) - ( power-Monoid M m x) - ( y)) ∙ - ( ( ap - ( mul-Monoid M (power-Monoid M n y)) - ( commute-powers-Monoid' m H)) ∙ - ( ( inv - ( associative-mul-Monoid M - ( power-Monoid M n y) - ( y) - ( power-Monoid M m x))) ∙ - ( ap - ( mul-Monoid' M (power-Monoid M m x)) - ( inv (power-succ-Monoid M n y))))))))) ∙ - ( ( associative-mul-Monoid M - ( power-Monoid M (succ-ℕ n) y) - ( power-Monoid M m x) - ( x)) ∙ - ( ap - ( mul-Monoid M (power-Monoid M (succ-ℕ n) y)) - ( inv (power-succ-Monoid M m x)))))))) + ( mul-Monoid M (power-Monoid M n y) y) + ( x))) ∙ + ( ap + ( mul-Monoid' M x) + ( ( inv + ( associative-mul-Monoid M + ( power-Monoid M m x) + ( power-Monoid M n y) + ( y))) ∙ + ( ap + ( mul-Monoid' M y) + ( commute-powers-Monoid m n H)) ∙ + ( associative-mul-Monoid M + ( power-Monoid M n y) + ( power-Monoid M m x) + ( y)) ∙ + ( ap + ( mul-Monoid M (power-Monoid M n y)) + ( commute-powers-Monoid' m H)) ∙ + ( inv + ( associative-mul-Monoid M + ( power-Monoid M n y) + ( y) + ( power-Monoid M m x))) ∙ + ( ap + ( mul-Monoid' M (power-Monoid M m x)) + ( inv (power-succ-Monoid M n y))))) ∙ + ( associative-mul-Monoid M + ( power-Monoid M (succ-ℕ n) y) + ( power-Monoid M m x) + ( x)) ∙ + ( ap + ( mul-Monoid M (power-Monoid M (succ-ℕ n) y)) + ( inv (power-succ-Monoid M m x))) ``` ### If `x` commutes with `y`, then powers distribute over the product of `x` and `y` @@ -261,35 +254,35 @@ module _ inv (left-unit-law-mul-Monoid M (unit-Monoid M)) distributive-power-mul-Monoid (succ-ℕ n) {x} {y} H = ( power-succ-Monoid M n (mul-Monoid M x y)) ∙ - ( ( ap - ( mul-Monoid' M (mul-Monoid M x y)) - ( distributive-power-mul-Monoid n H)) ∙ - ( ( inv + ( ap + ( mul-Monoid' M (mul-Monoid M x y)) + ( distributive-power-mul-Monoid n H)) ∙ + ( inv + ( associative-mul-Monoid M + ( mul-Monoid M (power-Monoid M n x) (power-Monoid M n y)) + ( x) + ( y))) ∙ + ( ap + ( mul-Monoid' M y) + ( ( associative-mul-Monoid M + ( power-Monoid M n x) + ( power-Monoid M n y) + ( x)) ∙ + ( ap + ( mul-Monoid M (power-Monoid M n x)) + ( commute-powers-Monoid' M n (inv H))) ∙ + ( inv ( associative-mul-Monoid M - ( mul-Monoid M (power-Monoid M n x) (power-Monoid M n y)) + ( power-Monoid M n x) ( x) - ( y))) ∙ - ( ( ap - ( mul-Monoid' M y) - ( ( associative-mul-Monoid M - ( power-Monoid M n x) - ( power-Monoid M n y) - ( x)) ∙ - ( ( ap - ( mul-Monoid M (power-Monoid M n x)) - ( commute-powers-Monoid' M n (inv H))) ∙ - ( inv - ( associative-mul-Monoid M - ( power-Monoid M n x) - ( x) - ( power-Monoid M n y)))))) ∙ - ( ( associative-mul-Monoid M - ( mul-Monoid M (power-Monoid M n x) x) - ( power-Monoid M n y) - ( y)) ∙ - ( ap-mul-Monoid M - ( inv (power-succ-Monoid M n x)) - ( inv (power-succ-Monoid M n y))))))) + ( power-Monoid M n y))))) ∙ + ( associative-mul-Monoid M + ( mul-Monoid M (power-Monoid M n x) x) + ( power-Monoid M n y) + ( y)) ∙ + ( ap-mul-Monoid M + ( inv (power-succ-Monoid M n x)) + ( inv (power-succ-Monoid M n y))) ``` ### Powers by products of natural numbers are iterated powers @@ -308,10 +301,10 @@ module _ power-mul-Monoid (succ-ℕ zero-ℕ) n {x} = ap (λ t → power-Monoid M t x) (left-unit-law-add-ℕ n) power-mul-Monoid (succ-ℕ (succ-ℕ m)) n {x} = - ( ( distributive-power-add-Monoid M (succ-ℕ m *ℕ n) n) ∙ - ( ap - ( mul-Monoid' M (power-Monoid M n x)) - ( power-mul-Monoid (succ-ℕ m) n))) ∙ + ( distributive-power-add-Monoid M (succ-ℕ m *ℕ n) n) ∙ + ( ap + ( mul-Monoid' M (power-Monoid M n x)) + ( power-mul-Monoid (succ-ℕ m) n)) ∙ ( inv ( distributive-power-mul-Monoid M n ( commute-powers-Monoid' M (succ-ℕ m) refl))) @@ -331,6 +324,6 @@ module _ preserves-powers-hom-Monoid zero-ℕ x = preserves-unit-hom-Monoid M N f preserves-powers-hom-Monoid (succ-ℕ zero-ℕ) x = refl preserves-powers-hom-Monoid (succ-ℕ (succ-ℕ n)) x = - ( preserves-mul-hom-Monoid M N f _ _) ∙ + ( preserves-mul-hom-Monoid M N f) ∙ ( ap (mul-Monoid' N _) (preserves-powers-hom-Monoid (succ-ℕ n) x)) ``` diff --git a/src/group-theory/precategory-of-group-actions.lagda.md b/src/group-theory/precategory-of-group-actions.lagda.md index ebd561b72f..a270a7018c 100644 --- a/src/group-theory/precategory-of-group-actions.lagda.md +++ b/src/group-theory/precategory-of-group-actions.lagda.md @@ -20,6 +20,13 @@ open import group-theory.homomorphisms-group-actions +## Idea + +The [large precategory](category-theory.large-precategories.md) of +[group actions](group-theory.group-actions.md) consists of group actions and +[morphisms of group actions](group-theory.homomorphisms-group-actions.md) +between them. + ## Definitions ### The large precategory of G-sets @@ -29,29 +36,29 @@ module _ {l1 : Level} (G : Group l1) where - Abstract-Group-Action-Large-Precategory : + action-Group-Large-Precategory : Large-Precategory (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) obj-Large-Precategory - Abstract-Group-Action-Large-Precategory = - Abstract-Group-Action G + action-Group-Large-Precategory = + action-Group G hom-set-Large-Precategory - Abstract-Group-Action-Large-Precategory = - hom-set-Abstract-Group-Action G + action-Group-Large-Precategory = + hom-set-action-Group G comp-hom-Large-Precategory - Abstract-Group-Action-Large-Precategory {X = X} {Y} {Z} = - comp-hom-Abstract-Group-Action G X Y Z + action-Group-Large-Precategory {X = X} {Y} {Z} = + comp-hom-action-Group G X Y Z id-hom-Large-Precategory - Abstract-Group-Action-Large-Precategory {X = X} = - id-hom-Abstract-Group-Action G X + action-Group-Large-Precategory {X = X} = + id-hom-action-Group G X associative-comp-hom-Large-Precategory - Abstract-Group-Action-Large-Precategory {X = X} {Y} {Z} {W} = - associative-comp-hom-Abstract-Group-Action G X Y Z W + action-Group-Large-Precategory {X = X} {Y} {Z} {W} = + associative-comp-hom-action-Group G X Y Z W left-unit-law-comp-hom-Large-Precategory - Abstract-Group-Action-Large-Precategory {X = X} {Y} = - left-unit-law-comp-hom-Abstract-Group-Action G X Y + action-Group-Large-Precategory {X = X} {Y} = + left-unit-law-comp-hom-action-Group G X Y right-unit-law-comp-hom-Large-Precategory - Abstract-Group-Action-Large-Precategory {X = X} {Y} = - right-unit-law-comp-hom-Abstract-Group-Action G X Y + action-Group-Large-Precategory {X = X} {Y} = + right-unit-law-comp-hom-action-Group G X Y ``` ### The small precategory of G-sets @@ -61,19 +68,19 @@ module _ {l1 : Level} (G : Group l1) where - Abstract-Group-Action-Precategory : + action-Group-Precategory : (l2 : Level) → Precategory (l1 ⊔ lsuc l2) (l1 ⊔ l2) - pr1 (Abstract-Group-Action-Precategory l2) = Abstract-Group-Action G l2 - pr1 (pr2 (Abstract-Group-Action-Precategory l2)) = - hom-set-Abstract-Group-Action G - pr1 (pr1 (pr2 (pr2 (Abstract-Group-Action-Precategory l2)))) {X} {Y} {Z} = - comp-hom-Abstract-Group-Action G X Y Z - pr2 (pr1 (pr2 (pr2 (Abstract-Group-Action-Precategory l2)))) {X} {Y} {Z} {W} = - associative-comp-hom-Abstract-Group-Action G X Y Z W - pr1 (pr2 (pr2 (pr2 (Abstract-Group-Action-Precategory l2)))) = - id-hom-Abstract-Group-Action G - pr1 (pr2 (pr2 (pr2 (pr2 (Abstract-Group-Action-Precategory l2))))) {X} {Y} = - left-unit-law-comp-hom-Abstract-Group-Action G X Y - pr2 (pr2 (pr2 (pr2 (pr2 (Abstract-Group-Action-Precategory l2))))) {X} {Y} = - right-unit-law-comp-hom-Abstract-Group-Action G X Y + pr1 (action-Group-Precategory l2) = action-Group G l2 + pr1 (pr2 (action-Group-Precategory l2)) = + hom-set-action-Group G + pr1 (pr1 (pr2 (pr2 (action-Group-Precategory l2)))) {X} {Y} {Z} = + comp-hom-action-Group G X Y Z + pr2 (pr1 (pr2 (pr2 (action-Group-Precategory l2)))) {X} {Y} {Z} {W} = + associative-comp-hom-action-Group G X Y Z W + pr1 (pr2 (pr2 (pr2 (action-Group-Precategory l2)))) = + id-hom-action-Group G + pr1 (pr2 (pr2 (pr2 (pr2 (action-Group-Precategory l2))))) {X} {Y} = + left-unit-law-comp-hom-action-Group G X Y + pr2 (pr2 (pr2 (pr2 (pr2 (action-Group-Precategory l2))))) {X} {Y} = + right-unit-law-comp-hom-action-Group G X Y ``` diff --git a/src/group-theory/principal-group-actions.lagda.md b/src/group-theory/principal-group-actions.lagda.md index a2f2968408..18aaf88ca9 100644 --- a/src/group-theory/principal-group-actions.lagda.md +++ b/src/group-theory/principal-group-actions.lagda.md @@ -20,7 +20,7 @@ open import group-theory.groups ## Idea The **principal group action** is the [action](group-theory.group-actions.md) of -a [group](group-theory.groups.md) on itself by multiplication from the left +a [group](group-theory.groups.md) on itself by multiplication from the left. ## Definition @@ -29,9 +29,9 @@ module _ {l1 : Level} (G : Group l1) where - principal-Abstract-Group-Action : Abstract-Group-Action G l1 - pr1 principal-Abstract-Group-Action = set-Group G - pr1 (pr2 principal-Abstract-Group-Action) g = equiv-mul-Group G g - pr2 (pr2 principal-Abstract-Group-Action) g h = + principal-action-Group : action-Group G l1 + pr1 principal-action-Group = set-Group G + pr1 (pr2 principal-action-Group) g = equiv-mul-Group G g + pr2 (pr2 principal-action-Group) {g} {h} = eq-htpy-equiv (associative-mul-Group G g h) ``` diff --git a/src/group-theory/pullbacks-subgroups.lagda.md b/src/group-theory/pullbacks-subgroups.lagda.md new file mode 100644 index 0000000000..46578fdb29 --- /dev/null +++ b/src/group-theory/pullbacks-subgroups.lagda.md @@ -0,0 +1,234 @@ +# Pullbacks of subgroups + +```agda +module group-theory.pullbacks-subgroups where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.powersets +open import foundation.pullbacks-subtypes +open import foundation.universe-levels + +open import group-theory.conjugation +open import group-theory.groups +open import group-theory.homomorphisms-groups +open import group-theory.normal-subgroups +open import group-theory.pullbacks-subsemigroups +open import group-theory.subgroups +open import group-theory.subsemigroups +open import group-theory.subsets-groups + +open import order-theory.commuting-squares-of-order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-preorders +open import order-theory.similarity-of-order-preserving-maps-large-posets +``` + +
+ +## Idea + +Given a [group homomorphism](group-theory.homomorphisms-groups.md) `f : G → H` +into a [group](group-theory.groups.md) `H` equipped with a +[subgroup](group-theory.subgroups.md) `K ≤ H`, the **pullback** `pullback f K` +of `K` along `f` is defined by substituting `f` in `K`. In other words, it is +the subgroup `pullback f K` of `G` consisting of the elements `x : G` such that +`f x ∈ K`. + +## Definitions + +### Pullbacks of subgroups + +```agda +module _ + {l1 l2 l3 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + (K : Subgroup l3 H) + where + + subsemigroup-pullback-Subgroup : Subsemigroup l3 (semigroup-Group G) + subsemigroup-pullback-Subgroup = + pullback-Subsemigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) + ( subsemigroup-Subgroup H K) + + subset-pullback-Subgroup : subset-Group l3 G + subset-pullback-Subgroup = + subset-pullback-Subsemigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) + ( subsemigroup-Subgroup H K) + + is-in-pullback-Subgroup : type-Group G → UU l3 + is-in-pullback-Subgroup = + is-in-pullback-Subsemigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) + ( subsemigroup-Subgroup H K) + + is-closed-under-eq-pullback-Subgroup : + {x y : type-Group G} → + is-in-pullback-Subgroup x → x = y → is-in-pullback-Subgroup y + is-closed-under-eq-pullback-Subgroup = + is-closed-under-eq-pullback-Subsemigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) + ( subsemigroup-Subgroup H K) + + is-closed-under-eq-pullback-Subgroup' : + {x y : type-Group G} → + is-in-pullback-Subgroup y → x = y → is-in-pullback-Subgroup x + is-closed-under-eq-pullback-Subgroup' = + is-closed-under-eq-pullback-Subsemigroup' + ( semigroup-Group G) + ( semigroup-Group H) + ( f) + ( subsemigroup-Subgroup H K) + + contains-unit-pullback-Subgroup : + contains-unit-subset-Group G subset-pullback-Subgroup + contains-unit-pullback-Subgroup = + is-closed-under-eq-Subgroup' H K + ( contains-unit-Subgroup H K) + ( preserves-unit-hom-Group G H f) + + is-closed-under-multiplication-pullback-Subgroup : + is-closed-under-multiplication-subset-Group G subset-pullback-Subgroup + is-closed-under-multiplication-pullback-Subgroup = + is-closed-under-multiplication-pullback-Subsemigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) + ( subsemigroup-Subgroup H K) + + is-closed-under-inverses-pullback-Subgroup : + is-closed-under-inverses-subset-Group G subset-pullback-Subgroup + is-closed-under-inverses-pullback-Subgroup p = + is-closed-under-eq-Subgroup' H K + ( is-closed-under-inverses-Subgroup H K p) + ( preserves-inv-hom-Group G H f) + + is-subgroup-pullback-Subgroup : + is-subgroup-subset-Group G subset-pullback-Subgroup + pr1 is-subgroup-pullback-Subgroup = + contains-unit-pullback-Subgroup + pr1 (pr2 is-subgroup-pullback-Subgroup) = + is-closed-under-multiplication-pullback-Subgroup + pr2 (pr2 is-subgroup-pullback-Subgroup) = + is-closed-under-inverses-pullback-Subgroup + + pullback-Subgroup : Subgroup l3 G + pr1 pullback-Subgroup = subset-pullback-Subgroup + pr2 pullback-Subgroup = is-subgroup-pullback-Subgroup +``` + +### The order preserving map `pullback-Subgroup` + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + where + + preserves-order-pullback-Subgroup : + {l3 l4 : Level} (S : Subgroup l3 H) (T : Subgroup l4 H) → + leq-Subgroup H S T → + leq-Subgroup G (pullback-Subgroup G H f S) (pullback-Subgroup G H f T) + preserves-order-pullback-Subgroup S T = + preserves-order-pullback-Subsemigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) + ( subsemigroup-Subgroup H S) + ( subsemigroup-Subgroup H T) + + pullback-subgroup-hom-large-poset-hom-Group : + hom-Large-Poset (λ l → l) (Subgroup-Large-Poset H) (Subgroup-Large-Poset G) + map-hom-Large-Preorder pullback-subgroup-hom-large-poset-hom-Group = + pullback-Subgroup G H f + preserves-order-hom-Large-Preorder + pullback-subgroup-hom-large-poset-hom-Group = + preserves-order-pullback-Subgroup +``` + +## Properties + +### The pullback operation commutes with the underlying subtype operation + +The square + +```text + pullback f + Subgroup H ----------------> Subgroup G + | | + K ↦ UK | | K ↦ UK + | | + V V + subset-Group H ------------> subset-Group G + pullback f +``` + +of [order preserving maps](order-theory.order-preserving-maps-large-posets.md) +[commutes](order-theory.commuting-squares-of-order-preserving-maps-large-posets.md) +by reflexivity. + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + where + + coherence-square-pullback-subset-Subgroup : + coherence-square-hom-Large-Poset + ( Subgroup-Large-Poset H) + ( powerset-Large-Poset (type-Group H)) + ( Subgroup-Large-Poset G) + ( powerset-Large-Poset (type-Group G)) + ( pullback-subgroup-hom-large-poset-hom-Group G H f) + ( subset-subgroup-hom-large-poset-Group H) + ( subset-subgroup-hom-large-poset-Group G) + ( pullback-subtype-hom-Large-Poset (map-hom-Group G H f)) + coherence-square-pullback-subset-Subgroup = + refl-sim-hom-Large-Poset + ( Subgroup-Large-Poset H) + ( powerset-Large-Poset (type-Group G)) + ( comp-hom-Large-Poset + ( Subgroup-Large-Poset H) + ( Subgroup-Large-Poset G) + ( powerset-Large-Poset (type-Group G)) + ( subset-subgroup-hom-large-poset-Group G) + ( pullback-subgroup-hom-large-poset-hom-Group G H f)) +``` + +### Pullbacks of normal subgroups are normal + +```agda +module _ + {l1 l2 l3 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + (N : Normal-Subgroup l3 H) + where + + subgroup-pullback-Normal-Subgroup : Subgroup l3 G + subgroup-pullback-Normal-Subgroup = + pullback-Subgroup G H f (subgroup-Normal-Subgroup H N) + + is-normal-pullback-Normal-Subgroup : + is-normal-Subgroup G subgroup-pullback-Normal-Subgroup + is-normal-pullback-Normal-Subgroup x (y , n) = + is-closed-under-eq-Normal-Subgroup' H N + ( is-normal-Normal-Subgroup H N + ( map-hom-Group G H f x) + ( map-hom-Group G H f y) + ( n)) + ( preserves-conjugation-hom-Group G H f) + + pullback-Normal-Subgroup : Normal-Subgroup l3 G + pr1 pullback-Normal-Subgroup = subgroup-pullback-Normal-Subgroup + pr2 pullback-Normal-Subgroup = is-normal-pullback-Normal-Subgroup +``` diff --git a/src/group-theory/pullbacks-subsemigroups.lagda.md b/src/group-theory/pullbacks-subsemigroups.lagda.md new file mode 100644 index 0000000000..c5718c895f --- /dev/null +++ b/src/group-theory/pullbacks-subsemigroups.lagda.md @@ -0,0 +1,160 @@ +# Pullbacks of subsemigroups + +```agda +module group-theory.pullbacks-subsemigroups where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.identity-types +open import foundation.powersets +open import foundation.pullbacks-subtypes +open import foundation.universe-levels + +open import group-theory.homomorphisms-semigroups +open import group-theory.semigroups +open import group-theory.subsemigroups +open import group-theory.subsets-semigroups + +open import order-theory.commuting-squares-of-order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-preorders +open import order-theory.similarity-of-order-preserving-maps-large-posets +``` + +
+ +## Idea + +Given a [semigroup homomorphism](group-theory.homomorphisms-semigroups.md) +`f : G → H` into a [semigroup](group-theory.semigroups.md) `H` equipped with a +[subsemigroup](group-theory.subsemigroups.md) `K ≤ H`, the **pullback** +`pullback f K` of `K` along `f` is defined by substituting `f` in `K`. In other +words, it is the subsemigroup `pullback f K` of `G` consisting of the elements +`x : G` such that `f x ∈ K`. + +## Definitions + +### The pullback of a subsemigroup along a semigroup homomorphism + +```agda +module _ + {l1 l2 l3 : Level} (G : Semigroup l1) (H : Semigroup l2) + (f : hom-Semigroup G H) (K : Subsemigroup l3 H) + where + + subset-pullback-Subsemigroup : subset-Semigroup l3 G + subset-pullback-Subsemigroup = + subset-Subsemigroup H K ∘ map-hom-Semigroup G H f + + is-closed-under-multiplication-pullback-Subsemigroup : + is-closed-under-multiplication-subset-Semigroup G + subset-pullback-Subsemigroup + is-closed-under-multiplication-pullback-Subsemigroup p q = + is-closed-under-eq-Subsemigroup' H K + ( is-closed-under-multiplication-Subsemigroup H K p q) + ( preserves-mul-hom-Semigroup G H f) + + pullback-Subsemigroup : Subsemigroup l3 G + pr1 pullback-Subsemigroup = + subset-pullback-Subsemigroup + pr2 pullback-Subsemigroup = + is-closed-under-multiplication-pullback-Subsemigroup + + is-in-pullback-Subsemigroup : type-Semigroup G → UU l3 + is-in-pullback-Subsemigroup = + is-in-Subsemigroup G pullback-Subsemigroup + + is-closed-under-eq-pullback-Subsemigroup : + {x y : type-Semigroup G} → + is-in-pullback-Subsemigroup x → x = y → is-in-pullback-Subsemigroup y + is-closed-under-eq-pullback-Subsemigroup = + is-closed-under-eq-Subsemigroup G pullback-Subsemigroup + + is-closed-under-eq-pullback-Subsemigroup' : + {x y : type-Semigroup G} → + is-in-pullback-Subsemigroup y → x = y → is-in-pullback-Subsemigroup x + is-closed-under-eq-pullback-Subsemigroup' = + is-closed-under-eq-Subsemigroup' G pullback-Subsemigroup +``` + +### The order preserving operation `pullback-Subsemigroup + +```agda +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2) (f : hom-Semigroup G H) + where + + preserves-order-pullback-Subsemigroup : + {l3 l4 : Level} (S : Subsemigroup l3 H) (T : Subsemigroup l4 H) → + leq-Subsemigroup H S T → + leq-Subsemigroup G + ( pullback-Subsemigroup G H f S) + ( pullback-Subsemigroup G H f T) + preserves-order-pullback-Subsemigroup S T = + preserves-order-pullback-subtype + ( map-hom-Semigroup G H f) + ( subset-Subsemigroup H S) + ( subset-Subsemigroup H T) + + pullback-hom-large-poset-Subsemigroup : + hom-Large-Poset + ( λ l → l) + ( Subsemigroup-Large-Poset H) + ( Subsemigroup-Large-Poset G) + map-hom-Large-Preorder pullback-hom-large-poset-Subsemigroup = + pullback-Subsemigroup G H f + preserves-order-hom-Large-Preorder pullback-hom-large-poset-Subsemigroup = + preserves-order-pullback-Subsemigroup +``` + +## Properties + +### The pullback operation commutes with the underlying subtype operation + +The square + +```text + pullback f + Subsemigroup H ----------------> Subsemigroup G + | | + K ↦ UK | | K ↦ UK + | | + V V + subset-Semigroup H ------------> subset-Semigroup G + pullback f +``` + +of [order preserving maps](order-theory.order-preserving-maps-large-posets.md) +[commutes](order-theory.commuting-squares-of-order-preserving-maps-large-posets.md) +by reflexivity. + +```agda +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2) (f : hom-Semigroup G H) + where + + coherence-square-pullback-subset-Subsemigroup : + coherence-square-hom-Large-Poset + ( Subsemigroup-Large-Poset H) + ( powerset-Large-Poset (type-Semigroup H)) + ( Subsemigroup-Large-Poset G) + ( powerset-Large-Poset (type-Semigroup G)) + ( pullback-hom-large-poset-Subsemigroup G H f) + ( subset-subsemigroup-hom-large-poset-Semigroup H) + ( subset-subsemigroup-hom-large-poset-Semigroup G) + ( pullback-subtype-hom-Large-Poset (map-hom-Semigroup G H f)) + coherence-square-pullback-subset-Subsemigroup = + refl-sim-hom-Large-Poset + ( Subsemigroup-Large-Poset H) + ( powerset-Large-Poset (type-Semigroup G)) + ( comp-hom-Large-Poset + ( Subsemigroup-Large-Poset H) + ( Subsemigroup-Large-Poset G) + ( powerset-Large-Poset (type-Semigroup G)) + ( subset-subsemigroup-hom-large-poset-Semigroup G) + ( pullback-hom-large-poset-Subsemigroup G H f)) +``` diff --git a/src/group-theory/quotient-groups-concrete-groups.lagda.md b/src/group-theory/quotient-groups-concrete-groups.lagda.md index b1688f3b12..f23e72c900 100644 --- a/src/group-theory/quotient-groups-concrete-groups.lagda.md +++ b/src/group-theory/quotient-groups-concrete-groups.lagda.md @@ -93,7 +93,7 @@ module _ extensionality-classifying-type-quotient-Concrete-Group u = extensionality-type-subtype ( λ (X : transitive-action-Concrete-Group l2 G) → - mere-equiv-action-Concrete-Group-Prop G + mere-equiv-prop-action-Concrete-Group G ( action-normal-subgroup-Concrete-Group G N) ( action-transitive-action-Concrete-Group G X)) ( pr2 u) @@ -115,11 +115,11 @@ module _ unit-trunc-Prop ( eq-type-subtype ( λ X → - mere-equiv-action-Concrete-Group-Prop G + mere-equiv-prop-action-Concrete-Group G ( action-normal-subgroup-Concrete-Group G N) ( action-transitive-action-Concrete-Group G X)) ( eq-type-subtype - ( is-transitive-action-Concrete-Group-Prop G) + ( is-transitive-prop-action-Concrete-Group G) ( eq-equiv-action-Concrete-Group G ( action-normal-subgroup-Concrete-Group G N) ( pr1 u) @@ -130,7 +130,7 @@ module _ is-1-type-classifying-type-quotient-Concrete-Group = is-1-type-type-subtype ( λ X → - mere-equiv-action-Concrete-Group-Prop G + mere-equiv-prop-action-Concrete-Group G ( action-normal-subgroup-Concrete-Group G N) ( action-transitive-action-Concrete-Group G X)) ( is-1-type-transitive-action-Concrete-Group G) diff --git a/src/group-theory/quotient-groups.lagda.md b/src/group-theory/quotient-groups.lagda.md index a8c49dc238..2992107e49 100644 --- a/src/group-theory/quotient-groups.lagda.md +++ b/src/group-theory/quotient-groups.lagda.md @@ -35,7 +35,7 @@ open import foundation.universe-levels open import group-theory.groups open import group-theory.homomorphisms-groups -open import group-theory.kernels +open import group-theory.kernels-homomorphisms-groups open import group-theory.normal-subgroups open import group-theory.nullifying-group-homomorphisms open import group-theory.semigroups @@ -45,10 +45,24 @@ open import group-theory.semigroups ## Idea -Given a normal subgroup `H` of `G`, the quotient group `q : G → G/H` such that -`H ⊆ ker q`, and such that `q` satisfies the universal group with the property -that any group homomorphism `f : G → K` such that `H ⊆ ker f` extends uniquely -along `q` to a group homomorphism `G/H → K`. +Given a [normal subgroup](group-theory.normal-subgroups.md) `N` of `G`, the +**quotient group** `G/N` is a [group](group-theory.groups.md) equipped with a +[group homomorphism](group-theory.homomorphisms-groups.md) `q : G → G/N` such +that `N ⊆ ker q`, and such that `q` satisfies the **universal property of the +quotient group**, which asserts that any group homomorphism `f : G → H` such +that `N ⊆ ker f` extends uniquely along `q` to a group homomorphism `G/N → H`. +In other words, the universal property of the quotient group `G/N` asserts that +the map + +```text + hom-Group G/N H → nullifying-hom-Group G H N +``` + +from group homomorphisms `G/N → H` to +[`N`-nullifying group homomorphism](group-theory.nullifying-group-homomorphisms.md) +`G → H` is an [equivalence](foundation-core.equivalences.md). Recall that a +group homomorphism is said to be `N`-nullifying if `N` is contained in the +[kernel](group-theory.kernels-homomorphisms-groups.md) of `f`. ## Definitions @@ -56,271 +70,305 @@ along `q` to a group homomorphism `G/H → K`. ```agda precomp-nullifying-hom-Group : - {l1 l2 l3 l4 : Level} (G : Group l1) (H : Normal-Subgroup l2 G) - (K : Group l3) (f : nullifying-hom-Group G K H) - (L : Group l4) → hom-Group K L → nullifying-hom-Group G L H -pr1 (precomp-nullifying-hom-Group G H K f L g) = - comp-hom-Group G K L g (hom-nullifying-hom-Group G K H f) -pr2 (precomp-nullifying-hom-Group G H K f L g) h p = + {l1 l2 l3 l4 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) + (H : Group l3) (f : nullifying-hom-Group G H N) + (K : Group l4) → hom-Group H K → nullifying-hom-Group G K N +pr1 (precomp-nullifying-hom-Group G N H f K g) = + comp-hom-Group G H K g (hom-nullifying-hom-Group G H N f) +pr2 (precomp-nullifying-hom-Group G N H f K g) h p = + ( inv (preserves-unit-hom-Group H K g)) ∙ ( ap - ( map-hom-Group K L g) - ( nullifies-normal-subgroup-nullifying-hom-Group G K H f h p)) ∙ - ( preserves-unit-hom-Group K L g) + ( map-hom-Group H K g) + ( nullifies-normal-subgroup-nullifying-hom-Group G H N f h p)) universal-property-quotient-Group : {l1 l2 l3 : Level} (G : Group l1) - (H : Normal-Subgroup l2 G) (Q : Group l3) - (q : nullifying-hom-Group G Q H) → UUω -universal-property-quotient-Group G H Q q = - {l : Level} (K : Group l) → is-equiv (precomp-nullifying-hom-Group G H Q q K) + (N : Normal-Subgroup l2 G) (Q : Group l3) + (q : nullifying-hom-Group G Q N) → UUω +universal-property-quotient-Group G N Q q = + {l : Level} (H : Group l) → is-equiv (precomp-nullifying-hom-Group G N Q q H) ``` ### The quotient group #### The quotient map and the underlying set of the quotient group +The underlying [set](foundation-core.sets.md) of the quotient group is defined +as the [set quotient](foundation.set-quotients.md) of the +[equivalence relation](foundation.equivalence-relations.md) induced by the +normal subgroup `N` of `G`. By this construction we immediately obtain the +quotient map `q : G → G/N`, which will be +[surjective](foundation.surjective-maps.md) and +[effective](foundation.effective-maps-equivalence-relations.md). This means that +the quotient group satisfies the condition + +```text + x⁻¹y ∈ N ↔ q x = q y. +``` + +We will conclude later that this implies that the quotient map nullifies the +normal subgroup `N`. + ```agda module _ - {l1 l2 : Level} (G : Group l1) (H : Normal-Subgroup l2 G) + {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) where set-quotient-Group : Set (l1 ⊔ l2) set-quotient-Group = - quotient-Set (eq-rel-congruence-Normal-Subgroup G H) + quotient-Set (equivalence-relation-congruence-Normal-Subgroup G N) type-quotient-Group : UU (l1 ⊔ l2) type-quotient-Group = - set-quotient (eq-rel-congruence-Normal-Subgroup G H) + set-quotient (equivalence-relation-congruence-Normal-Subgroup G N) is-set-type-quotient-Group : is-set type-quotient-Group is-set-type-quotient-Group = - is-set-set-quotient (eq-rel-congruence-Normal-Subgroup G H) + is-set-set-quotient (equivalence-relation-congruence-Normal-Subgroup G N) map-quotient-hom-Group : type-Group G → type-quotient-Group map-quotient-hom-Group = - quotient-map (eq-rel-congruence-Normal-Subgroup G H) + quotient-map (equivalence-relation-congruence-Normal-Subgroup G N) is-surjective-map-quotient-hom-Group : is-surjective map-quotient-hom-Group is-surjective-map-quotient-hom-Group = - is-surjective-quotient-map (eq-rel-congruence-Normal-Subgroup G H) + is-surjective-quotient-map + ( equivalence-relation-congruence-Normal-Subgroup G N) is-effective-map-quotient-hom-Group : is-effective - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( map-quotient-hom-Group) is-effective-map-quotient-hom-Group = - is-effective-quotient-map (eq-rel-congruence-Normal-Subgroup G H) + is-effective-quotient-map + ( equivalence-relation-congruence-Normal-Subgroup G N) abstract apply-effectiveness-map-quotient-hom-Group : {x y : type-Group G} → map-quotient-hom-Group x = map-quotient-hom-Group y → - sim-congruence-Normal-Subgroup G H x y + sim-congruence-Normal-Subgroup G N x y apply-effectiveness-map-quotient-hom-Group = apply-effectiveness-quotient-map - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) abstract apply-effectiveness-map-quotient-hom-Group' : {x y : type-Group G} → - sim-congruence-Normal-Subgroup G H x y → + sim-congruence-Normal-Subgroup G N x y → map-quotient-hom-Group x = map-quotient-hom-Group y apply-effectiveness-map-quotient-hom-Group' = apply-effectiveness-quotient-map' - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) reflecting-map-quotient-hom-Group : - reflecting-map-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup G H) + reflecting-map-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup G N) ( type-quotient-Group) reflecting-map-quotient-hom-Group = reflecting-map-quotient-map - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) is-set-quotient-set-quotient-Group : {l : Level} → is-set-quotient l - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( set-quotient-Group) ( reflecting-map-quotient-hom-Group) is-set-quotient-set-quotient-Group = is-set-quotient-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) ``` #### The group structure on the quotient group +We now introduce the group structure on the underlying set of the quotient +group. The multiplication, unit, and inverses are defined by the universal +property of the set quotient as the unique maps equipped with identifications + +```text + (qx)(qy) = q(xy) + 1 = q1 + (qx)⁻¹ = q(x⁻¹) +``` + +The group laws follow by the induction principle for set quotients. + ```agda - unit-quotient-Group : type-quotient-Group - unit-quotient-Group = map-quotient-hom-Group (unit-Group G) +module _ + {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) + where + + unit-quotient-Group : type-quotient-Group G N + unit-quotient-Group = map-quotient-hom-Group G N (unit-Group G) binary-hom-mul-quotient-Group : - binary-hom-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) + binary-hom-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) pr1 binary-hom-mul-quotient-Group = mul-Group G pr2 binary-hom-mul-quotient-Group = - mul-congruence-Normal-Subgroup G H + mul-congruence-Normal-Subgroup G N mul-quotient-Group : - (x y : type-quotient-Group) → type-quotient-Group + (x y : type-quotient-Group G N) → type-quotient-Group G N mul-quotient-Group = binary-map-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( binary-hom-mul-quotient-Group) mul-quotient-Group' : - (x y : type-quotient-Group) → type-quotient-Group + (x y : type-quotient-Group G N) → type-quotient-Group G N mul-quotient-Group' x y = mul-quotient-Group y x abstract compute-mul-quotient-Group : (x y : type-Group G) → mul-quotient-Group - ( map-quotient-hom-Group x) - ( map-quotient-hom-Group y) = - map-quotient-hom-Group (mul-Group G x y) + ( map-quotient-hom-Group G N x) + ( map-quotient-hom-Group G N y) = + map-quotient-hom-Group G N (mul-Group G x y) compute-mul-quotient-Group = compute-binary-map-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( binary-hom-mul-quotient-Group) hom-inv-quotient-Group : - hom-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) + hom-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) pr1 hom-inv-quotient-Group = inv-Group G - pr2 hom-inv-quotient-Group = inv-congruence-Normal-Subgroup G H + pr2 hom-inv-quotient-Group = inv-congruence-Normal-Subgroup G N - inv-quotient-Group : type-quotient-Group → type-quotient-Group + inv-quotient-Group : type-quotient-Group G N → type-quotient-Group G N inv-quotient-Group = map-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( hom-inv-quotient-Group) abstract compute-inv-quotient-Group : (x : type-Group G) → - inv-quotient-Group (map-quotient-hom-Group x) = - map-quotient-hom-Group (inv-Group G x) + inv-quotient-Group (map-quotient-hom-Group G N x) = + map-quotient-hom-Group G N (inv-Group G x) compute-inv-quotient-Group = coherence-square-map-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( hom-inv-quotient-Group) abstract left-unit-law-mul-quotient-Group : - (x : type-quotient-Group) → + (x : type-quotient-Group G N) → mul-quotient-Group unit-quotient-Group x = x left-unit-law-mul-quotient-Group = induction-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( λ y → Id-Prop - ( set-quotient-Group) + ( set-quotient-Group G N) ( mul-quotient-Group unit-quotient-Group y) ( y)) ( λ x → ( compute-mul-quotient-Group (unit-Group G) x) ∙ - ( ap map-quotient-hom-Group (left-unit-law-mul-Group G x))) + ( ap (map-quotient-hom-Group G N) (left-unit-law-mul-Group G x))) abstract right-unit-law-mul-quotient-Group : - (x : type-quotient-Group) → + (x : type-quotient-Group G N) → mul-quotient-Group x unit-quotient-Group = x right-unit-law-mul-quotient-Group = induction-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( λ y → Id-Prop - ( set-quotient-Group) + ( set-quotient-Group G N) ( mul-quotient-Group y unit-quotient-Group) ( y)) ( λ x → ( compute-mul-quotient-Group x (unit-Group G)) ∙ - ( ap map-quotient-hom-Group (right-unit-law-mul-Group G x))) + ( ap (map-quotient-hom-Group G N) (right-unit-law-mul-Group G x))) abstract associative-mul-quotient-Group : - (x y z : type-quotient-Group) → + (x y z : type-quotient-Group G N) → ( mul-quotient-Group (mul-quotient-Group x y) z) = ( mul-quotient-Group x (mul-quotient-Group y z)) associative-mul-quotient-Group = triple-induction-set-quotient' - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( λ x y z → Id-Prop - ( set-quotient-Group) + ( set-quotient-Group G N) ( mul-quotient-Group (mul-quotient-Group x y) z) ( mul-quotient-Group x (mul-quotient-Group y z))) ( λ x y z → ( ap - ( mul-quotient-Group' (map-quotient-hom-Group z)) + ( mul-quotient-Group' (map-quotient-hom-Group G N z)) ( compute-mul-quotient-Group x y)) ∙ ( compute-mul-quotient-Group (mul-Group G x y) z) ∙ ( ap - ( map-quotient-hom-Group) + ( map-quotient-hom-Group G N) ( associative-mul-Group G x y z)) ∙ ( inv ( compute-mul-quotient-Group x (mul-Group G y z))) ∙ ( ap - ( mul-quotient-Group (map-quotient-hom-Group x)) + ( mul-quotient-Group (map-quotient-hom-Group G N x)) ( inv (compute-mul-quotient-Group y z)))) abstract left-inverse-law-mul-quotient-Group : - (x : type-quotient-Group) → + (x : type-quotient-Group G N) → ( mul-quotient-Group (inv-quotient-Group x) x) = ( unit-quotient-Group) left-inverse-law-mul-quotient-Group = induction-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( λ y → Id-Prop - ( set-quotient-Group) + ( set-quotient-Group G N) ( mul-quotient-Group (inv-quotient-Group y) y) ( unit-quotient-Group)) ( λ x → ( ap - ( mul-quotient-Group' (map-quotient-hom-Group x)) + ( mul-quotient-Group' (map-quotient-hom-Group G N x)) ( compute-inv-quotient-Group x)) ∙ ( compute-mul-quotient-Group (inv-Group G x) x) ∙ ( ap - ( map-quotient-hom-Group) + ( map-quotient-hom-Group G N) ( left-inverse-law-mul-Group G x))) abstract right-inverse-law-mul-quotient-Group : - (x : type-quotient-Group) → + (x : type-quotient-Group G N) → ( mul-quotient-Group x (inv-quotient-Group x)) = ( unit-quotient-Group) right-inverse-law-mul-quotient-Group = induction-set-quotient - ( eq-rel-congruence-Normal-Subgroup G H) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( λ y → Id-Prop - ( set-quotient-Group) + ( set-quotient-Group G N) ( mul-quotient-Group y (inv-quotient-Group y)) ( unit-quotient-Group)) ( λ x → ( ap - ( mul-quotient-Group (map-quotient-hom-Group x)) + ( mul-quotient-Group (map-quotient-hom-Group G N x)) ( compute-inv-quotient-Group x)) ∙ ( compute-mul-quotient-Group x (inv-Group G x)) ∙ ( ap - ( map-quotient-hom-Group) + ( map-quotient-hom-Group G N) ( right-inverse-law-mul-Group G x))) semigroup-quotient-Group : Semigroup (l1 ⊔ l2) - pr1 semigroup-quotient-Group = set-quotient-Group + pr1 semigroup-quotient-Group = set-quotient-Group G N pr1 (pr2 semigroup-quotient-Group) = mul-quotient-Group pr2 (pr2 semigroup-quotient-Group) = associative-mul-quotient-Group @@ -340,6 +388,10 @@ module _ #### The quotient homomorphism into the quotient group +The quotient map `q : G → G/N` preserves the group structure and nullifies the +normal subgroup `N`. Both these claims follow fairly directly from the +definitions of the quotient map `q` and the group operations on `G/N`. + ```agda module _ {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) @@ -347,13 +399,11 @@ module _ abstract preserves-mul-quotient-hom-Group : - (x y : type-Group G) → - map-quotient-hom-Group G N (mul-Group G x y) = - mul-quotient-Group G N - ( map-quotient-hom-Group G N x) - ( map-quotient-hom-Group G N y) - preserves-mul-quotient-hom-Group x y = - inv (compute-mul-quotient-Group G N x y) + preserves-mul-Group G + ( quotient-Group G N) + ( map-quotient-hom-Group G N) + preserves-mul-quotient-hom-Group = + inv (compute-mul-quotient-Group G N _ _) preserves-unit-quotient-hom-Group : map-quotient-hom-Group G N (unit-Group G) = unit-quotient-Group G N @@ -377,8 +427,9 @@ module _ ( quotient-hom-Group) ( N) nullifies-normal-subgroup-quotient-hom-Group x n = - apply-effectiveness-map-quotient-hom-Group' G N - ( unit-congruence-Normal-Subgroup' G N n) + inv + ( apply-effectiveness-map-quotient-hom-Group' G N + ( unit-congruence-Normal-Subgroup' G N n)) nullifying-quotient-hom-Group : nullifying-hom-Group G (quotient-Group G N) N pr1 nullifying-quotient-hom-Group = quotient-hom-Group @@ -388,6 +439,10 @@ module _ #### Induction on quotient groups +The **induction principle** of quotient groups asserts that for any property `P` +of elements of the quotient group `G/N`, in order to show that `P x` holds for +all `x : G/N` it suffices to show that `P qy` holds for all `y : G`. + ```agda module _ {l1 l2 l3 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) @@ -399,7 +454,7 @@ module _ ((x : type-Group G) → type-Prop (P (map-quotient-hom-Group G N x))) equiv-induction-quotient-Group = equiv-induction-set-quotient - ( eq-rel-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( P) abstract @@ -408,12 +463,17 @@ module _ ((x : type-quotient-Group G N) → type-Prop (P x)) induction-quotient-Group = induction-set-quotient - ( eq-rel-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( P) ``` #### Double induction on quotient groups +The **double induction principle** of quotient groups asserts that for any +property `P` of pairs of elements of the quotient group `G/N`, in order to show +that `P x y` holds for all `x y : G/N` it suffices to show that `P qu qv` holds +for all `u v : G`. + ```agda module _ {l1 l2 l3 l4 l5 : Level} @@ -430,8 +490,8 @@ module _ ( P (map-quotient-hom-Group G N x) (map-quotient-hom-Group H M y))) equiv-double-induction-quotient-Group = equiv-double-induction-set-quotient - ( eq-rel-congruence-Normal-Subgroup G N) - ( eq-rel-congruence-Normal-Subgroup H M) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup H M) ( P) abstract @@ -443,13 +503,22 @@ module _ type-Prop (P x y)) double-induction-quotient-Group = double-induction-set-quotient - ( eq-rel-congruence-Normal-Subgroup G N) - ( eq-rel-congruence-Normal-Subgroup H M) + ( equivalence-relation-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup H M) ( P) ``` #### The universal property of the quotient group +The universal property of the quotient group `G/N` asserts that for any group +`H` the precomposition function + +```text + hom-Group G/N H → nullifying-hom-Group G H N +``` + +is an equivalence. + **Proof:** Let `G` and `H` be groups and let `N` be a normal subgroup of `G`. Our goal is to show that the precomposition function @@ -481,18 +550,18 @@ module _ top-triangle-is-quotient-group-quotient-Group : {l : Level} (H : Group l) → hom-Group (quotient-Group G N) H → - Σ ( reflecting-map-Equivalence-Relation - ( eq-rel-congruence-Normal-Subgroup G N) + Σ ( reflecting-map-equivalence-relation + ( equivalence-relation-congruence-Normal-Subgroup G N) ( type-Group H)) ( λ f → preserves-mul-Group G H (pr1 f)) top-triangle-is-quotient-group-quotient-Group H = map-Σ ( λ f → preserves-mul-Group G H (pr1 f)) ( precomp-Set-Quotient - ( eq-rel-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( set-quotient-Group G N) ( reflecting-map-quotient-map - ( eq-rel-congruence-Normal-Subgroup G N)) + ( equivalence-relation-congruence-Normal-Subgroup G N)) ( set-Group H)) ( λ f μ → preserves-mul-comp-hom-Group G @@ -523,18 +592,19 @@ module _ is-equiv-map-Σ ( λ f → preserves-mul-Group G H (pr1 f)) ( is-set-quotient-set-quotient - ( eq-rel-congruence-Normal-Subgroup G N) + ( equivalence-relation-congruence-Normal-Subgroup G N) ( set-Group H)) ( λ f → is-equiv-is-prop ( is-prop-preserves-mul-Group (quotient-Group G N) H f) ( is-prop-preserves-mul-Group G H ( f ∘ map-quotient-hom-Group G N)) - ( λ μ → + ( λ μ {a} {b} → double-induction-quotient-Group G G N N ( λ x y → Id-Prop (set-Group H) _ _) - ( λ x y → - ap f (compute-mul-quotient-Group G N x y) ∙ μ x y))) + ( λ x y → ap f (compute-mul-quotient-Group G N x y) ∙ μ) + ( a) + ( b))) abstract is-quotient-group-quotient-Group : @@ -556,6 +626,23 @@ module _ ### The unique mapping property of the quotient group +The unique mapping property of the quotient group `G/N` asserts that for any +group `H` and any `N`-nullifying group homomorphism `f : G → H`, the type of +group homomorphisms `g : G/N → H` such that `f ~ g ∘ q` is +[contractible](foundation-core.contractible-types.md). In other words, it +asserts that any nullifying group homomorphism `f : G → H` extends uniquely +along `q`: + +```text + G + | \ + q | \ f + | \ + V V + G/N -> H. + ∃! +``` + ```agda module _ {l1 l2 l3 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) @@ -635,5 +722,5 @@ module _ is-in-Normal-Subgroup G N x is-in-normal-subgroup-is-in-kernel-quotient-hom-Group {x} H = unit-congruence-Normal-Subgroup G N - ( apply-effectiveness-map-quotient-hom-Group G N H) + ( apply-effectiveness-map-quotient-hom-Group G N (inv H)) ``` diff --git a/src/group-theory/quotients-abelian-groups.lagda.md b/src/group-theory/quotients-abelian-groups.lagda.md index 7e38426b9c..e7a860a61b 100644 --- a/src/group-theory/quotients-abelian-groups.lagda.md +++ b/src/group-theory/quotients-abelian-groups.lagda.md @@ -130,31 +130,31 @@ module _ set-quotient-Ab : Set (l1 ⊔ l2) set-quotient-Ab = - quotient-Set (eq-rel-congruence-Subgroup-Ab A H) + quotient-Set (equivalence-relation-congruence-Subgroup-Ab A H) type-quotient-Ab : UU (l1 ⊔ l2) type-quotient-Ab = - set-quotient (eq-rel-congruence-Subgroup-Ab A H) + set-quotient (equivalence-relation-congruence-Subgroup-Ab A H) is-set-type-quotient-Ab : is-set type-quotient-Ab is-set-type-quotient-Ab = - is-set-set-quotient (eq-rel-congruence-Subgroup-Ab A H) + is-set-set-quotient (equivalence-relation-congruence-Subgroup-Ab A H) map-quotient-hom-Ab : type-Ab A → type-quotient-Ab map-quotient-hom-Ab = - quotient-map (eq-rel-congruence-Subgroup-Ab A H) + quotient-map (equivalence-relation-congruence-Subgroup-Ab A H) is-surjective-map-quotient-hom-Ab : is-surjective map-quotient-hom-Ab is-surjective-map-quotient-hom-Ab = - is-surjective-quotient-map (eq-rel-congruence-Subgroup-Ab A H) + is-surjective-quotient-map (equivalence-relation-congruence-Subgroup-Ab A H) is-effective-map-quotient-hom-Ab : is-effective - ( eq-rel-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) ( map-quotient-hom-Ab) is-effective-map-quotient-hom-Ab = - is-effective-quotient-map (eq-rel-congruence-Subgroup-Ab A H) + is-effective-quotient-map (equivalence-relation-congruence-Subgroup-Ab A H) apply-effectiveness-map-quotient-hom-Ab : {x y : type-Ab A} → @@ -162,7 +162,7 @@ module _ sim-congruence-Subgroup-Ab A H x y apply-effectiveness-map-quotient-hom-Ab = apply-effectiveness-quotient-map - ( eq-rel-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) apply-effectiveness-map-quotient-hom-Ab' : {x y : type-Ab A} → @@ -170,25 +170,25 @@ module _ map-quotient-hom-Ab x = map-quotient-hom-Ab y apply-effectiveness-map-quotient-hom-Ab' = apply-effectiveness-quotient-map' - ( eq-rel-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) reflecting-map-quotient-hom-Ab : - reflecting-map-Equivalence-Relation - ( eq-rel-congruence-Subgroup-Ab A H) + reflecting-map-equivalence-relation + ( equivalence-relation-congruence-Subgroup-Ab A H) ( type-quotient-Ab) reflecting-map-quotient-hom-Ab = reflecting-map-quotient-map - ( eq-rel-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) is-set-quotient-set-quotient-Ab : {l : Level} → is-set-quotient l - ( eq-rel-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) ( set-quotient-Ab) ( reflecting-map-quotient-hom-Ab) is-set-quotient-set-quotient-Ab = is-set-quotient-set-quotient - ( eq-rel-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) ``` #### The group structure on the quotient group @@ -198,10 +198,10 @@ module _ zero-quotient-Ab = map-quotient-hom-Ab (zero-Ab A) binary-hom-add-quotient-Ab : - binary-hom-Equivalence-Relation - ( eq-rel-congruence-Subgroup-Ab A H) - ( eq-rel-congruence-Subgroup-Ab A H) - ( eq-rel-congruence-Subgroup-Ab A H) + binary-hom-equivalence-relation + ( equivalence-relation-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) binary-hom-add-quotient-Ab = binary-hom-mul-quotient-Group ( group-Ab A) @@ -229,9 +229,9 @@ module _ ( normal-subgroup-Subgroup-Ab A H) hom-neg-quotient-Ab : - hom-Equivalence-Relation - ( eq-rel-congruence-Subgroup-Ab A H) - ( eq-rel-congruence-Subgroup-Ab A H) + hom-equivalence-relation + ( equivalence-relation-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) hom-neg-quotient-Ab = hom-inv-quotient-Group ( group-Ab A) @@ -294,7 +294,7 @@ module _ add-quotient-Ab x y = add-quotient-Ab y x commutative-add-quotient-Ab = double-induction-set-quotient' - ( eq-rel-congruence-Subgroup-Ab A H) + ( equivalence-relation-congruence-Subgroup-Ab A H) ( λ x y → Id-Prop ( set-quotient-Ab) @@ -302,8 +302,8 @@ module _ ( add-quotient-Ab y x)) ( λ x y → ( compute-add-quotient-Ab x y) ∙ - ( ( ap map-quotient-hom-Ab (commutative-add-Ab A x y)) ∙ - ( inv (compute-add-quotient-Ab y x)))) + ( ap map-quotient-hom-Ab (commutative-add-Ab A x y)) ∙ + ( inv (compute-add-quotient-Ab y x))) semigroup-quotient-Ab : Semigroup (l1 ⊔ l2) semigroup-quotient-Ab = diff --git a/src/group-theory/saturated-congruence-relations-commutative-monoids.lagda.md b/src/group-theory/saturated-congruence-relations-commutative-monoids.lagda.md index 282e780eaa..87a28adc87 100644 --- a/src/group-theory/saturated-congruence-relations-commutative-monoids.lagda.md +++ b/src/group-theory/saturated-congruence-relations-commutative-monoids.lagda.md @@ -41,8 +41,8 @@ module _ (R : congruence-Commutative-Monoid l2 M) where - is-saturated-congruence-commutative-monoid-Prop : Prop (l1 ⊔ l2) - is-saturated-congruence-commutative-monoid-Prop = + is-saturated-prop-congruence-Commutative-Monoid : Prop (l1 ⊔ l2) + is-saturated-prop-congruence-Commutative-Monoid = Π-Prop ( type-Commutative-Monoid M) ( λ x → @@ -61,12 +61,12 @@ module _ is-saturated-congruence-Commutative-Monoid : UU (l1 ⊔ l2) is-saturated-congruence-Commutative-Monoid = - type-Prop is-saturated-congruence-commutative-monoid-Prop + type-Prop is-saturated-prop-congruence-Commutative-Monoid is-prop-is-saturated-congruence-Commutative-Monoid : is-prop is-saturated-congruence-Commutative-Monoid is-prop-is-saturated-congruence-Commutative-Monoid = - is-prop-type-Prop is-saturated-congruence-commutative-monoid-Prop + is-prop-type-Prop is-saturated-prop-congruence-Commutative-Monoid saturated-congruence-Commutative-Monoid : {l1 : Level} (l2 : Level) (M : Commutative-Monoid l1) → UU (l1 ⊔ lsuc l2) @@ -88,10 +88,10 @@ module _ congruence-saturated-congruence-Commutative-Monoid is-saturated-saturated-congruence-Commutative-Monoid = pr2 R - eq-rel-saturated-congruence-Commutative-Monoid : - Equivalence-Relation l2 (type-Commutative-Monoid M) - eq-rel-saturated-congruence-Commutative-Monoid = - eq-rel-congruence-Commutative-Monoid M + equivalence-relation-saturated-congruence-Commutative-Monoid : + equivalence-relation l2 (type-Commutative-Monoid M) + equivalence-relation-saturated-congruence-Commutative-Monoid = + equivalence-relation-congruence-Commutative-Monoid M congruence-saturated-congruence-Commutative-Monoid prop-saturated-congruence-Commutative-Monoid : @@ -165,7 +165,7 @@ module _ mul-saturated-congruence-Commutative-Monoid : is-congruence-Commutative-Monoid M - eq-rel-saturated-congruence-Commutative-Monoid + equivalence-relation-saturated-congruence-Commutative-Monoid mul-saturated-congruence-Commutative-Monoid = mul-congruence-Commutative-Monoid M congruence-saturated-congruence-Commutative-Monoid @@ -237,11 +237,12 @@ pr1 (extensionality-saturated-congruence-Commutative-Monoid M R S) = pr2 (extensionality-saturated-congruence-Commutative-Monoid M R S) = is-equiv-relate-same-elements-eq-saturated-congruence-Commutative-Monoid M R S -eq-relate-same-elements-saturated-congruence-Commutative-Monoid : +equivalence-relationate-same-elements-saturated-congruence-Commutative-Monoid : {l1 l2 : Level} (M : Commutative-Monoid l1) (R S : saturated-congruence-Commutative-Monoid l2 M) → relate-same-elements-saturated-congruence-Commutative-Monoid M R S → R = S -eq-relate-same-elements-saturated-congruence-Commutative-Monoid M R S = +equivalence-relationate-same-elements-saturated-congruence-Commutative-Monoid + M R S = map-inv-equiv (extensionality-saturated-congruence-Commutative-Monoid M R S) ``` diff --git a/src/group-theory/saturated-congruence-relations-monoids.lagda.md b/src/group-theory/saturated-congruence-relations-monoids.lagda.md index a9bcdc36bc..ae13f5f91f 100644 --- a/src/group-theory/saturated-congruence-relations-monoids.lagda.md +++ b/src/group-theory/saturated-congruence-relations-monoids.lagda.md @@ -40,8 +40,8 @@ module _ {l1 l2 : Level} (M : Monoid l1) (R : congruence-Monoid l2 M) where - is-saturated-congruence-monoid-Prop : Prop (l1 ⊔ l2) - is-saturated-congruence-monoid-Prop = + is-saturated-prop-congruence-Monoid : Prop (l1 ⊔ l2) + is-saturated-prop-congruence-Monoid = Π-Prop ( type-Monoid M) ( λ x → @@ -59,12 +59,12 @@ module _ ( prop-congruence-Monoid M R x y))) is-saturated-congruence-Monoid : UU (l1 ⊔ l2) - is-saturated-congruence-Monoid = type-Prop is-saturated-congruence-monoid-Prop + is-saturated-congruence-Monoid = type-Prop is-saturated-prop-congruence-Monoid is-prop-is-saturated-congruence-Monoid : is-prop is-saturated-congruence-Monoid is-prop-is-saturated-congruence-Monoid = - is-prop-type-Prop is-saturated-congruence-monoid-Prop + is-prop-type-Prop is-saturated-prop-congruence-Monoid saturated-congruence-Monoid : {l1 : Level} (l2 : Level) (M : Monoid l1) → UU (l1 ⊔ lsuc l2) @@ -83,9 +83,11 @@ module _ is-saturated-congruence-Monoid M congruence-saturated-congruence-Monoid is-saturated-saturated-congruence-Monoid = pr2 R - eq-rel-saturated-congruence-Monoid : Equivalence-Relation l2 (type-Monoid M) - eq-rel-saturated-congruence-Monoid = - eq-rel-congruence-Monoid M congruence-saturated-congruence-Monoid + equivalence-relation-saturated-congruence-Monoid : + equivalence-relation l2 (type-Monoid M) + equivalence-relation-saturated-congruence-Monoid = + equivalence-relation-congruence-Monoid M + ( congruence-saturated-congruence-Monoid) prop-saturated-congruence-Monoid : Relation-Prop l2 (type-Monoid M) prop-saturated-congruence-Monoid = @@ -146,7 +148,7 @@ module _ transitive-congruence-Monoid M congruence-saturated-congruence-Monoid mul-saturated-congruence-Monoid : - is-congruence-Monoid M eq-rel-saturated-congruence-Monoid + is-congruence-Monoid M equivalence-relation-saturated-congruence-Monoid mul-saturated-congruence-Monoid = mul-congruence-Monoid M congruence-saturated-congruence-Monoid ``` @@ -207,10 +209,10 @@ pr1 (extensionality-saturated-congruence-Monoid M R S) = pr2 (extensionality-saturated-congruence-Monoid M R S) = is-equiv-relate-same-elements-eq-saturated-congruence-Monoid M R S -eq-relate-same-elements-saturated-congruence-Monoid : +equivalence-relationate-same-elements-saturated-congruence-Monoid : {l1 l2 : Level} (M : Monoid l1) (R S : saturated-congruence-Monoid l2 M) → relate-same-elements-saturated-congruence-Monoid M R S → R = S -eq-relate-same-elements-saturated-congruence-Monoid M R S = +equivalence-relationate-same-elements-saturated-congruence-Monoid M R S = map-inv-equiv (extensionality-saturated-congruence-Monoid M R S) ``` diff --git a/src/group-theory/semigroups.lagda.md b/src/group-theory/semigroups.lagda.md index ee6a306094..d90ca26f2f 100644 --- a/src/group-theory/semigroups.lagda.md +++ b/src/group-theory/semigroups.lagda.md @@ -22,7 +22,7 @@ open import foundation.universe-levels **Semigroups** are [sets](foundation-core.sets.md) equipped with an associative binary operation. -## Definition +## Definitions ```agda has-associative-mul : {l : Level} (X : UU l) → UU l @@ -78,8 +78,8 @@ module _ mul-Semigroup y (mul-Semigroup x z) left-swap-mul-Semigroup H = ( inv (associative-mul-Semigroup _ _ _)) ∙ - ( ( ap (mul-Semigroup' _) H) ∙ - ( associative-mul-Semigroup _ _ _)) + ( ap (mul-Semigroup' _) H) ∙ + ( associative-mul-Semigroup _ _ _) right-swap-mul-Semigroup : {x y z : type-Semigroup} → mul-Semigroup y z = mul-Semigroup z y → @@ -87,8 +87,8 @@ module _ mul-Semigroup (mul-Semigroup x z) y right-swap-mul-Semigroup H = ( associative-mul-Semigroup _ _ _) ∙ - ( ( ap (mul-Semigroup _) H) ∙ - ( inv (associative-mul-Semigroup _ _ _))) + ( ap (mul-Semigroup _) H) ∙ + ( inv (associative-mul-Semigroup _ _ _)) interchange-mul-mul-Semigroup : {x y z w : type-Semigroup} → mul-Semigroup y z = mul-Semigroup z y → @@ -96,11 +96,11 @@ module _ mul-Semigroup (mul-Semigroup x z) (mul-Semigroup y w) interchange-mul-mul-Semigroup H = ( associative-mul-Semigroup _ _ _) ∙ - ( ( ap (mul-Semigroup _) (left-swap-mul-Semigroup H)) ∙ - ( inv (associative-mul-Semigroup _ _ _))) + ( ap (mul-Semigroup _) (left-swap-mul-Semigroup H)) ∙ + ( inv (associative-mul-Semigroup _ _ _)) ``` -### Equip a type with the structure of a semigroup +### The structure of a semigroup ```agda structure-semigroup : diff --git a/src/group-theory/stabilizer-groups-concrete-group-actions.lagda.md b/src/group-theory/stabilizer-groups-concrete-group-actions.lagda.md index fed1309b3e..8f0cae64b8 100644 --- a/src/group-theory/stabilizer-groups-concrete-group-actions.lagda.md +++ b/src/group-theory/stabilizer-groups-concrete-group-actions.lagda.md @@ -27,9 +27,13 @@ open import group-theory.transitive-concrete-group-actions ## Idea -The stabilizer of an element `x : X point` of a concrete G-set `X : BG → Set` is -the connected component of `point , x` in the type of orbits of `X`. Its loop -space is indeed the type of elements `g : G` such that `g x = x`. +The **stabilizer** of an element `x : X point` of a +[concrete `G`-set](group-theory.concrete-group-actions.md) `X : BG → Set` is the +[connected component](foundation.connected-components.md) at the element +`(point , x)` in the type of +[orbits](group-theory.orbits-concrete-group-actions.md) of `X`. This type is a +indeed concrete group of which the underlying type is the type of elements +`g : G` such that `g x = x`. ## Definition diff --git a/src/group-theory/stabilizer-groups.lagda.md b/src/group-theory/stabilizer-groups.lagda.md index 7008f8310f..8c876cba70 100644 --- a/src/group-theory/stabilizer-groups.lagda.md +++ b/src/group-theory/stabilizer-groups.lagda.md @@ -26,11 +26,11 @@ of elements `g` of `G` that keep `x` fixed. ```agda module _ - {l1 l2 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) + {l1 l2 : Level} (G : Group l1) (X : action-Group G l2) where - type-stabilizer-Abstract-Group-Action : - type-Abstract-Group-Action G X → UU (l1 ⊔ l2) - type-stabilizer-Abstract-Group-Action x = - Σ (type-Group G) (λ g → Id (mul-Abstract-Group-Action G X g x) x) + type-stabilizer-action-Group : + type-action-Group G X → UU (l1 ⊔ l2) + type-stabilizer-action-Group x = + Σ (type-Group G) (λ g → Id (mul-action-Group G X g x) x) ``` diff --git a/src/group-theory/subgroups-abelian-groups.lagda.md b/src/group-theory/subgroups-abelian-groups.lagda.md index 23ab8e4c7f..71053f1e95 100644 --- a/src/group-theory/subgroups-abelian-groups.lagda.md +++ b/src/group-theory/subgroups-abelian-groups.lagda.md @@ -263,8 +263,8 @@ module _ preserves-add-inclusion-Subgroup-Ab : preserves-add-Ab (ab-Subgroup-Ab A B) A (map-inclusion-Subgroup-Ab A B) - preserves-add-inclusion-Subgroup-Ab = - preserves-mul-inclusion-Subgroup (group-Ab A) B + preserves-add-inclusion-Subgroup-Ab {x} {y} = + preserves-mul-inclusion-Subgroup (group-Ab A) B {x} {y} preserves-zero-inclusion-Subgroup-Ab : preserves-zero-Ab (ab-Subgroup-Ab A B) A (map-inclusion-Subgroup-Ab A B) @@ -276,8 +276,8 @@ module _ ( ab-Subgroup-Ab A B) ( A) ( map-inclusion-Subgroup-Ab A B) - preserves-negatives-inclusion-Subgroup-Ab = - preserves-inverses-inclusion-Subgroup (group-Ab A) B + preserves-negatives-inclusion-Subgroup-Ab {x} = + preserves-inverses-inclusion-Subgroup (group-Ab A) B {x} hom-inclusion-Subgroup-Ab : hom-Ab (ab-Subgroup-Ab A B) A hom-inclusion-Subgroup-Ab = hom-inclusion-Subgroup (group-Ab A) B @@ -460,10 +460,10 @@ module _ #### The left equivalence relation obtained from a subgroup ```agda - left-eq-rel-congruence-Subgroup-Ab : - Equivalence-Relation l2 (type-Ab A) - left-eq-rel-congruence-Subgroup-Ab = - left-eq-rel-congruence-Normal-Subgroup + left-equivalence-relation-congruence-Subgroup-Ab : + equivalence-relation l2 (type-Ab A) + left-equivalence-relation-congruence-Subgroup-Ab = + left-equivalence-relation-congruence-Normal-Subgroup ( group-Ab A) ( normal-subgroup-Subgroup-Ab A B) @@ -521,16 +521,17 @@ module _ ( group-Ab A) ( normal-subgroup-Subgroup-Ab A B) - eq-rel-congruence-Subgroup-Ab : Equivalence-Relation l2 (type-Ab A) - eq-rel-congruence-Subgroup-Ab = - eq-rel-congruence-Normal-Subgroup + equivalence-relation-congruence-Subgroup-Ab : + equivalence-relation l2 (type-Ab A) + equivalence-relation-congruence-Subgroup-Ab = + equivalence-relation-congruence-Normal-Subgroup ( group-Ab A) ( normal-subgroup-Subgroup-Ab A B) relate-same-elements-left-sim-congruence-Subgroup-Ab : - relate-same-elements-Equivalence-Relation - ( eq-rel-congruence-Subgroup-Ab) - ( left-eq-rel-congruence-Subgroup-Ab) + relate-same-elements-equivalence-relation + ( equivalence-relation-congruence-Subgroup-Ab) + ( left-equivalence-relation-congruence-Subgroup-Ab) relate-same-elements-left-sim-congruence-Subgroup-Ab = relate-same-elements-left-sim-congruence-Normal-Subgroup ( group-Ab A) @@ -539,7 +540,7 @@ module _ add-congruence-Subgroup-Ab : is-congruence-Group ( group-Ab A) - ( eq-rel-congruence-Subgroup-Ab) + ( equivalence-relation-congruence-Subgroup-Ab) add-congruence-Subgroup-Ab = mul-congruence-Normal-Subgroup ( group-Ab A) @@ -646,7 +647,7 @@ module _ is-section-subgroup-congruence-Ab : congruence-Subgroup-Ab A (subgroup-congruence-Ab A R) = R is-section-subgroup-congruence-Ab = - eq-relate-same-elements-congruence-Ab A + equivalence-relationate-same-elements-congruence-Ab A ( congruence-Subgroup-Ab A (subgroup-congruence-Ab A R)) ( R) ( relate-same-elements-congruence-subgroup-congruence-Ab) diff --git a/src/group-theory/subgroups-generated-by-elements-groups.lagda.md b/src/group-theory/subgroups-generated-by-elements-groups.lagda.md index e2c2747d6f..fe9afdb421 100644 --- a/src/group-theory/subgroups-generated-by-elements-groups.lagda.md +++ b/src/group-theory/subgroups-generated-by-elements-groups.lagda.md @@ -11,7 +11,9 @@ open import elementary-number-theory.group-of-integers open import elementary-number-theory.integers open import foundation.dependent-pair-types +open import foundation.function-types open import foundation.identity-types +open import foundation.images-subtypes open import foundation.logical-equivalences open import foundation.singleton-subtypes open import foundation.subtypes @@ -19,23 +21,26 @@ open import foundation.universe-levels open import group-theory.free-groups-with-one-generator open import group-theory.groups +open import group-theory.homomorphisms-groups open import group-theory.images-of-group-homomorphisms open import group-theory.integer-powers-of-elements-groups open import group-theory.subgroups open import group-theory.subgroups-generated-by-subsets-groups open import group-theory.subsets-groups +open import group-theory.trivial-subgroups ``` ## Idea -The **subgroup generated by an element** `g` of a +The **subgroup generated by an element** `x` of a [group](group-theory.groups.md) `G` is the [subgroup generated by](group-theory.subgroups-generated-by-subsets-groups.md) -the [standard singleton subset](foundation.singleton-subtypes.md) `{g}`. In +the [standard singleton subset](foundation.singleton-subtypes.md) `{x}`. In other words, it is the least [subgroup](group-theory.subgroups.md) of `G` that -contains the element `g`. +contains the element `x`. In informal writing, the subgroup generated by `x` is +denoted by `⟨x⟩`. ## Definitions @@ -43,25 +48,25 @@ contains the element `g`. ```agda module _ - {l1 : Level} (G : Group l1) (g : type-Group G) + {l1 : Level} (G : Group l1) (x : type-Group G) where is-subgroup-generated-by-element-Group : {l2 : Level} (H : Subgroup l2 G) → UUω is-subgroup-generated-by-element-Group H = - {l : Level} (K : Subgroup l G) → is-in-Subgroup G K g ↔ leq-Subgroup G H K + {l : Level} (K : Subgroup l G) → is-in-Subgroup G K x ↔ leq-Subgroup G H K contains-element-is-subgroup-generated-by-element-Group : {l2 : Level} (H : Subgroup l2 G) → is-subgroup-generated-by-element-Group H → - is-in-Subgroup G H g + is-in-Subgroup G H x contains-element-is-subgroup-generated-by-element-Group H α = backward-implication (α H) (refl-leq-Subgroup G H) leq-subgroup-is-subgroup-generated-by-element-Group : {l2 l3 : Level} (H : Subgroup l2 G) (K : Subgroup l3 G) → is-subgroup-generated-by-element-Group H → - is-in-Subgroup G K g → leq-Subgroup G H K + is-in-Subgroup G K x → leq-Subgroup G H K leq-subgroup-is-subgroup-generated-by-element-Group H K α = forward-implication (α K) ``` @@ -70,13 +75,16 @@ module _ ```agda module _ - {l1 : Level} (G : Group l1) (g : type-Group G) + {l1 : Level} (G : Group l1) (x : type-Group G) where + generating-subset-subgroup-element-Group : subset-Group l1 G + generating-subset-subgroup-element-Group = + subtype-standard-singleton-subtype (set-Group G) x + subgroup-element-Group : Subgroup l1 G subgroup-element-Group = - subgroup-subset-Group G - ( subtype-standard-singleton-subtype (set-Group G) g) + subgroup-subset-Group G generating-subset-subgroup-element-Group subset-subgroup-element-Group : subset-Group l1 G subset-subgroup-element-Group = subset-Subgroup G subgroup-element-Group @@ -85,14 +93,14 @@ module _ is-in-subgroup-element-Group = is-in-Subgroup G subgroup-element-Group is-closed-under-eq-subgroup-element-Group : - {x y : type-Group G} → is-in-subgroup-element-Group x → - x = y → is-in-subgroup-element-Group y + {y z : type-Group G} → is-in-subgroup-element-Group y → + y = z → is-in-subgroup-element-Group z is-closed-under-eq-subgroup-element-Group = is-closed-under-eq-Subgroup G subgroup-element-Group is-closed-under-eq-subgroup-element-Group' : - {x y : type-Group G} → is-in-subgroup-element-Group y → - x = y → is-in-subgroup-element-Group x + {y z : type-Group G} → is-in-subgroup-element-Group z → + y = z → is-in-subgroup-element-Group y is-closed-under-eq-subgroup-element-Group' = is-closed-under-eq-Subgroup' G subgroup-element-Group @@ -113,37 +121,38 @@ module _ abstract is-subgroup-generated-by-element-subgroup-element-Group : - is-subgroup-generated-by-element-Group G g subgroup-element-Group + is-subgroup-generated-by-element-Group G x subgroup-element-Group is-subgroup-generated-by-element-subgroup-element-Group H = logical-equivalence-reasoning - is-in-Subgroup G H g - ↔ ( subtype-standard-singleton-subtype (set-Group G) g ⊆ + is-in-Subgroup G H x + ↔ ( subtype-standard-singleton-subtype (set-Group G) x ⊆ subset-Subgroup G H) by - is-least-subtype-containing-element-Set - ( set-Group G) - ( g) - ( subset-Subgroup G H) + inv-iff + ( is-least-subtype-containing-element-Set + ( set-Group G) + ( x) + ( subset-Subgroup G H)) ↔ leq-Subgroup G subgroup-element-Group H by inv-iff - ( adjoint-relation-subgroup-subset-Group G - ( subtype-standard-singleton-subtype (set-Group G) g) + ( is-subgroup-generated-by-subset-subgroup-subset-Group G + ( subtype-standard-singleton-subtype (set-Group G) x) ( H)) abstract contains-element-subgroup-element-Group : - is-in-subgroup-element-Group g + is-in-subgroup-element-Group x contains-element-subgroup-element-Group = contains-subset-subgroup-subset-Group G - ( subtype-standard-singleton-subtype (set-Group G) g) - ( g) + ( subtype-standard-singleton-subtype (set-Group G) x) + ( x) ( refl) abstract leq-subgroup-element-Group : {l : Level} (H : Subgroup l G) → - is-in-Subgroup G H g → leq-Subgroup G subgroup-element-Group H + is-in-Subgroup G H x → leq-Subgroup G subgroup-element-Group H leq-subgroup-element-Group H = forward-implication ( is-subgroup-generated-by-element-subgroup-element-Group H) @@ -158,11 +167,11 @@ image of the ```agda module _ - {l1 : Level} (G : Group l1) (g : type-Group G) + {l1 : Level} (G : Group l1) (x : type-Group G) where image-hom-element-Group : Subgroup l1 G - image-hom-element-Group = image-hom-Group ℤ-Group G (hom-element-Group G g) + image-hom-element-Group = image-hom-Group ℤ-Group G (hom-element-Group G x) subset-image-hom-element-Group : subset-Group l1 G subset-image-hom-element-Group = @@ -172,51 +181,51 @@ module _ is-in-image-hom-element-Group = is-in-Subgroup G image-hom-element-Group is-closed-under-eq-image-hom-element-Group : - {x y : type-Group G} → is-in-image-hom-element-Group x → - x = y → is-in-image-hom-element-Group y + {y z : type-Group G} → is-in-image-hom-element-Group y → + y = z → is-in-image-hom-element-Group z is-closed-under-eq-image-hom-element-Group = is-closed-under-eq-Subgroup G image-hom-element-Group is-closed-under-eq-image-hom-element-Group' : - {x y : type-Group G} → is-in-image-hom-element-Group y → - x = y → is-in-image-hom-element-Group x + {y z : type-Group G} → is-in-image-hom-element-Group z → + y = z → is-in-image-hom-element-Group y is-closed-under-eq-image-hom-element-Group' = is-closed-under-eq-Subgroup' G image-hom-element-Group is-image-image-hom-element-Group : - is-image-hom-Group ℤ-Group G (hom-element-Group G g) image-hom-element-Group + is-image-hom-Group ℤ-Group G (hom-element-Group G x) image-hom-element-Group is-image-image-hom-element-Group = - is-image-image-hom-Group ℤ-Group G (hom-element-Group G g) + is-image-image-hom-Group ℤ-Group G (hom-element-Group G x) contains-values-image-hom-element-Group : - (k : ℤ) → is-in-image-hom-element-Group (map-hom-element-Group G g k) + (k : ℤ) → is-in-image-hom-element-Group (map-hom-element-Group G x k) contains-values-image-hom-element-Group = - contains-values-image-hom-Group ℤ-Group G (hom-element-Group G g) + contains-values-image-hom-Group ℤ-Group G (hom-element-Group G x) contains-element-image-hom-element-Group : - is-in-image-hom-element-Group g + is-in-image-hom-element-Group x contains-element-image-hom-element-Group = is-closed-under-eq-image-hom-element-Group ( contains-values-image-hom-element-Group one-ℤ) - ( right-unit-law-mul-Group G g) + ( right-unit-law-mul-Group G x) leq-image-hom-element-Group : {l : Level} (H : Subgroup l G) → - is-in-Subgroup G H g → leq-Subgroup G image-hom-element-Group H + is-in-Subgroup G H x → leq-Subgroup G image-hom-element-Group H leq-image-hom-element-Group H u = leq-image-hom-Group ( ℤ-Group) ( G) - ( hom-element-Group G g) + ( hom-element-Group G x) ( H) - ( λ k → is-closed-under-powers-int-Subgroup G H k g u) + ( λ k → is-closed-under-powers-int-Subgroup G H k x u) is-subgroup-generated-by-element-image-hom-element-Group : - is-subgroup-generated-by-element-Group G g image-hom-element-Group + is-subgroup-generated-by-element-Group G x image-hom-element-Group pr1 (is-subgroup-generated-by-element-image-hom-element-Group K) = leq-image-hom-element-Group K pr2 (is-subgroup-generated-by-element-image-hom-element-Group K) u = - u g contains-element-image-hom-element-Group + u x contains-element-image-hom-element-Group ``` ## Properties @@ -225,55 +234,169 @@ module _ ```agda module _ - {l1 : Level} (G : Group l1) (g : type-Group G) + {l1 : Level} (G : Group l1) (x : type-Group G) where contains-powers-subgroup-element-Group : - (k : ℤ) → is-in-subgroup-element-Group G g (integer-power-Group G k g) + (k : ℤ) → is-in-subgroup-element-Group G x (integer-power-Group G k x) contains-powers-subgroup-element-Group k = is-closed-under-powers-int-Subgroup G - ( subgroup-element-Group G g) + ( subgroup-element-Group G x) ( k) - ( g) - ( contains-element-subgroup-element-Group G g) + ( x) + ( contains-element-subgroup-element-Group G x) ``` ### Any two subgroups generated by the same element contain the same elements ```agda module _ - {l1 l2 l3 : Level} (G : Group l1) (g : type-Group G) - (H : Subgroup l2 G) (Hu : is-subgroup-generated-by-element-Group G g H) - (K : Subgroup l3 G) (Ku : is-subgroup-generated-by-element-Group G g K) + {l1 l2 l3 : Level} (G : Group l1) (x : type-Group G) + (H : Subgroup l2 G) (Hu : is-subgroup-generated-by-element-Group G x H) + (K : Subgroup l3 G) (Ku : is-subgroup-generated-by-element-Group G x K) where has-same-elements-is-subgroup-generated-by-element-Group : has-same-elements-Subgroup G H K - pr1 (has-same-elements-is-subgroup-generated-by-element-Group x) = - leq-subgroup-is-subgroup-generated-by-element-Group G g H K Hu - ( contains-element-is-subgroup-generated-by-element-Group G g K Ku) - ( x) - pr2 (has-same-elements-is-subgroup-generated-by-element-Group x) = - leq-subgroup-is-subgroup-generated-by-element-Group G g K H Ku - ( contains-element-is-subgroup-generated-by-element-Group G g H Hu) - ( x) + pr1 (has-same-elements-is-subgroup-generated-by-element-Group y) = + leq-subgroup-is-subgroup-generated-by-element-Group G x H K Hu + ( contains-element-is-subgroup-generated-by-element-Group G x K Ku) + ( y) + pr2 (has-same-elements-is-subgroup-generated-by-element-Group y) = + leq-subgroup-is-subgroup-generated-by-element-Group G x K H Ku + ( contains-element-is-subgroup-generated-by-element-Group G x H Hu) + ( y) +``` + +### Any subgroup that has the same elements as the subgroup generated by `x` satisfies the universal property of the subgroup generated by `x` + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (x : type-Group G) (H : Subgroup l2 G) + where + + is-subgroup-generated-by-element-has-same-elements-Subgroup : + has-same-elements-Subgroup G (subgroup-element-Group G x) H → + is-subgroup-generated-by-element-Group G x H + pr1 (is-subgroup-generated-by-element-has-same-elements-Subgroup p U) u = + transitive-leq-Subgroup G H (subgroup-element-Group G x) U + ( forward-implication + ( is-subgroup-generated-by-element-subgroup-element-Group G x U) + ( u)) + ( leq-has-same-elements-Subgroup' G (subgroup-element-Group G x) H p) + pr2 (is-subgroup-generated-by-element-has-same-elements-Subgroup p U) q = + q x + ( forward-implication (p x) (contains-element-subgroup-element-Group G x)) ``` ### The subgroup generated by an element has the same elements as the image of the intial group homomorphism `ℤ → G` mapping `1` to `g` ```agda module _ - {l : Level} (G : Group l) (g : type-Group G) + {l : Level} (G : Group l) (x : type-Group G) where has-same-elements-image-hom-element-subgroup-element-Group : has-same-elements-Subgroup G - ( image-hom-element-Group G g) - ( subgroup-element-Group G g) + ( image-hom-element-Group G x) + ( subgroup-element-Group G x) has-same-elements-image-hom-element-subgroup-element-Group = - has-same-elements-is-subgroup-generated-by-element-Group G g - ( image-hom-element-Group G g) - ( is-subgroup-generated-by-element-image-hom-element-Group G g) - ( subgroup-element-Group G g) - ( is-subgroup-generated-by-element-subgroup-element-Group G g) + has-same-elements-is-subgroup-generated-by-element-Group G x + ( image-hom-element-Group G x) + ( is-subgroup-generated-by-element-image-hom-element-Group G x) + ( subgroup-element-Group G x) + ( is-subgroup-generated-by-element-subgroup-element-Group G x) +``` + +### The image of the subgroup `⟨x⟩` generated by `x` under a group homomorphism `f` is the subgroup `⟨f(x)⟩` generated by the element `f(x)` + +There are three ways to state this fact: + +1. The image of the subgroup `⟨x⟩` under the group homomorphism `f` has the same + elements as the subgroup `⟨f(x)⟩`. +2. The subgroup `⟨f(x)⟩` satisfies the universal property of the image of the + group `⟨x⟩` under the group homomorphism `f`. +3. The image of the subgroup `⟨x⟩` under the group homomorphism `f` satisfies + the universal property of the subgroup generated by the element `f x`. + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + (x : type-Group G) + where + + compute-image-subgroup-element-Group : + has-same-elements-Subgroup H + ( im-hom-Subgroup G H f (subgroup-element-Group G x)) + ( subgroup-element-Group H (map-hom-Group G H f x)) + compute-image-subgroup-element-Group h = + logical-equivalence-reasoning + is-in-im-hom-Subgroup G H f (subgroup-element-Group G x) h + ↔ is-in-subgroup-subset-Group H + ( im-subtype + ( map-hom-Group G H f) + ( subtype-standard-singleton-subtype (set-Group G) x)) + ( h) + by + compute-image-subgroup-subset-Group G H f + ( subtype-standard-singleton-subtype (set-Group G) x) + ( h) + ↔ is-in-subgroup-element-Group H (map-hom-Group G H f x) h + by + inv-iff + ( has-same-elements-subgroup-subset-has-same-elements-subset-Group H + ( generating-subset-subgroup-element-Group H _) + ( im-subtype + ( map-hom-Group G H f) + ( subtype-standard-singleton-subtype (set-Group G) x)) + ( compute-im-singleton-subtype + ( set-Group G) + ( set-Group H) + ( map-hom-Group G H f) + ( x)) + ( h)) + + is-image-subgroup-element-Group : + is-image-subgroup-hom-Group G H f + ( subgroup-element-Group G x) + ( subgroup-element-Group H (map-hom-Group G H f x)) + is-image-subgroup-element-Group = + is-image-subgroup-has-same-elements-Subgroup G H f + ( subgroup-element-Group G x) + ( subgroup-element-Group H (map-hom-Group G H f x)) + ( compute-image-subgroup-element-Group) + + is-subgroup-generated-by-element-image-subgroup-element-Group : + is-subgroup-generated-by-element-Group H + ( map-hom-Group G H f x) + ( im-hom-Subgroup G H f (subgroup-element-Group G x)) + is-subgroup-generated-by-element-image-subgroup-element-Group = + is-subgroup-generated-by-element-has-same-elements-Subgroup H + ( map-hom-Group G H f x) + ( im-hom-Subgroup G H f (subgroup-element-Group G x)) + ( inv-iff ∘ compute-image-subgroup-element-Group) +``` + +### The subgroup `⟨x⟩` is trivial if and only if `unit-Group G = x` + +```agda +module _ + {l1 : Level} (G : Group l1) + where + + is-trivial-subgroup-unit-Group : + is-trivial-Subgroup G (subgroup-element-Group G (unit-Group G)) + is-trivial-subgroup-unit-Group = + leq-subgroup-element-Group G (unit-Group G) (trivial-Subgroup G) refl + + is-trivial-subgroup-element-Group : + (x : type-Group G) → + is-unit-Group' G x → is-trivial-Subgroup G (subgroup-element-Group G x) + is-trivial-subgroup-element-Group ._ refl = is-trivial-subgroup-unit-Group + + is-unit-is-trivial-subgroup-element-Group : + (x : type-Group G) → + is-trivial-Subgroup G (subgroup-element-Group G x) → is-unit-Group' G x + is-unit-is-trivial-subgroup-element-Group x H = + H x (contains-element-subgroup-element-Group G x) ``` diff --git a/src/group-theory/subgroups-generated-by-families-of-elements-groups.lagda.md b/src/group-theory/subgroups-generated-by-families-of-elements-groups.lagda.md index 357e91594c..34c8ab61bf 100644 --- a/src/group-theory/subgroups-generated-by-families-of-elements-groups.lagda.md +++ b/src/group-theory/subgroups-generated-by-families-of-elements-groups.lagda.md @@ -8,8 +8,10 @@ module group-theory.subgroups-generated-by-families-of-elements-groups where ```agda open import foundation.dependent-pair-types +open import foundation.function-types open import foundation.identity-types open import foundation.images +open import foundation.images-subtypes open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.subtypes @@ -17,9 +19,12 @@ open import foundation.universal-property-image open import foundation.universe-levels open import group-theory.groups +open import group-theory.homomorphisms-groups +open import group-theory.images-of-group-homomorphisms open import group-theory.subgroups open import group-theory.subgroups-generated-by-subsets-groups open import group-theory.subsets-groups +open import group-theory.trivial-subgroups ``` @@ -31,7 +36,9 @@ The **subgroup generated by** `(xᵢ)ᵢ` is the [subgroup generated by the subset](group-theory.subgroups-generated-by-subsets-groups.md) of all the elements of the form `xᵢ` for some `i` in the indexing type of `(xᵢ)ᵢ`. In other words, the subgroup generated by `(xᵢ)ᵢ` is the least -[subgroup](group-theory.subgroups.md) that contains all the elements `xᵢ`. +[subgroup](group-theory.subgroups.md) that contains all the elements `xᵢ`. In +informal writing, the subgroup generated by the family of elements `(xᵢ)ᵢ` is +denoted by `⟨xᵢ⟩` ## Definitions @@ -48,10 +55,10 @@ module _ {l4 : Level} (K : Subgroup l4 G) → leq-Subgroup G H K ↔ ((i : I) → is-in-Subgroup G K (x i)) - contains-family-of-elements-is-subgroup-generated-by-family-of-elements-Group : + contains-element-is-subgroup-generated-by-family-of-elements-Group : is-subgroup-generated-by-family-of-elements-Group → (i : I) → is-in-Subgroup G H (x i) - contains-family-of-elements-is-subgroup-generated-by-family-of-elements-Group + contains-element-is-subgroup-generated-by-family-of-elements-Group U = forward-implication (U H) (refl-leq-Subgroup G H) @@ -124,7 +131,10 @@ module _ leq-Subgroup G subgroup-family-of-elements-Group H ↔ generating-subset-subgroup-family-of-elements-Group ⊆ subset-Subgroup G H - by adjoint-relation-subgroup-subset-Group G (subtype-im x) H + by + is-subgroup-generated-by-subset-subgroup-subset-Group G + ( subtype-im x) + ( H) ↔ ((i : I) → is-in-Subgroup G H (x i)) by is-image-subtype-subtype-im x (subset-Subgroup G H) @@ -147,3 +157,138 @@ module _ ( is-subgroup-generated-by-family-of-elements-subgroup-family-of-elements-Group H) ``` + +## Properties + +### Any two subgroups generated by the same family of elements contain the same elements + +```agda +module _ + {l1 l2 l3 l4 : Level} (G : Group l1) {I : UU l2} (x : I → type-Group G) + (H : Subgroup l3 G) + (Hu : is-subgroup-generated-by-family-of-elements-Group G x H) + (K : Subgroup l4 G) + (Ku : is-subgroup-generated-by-family-of-elements-Group G x K) + where + + has-same-elements-is-subgroup-generated-by-family-of-elements-Group : + has-same-elements-Subgroup G H K + pr1 (has-same-elements-is-subgroup-generated-by-family-of-elements-Group y) = + leq-subgroup-is-subgroup-generated-by-family-of-elements-Group G x H Hu K + ( contains-element-is-subgroup-generated-by-family-of-elements-Group G x + ( K) + ( Ku)) + ( y) + pr2 (has-same-elements-is-subgroup-generated-by-family-of-elements-Group y) = + leq-subgroup-is-subgroup-generated-by-family-of-elements-Group G x K Ku H + ( contains-element-is-subgroup-generated-by-family-of-elements-Group G x + ( H) + ( Hu)) + ( y) +``` + +### Any subgroup that has the same elements as the subgroup generated by a family of elements `x` satisfies the universal property of the subgroup generated by the family of elements `x` + +```agda +module _ + {l1 l2 l3 : Level} (G : Group l1) {I : UU l2} (x : I → type-Group G) + (H : Subgroup l3 G) + where + + is-subgroup-generated-by-family-of-elements-has-same-elements-Subgroup : + has-same-elements-Subgroup G (subgroup-family-of-elements-Group G x) H → + is-subgroup-generated-by-family-of-elements-Group G x H + is-subgroup-generated-by-family-of-elements-has-same-elements-Subgroup p U = + logical-equivalence-reasoning + leq-Subgroup G H U + ↔ subtype-im x ⊆ subset-Subgroup G U + by + is-subgroup-generated-by-subset-has-same-elements-Subgroup G + ( subtype-im x) + ( H) + ( p) + ( U) + ↔ ((i : I) → is-in-Subgroup G U (x i)) + by + is-image-subtype-subtype-im x (subset-Subgroup G U) +``` + +### The image of the subgroup `⟨x⟩` generated by a family of elements `x` under a group homomorphism `f` is the subgroup `⟨f ∘ x⟩` generated by the family of elements `f ∘ x` + +There are three ways to state this fact: + +1. The image of the subgroup `⟨x⟩` under the group homomorphism `f` has the same + elements as the subgroup `⟨f ∘ x⟩`. +2. The subgroup `⟨f ∘ x⟩` satisfies the universal property of the image of the + group `⟨x⟩` under the group homomorphism `f`. +3. The image of the subgroup `⟨x⟩` under the group homomorphism `f` satisfies + the universal property of the subgroup generated by the family of elements + `f ∘ x`. + +```agda +module _ + {l1 l2 l3 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + {I : UU l3} (x : I → type-Group G) + where + + compute-image-subgroup-family-of-elements-Group : + has-same-elements-Subgroup H + ( im-hom-Subgroup G H f (subgroup-family-of-elements-Group G x)) + ( subgroup-family-of-elements-Group H (map-hom-Group G H f ∘ x)) + compute-image-subgroup-family-of-elements-Group h = + logical-equivalence-reasoning + is-in-im-hom-Subgroup G H f (subgroup-family-of-elements-Group G x) h + ↔ is-in-subgroup-subset-Group H + ( im-subtype (map-hom-Group G H f) (subtype-im x)) + ( h) + by + compute-image-subgroup-subset-Group G H f (subtype-im x) h + ↔ is-in-subgroup-family-of-elements-Group H (map-hom-Group G H f ∘ x) h + by + inv-iff + ( has-same-elements-subgroup-subset-has-same-elements-subset-Group H + ( subtype-im (map-hom-Group G H f ∘ x)) + ( im-subtype (map-hom-Group G H f) (subtype-im x)) + ( compute-subtype-im-comp (map-hom-Group G H f) x) + ( h)) + + is-image-subgroup-family-of-elements-Group : + is-image-subgroup-hom-Group G H f + ( subgroup-family-of-elements-Group G x) + ( subgroup-family-of-elements-Group H (map-hom-Group G H f ∘ x)) + is-image-subgroup-family-of-elements-Group = + is-image-subgroup-has-same-elements-Subgroup G H f + ( subgroup-family-of-elements-Group G x) + ( subgroup-family-of-elements-Group H (map-hom-Group G H f ∘ x)) + ( compute-image-subgroup-family-of-elements-Group) + + is-subgroup-generated-by-family-of-elements-image-subgroup-family-of-elements-Group : + is-subgroup-generated-by-family-of-elements-Group H + ( map-hom-Group G H f ∘ x) + ( im-hom-Subgroup G H f (subgroup-family-of-elements-Group G x)) + is-subgroup-generated-by-family-of-elements-image-subgroup-family-of-elements-Group = + is-subgroup-generated-by-family-of-elements-has-same-elements-Subgroup H + ( map-hom-Group G H f ∘ x) + ( im-hom-Subgroup G H f (subgroup-family-of-elements-Group G x)) + ( inv-iff ∘ compute-image-subgroup-family-of-elements-Group) +``` + +### The subgroup `⟨xᵢ⟩` is trivial if and only if `unit-Group G = xᵢ` for every `i` + +```agda +module _ + {l1 l2 : Level} (G : Group l1) {I : UU l2} (x : I → type-Group G) + where + + is-trivial-subgroup-family-of-elements-Group : + ((i : I) → is-unit-Group' G (x i)) → + is-trivial-Subgroup G (subgroup-family-of-elements-Group G x) + is-trivial-subgroup-family-of-elements-Group = + leq-subgroup-family-of-elements-Group G x (trivial-Subgroup G) + + is-family-of-units-is-trivial-subgroup-family-of-elements-Group : + is-trivial-Subgroup G (subgroup-family-of-elements-Group G x) → + (i : I) → is-unit-Group' G (x i) + is-family-of-units-is-trivial-subgroup-family-of-elements-Group H i = + H (x i) (contains-element-subgroup-family-of-elements-Group G x i) +``` diff --git a/src/group-theory/subgroups-generated-by-subsets-groups.lagda.md b/src/group-theory/subgroups-generated-by-subsets-groups.lagda.md index a99f441305..d4f6728889 100644 --- a/src/group-theory/subgroups-generated-by-subsets-groups.lagda.md +++ b/src/group-theory/subgroups-generated-by-subsets-groups.lagda.md @@ -14,26 +14,37 @@ open import foundation.dependent-pair-types open import foundation.fibers-of-maps open import foundation.function-types open import foundation.identity-types +open import foundation.images-subtypes open import foundation.logical-equivalences open import foundation.powersets open import foundation.propositional-truncations open import foundation.propositions +open import foundation.pullbacks-subtypes +open import foundation.singleton-subtypes open import foundation.subtypes open import foundation.unit-type open import foundation.universe-levels open import group-theory.conjugation open import group-theory.groups +open import group-theory.homomorphisms-groups +open import group-theory.images-of-group-homomorphisms open import group-theory.normal-subgroups +open import group-theory.pullbacks-subgroups open import group-theory.subgroups open import group-theory.subsets-groups +open import group-theory.trivial-subgroups open import lists.concatenation-lists open import lists.lists +open import order-theory.commuting-squares-of-galois-connections-large-posets +open import order-theory.commuting-squares-of-order-preserving-maps-large-posets open import order-theory.galois-connections-large-posets open import order-theory.order-preserving-maps-large-posets open import order-theory.order-preserving-maps-large-preorders +open import order-theory.similarity-of-elements-large-posets +open import order-theory.similarity-of-order-preserving-maps-large-posets open import univalent-combinatorics.standard-finite-types ``` @@ -46,7 +57,7 @@ If `S` is a subset of a group `G`, then the subgroup generated by `S` is the least subgroup containing `S`. This idea expresses the universal property of the subgroup generated by a subset of a group. We will construct it as the type of finite combinations of elements in `S` and of inverses of elements in `S`. In -informal writing we will write `(S)` for the subgroup generated by `S`. +informal writing we will write `⟨S⟩` for the subgroup generated by `S`. ## Definitions @@ -55,50 +66,27 @@ informal writing we will write `(S)` for the subgroup generated by `S`. ```agda module _ {l1 l2 l3 : Level} (G : Group l1) (S : subset-Group l2 G) - (U : Subgroup l3 G) (H : S ⊆ subset-Subgroup G U) + (U : Subgroup l3 G) where is-subgroup-generated-by-subset-Group : UUω is-subgroup-generated-by-subset-Group = {l : Level} (U' : Subgroup l G) → - S ⊆ subset-Subgroup G U' → - subset-Subgroup G U ⊆ subset-Subgroup G U' -``` - -### The adjoint relation of subgroups generated by a subset of a group - -```agda -module _ - {l1 l2 l3 : Level} (G : Group l1) (S : subset-Group l2 G) - (U : Subgroup l3 G) - where - - adjoint-relation-subgroup-generated-by-subset-Group : UUω - adjoint-relation-subgroup-generated-by-subset-Group = - {l : Level} (U' : Subgroup l G) → - (leq-Subgroup G U U') ↔ (S ⊆ subset-Subgroup G U') + leq-Subgroup G U U' ↔ (S ⊆ subset-Subgroup G U') - contains-subset-adjoint-relation-subset-generated-by-subset-Group : - adjoint-relation-subgroup-generated-by-subset-Group → + contains-subset-is-subgroup-generated-by-subset-Group : + is-subgroup-generated-by-subset-Group → S ⊆ subset-Subgroup G U - contains-subset-adjoint-relation-subset-generated-by-subset-Group α = + contains-subset-is-subgroup-generated-by-subset-Group α = forward-implication (α U) (refl-leq-Subgroup G U) - is-subgroup-generated-by-subset-adjoint-relation-Group : - (α : adjoint-relation-subgroup-generated-by-subset-Group) → - is-subgroup-generated-by-subset-Group G S U - ( contains-subset-adjoint-relation-subset-generated-by-subset-Group α) - is-subgroup-generated-by-subset-adjoint-relation-Group α U' = + contains-subgroup-generated-by-subset-is-subgroup-generated-by-sbset-Group : + (α : is-subgroup-generated-by-subset-Group) → + {l : Level} (U' : Subgroup l G) → (S ⊆ subset-Subgroup G U') → + leq-Subgroup G U U' + contains-subgroup-generated-by-subset-is-subgroup-generated-by-sbset-Group + α U' = backward-implication (α U') - - adjoint-relation-is-subgroup-generated-by-subset-Group : - (H : S ⊆ subset-Subgroup G U) → - is-subgroup-generated-by-subset-Group G S U H → - adjoint-relation-subgroup-generated-by-subset-Group - pr1 (adjoint-relation-is-subgroup-generated-by-subset-Group H α K) L x y = - L x (H x y) - pr2 (adjoint-relation-is-subgroup-generated-by-subset-Group H α K) = - α K ``` ### Construction of subgroups generated by a subset of a group @@ -116,11 +104,11 @@ module _ ev-formal-combination-subset-Group : formal-combination-subset-Group → type-Group G ev-formal-combination-subset-Group nil = unit-Group G - ev-formal-combination-subset-Group (cons (pair (inl (inr star)) x) l) = + ev-formal-combination-subset-Group (cons (inl (inr star) , x) l) = mul-Group G ( inv-Group G (inclusion-subtype S x)) ( ev-formal-combination-subset-Group l) - ev-formal-combination-subset-Group (cons (pair (inr star) x) l) = + ev-formal-combination-subset-Group (cons (inr star , x) l) = mul-Group G (inclusion-subtype S x) (ev-formal-combination-subset-Group l) preserves-concat-ev-formal-combination-subset-Group : @@ -133,35 +121,35 @@ module _ preserves-concat-ev-formal-combination-subset-Group nil v = inv (left-unit-law-mul-Group G (ev-formal-combination-subset-Group v)) preserves-concat-ev-formal-combination-subset-Group - ( cons (pair (inl (inr star)) x) u) + ( cons (inl (inr star) , x) u) ( v) = ( ap ( mul-Group G (inv-Group G (inclusion-subtype S x))) ( preserves-concat-ev-formal-combination-subset-Group u v)) ∙ - ( inv - ( associative-mul-Group G - ( inv-Group G (inclusion-subtype S x)) - ( ev-formal-combination-subset-Group u) - ( ev-formal-combination-subset-Group v))) + ( inv + ( associative-mul-Group G + ( inv-Group G (inclusion-subtype S x)) + ( ev-formal-combination-subset-Group u) + ( ev-formal-combination-subset-Group v))) preserves-concat-ev-formal-combination-subset-Group - ( cons (pair (inr star) x) u) + ( cons (inr star , x) u) ( v) = ( ap ( mul-Group G (inclusion-subtype S x)) ( preserves-concat-ev-formal-combination-subset-Group u v)) ∙ - ( inv - ( associative-mul-Group G - (inclusion-subtype S x) - ( ev-formal-combination-subset-Group u) - ( ev-formal-combination-subset-Group v))) + ( inv + ( associative-mul-Group G + ( inclusion-subtype S x) + ( ev-formal-combination-subset-Group u) + ( ev-formal-combination-subset-Group v))) inv-formal-combination-subset-Group : formal-combination-subset-Group → formal-combination-subset-Group inv-formal-combination-subset-Group nil = nil - inv-formal-combination-subset-Group (cons (pair s x) u) = + inv-formal-combination-subset-Group (cons (s , x) u) = concat-list ( inv-formal-combination-subset-Group u) - ( unit-list (pair (succ-Fin 2 s) x)) + ( unit-list (succ-Fin 2 s , x)) preserves-inv-ev-formal-combination-subset-Group : (u : formal-combination-subset-Group) → @@ -172,40 +160,32 @@ module _ preserves-inv-ev-formal-combination-subset-Group nil = inv (inv-unit-Group G) preserves-inv-ev-formal-combination-subset-Group - ( cons (pair (inl (inr star)) x) u) = + ( cons (inl (inr star) , x) u) = ( preserves-concat-ev-formal-combination-subset-Group ( inv-formal-combination-subset-Group u) - ( unit-list (pair (inr star) x))) ∙ - ( ( ap - ( λ y → - mul-Group G y (mul-Group G (inclusion-subtype S x) (unit-Group G))) - ( preserves-inv-ev-formal-combination-subset-Group u)) ∙ - ( ( ap - ( mul-Group G (inv-Group G (ev-formal-combination-subset-Group u))) - ( ( right-unit-law-mul-Group G (inclusion-subtype S x)) ∙ - ( inv (inv-inv-Group G (inclusion-subtype S x))))) ∙ - ( inv - ( distributive-inv-mul-Group G - ( inv-Group G (inclusion-subtype S x)) - ( ev-formal-combination-subset-Group u))))) + ( unit-list (inr star , x))) ∙ + ( ap + ( λ y → + mul-Group G y (mul-Group G (inclusion-subtype S x) (unit-Group G))) + ( preserves-inv-ev-formal-combination-subset-Group u)) ∙ + ( ap + ( mul-Group G (inv-Group G (ev-formal-combination-subset-Group u))) + ( ( right-unit-law-mul-Group G (inclusion-subtype S x)) ∙ + ( inv (inv-inv-Group G (inclusion-subtype S x))))) ∙ + ( inv (distributive-inv-mul-Group G)) preserves-inv-ev-formal-combination-subset-Group - ( cons (pair (inr star) x) u) = + ( cons (inr star , x) u) = ( preserves-concat-ev-formal-combination-subset-Group ( inv-formal-combination-subset-Group u) - ( unit-list (pair (inl (inr star)) x))) ∙ - ( ( ap - ( λ y → - mul-Group G - ( y) - ( mul-Group G (inv-Group G (inclusion-subtype S x)) (unit-Group G))) - ( preserves-inv-ev-formal-combination-subset-Group u)) ∙ - ( ( ap - ( mul-Group G (inv-Group G (ev-formal-combination-subset-Group u))) - ( right-unit-law-mul-Group G (inv-Group G (inclusion-subtype S x)))) ∙ - ( inv - ( distributive-inv-mul-Group G - (inclusion-subtype S x) - ( ev-formal-combination-subset-Group u))))) + ( unit-list (inl (inr star) , x))) ∙ + ( ap + ( mul-Group' G + ( mul-Group G (inv-Group G (inclusion-subtype S x)) (unit-Group G))) + ( preserves-inv-ev-formal-combination-subset-Group u)) ∙ + ( ap + ( mul-Group G (inv-Group G (ev-formal-combination-subset-Group u))) + ( right-unit-law-mul-Group G (inv-Group G (inclusion-subtype S x)))) ∙ + ( inv (distributive-inv-mul-Group G)) ``` #### The subgroup generated by a subset of a group @@ -225,51 +205,43 @@ module _ contains-unit-subgroup-subset-Group : contains-unit-subset-Group G subset-subgroup-subset-Group - contains-unit-subgroup-subset-Group = unit-trunc-Prop (pair nil refl) + contains-unit-subgroup-subset-Group = unit-trunc-Prop (nil , refl) is-closed-under-multiplication-subgroup-subset-Group' : - (x y : type-Group G) → + {x y : type-Group G} → subset-subgroup-subset-Group' x → subset-subgroup-subset-Group' y → subset-subgroup-subset-Group' (mul-Group G x y) - pr1 - ( is-closed-under-multiplication-subgroup-subset-Group' x y - ( pair l p) (pair k q)) = + pr1 (is-closed-under-multiplication-subgroup-subset-Group' (l , p) (k , q)) = concat-list l k - pr2 - ( is-closed-under-multiplication-subgroup-subset-Group' x y - ( pair l p) (pair k q)) = + pr2 (is-closed-under-multiplication-subgroup-subset-Group' (l , p) (k , q)) = ( preserves-concat-ev-formal-combination-subset-Group l k) ∙ - ( ap-mul-Group G p q) + ( ap-mul-Group G p q) is-closed-under-multiplication-subgroup-subset-Group : is-closed-under-multiplication-subset-Group G subset-subgroup-subset-Group - is-closed-under-multiplication-subgroup-subset-Group x y H K = - apply-universal-property-trunc-Prop H - ( subset-subgroup-subset-Group (mul-Group G x y)) - ( λ H' → - apply-universal-property-trunc-Prop K - ( subset-subgroup-subset-Group (mul-Group G x y)) - ( λ K' → - unit-trunc-Prop - ( is-closed-under-multiplication-subgroup-subset-Group' - x y H' K'))) + is-closed-under-multiplication-subgroup-subset-Group H K = + apply-twice-universal-property-trunc-Prop H K + ( subset-subgroup-subset-Group _) + ( λ H' K' → + unit-trunc-Prop + ( is-closed-under-multiplication-subgroup-subset-Group' H' K')) is-closed-under-inverses-subgroup-subset-Group' : - (x : type-Group G) → + {x : type-Group G} → subset-subgroup-subset-Group' x → subset-subgroup-subset-Group' (inv-Group G x) - pr1 (is-closed-under-inverses-subgroup-subset-Group' x (pair l p)) = + pr1 (is-closed-under-inverses-subgroup-subset-Group' (l , p)) = inv-formal-combination-subset-Group l - pr2 (is-closed-under-inverses-subgroup-subset-Group' x (pair l p)) = + pr2 (is-closed-under-inverses-subgroup-subset-Group' (l , p)) = ( preserves-inv-ev-formal-combination-subset-Group l) ∙ - ( ap (inv-Group G) p) + ( ap (inv-Group G) p) is-closed-under-inverses-subgroup-subset-Group : is-closed-under-inverses-subset-Group G subset-subgroup-subset-Group - is-closed-under-inverses-subgroup-subset-Group x H = + is-closed-under-inverses-subgroup-subset-Group H = apply-universal-property-trunc-Prop H - ( subset-subgroup-subset-Group (inv-Group G x)) - ( unit-trunc-Prop ∘ is-closed-under-inverses-subgroup-subset-Group' x) + ( subset-subgroup-subset-Group _) + ( unit-trunc-Prop ∘ is-closed-under-inverses-subgroup-subset-Group') subgroup-subset-Group : Subgroup (l1 ⊔ l2) G pr1 subgroup-subset-Group = subset-subgroup-subset-Group @@ -283,9 +255,8 @@ module _ S ⊆ subset-subgroup-subset-Group contains-subset-subgroup-subset-Group s H = unit-trunc-Prop - ( pair - ( unit-list (pair (inr star) (pair s H))) - ( right-unit-law-mul-Group G (inclusion-subtype S (pair s H)))) + ( ( unit-list (inr star , s , H)) , + ( right-unit-law-mul-Group G (inclusion-subtype S (s , H)))) contains-formal-combinations-Subgroup : {l3 : Level} (U : Subgroup l3 G) → S ⊆ subset-Subgroup G U → @@ -293,32 +264,24 @@ module _ is-in-Subgroup G U (ev-formal-combination-subset-Group x) contains-formal-combinations-Subgroup U H nil = contains-unit-Subgroup G U - contains-formal-combinations-Subgroup U H - ( cons (pair (inl (inr star)) (pair s K)) c) = + contains-formal-combinations-Subgroup U H (cons (inl (inr star) , s , K) c) = is-closed-under-multiplication-Subgroup G U - ( inv-Group G (inclusion-subtype S (pair s K))) - ( ev-formal-combination-subset-Group c) - ( is-closed-under-inverses-Subgroup G U s (H s K)) + ( is-closed-under-inverses-Subgroup G U (H s K)) ( contains-formal-combinations-Subgroup U H c) - contains-formal-combinations-Subgroup - ( U) - ( H) - ( cons (pair (inr star) (pair s K)) c) = + contains-formal-combinations-Subgroup U H (cons (inr star , s , K) c) = is-closed-under-multiplication-Subgroup G U - ( inclusion-subtype S (pair s K)) - ( ev-formal-combination-subset-Group c) ( H s K) ( contains-formal-combinations-Subgroup U H c) - is-subgroup-generated-by-subset-subgroup-subset-Group : - is-subgroup-generated-by-subset-Group G S - ( subgroup-subset-Group) - ( contains-subset-subgroup-subset-Group) - is-subgroup-generated-by-subset-subgroup-subset-Group U' K x H = - apply-universal-property-trunc-Prop H (subset-Subgroup G U' x) P + leq-subgroup-subset-Group : + {l : Level} (U : Subgroup l G) → (S ⊆ subset-Subgroup G U) → + leq-Subgroup G subgroup-subset-Group U + leq-subgroup-subset-Group + U K x H = + apply-universal-property-trunc-Prop H (subset-Subgroup G U x) P where - P : subset-subgroup-subset-Group' x → is-in-Subgroup G U' x - P (pair c refl) = contains-formal-combinations-Subgroup U' K c + P : subset-subgroup-subset-Group' x → is-in-Subgroup G U x + P (c , refl) = contains-formal-combinations-Subgroup U K c ``` #### The subset relation is preserved by generating subgroups @@ -333,7 +296,9 @@ module _ S ⊆ T → leq-Subgroup G (subgroup-subset-Group G S) (subgroup-subset-Group G T) preserves-order-subgroup-subset-Group S T H = - is-subgroup-generated-by-subset-subgroup-subset-Group G S + leq-subgroup-subset-Group + ( G) + ( S) ( subgroup-subset-Group G T) ( transitive-leq-subtype ( S) @@ -342,8 +307,23 @@ module _ ( contains-subset-subgroup-subset-Group G T) ( H)) + has-same-elements-subgroup-subset-has-same-elements-subset-Group : + {l2 l3 : Level} (S : subset-Group l2 G) (T : subset-Group l3 G) → + has-same-elements-subtype S T → + has-same-elements-Subgroup G + ( subgroup-subset-Group G S) + ( subgroup-subset-Group G T) + pr1 + ( has-same-elements-subgroup-subset-has-same-elements-subset-Group S T H x) + = + preserves-order-subgroup-subset-Group S T (forward-implication ∘ H) x + pr2 + ( has-same-elements-subgroup-subset-has-same-elements-subset-Group S T H x) + = + preserves-order-subgroup-subset-Group T S (backward-implication ∘ H) x + subgroup-subset-hom-large-poset-Group : - hom-set-Large-Poset + hom-Large-Poset ( λ l2 → l1 ⊔ l2) ( powerset-Large-Poset (type-Group G)) ( Subgroup-Large-Poset G) @@ -353,22 +333,25 @@ module _ ( preserves-order-subgroup-subset-Group) ``` -#### The Galois connection `S ↦ (S)` +#### The Galois connection `S ↦ ⟨S⟩` ```agda module _ {l1 : Level} (G : Group l1) where - adjoint-relation-subgroup-subset-Group : + is-subgroup-generated-by-subset-subgroup-subset-Group : {l2 : Level} (S : subset-Group l2 G) → - adjoint-relation-subgroup-generated-by-subset-Group G S - ( subgroup-subset-Group G S) - adjoint-relation-subgroup-subset-Group S = - adjoint-relation-is-subgroup-generated-by-subset-Group G S + is-subgroup-generated-by-subset-Group G S ( subgroup-subset-Group G S) + pr1 (is-subgroup-generated-by-subset-subgroup-subset-Group S U) H = + transitive-leq-subtype S + ( subset-subgroup-subset-Group G S) + ( subset-Subgroup G U) + ( H) ( contains-subset-subgroup-subset-Group G S) - ( is-subgroup-generated-by-subset-subgroup-subset-Group G S) + pr2 (is-subgroup-generated-by-subset-subgroup-subset-Group S U) = + leq-subgroup-subset-Group G S U subgroup-subset-galois-connection-Group : galois-connection-Large-Poset @@ -384,12 +367,12 @@ module _ subset-subgroup-hom-large-poset-Group G adjoint-relation-galois-connection-Large-Poset subgroup-subset-galois-connection-Group S = - adjoint-relation-subgroup-subset-Group S + is-subgroup-generated-by-subset-subgroup-subset-Group S ``` ## Properties -### If `S` is closed under conjugation, then `(S)` is normal +### If `S` is closed under conjugation, then `⟨S⟩` is normal ```agda module _ @@ -451,3 +434,185 @@ module _ ( unit-trunc-Prop ∘ is-normal-is-closed-under-conjugation-subgroup-subset-Group' x y) ``` + +### Any subgroup `H` of `G` has the same elements as `⟨S⟩` if and only if `H` is generated by `S` + +```agda +module _ + {l1 l2 l3 : Level} (G : Group l1) (S : subset-Group l2 G) + (H : Subgroup l3 G) + where + + is-subgroup-generated-by-subset-has-same-elements-Subgroup : + has-same-elements-Subgroup G (subgroup-subset-Group G S) H → + is-subgroup-generated-by-subset-Group G S H + is-subgroup-generated-by-subset-has-same-elements-Subgroup s = + is-lower-element-sim-galois-connection-Large-Poset + ( powerset-Large-Poset (type-Group G)) + ( Subgroup-Large-Poset G) + ( subgroup-subset-galois-connection-Group G) + ( S) + ( H) + ( similar-has-same-elements-Subgroup G (subgroup-subset-Group G S) H s) + + is-subgroup-generated-by-subset-has-same-elements-Subgroup' : + has-same-elements-Subgroup G H (subgroup-subset-Group G S) → + is-subgroup-generated-by-subset-Group G S H + is-subgroup-generated-by-subset-has-same-elements-Subgroup' s = + is-lower-element-sim-galois-connection-Large-Poset + ( powerset-Large-Poset (type-Group G)) + ( Subgroup-Large-Poset G) + ( subgroup-subset-galois-connection-Group G) + ( S) + ( H) + ( symmetric-sim-Large-Poset + ( Subgroup-Large-Poset G) + ( H) + ( subgroup-subset-Group G S) + ( similar-has-same-elements-Subgroup G H (subgroup-subset-Group G S) s)) + + has-same-elements-is-subgroup-generated-by-subset-Subgroup : + is-subgroup-generated-by-subset-Group G S H → + has-same-elements-Subgroup G (subgroup-subset-Group G S) H + has-same-elements-is-subgroup-generated-by-subset-Subgroup g = + has-same-elements-similar-Subgroup G + ( subgroup-subset-Group G S) + ( H) + ( sim-is-lower-element-galois-connection-Large-Poset + ( powerset-Large-Poset (type-Group G)) + ( Subgroup-Large-Poset G) + ( subgroup-subset-galois-connection-Group G) + ( S) + ( H) + ( g)) +``` + +### If `f : G → H` is a group homomorphism, then `im f ⟨S⟩ = ⟨im f S⟩` + +There are three ways to state this fact: + +1. The subgroup `im f ⟨S⟩` has the same elements as the subgroup `⟨im f S⟩`. +2. The subgroup `⟨im f S⟩` satisfies the universal property of the image of the + group `⟨S⟩` under the group homomorphism `f`. +3. The subgroup `im f ⟨S⟩` satisfies the universal property of the subgroup + generated by the subset `im f S` of `H`. + +**Proof:** We prove the first statement. Note that the square + +```text + pullback f + subset-Group G <------------ subset-Group H + ∧ ∧ + | | + K ↦ UK | | K ↦ UK + | | + Subgroup G <---------------- Subgroup H + pullback f +``` + +[commutes](order-theory.commuting-squares-of-order-preserving-maps-large-posets.md) +by reflexivity. By the adjointness relations of +[Galois connections](order-theory.galois-connections-large-posets.md), this +implies that the square + +```text + im f + subset-Group G ------> subset-Group H + | | + S ↦ ⟨S⟩ | | S ↦ ⟨S⟩ + | | + V V + Subgroup G ----------> Subgroup H + im f +``` + +commutes. The remaining two statements follow directly from the fact that if a +subgroup has the same elements as the image of a subgroup (resp. the subgroup +generated by a subset), then it satisfies the universal property of the image of +a subgroup (resp. the subgroup generated by a subset). + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + where + + coherence-square-image-subgroup-subset-Group : + coherence-square-hom-Large-Poset + ( powerset-Large-Poset (type-Group G)) + ( Subgroup-Large-Poset G) + ( powerset-Large-Poset (type-Group H)) + ( Subgroup-Large-Poset H) + ( im-subtype-hom-Large-Poset (map-hom-Group G H f)) + ( subgroup-subset-hom-large-poset-Group G) + ( subgroup-subset-hom-large-poset-Group H) + ( im-subgroup-hom-large-poset-hom-Group G H f) + coherence-square-image-subgroup-subset-Group = + lower-coherence-square-upper-coherence-square-galois-connection-Large-Poset + ( powerset-Large-Poset (type-Group G)) + ( Subgroup-Large-Poset G) + ( powerset-Large-Poset (type-Group H)) + ( Subgroup-Large-Poset H) + ( image-pullback-subtype-galois-connection-Large-Poset + ( map-hom-Group G H f)) + ( subgroup-subset-galois-connection-Group G) + ( subgroup-subset-galois-connection-Group H) + ( image-pullback-galois-connection-Subgroup G H f) + ( coherence-square-pullback-subset-Subgroup G H f) + + compute-image-subgroup-subset-Group : + {l3 : Level} (S : subset-Group l3 G) → + has-same-elements-Subgroup H + ( im-hom-Subgroup G H f (subgroup-subset-Group G S)) + ( subgroup-subset-Group H (im-subtype (map-hom-Group G H f) S)) + compute-image-subgroup-subset-Group S = + has-same-elements-similar-Subgroup H + ( im-hom-Subgroup G H f (subgroup-subset-Group G S)) + ( subgroup-subset-Group H (im-subtype (map-hom-Group G H f) S)) + ( coherence-square-image-subgroup-subset-Group S) + + is-subgroup-generated-by-subset-image-subgroup-subset-Group : + {l3 : Level} (S : subset-Group l3 G) → + is-subgroup-generated-by-subset-Group H + ( im-subtype (map-hom-Group G H f) S) + ( im-hom-Subgroup G H f (subgroup-subset-Group G S)) + is-subgroup-generated-by-subset-image-subgroup-subset-Group S = + is-subgroup-generated-by-subset-has-same-elements-Subgroup' H + ( im-subtype (map-hom-Group G H f) S) + ( im-hom-Subgroup G H f (subgroup-subset-Group G S)) + ( compute-image-subgroup-subset-Group S) + + is-image-im-subgroup-subset-Group : + {l3 : Level} (S : subset-Group l3 G) → + is-image-subgroup-hom-Group G H f + ( subgroup-subset-Group G S) + ( subgroup-subset-Group H (im-subtype (map-hom-Group G H f) S)) + is-image-im-subgroup-subset-Group S = + is-image-subgroup-has-same-elements-Subgroup G H f + ( subgroup-subset-Group G S) + ( subgroup-subset-Group H (im-subtype (map-hom-Group G H f) S)) + ( compute-image-subgroup-subset-Group S) +``` + +### The subgroup `⟨S⟩` is trivial if and only if `S ⊆ {e}` + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (S : subset-Group l2 G) + where + + is-trivial-subgroup-subset-Group : + S ⊆ subtype-standard-singleton-subtype (set-Group G) (unit-Group G) → + is-trivial-Subgroup G (subgroup-subset-Group G S) + is-trivial-subgroup-subset-Group = + leq-subgroup-subset-Group G S (trivial-Subgroup G) + + leq-singleton-subtype-unit-is-trivial-subgroup-subset-Group : + is-trivial-Subgroup G (subgroup-subset-Group G S) → + S ⊆ subtype-standard-singleton-subtype (set-Group G) (unit-Group G) + leq-singleton-subtype-unit-is-trivial-subgroup-subset-Group H = + transitive-leq-subtype S + ( subset-subgroup-subset-Group G S) + ( subtype-standard-singleton-subtype (set-Group G) (unit-Group G)) + ( H) + ( contains-subset-subgroup-subset-Group G S) +``` diff --git a/src/group-theory/subgroups.lagda.md b/src/group-theory/subgroups.lagda.md index 92cbe67ed3..5d47fc6021 100644 --- a/src/group-theory/subgroups.lagda.md +++ b/src/group-theory/subgroups.lagda.md @@ -21,6 +21,7 @@ open import foundation.function-types open import foundation.identity-types open import foundation.injective-maps open import foundation.large-binary-relations +open import foundation.logical-equivalences open import foundation.powersets open import foundation.propositional-truncations open import foundation.propositions @@ -34,6 +35,7 @@ open import group-theory.groups open import group-theory.homomorphisms-groups open import group-theory.integer-powers-of-elements-groups open import group-theory.semigroups +open import group-theory.subsemigroups open import group-theory.subsets-groups open import order-theory.large-posets @@ -42,6 +44,7 @@ open import order-theory.order-preserving-maps-large-posets open import order-theory.order-preserving-maps-large-preorders open import order-theory.posets open import order-theory.preorders +open import order-theory.similarity-of-elements-large-posets ``` @@ -69,13 +72,9 @@ module _ is-closed-under-multiplication-prop-subset-Group : Prop (l1 ⊔ l2) is-closed-under-multiplication-prop-subset-Group = - Π-Prop - ( type-Group G) - ( λ x → - Π-Prop - ( type-Group G) - ( λ y → - hom-Prop (P x) (hom-Prop (P y) (P (mul-Group G x y))))) + is-closed-under-multiplication-prop-subset-Semigroup + ( semigroup-Group G) + ( P) is-closed-under-multiplication-subset-Group : UU (l1 ⊔ l2) is-closed-under-multiplication-subset-Group = @@ -88,7 +87,7 @@ module _ is-closed-under-inverses-prop-subset-Group : Prop (l1 ⊔ l2) is-closed-under-inverses-prop-subset-Group = - Π-Prop + Π-Prop' ( type-Group G) ( λ x → hom-Prop (P x) (P (inv-Group G x))) @@ -187,7 +186,7 @@ module _ is-in-Subgroup (inv-Group G x) → is-in-Subgroup x is-closed-under-inverses-Subgroup' x p = is-closed-under-eq-Subgroup - ( is-closed-under-inverses-Subgroup (inv-Group G x) p) + ( is-closed-under-inverses-Subgroup p) ( inv-inv-Group G x) is-in-subgroup-left-factor-Subgroup : @@ -197,10 +196,8 @@ module _ is-in-subgroup-left-factor-Subgroup x y p q = is-closed-under-eq-Subgroup ( is-closed-under-multiplication-Subgroup - ( mul-Group G x y) - ( inv-Group G y) ( p) - ( is-closed-under-inverses-Subgroup y q)) + ( is-closed-under-inverses-Subgroup q)) ( is-retraction-right-div-Group G y x) is-in-subgroup-right-factor-Subgroup : @@ -210,9 +207,7 @@ module _ is-in-subgroup-right-factor-Subgroup x y p q = is-closed-under-eq-Subgroup ( is-closed-under-multiplication-Subgroup - ( inv-Group G x) - ( mul-Group G x y) - ( is-closed-under-inverses-Subgroup x q) + ( is-closed-under-inverses-Subgroup q) ( p)) ( is-retraction-left-div-Group G x y) @@ -221,13 +216,11 @@ module _ is-in-Subgroup x → is-in-Subgroup (integer-power-Group G k x) is-closed-under-powers-int-Subgroup (inl zero-ℕ) x H = is-closed-under-eq-Subgroup' - ( is-closed-under-inverses-Subgroup x H) + ( is-closed-under-inverses-Subgroup H) ( right-unit-law-mul-Group G (inv-Group G x)) is-closed-under-powers-int-Subgroup (inl (succ-ℕ k)) x H = is-closed-under-multiplication-Subgroup - ( inv-Group G x) - ( integer-power-Group G (inl k) x) - ( is-closed-under-inverses-Subgroup x H) + ( is-closed-under-inverses-Subgroup H) ( is-closed-under-powers-int-Subgroup (inl k) x H) is-closed-under-powers-int-Subgroup (inr (inl _)) x H = contains-unit-Subgroup @@ -235,11 +228,13 @@ module _ is-closed-under-eq-Subgroup' H (right-unit-law-mul-Group G x) is-closed-under-powers-int-Subgroup (inr (inr (succ-ℕ k))) x H = is-closed-under-multiplication-Subgroup - ( x) - ( integer-power-Group G (inr (inr k)) x) ( H) ( is-closed-under-powers-int-Subgroup (inr (inr k)) x H) + subsemigroup-Subgroup : Subsemigroup l2 (semigroup-Group G) + pr1 subsemigroup-Subgroup = subset-Subgroup + pr2 subsemigroup-Subgroup = is-closed-under-multiplication-Subgroup + is-emb-subset-Subgroup : {l1 l2 : Level} (G : Group l1) → is-emb (subset-Subgroup {l2 = l2} G) @@ -273,7 +268,7 @@ module _ mul-Subgroup : (x y : type-group-Subgroup) → type-group-Subgroup pr1 (mul-Subgroup x y) = mul-Group G (pr1 x) (pr1 y) pr2 (mul-Subgroup x y) = - is-closed-under-multiplication-Subgroup G H (pr1 x) (pr1 y) (pr2 x) (pr2 y) + is-closed-under-multiplication-Subgroup G H (pr2 x) (pr2 y) associative-mul-Subgroup : (x y z : type-group-Subgroup) → @@ -301,7 +296,7 @@ module _ inv-Subgroup : type-group-Subgroup → type-group-Subgroup pr1 (inv-Subgroup x) = inv-Group G (pr1 x) pr2 (inv-Subgroup x) = - is-closed-under-inverses-Subgroup G H (pr1 x) (pr2 x) + is-closed-under-inverses-Subgroup G H (pr2 x) left-inverse-law-mul-Subgroup : ( x : type-group-Subgroup) → @@ -347,7 +342,7 @@ module _ ( group-Subgroup G H) ( G) ( map-inclusion-Subgroup G H) - preserves-mul-inclusion-Subgroup x y = refl + preserves-mul-inclusion-Subgroup = refl preserves-unit-inclusion-Subgroup : preserves-unit-Group @@ -361,12 +356,12 @@ module _ ( group-Subgroup G H) ( G) ( map-inclusion-Subgroup G H) - preserves-inverses-inclusion-Subgroup x = refl + preserves-inverses-inclusion-Subgroup = refl hom-inclusion-Subgroup : hom-Group (group-Subgroup G H) G pr1 hom-inclusion-Subgroup = inclusion-Subgroup G H - pr2 hom-inclusion-Subgroup = preserves-mul-inclusion-Subgroup + pr2 hom-inclusion-Subgroup {x} {y} = preserves-mul-inclusion-Subgroup {x} {y} ``` ## Properties @@ -496,7 +491,7 @@ preserves-order-subset-Subgroup G H K = id subset-subgroup-hom-large-poset-Group : {l1 : Level} (G : Group l1) → - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( Subgroup-Large-Poset G) ( powerset-Large-Poset (type-Group G)) @@ -519,6 +514,40 @@ module _ is-set-Subgroup = is-set-type-Poset (Subgroup-Poset _ G) ``` +### Subgroups have the same elements if and only if they are similar in the poset of subgroups + +**Note:** We don't abbreviate the word `similar` in the name of the similarity +relation on subgroups, because below we will define for each subgroup `H` of `G` +two equivalence relations on `G`, which we will call `right-sim-Subgroup` and +`left-sim-Subgroup`. + +```agda +module _ + {l1 l2 l3 : Level} (G : Group l1) (H : Subgroup l2 G) (K : Subgroup l3 G) + where + + similar-Subgroup : UU (l1 ⊔ l2 ⊔ l3) + similar-Subgroup = sim-Large-Poset (Subgroup-Large-Poset G) H K + + has-same-elements-similar-Subgroup : + similar-Subgroup → has-same-elements-Subgroup G H K + pr1 (has-same-elements-similar-Subgroup (s , t) x) = s x + pr2 (has-same-elements-similar-Subgroup (s , t) x) = t x + + leq-has-same-elements-Subgroup : + has-same-elements-Subgroup G H K → leq-Subgroup G H K + leq-has-same-elements-Subgroup s x = forward-implication (s x) + + leq-has-same-elements-Subgroup' : + has-same-elements-Subgroup G H K → leq-Subgroup G K H + leq-has-same-elements-Subgroup' s x = backward-implication (s x) + + similar-has-same-elements-Subgroup : + has-same-elements-Subgroup G H K → similar-Subgroup + pr1 (similar-has-same-elements-Subgroup s) = leq-has-same-elements-Subgroup s + pr2 (similar-has-same-elements-Subgroup s) = leq-has-same-elements-Subgroup' s +``` + ### Every subgroup induces two equivalence relations #### The equivalence relation where `x ~ y` if and only if `x⁻¹ y ∈ H` @@ -536,9 +565,9 @@ module _ is-prop-right-sim-Subgroup x y = is-prop-is-in-Subgroup G H (left-div-Group G x y) - prop-right-eq-rel-Subgroup : (x y : type-Group G) → Prop l2 - pr1 (prop-right-eq-rel-Subgroup x y) = right-sim-Subgroup x y - pr2 (prop-right-eq-rel-Subgroup x y) = + prop-right-equivalence-relation-Subgroup : (x y : type-Group G) → Prop l2 + pr1 (prop-right-equivalence-relation-Subgroup x y) = right-sim-Subgroup x y + pr2 (prop-right-equivalence-relation-Subgroup x y) = is-prop-right-sim-Subgroup x y refl-right-sim-Subgroup : is-reflexive right-sim-Subgroup @@ -553,9 +582,7 @@ module _ tr ( is-in-Subgroup G H) ( inv-left-div-Group G x y) - ( is-closed-under-inverses-Subgroup G H - ( left-div-Group G x y) - ( p)) + ( is-closed-under-inverses-Subgroup G H p) transitive-right-sim-Subgroup : is-transitive right-sim-Subgroup transitive-right-sim-Subgroup x y z p q = @@ -563,16 +590,17 @@ module _ ( is-in-Subgroup G H) ( mul-left-div-Group G x y z) ( is-closed-under-multiplication-Subgroup G H - ( left-div-Group G x y) - ( left-div-Group G y z) ( q) ( p)) - right-eq-rel-Subgroup : Equivalence-Relation l2 (type-Group G) - pr1 right-eq-rel-Subgroup = prop-right-eq-rel-Subgroup - pr1 (pr2 right-eq-rel-Subgroup) = refl-right-sim-Subgroup - pr1 (pr2 (pr2 right-eq-rel-Subgroup)) = symmetric-right-sim-Subgroup - pr2 (pr2 (pr2 right-eq-rel-Subgroup)) = transitive-right-sim-Subgroup + right-equivalence-relation-Subgroup : equivalence-relation l2 (type-Group G) + pr1 right-equivalence-relation-Subgroup = + prop-right-equivalence-relation-Subgroup + pr1 (pr2 right-equivalence-relation-Subgroup) = refl-right-sim-Subgroup + pr1 (pr2 (pr2 right-equivalence-relation-Subgroup)) = + symmetric-right-sim-Subgroup + pr2 (pr2 (pr2 right-equivalence-relation-Subgroup)) = + transitive-right-sim-Subgroup ``` #### The equivalence relation where `x ~ y` if and only if `xy⁻¹ ∈ H` @@ -590,9 +618,9 @@ module _ is-prop-left-sim-Subgroup x y = is-prop-is-in-Subgroup G H (right-div-Group G x y) - prop-left-eq-rel-Subgroup : (x y : type-Group G) → Prop l2 - pr1 (prop-left-eq-rel-Subgroup x y) = left-sim-Subgroup x y - pr2 (prop-left-eq-rel-Subgroup x y) = + prop-left-equivalence-relation-Subgroup : (x y : type-Group G) → Prop l2 + pr1 (prop-left-equivalence-relation-Subgroup x y) = left-sim-Subgroup x y + pr2 (prop-left-equivalence-relation-Subgroup x y) = is-prop-left-sim-Subgroup x y refl-left-sim-Subgroup : is-reflexive left-sim-Subgroup @@ -607,26 +635,23 @@ module _ tr ( is-in-Subgroup G H) ( inv-right-div-Group G x y) - ( is-closed-under-inverses-Subgroup G H - ( right-div-Group G x y) - ( p)) + ( is-closed-under-inverses-Subgroup G H p) transitive-left-sim-Subgroup : is-transitive left-sim-Subgroup transitive-left-sim-Subgroup x y z p q = tr ( is-in-Subgroup G H) ( mul-right-div-Group G x y z) - ( is-closed-under-multiplication-Subgroup G H - ( right-div-Group G x y) - ( right-div-Group G y z) - ( q) - ( p)) - - left-eq-rel-Subgroup : Equivalence-Relation l2 (type-Group G) - pr1 left-eq-rel-Subgroup = prop-left-eq-rel-Subgroup - pr1 (pr2 left-eq-rel-Subgroup) = refl-left-sim-Subgroup - pr1 (pr2 (pr2 left-eq-rel-Subgroup)) = symmetric-left-sim-Subgroup - pr2 (pr2 (pr2 left-eq-rel-Subgroup)) = transitive-left-sim-Subgroup + ( is-closed-under-multiplication-Subgroup G H q p) + + left-equivalence-relation-Subgroup : equivalence-relation l2 (type-Group G) + pr1 left-equivalence-relation-Subgroup = + prop-left-equivalence-relation-Subgroup + pr1 (pr2 left-equivalence-relation-Subgroup) = refl-left-sim-Subgroup + pr1 (pr2 (pr2 left-equivalence-relation-Subgroup)) = + symmetric-left-sim-Subgroup + pr2 (pr2 (pr2 left-equivalence-relation-Subgroup)) = + transitive-left-sim-Subgroup ``` ### Any proposition `P` induces a subgroup of any group `G` @@ -666,27 +691,27 @@ module _ is-closed-under-multiplication-subgroup-Prop : is-closed-under-multiplication-subset-Group G subset-subgroup-Prop - is-closed-under-multiplication-subgroup-Prop x y H K = + is-closed-under-multiplication-subgroup-Prop H K = apply-twice-universal-property-trunc-Prop H K ( disj-Prop (Id-Prop (set-Group G) _ _) P) ( λ H' K' → unit-trunc-Prop - ( is-closed-under-multiplication-subgroup-Prop' x y H' K')) + ( is-closed-under-multiplication-subgroup-Prop' _ _ H' K')) is-closed-under-inverses-subgroup-Prop' : - (x : type-Group G) → ((unit-Group G = x) + type-Prop P) → + {x : type-Group G} → ((unit-Group G = x) + type-Prop P) → ((unit-Group G = inv-Group G x) + type-Prop P) - is-closed-under-inverses-subgroup-Prop' ._ (inl refl) = + is-closed-under-inverses-subgroup-Prop' (inl refl) = inl (inv (inv-unit-Group G)) - is-closed-under-inverses-subgroup-Prop' x (inr p) = + is-closed-under-inverses-subgroup-Prop' (inr p) = inr p is-closed-under-inverses-subgroup-Prop : is-closed-under-inverses-subset-Group G subset-subgroup-Prop - is-closed-under-inverses-subgroup-Prop x H = + is-closed-under-inverses-subgroup-Prop {x} H = apply-universal-property-trunc-Prop H ( disj-Prop (Id-Prop (set-Group G) _ _) P) - ( unit-trunc-Prop ∘ is-closed-under-inverses-subgroup-Prop' x) + ( unit-trunc-Prop ∘ is-closed-under-inverses-subgroup-Prop') subgroup-Prop : Subgroup (l1 ⊔ l2) G pr1 subgroup-Prop = subset-subgroup-Prop diff --git a/src/group-theory/submonoids-commutative-monoids.lagda.md b/src/group-theory/submonoids-commutative-monoids.lagda.md index a8fd65af84..1b93a31af2 100644 --- a/src/group-theory/submonoids-commutative-monoids.lagda.md +++ b/src/group-theory/submonoids-commutative-monoids.lagda.md @@ -35,17 +35,17 @@ unit of `M` and is closed under multiplication. ### Submonoids of commutative monoids ```agda -is-submonoid-commutative-monoid-Prop : +is-submonoid-prop-subset-Commutative-Monoid : {l1 l2 : Level} (M : Commutative-Monoid l1) (P : subset-Commutative-Monoid l2 M) → Prop (l1 ⊔ l2) -is-submonoid-commutative-monoid-Prop M = - is-submonoid-monoid-Prop (monoid-Commutative-Monoid M) +is-submonoid-prop-subset-Commutative-Monoid M = + is-submonoid-prop-subset-Monoid (monoid-Commutative-Monoid M) -is-submonoid-Commutative-Monoid : +is-submonoid-subset-Commutative-Monoid : {l1 l2 : Level} (M : Commutative-Monoid l1) (P : subset-Commutative-Monoid l2 M) → UU (l1 ⊔ l2) -is-submonoid-Commutative-Monoid M = - is-submonoid-Monoid (monoid-Commutative-Monoid M) +is-submonoid-subset-Commutative-Monoid M = + is-submonoid-subset-Monoid (monoid-Commutative-Monoid M) Commutative-Submonoid : {l1 : Level} (l2 : Level) (M : Commutative-Monoid l1) → UU (l1 ⊔ lsuc l2) @@ -61,7 +61,7 @@ module _ subset-Submonoid (monoid-Commutative-Monoid M) P is-submonoid-Commutative-Submonoid : - is-submonoid-Commutative-Monoid M subset-Commutative-Submonoid + is-submonoid-subset-Commutative-Monoid M subset-Commutative-Submonoid is-submonoid-Commutative-Submonoid = is-submonoid-Submonoid (monoid-Commutative-Monoid M) P @@ -189,8 +189,8 @@ module _ mul-Commutative-Monoid M ( inclusion-Commutative-Submonoid x) ( inclusion-Commutative-Submonoid y) - preserves-mul-inclusion-Commutative-Submonoid = - preserves-mul-inclusion-Submonoid (monoid-Commutative-Monoid M) P + preserves-mul-inclusion-Commutative-Submonoid x y = + preserves-mul-inclusion-Submonoid (monoid-Commutative-Monoid M) P {x} {y} hom-inclusion-Commutative-Submonoid : hom-Commutative-Monoid commutative-monoid-Commutative-Submonoid M diff --git a/src/group-theory/submonoids.lagda.md b/src/group-theory/submonoids.lagda.md index a1c7b070a5..963777a089 100644 --- a/src/group-theory/submonoids.lagda.md +++ b/src/group-theory/submonoids.lagda.md @@ -35,23 +35,23 @@ is closed under multiplication. ### Submonoids ```agda -is-submonoid-monoid-Prop : +is-submonoid-prop-subset-Monoid : {l1 l2 : Level} (M : Monoid l1) (P : subset-Monoid l2 M) → Prop (l1 ⊔ l2) -is-submonoid-monoid-Prop M P = +is-submonoid-prop-subset-Monoid M P = prod-Prop - ( contains-unit-subset-monoid-Prop M P) - ( is-closed-under-multiplication-subset-monoid-Prop M P) + ( contains-unit-prop-subset-Monoid M P) + ( is-closed-under-multiplication-prop-subset-Monoid M P) -is-submonoid-Monoid : +is-submonoid-subset-Monoid : {l1 l2 : Level} (M : Monoid l1) (P : subset-Monoid l2 M) → UU (l1 ⊔ l2) -is-submonoid-Monoid M P = - type-Prop (is-submonoid-monoid-Prop M P) +is-submonoid-subset-Monoid M P = + type-Prop (is-submonoid-prop-subset-Monoid M P) Submonoid : {l1 : Level} (l2 : Level) (M : Monoid l1) → UU (l1 ⊔ lsuc l2) Submonoid l2 M = - type-subtype (is-submonoid-monoid-Prop {l2 = l2} M) + type-subtype (is-submonoid-prop-subset-Monoid {l2 = l2} M) module _ {l1 l2 : Level} (M : Monoid l1) (P : Submonoid l2 M) @@ -59,9 +59,9 @@ module _ subset-Submonoid : subtype l2 (type-Monoid M) subset-Submonoid = - inclusion-subtype (is-submonoid-monoid-Prop M) P + inclusion-subtype (is-submonoid-prop-subset-Monoid M) P - is-submonoid-Submonoid : is-submonoid-Monoid M subset-Submonoid + is-submonoid-Submonoid : is-submonoid-subset-Monoid M subset-Submonoid is-submonoid-Submonoid = pr2 P is-in-Submonoid : type-Monoid M → UU l2 @@ -171,15 +171,17 @@ module _ preserves-unit-inclusion-Submonoid = refl preserves-mul-inclusion-Submonoid : - (x y : type-Submonoid) → + {x y : type-Submonoid} → inclusion-Submonoid (mul-Submonoid x y) = mul-Monoid M (inclusion-Submonoid x) (inclusion-Submonoid y) - preserves-mul-inclusion-Submonoid x y = refl + preserves-mul-inclusion-Submonoid = refl hom-inclusion-Submonoid : hom-Monoid monoid-Submonoid M - pr1 (pr1 hom-inclusion-Submonoid) = inclusion-Submonoid - pr2 (pr1 hom-inclusion-Submonoid) = preserves-mul-inclusion-Submonoid + pr1 (pr1 hom-inclusion-Submonoid) = + inclusion-Submonoid + pr2 (pr1 hom-inclusion-Submonoid) {x} {y} = + preserves-mul-inclusion-Submonoid {x} {y} pr2 hom-inclusion-Submonoid = preserves-unit-inclusion-Submonoid ``` @@ -201,7 +203,7 @@ module _ (K : Submonoid l2 M) → (N = K) ≃ has-same-elements-Submonoid K extensionality-Submonoid = extensionality-type-subtype - ( is-submonoid-monoid-Prop M) + ( is-submonoid-prop-subset-Monoid M) ( is-submonoid-Submonoid M N) ( λ x → pair id id) ( extensionality-subtype (subset-Submonoid M N)) diff --git a/src/group-theory/subsemigroups.lagda.md b/src/group-theory/subsemigroups.lagda.md index 9b76cc3fba..382ccdd67a 100644 --- a/src/group-theory/subsemigroups.lagda.md +++ b/src/group-theory/subsemigroups.lagda.md @@ -11,6 +11,8 @@ open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.function-types open import foundation.identity-types +open import foundation.large-binary-relations +open import foundation.powersets open import foundation.propositions open import foundation.sets open import foundation.subtype-identity-principle @@ -19,6 +21,14 @@ open import foundation.universe-levels open import group-theory.homomorphisms-semigroups open import group-theory.semigroups +open import group-theory.subsets-semigroups + +open import order-theory.large-posets +open import order-theory.large-preorders +open import order-theory.order-preserving-maps-large-posets +open import order-theory.order-preserving-maps-large-preorders +open import order-theory.posets +open import order-theory.preorders ``` @@ -30,72 +40,30 @@ multiplication. ## Definitions -### Subsets of semigroups - -```agda -subset-Semigroup : - {l1 : Level} (l2 : Level) (G : Semigroup l1) → UU (l1 ⊔ lsuc l2) -subset-Semigroup l2 G = subtype l2 (type-Semigroup G) - -module _ - {l1 l2 : Level} (G : Semigroup l1) (P : subset-Semigroup l2 G) - where - - is-in-subset-Semigroup : type-Semigroup G → UU l2 - is-in-subset-Semigroup = is-in-subtype P - - is-prop-is-in-subset-Semigroup : - (x : type-Semigroup G) → is-prop (is-in-subset-Semigroup x) - is-prop-is-in-subset-Semigroup = is-prop-is-in-subtype P - - type-subset-Semigroup : UU (l1 ⊔ l2) - type-subset-Semigroup = type-subtype P - - is-set-type-subset-Semigroup : is-set type-subset-Semigroup - is-set-type-subset-Semigroup = - is-set-type-subtype P (is-set-type-Semigroup G) - - set-subset-Semigroup : Set (l1 ⊔ l2) - set-subset-Semigroup = set-subset (set-Semigroup G) P - - inclusion-subset-Semigroup : type-subset-Semigroup → type-Semigroup G - inclusion-subset-Semigroup = inclusion-subtype P - - ap-inclusion-subset-Semigroup : - (x y : type-subset-Semigroup) → - x = y → (inclusion-subset-Semigroup x = inclusion-subset-Semigroup y) - ap-inclusion-subset-Semigroup = ap-inclusion-subtype P - - is-in-subset-inclusion-subset-Semigroup : - (x : type-subset-Semigroup) → - is-in-subset-Semigroup (inclusion-subset-Semigroup x) - is-in-subset-inclusion-subset-Semigroup = - is-in-subtype-inclusion-subtype P -``` - ### Subsemigroups ```agda -is-subsemigroup-subset-Semigroup-Prop : +is-closed-under-multiplication-prop-subset-Semigroup : {l1 l2 : Level} (G : Semigroup l1) (P : subset-Semigroup l2 G) → Prop (l1 ⊔ l2) -is-subsemigroup-subset-Semigroup-Prop G P = - Π-Prop +is-closed-under-multiplication-prop-subset-Semigroup G P = + Π-Prop' ( type-Semigroup G) ( λ x → - Π-Prop + Π-Prop' ( type-Semigroup G) ( λ y → hom-Prop (P x) (hom-Prop (P y) (P (mul-Semigroup G x y))))) -is-subsemigroup-subset-Semigroup : +is-closed-under-multiplication-subset-Semigroup : {l1 l2 : Level} (G : Semigroup l1) (P : subset-Semigroup l2 G) → UU (l1 ⊔ l2) -is-subsemigroup-subset-Semigroup G P = - type-Prop (is-subsemigroup-subset-Semigroup-Prop G P) +is-closed-under-multiplication-subset-Semigroup G P = + type-Prop (is-closed-under-multiplication-prop-subset-Semigroup G P) Subsemigroup : {l1 : Level} (l2 : Level) (G : Semigroup l1) → UU (l1 ⊔ lsuc l2) Subsemigroup l2 G = - type-subtype (is-subsemigroup-subset-Semigroup-Prop {l2 = l2} G) + type-subtype + ( is-closed-under-multiplication-prop-subset-Semigroup {l2 = l2} G) module _ {l1 l2 : Level} (G : Semigroup l1) (P : Subsemigroup l2 G) @@ -103,15 +71,27 @@ module _ subset-Subsemigroup : subtype l2 (type-Semigroup G) subset-Subsemigroup = - inclusion-subtype (is-subsemigroup-subset-Semigroup-Prop G) P + inclusion-subtype (is-closed-under-multiplication-prop-subset-Semigroup G) P - is-subsemigroup-Subsemigroup : - is-subsemigroup-subset-Semigroup G subset-Subsemigroup - is-subsemigroup-Subsemigroup = pr2 P + is-closed-under-multiplication-Subsemigroup : + is-closed-under-multiplication-subset-Semigroup G subset-Subsemigroup + is-closed-under-multiplication-Subsemigroup = pr2 P is-in-Subsemigroup : type-Semigroup G → UU l2 is-in-Subsemigroup = is-in-subtype subset-Subsemigroup + is-closed-under-eq-Subsemigroup : + {x y : type-Semigroup G} → + is-in-Subsemigroup x → x = y → is-in-Subsemigroup y + is-closed-under-eq-Subsemigroup = + is-closed-under-eq-subset-Semigroup G subset-Subsemigroup + + is-closed-under-eq-Subsemigroup' : + {x y : type-Semigroup G} → + is-in-Subsemigroup y → x = y → is-in-Subsemigroup x + is-closed-under-eq-Subsemigroup' = + is-closed-under-eq-subset-Semigroup' G subset-Subsemigroup + is-prop-is-in-Subsemigroup : (x : type-Semigroup G) → is-prop (is-in-Subsemigroup x) is-prop-is-in-Subsemigroup = @@ -145,12 +125,6 @@ module _ is-in-subsemigroup-inclusion-Subsemigroup = is-in-subtype-inclusion-subtype subset-Subsemigroup - is-closed-under-multiplication-Subsemigroup : - {x y : type-Semigroup G} → - is-in-Subsemigroup x → is-in-Subsemigroup y → - is-in-Subsemigroup (mul-Semigroup G x y) - is-closed-under-multiplication-Subsemigroup {x} {y} = pr2 P x y - mul-Subsemigroup : (x y : type-Subsemigroup) → type-Subsemigroup pr1 (mul-Subsemigroup x y) = @@ -158,9 +132,7 @@ module _ ( inclusion-Subsemigroup x) ( inclusion-Subsemigroup y) pr2 (mul-Subsemigroup x y) = - is-closed-under-multiplication-Subsemigroup - ( is-in-subsemigroup-inclusion-Subsemigroup x) - ( is-in-subsemigroup-inclusion-Subsemigroup y) + is-closed-under-multiplication-Subsemigroup (pr2 x) (pr2 y) associative-mul-Subsemigroup : (x y z : type-Subsemigroup) → @@ -180,15 +152,14 @@ module _ pr2 (pr2 semigroup-Subsemigroup) = associative-mul-Subsemigroup preserves-mul-inclusion-Subsemigroup : - (x y : type-Subsemigroup) → - inclusion-Subsemigroup (mul-Subsemigroup x y) = - mul-Semigroup G (inclusion-Subsemigroup x) (inclusion-Subsemigroup y) - preserves-mul-inclusion-Subsemigroup x y = refl + preserves-mul-Semigroup semigroup-Subsemigroup G inclusion-Subsemigroup + preserves-mul-inclusion-Subsemigroup = refl hom-inclusion-Subsemigroup : hom-Semigroup semigroup-Subsemigroup G pr1 hom-inclusion-Subsemigroup = inclusion-Subsemigroup - pr2 hom-inclusion-Subsemigroup = preserves-mul-inclusion-Subsemigroup + pr2 hom-inclusion-Subsemigroup {x} {y} = + preserves-mul-inclusion-Subsemigroup {x} {y} ``` ## Properties @@ -200,7 +171,15 @@ module _ {l1 l2 : Level} (G : Semigroup l1) (H : Subsemigroup l2 G) where - has-same-elements-Subsemigroup : Subsemigroup l2 G → UU (l1 ⊔ l2) + has-same-elements-prop-Subsemigroup : + {l3 : Level} → Subsemigroup l3 G → Prop (l1 ⊔ l2 ⊔ l3) + has-same-elements-prop-Subsemigroup K = + has-same-elements-subtype-Prop + ( subset-Subsemigroup G H) + ( subset-Subsemigroup G K) + + has-same-elements-Subsemigroup : + {l3 : Level} → Subsemigroup l3 G → UU (l1 ⊔ l2 ⊔ l3) has-same-elements-Subsemigroup K = has-same-elements-subtype ( subset-Subsemigroup G H) @@ -210,8 +189,115 @@ module _ (K : Subsemigroup l2 G) → (H = K) ≃ has-same-elements-Subsemigroup K extensionality-Subsemigroup = extensionality-type-subtype - ( is-subsemigroup-subset-Semigroup-Prop G) - ( is-subsemigroup-Subsemigroup G H) - ( λ x → pair id id) + ( is-closed-under-multiplication-prop-subset-Semigroup G) + ( is-closed-under-multiplication-Subsemigroup G H) + ( λ x → id , id) ( extensionality-subtype (subset-Subsemigroup G H)) + + refl-has-same-elements-Subsemigroup : has-same-elements-Subsemigroup H + refl-has-same-elements-Subsemigroup = + refl-has-same-elements-subtype (subset-Subsemigroup G H) + + has-same-elements-eq-Subsemigroup : + (K : Subsemigroup l2 G) → (H = K) → has-same-elements-Subsemigroup K + has-same-elements-eq-Subsemigroup K = + map-equiv (extensionality-Subsemigroup K) + + eq-has-same-elements-Subsemigroup : + (K : Subsemigroup l2 G) → has-same-elements-Subsemigroup K → (H = K) + eq-has-same-elements-Subsemigroup K = + map-inv-equiv (extensionality-Subsemigroup K) +``` + +### The containment relation of subsemigroups + +```agda +leq-prop-Subsemigroup : + {l1 l2 l3 : Level} (G : Semigroup l1) → + Subsemigroup l2 G → Subsemigroup l3 G → Prop (l1 ⊔ l2 ⊔ l3) +leq-prop-Subsemigroup G H K = + leq-prop-subtype + ( subset-Subsemigroup G H) + ( subset-Subsemigroup G K) + +leq-Subsemigroup : + {l1 l2 l3 : Level} (G : Semigroup l1) → + Subsemigroup l2 G → Subsemigroup l3 G → UU (l1 ⊔ l2 ⊔ l3) +leq-Subsemigroup G H K = subset-Subsemigroup G H ⊆ subset-Subsemigroup G K + +is-prop-leq-Subsemigroup : + {l1 l2 l3 : Level} (G : Semigroup l1) → + (H : Subsemigroup l2 G) (K : Subsemigroup l3 G) → + is-prop (leq-Subsemigroup G H K) +is-prop-leq-Subsemigroup G H K = + is-prop-leq-subtype (subset-Subsemigroup G H) (subset-Subsemigroup G K) + +refl-leq-Subsemigroup : + {l1 : Level} (G : Semigroup l1) → + is-reflexive-Large-Relation (λ l → Subsemigroup l G) (leq-Subsemigroup G) +refl-leq-Subsemigroup G H = refl-leq-subtype (subset-Subsemigroup G H) + +transitive-leq-Subsemigroup : + {l1 : Level} (G : Semigroup l1) → + is-transitive-Large-Relation (λ l → Subsemigroup l G) (leq-Subsemigroup G) +transitive-leq-Subsemigroup G H K L = + transitive-leq-subtype + ( subset-Subsemigroup G H) + ( subset-Subsemigroup G K) + ( subset-Subsemigroup G L) + +antisymmetric-leq-Subsemigroup : + {l1 : Level} (G : Semigroup l1) → + is-antisymmetric-Large-Relation (λ l → Subsemigroup l G) (leq-Subsemigroup G) +antisymmetric-leq-Subsemigroup G H K α β = + eq-has-same-elements-Subsemigroup G H K (λ x → (α x , β x)) + +Subsemigroup-Large-Preorder : + {l1 : Level} (G : Semigroup l1) → + Large-Preorder (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) +type-Large-Preorder (Subsemigroup-Large-Preorder G) l2 = Subsemigroup l2 G +leq-prop-Large-Preorder (Subsemigroup-Large-Preorder G) H K = + leq-prop-Subsemigroup G H K +refl-leq-Large-Preorder (Subsemigroup-Large-Preorder G) = + refl-leq-Subsemigroup G +transitive-leq-Large-Preorder (Subsemigroup-Large-Preorder G) = + transitive-leq-Subsemigroup G + +Subsemigroup-Preorder : + {l1 : Level} (l2 : Level) (G : Semigroup l1) → + Preorder (l1 ⊔ lsuc l2) (l1 ⊔ l2) +Subsemigroup-Preorder l2 G = + preorder-Large-Preorder (Subsemigroup-Large-Preorder G) l2 + +Subsemigroup-Large-Poset : + {l1 : Level} (G : Semigroup l1) → + Large-Poset (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) +large-preorder-Large-Poset (Subsemigroup-Large-Poset G) = + Subsemigroup-Large-Preorder G +antisymmetric-leq-Large-Poset (Subsemigroup-Large-Poset G) = + antisymmetric-leq-Subsemigroup G + +Subsemigroup-Poset : + {l1 : Level} (l2 : Level) (G : Semigroup l1) → + Poset (l1 ⊔ lsuc l2) (l1 ⊔ l2) +Subsemigroup-Poset l2 G = poset-Large-Poset (Subsemigroup-Large-Poset G) l2 + +preserves-order-subset-Subsemigroup : + {l1 l2 l3 : Level} + (G : Semigroup l1) (H : Subsemigroup l2 G) (K : Subsemigroup l3 G) → + leq-Subsemigroup G H K → (subset-Subsemigroup G H ⊆ subset-Subsemigroup G K) +preserves-order-subset-Subsemigroup G H K = id + +subset-subsemigroup-hom-large-poset-Semigroup : + {l1 : Level} (G : Semigroup l1) → + hom-Large-Poset + ( λ l → l) + ( Subsemigroup-Large-Poset G) + ( powerset-Large-Poset (type-Semigroup G)) +map-hom-Large-Preorder + ( subset-subsemigroup-hom-large-poset-Semigroup G) = + subset-Subsemigroup G +preserves-order-hom-Large-Preorder + ( subset-subsemigroup-hom-large-poset-Semigroup G) = + preserves-order-subset-Subsemigroup G ``` diff --git a/src/group-theory/subsets-abelian-groups.lagda.md b/src/group-theory/subsets-abelian-groups.lagda.md index 765921e1ca..6026711b1d 100644 --- a/src/group-theory/subsets-abelian-groups.lagda.md +++ b/src/group-theory/subsets-abelian-groups.lagda.md @@ -7,11 +7,16 @@ module group-theory.subsets-abelian-groups where
Imports ```agda +open import foundation.large-locale-of-subtypes +open import foundation.powersets open import foundation.sets open import foundation.universe-levels open import group-theory.abelian-groups open import group-theory.subsets-groups + +open import order-theory.large-locales +open import order-theory.large-posets ```
@@ -19,10 +24,37 @@ open import group-theory.subsets-groups ## Idea A **subset** of an [abelian group](group-theory.abelian-groups.md) `A` is a -[subtype](foundation.subtypes.md) of the underlying type of `A`. +[subtype](foundation.subtypes.md) of the underlying type of `A`. The +[large poset](order-theory.large-posets.md) of all subsets of `A` is called the +**powerset** of `A`. ## Definitions +### The large locale of subsets of an abelian group + +```agda +module _ + {l1 : Level} (G : Ab l1) + where + + powerset-large-locale-Ab : + Large-Locale (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) lzero + powerset-large-locale-Ab = powerset-Large-Locale (type-Ab G) +``` + +### The large poset of subsets of an abelian group + +```agda +module _ + {l1 : Level} (G : Ab l1) + where + + powerset-large-poset-Ab : + Large-Poset (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) + powerset-large-poset-Ab = + large-poset-Large-Locale (powerset-large-locale-Ab G) +``` + ### Subsets of abelian groups ```agda diff --git a/src/group-theory/subsets-commutative-monoids.lagda.md b/src/group-theory/subsets-commutative-monoids.lagda.md index 40d47411d9..be1275afe2 100644 --- a/src/group-theory/subsets-commutative-monoids.lagda.md +++ b/src/group-theory/subsets-commutative-monoids.lagda.md @@ -81,9 +81,9 @@ module _ ### The condition that a subset contains the unit ```agda - contains-unit-subset-commutative-monoid-Prop : Prop l2 - contains-unit-subset-commutative-monoid-Prop = - contains-unit-subset-monoid-Prop (monoid-Commutative-Monoid M) P + contains-unit-prop-subset-Commutative-Monoid : Prop l2 + contains-unit-prop-subset-Commutative-Monoid = + contains-unit-prop-subset-Monoid (monoid-Commutative-Monoid M) P contains-unit-subset-Commutative-Monoid : UU l2 contains-unit-subset-Commutative-Monoid = @@ -93,9 +93,9 @@ module _ ### The condition that a subset is closed under multiplication ```agda - is-closed-under-multiplication-subset-commutative-monoid-Prop : Prop (l1 ⊔ l2) - is-closed-under-multiplication-subset-commutative-monoid-Prop = - is-closed-under-multiplication-subset-monoid-Prop + is-closed-under-multiplication-prop-subset-Commutative-Monoid : Prop (l1 ⊔ l2) + is-closed-under-multiplication-prop-subset-Commutative-Monoid = + is-closed-under-multiplication-prop-subset-Monoid ( monoid-Commutative-Monoid M) ( P) diff --git a/src/group-theory/subsets-groups.lagda.md b/src/group-theory/subsets-groups.lagda.md index 702583a8fe..c3d491343c 100644 --- a/src/group-theory/subsets-groups.lagda.md +++ b/src/group-theory/subsets-groups.lagda.md @@ -14,6 +14,7 @@ open import foundation.universe-levels open import group-theory.groups open import order-theory.large-locales +open import order-theory.large-posets ``` @@ -21,9 +22,11 @@ open import order-theory.large-locales ## Idea A **subset** of a [group](group-theory.groups.md) `G` is a -[subtype](foundation.subtypes.md) of the underlying type of `G`. +[subtype](foundation.subtypes.md) of the underlying type of `G`. The +[large poset](order-theory.large-posets.md) of all subsets of `G` is called the +**powerset** of `G`. -## Definition +## Definitions ### The large locale of subsets of a group @@ -33,10 +36,23 @@ module _ where powerset-large-locale-Group : - Large-Locale (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ (l2 ⊔ l3)) lzero + Large-Locale (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) lzero powerset-large-locale-Group = powerset-Large-Locale (type-Group G) ``` +### The large poset of subsets of a group + +```agda +module _ + {l1 : Level} (G : Group l1) + where + + powerset-large-poset-Group : + Large-Poset (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) + powerset-large-poset-Group = + large-poset-Large-Locale (powerset-large-locale-Group G) +``` + ### Subsets of groups ```agda diff --git a/src/group-theory/subsets-monoids.lagda.md b/src/group-theory/subsets-monoids.lagda.md index dcbf30eb78..97bb8b9059 100644 --- a/src/group-theory/subsets-monoids.lagda.md +++ b/src/group-theory/subsets-monoids.lagda.md @@ -70,18 +70,18 @@ module _ ### The condition that a subset contains the unit ```agda - contains-unit-subset-monoid-Prop : Prop l2 - contains-unit-subset-monoid-Prop = P (unit-Monoid M) + contains-unit-prop-subset-Monoid : Prop l2 + contains-unit-prop-subset-Monoid = P (unit-Monoid M) contains-unit-subset-Monoid : UU l2 - contains-unit-subset-Monoid = type-Prop contains-unit-subset-monoid-Prop + contains-unit-subset-Monoid = type-Prop contains-unit-prop-subset-Monoid ``` ### The condition that a subset is closed under multiplication ```agda - is-closed-under-multiplication-subset-monoid-Prop : Prop (l1 ⊔ l2) - is-closed-under-multiplication-subset-monoid-Prop = + is-closed-under-multiplication-prop-subset-Monoid : Prop (l1 ⊔ l2) + is-closed-under-multiplication-prop-subset-Monoid = Π-Prop ( type-Monoid M) ( λ x → @@ -91,5 +91,5 @@ module _ is-closed-under-multiplication-subset-Monoid : UU (l1 ⊔ l2) is-closed-under-multiplication-subset-Monoid = - type-Prop is-closed-under-multiplication-subset-monoid-Prop + type-Prop is-closed-under-multiplication-prop-subset-Monoid ``` diff --git a/src/group-theory/subsets-semigroups.lagda.md b/src/group-theory/subsets-semigroups.lagda.md new file mode 100644 index 0000000000..42ae47f4af --- /dev/null +++ b/src/group-theory/subsets-semigroups.lagda.md @@ -0,0 +1,114 @@ +# Subsets of semigroups + +```agda +module group-theory.subsets-semigroups where +``` + +
Imports + +```agda +open import foundation.identity-types +open import foundation.large-locale-of-subtypes +open import foundation.powersets +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import group-theory.semigroups + +open import order-theory.large-locales +open import order-theory.large-posets +``` + +
+ +## Idea + +A **subset of a semigroup** `G` is simply a [subtype](foundation.subtypes.md) of +the underlying type of the [semigroup](group-theory.semigroups.md) `G`. The +**powerset** of a semigroup is the [large poset](order-theory.large-posets.md) +of all subsets of `G`, i.e., it is the [powerset](foundation.powersets.md) of +the underlying [set](foundation.sets.md) of `G`. + +## Definitions + +### The large locale of subsets of a semigroup + +```agda +module _ + {l1 : Level} (G : Semigroup l1) + where + + powerset-large-locale-Semigroup : + Large-Locale (λ l2 → l1 ⊔ lsuc l2) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) lzero + powerset-large-locale-Semigroup = + powerset-Large-Locale (type-Semigroup G) +``` + +### The large poset of subsets of a semigroup + +```agda +module _ + {l1 : Level} (G : Semigroup l1) + where + + powerset-large-poset-Semigroup : + Large-Poset (λ l → l1 ⊔ lsuc l) (λ l2 l3 → l1 ⊔ l2 ⊔ l3) + powerset-large-poset-Semigroup = powerset-Large-Poset (type-Semigroup G) +``` + +### Subsets of semigroups + +```agda +subset-Semigroup : + {l1 : Level} (l2 : Level) (G : Semigroup l1) → UU (l1 ⊔ lsuc l2) +subset-Semigroup l2 G = subtype l2 (type-Semigroup G) + +module _ + {l1 l2 : Level} (G : Semigroup l1) (P : subset-Semigroup l2 G) + where + + is-in-subset-Semigroup : type-Semigroup G → UU l2 + is-in-subset-Semigroup = is-in-subtype P + + is-closed-under-eq-subset-Semigroup : + {x y : type-Semigroup G} → + is-in-subset-Semigroup x → (x = y) → is-in-subset-Semigroup y + is-closed-under-eq-subset-Semigroup = + is-closed-under-eq-subtype P + + is-closed-under-eq-subset-Semigroup' : + {x y : type-Semigroup G} → + is-in-subset-Semigroup y → (x = y) → is-in-subset-Semigroup x + is-closed-under-eq-subset-Semigroup' = + is-closed-under-eq-subtype' P + + is-prop-is-in-subset-Semigroup : + (x : type-Semigroup G) → is-prop (is-in-subset-Semigroup x) + is-prop-is-in-subset-Semigroup = is-prop-is-in-subtype P + + type-subset-Semigroup : UU (l1 ⊔ l2) + type-subset-Semigroup = type-subtype P + + is-set-type-subset-Semigroup : is-set type-subset-Semigroup + is-set-type-subset-Semigroup = + is-set-type-subtype P (is-set-type-Semigroup G) + + set-subset-Semigroup : Set (l1 ⊔ l2) + set-subset-Semigroup = set-subset (set-Semigroup G) P + + inclusion-subset-Semigroup : type-subset-Semigroup → type-Semigroup G + inclusion-subset-Semigroup = inclusion-subtype P + + ap-inclusion-subset-Semigroup : + (x y : type-subset-Semigroup) → + x = y → (inclusion-subset-Semigroup x = inclusion-subset-Semigroup y) + ap-inclusion-subset-Semigroup = ap-inclusion-subtype P + + is-in-subset-inclusion-subset-Semigroup : + (x : type-subset-Semigroup) → + is-in-subset-Semigroup (inclusion-subset-Semigroup x) + is-in-subset-inclusion-subset-Semigroup = + is-in-subtype-inclusion-subtype P +``` diff --git a/src/group-theory/substitution-functor-group-actions.lagda.md b/src/group-theory/substitution-functor-group-actions.lagda.md index be5225381f..e5fdd3566c 100644 --- a/src/group-theory/substitution-functor-group-actions.lagda.md +++ b/src/group-theory/substitution-functor-group-actions.lagda.md @@ -33,7 +33,8 @@ open import group-theory.symmetric-groups ## Idea -Given a group homomorphism `f : G → H` and an H-set `Y`, we obtain a G-actio on +Given a [group homomorphism](group-theory.homomorphisms-groups.md) `f : G → H` +and an [`H`-set](group-theory.group-actions.md) `Y`, we obtain a `G`-action on `Y` by `g,x ↦ f(g)x`. This operation is functorial in `Y`. ## Definition @@ -43,62 +44,62 @@ module _ {l1 l2 : Level} {G : Group l1} {H : Group l2} (f : hom-Group G H) where - obj-subst-Abstract-Group-Action : - {l3 : Level} → Abstract-Group-Action H l3 → Abstract-Group-Action G l3 - pr1 (obj-subst-Abstract-Group-Action X) = set-Abstract-Group-Action H X - pr2 (obj-subst-Abstract-Group-Action X) = + obj-subst-action-Group : + {l3 : Level} → action-Group H l3 → action-Group G l3 + pr1 (obj-subst-action-Group X) = set-action-Group H X + pr2 (obj-subst-action-Group X) = comp-hom-Group G H - ( symmetric-Group (set-Abstract-Group-Action H X)) + ( symmetric-Group (set-action-Group H X)) ( pr2 X) ( f) - hom-subst-Abstract-Group-Action : + hom-subst-action-Group : {l3 l4 : Level} - (X : Abstract-Group-Action H l3) (Y : Abstract-Group-Action H l4) → - hom-Abstract-Group-Action H X Y → - hom-Abstract-Group-Action G - ( obj-subst-Abstract-Group-Action X) - ( obj-subst-Abstract-Group-Action Y) - pr1 (hom-subst-Abstract-Group-Action X Y h) = pr1 h - pr2 (hom-subst-Abstract-Group-Action X Y h) x = pr2 h (map-hom-Group G H f x) - - preserves-id-subst-Abstract-Group-Action : - {l3 : Level} (X : Abstract-Group-Action H l3) → + (X : action-Group H l3) (Y : action-Group H l4) → + hom-action-Group H X Y → + hom-action-Group G + ( obj-subst-action-Group X) + ( obj-subst-action-Group Y) + pr1 (hom-subst-action-Group X Y h) = pr1 h + pr2 (hom-subst-action-Group X Y h) x = pr2 h (map-hom-Group G H f x) + + preserves-id-subst-action-Group : + {l3 : Level} (X : action-Group H l3) → Id - ( hom-subst-Abstract-Group-Action X X (id-hom-Abstract-Group-Action H X)) - ( id-hom-Abstract-Group-Action G (obj-subst-Abstract-Group-Action X)) - preserves-id-subst-Abstract-Group-Action X = refl - - preserves-comp-subst-Abstract-Group-Action : - {l3 l4 l5 : Level} (X : Abstract-Group-Action H l3) - (Y : Abstract-Group-Action H l4) (Z : Abstract-Group-Action H l5) - (g : hom-Abstract-Group-Action H Y Z) - (f : hom-Abstract-Group-Action H X Y) → + ( hom-subst-action-Group X X (id-hom-action-Group H X)) + ( id-hom-action-Group G (obj-subst-action-Group X)) + preserves-id-subst-action-Group X = refl + + preserves-comp-subst-action-Group : + {l3 l4 l5 : Level} (X : action-Group H l3) + (Y : action-Group H l4) (Z : action-Group H l5) + (g : hom-action-Group H Y Z) + (f : hom-action-Group H X Y) → Id - ( hom-subst-Abstract-Group-Action X Z - ( comp-hom-Abstract-Group-Action H X Y Z g f)) - ( comp-hom-Abstract-Group-Action G - ( obj-subst-Abstract-Group-Action X) - ( obj-subst-Abstract-Group-Action Y) - ( obj-subst-Abstract-Group-Action Z) - ( hom-subst-Abstract-Group-Action Y Z g) - ( hom-subst-Abstract-Group-Action X Y f)) - preserves-comp-subst-Abstract-Group-Action X Y Z g f = refl - - subst-Abstract-Group-Action : + ( hom-subst-action-Group X Z + ( comp-hom-action-Group H X Y Z g f)) + ( comp-hom-action-Group G + ( obj-subst-action-Group X) + ( obj-subst-action-Group Y) + ( obj-subst-action-Group Z) + ( hom-subst-action-Group Y Z g) + ( hom-subst-action-Group X Y f)) + preserves-comp-subst-action-Group X Y Z g f = refl + + subst-action-Group : functor-Large-Precategory (λ l → l) - ( Abstract-Group-Action-Large-Precategory H) - ( Abstract-Group-Action-Large-Precategory G) - obj-functor-Large-Precategory subst-Abstract-Group-Action = - obj-subst-Abstract-Group-Action - hom-functor-Large-Precategory subst-Abstract-Group-Action {X = X} {Y} = - hom-subst-Abstract-Group-Action X Y - preserves-comp-functor-Large-Precategory subst-Abstract-Group-Action + ( action-Group-Large-Precategory H) + ( action-Group-Large-Precategory G) + obj-functor-Large-Precategory subst-action-Group = + obj-subst-action-Group + hom-functor-Large-Precategory subst-action-Group {X = X} {Y} = + hom-subst-action-Group X Y + preserves-comp-functor-Large-Precategory subst-action-Group {l1} {l2} {l3} {X} {Y} {Z} = - preserves-comp-subst-Abstract-Group-Action X Y Z + preserves-comp-subst-action-Group X Y Z preserves-id-functor-Large-Precategory - subst-Abstract-Group-Action {l1} {X} = - preserves-id-subst-Abstract-Group-Action X + subst-action-Group {l1} {X} = + preserves-id-subst-action-Group X ``` ## Properties @@ -110,53 +111,55 @@ module _ {l1 l2 : Level} {G : Group l1} {H : Group l2} (f : hom-Group G H) where - preset-obj-left-adjoint-subst-Abstract-Group-Action : - {l3 : Level} → Abstract-Group-Action G l3 → Set (l2 ⊔ l3) - preset-obj-left-adjoint-subst-Abstract-Group-Action X = - prod-Set (set-Group H) (set-Abstract-Group-Action G X) - - pretype-obj-left-adjoint-subst-Abstract-Group-Action : - {l3 : Level} → Abstract-Group-Action G l3 → UU (l2 ⊔ l3) - pretype-obj-left-adjoint-subst-Abstract-Group-Action X = - type-Set (preset-obj-left-adjoint-subst-Abstract-Group-Action X) - - is-set-pretype-obj-left-adjoint-subst-Abstract-Group-Action : - {l3 : Level} (X : Abstract-Group-Action G l3) → - is-set (pretype-obj-left-adjoint-subst-Abstract-Group-Action X) - is-set-pretype-obj-left-adjoint-subst-Abstract-Group-Action X = - is-set-type-Set (preset-obj-left-adjoint-subst-Abstract-Group-Action X) - - Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action : - {l3 : Level} (X : Abstract-Group-Action G l3) → - Equivalence-Relation + preset-obj-left-adjoint-subst-action-Group : + {l3 : Level} → action-Group G l3 → Set (l2 ⊔ l3) + preset-obj-left-adjoint-subst-action-Group X = + prod-Set (set-Group H) (set-action-Group G X) + + pretype-obj-left-adjoint-subst-action-Group : + {l3 : Level} → action-Group G l3 → UU (l2 ⊔ l3) + pretype-obj-left-adjoint-subst-action-Group X = + type-Set (preset-obj-left-adjoint-subst-action-Group X) + + is-set-pretype-obj-left-adjoint-subst-action-Group : + {l3 : Level} (X : action-Group G l3) → + is-set (pretype-obj-left-adjoint-subst-action-Group X) + is-set-pretype-obj-left-adjoint-subst-action-Group X = + is-set-type-Set (preset-obj-left-adjoint-subst-action-Group X) + + equivalence-relation-obj-left-adjoint-subst-action-Group : + {l3 : Level} (X : action-Group G l3) → + equivalence-relation ( l1 ⊔ l2 ⊔ l3) - ( pretype-obj-left-adjoint-subst-Abstract-Group-Action X) + ( pretype-obj-left-adjoint-subst-action-Group X) pr1 - ( Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action X) + ( equivalence-relation-obj-left-adjoint-subst-action-Group X) ( h , x) ( h' , x') = ∃-Prop ( type-Group G) ( λ g → ( Id (mul-Group H (map-hom-Group G H f g) h) h') × - ( Id (mul-Abstract-Group-Action G X g x) x')) + ( Id (mul-action-Group G X g x) x')) pr1 - ( pr2 (Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action X)) + ( pr2 (equivalence-relation-obj-left-adjoint-subst-action-Group X)) ( h , x) = intro-∃ ( unit-Group G) ( pair ( ( ap (mul-Group' H h) (preserves-unit-hom-Group G H f)) ∙ ( left-unit-law-mul-Group H h)) - ( preserves-unit-mul-Abstract-Group-Action G X x)) + ( preserves-unit-mul-action-Group G X x)) pr1 ( pr2 ( pr2 - ( Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action X))) - ( h , x) (h' , x') e = + ( equivalence-relation-obj-left-adjoint-subst-action-Group X))) + ( h , x) + ( h' , x') + ( e) = apply-universal-property-trunc-Prop e ( pr1 - ( Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action X) + ( equivalence-relation-obj-left-adjoint-subst-action-Group X) ( h' , x') ( h , x)) ( λ (g , p , q) → @@ -164,23 +167,27 @@ module _ ( inv-Group G g) ( ( ( ap ( mul-Group' H h') - ( preserves-inv-hom-Group G H f g)) ∙ + ( preserves-inv-hom-Group G H f)) ∙ ( inv (transpose-eq-mul-Group' H p))) , - ( inv (transpose-eq-mul-Abstract-Group-Action G X g x x' q)))) + ( inv (transpose-eq-mul-action-Group G X g x x' q)))) pr2 ( pr2 ( pr2 - ( Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action X))) - ( h , x) (h' , x') (h'' , x'') d e = + ( equivalence-relation-obj-left-adjoint-subst-action-Group X))) + ( h , x) + ( h' , x') + ( h'' , x'') + ( d) + ( e) = apply-universal-property-trunc-Prop e ( pr1 - ( Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action X) + ( equivalence-relation-obj-left-adjoint-subst-action-Group X) ( h , x) ( h'' , x'')) ( λ (g , p , q) → apply-universal-property-trunc-Prop d ( pr1 - ( Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action + ( equivalence-relation-obj-left-adjoint-subst-action-Group ( X)) ( h , x) ( h'' , x'')) @@ -189,30 +196,21 @@ module _ ( mul-Group G g' g) ( ( ( ap ( mul-Group' H h) - ( preserves-mul-hom-Group G H f g' g)) ∙ - ( ( associative-mul-Group H - ( map-hom-Group G H f g') - ( map-hom-Group G H f g) - ( h)) ∙ - ( ( ap (mul-Group H (map-hom-Group G H f g')) p) ∙ - ( p')))) , - ( ( preserves-mul-Abstract-Group-Action G X g' g x) ∙ - ( ap (mul-Abstract-Group-Action G X g') q ∙ q'))))) - - set-left-adjoint-subst-Abstract-Group-Action : - {l3 : Level} → Abstract-Group-Action G l3 → + ( preserves-mul-hom-Group G H f)) ∙ + ( associative-mul-Group H + ( map-hom-Group G H f g') + ( map-hom-Group G H f g) + ( h)) ∙ + ( ap (mul-Group H (map-hom-Group G H f g')) p) ∙ + ( p')) , + ( ( preserves-mul-action-Group G X g' g x) ∙ + ( ap (mul-action-Group G X g') q) ∙ + ( q'))))) + + set-left-adjoint-subst-action-Group : + {l3 : Level} → action-Group G l3 → Set (lsuc l1 ⊔ lsuc l2 ⊔ lsuc l3) - set-left-adjoint-subst-Abstract-Group-Action X = + set-left-adjoint-subst-action-Group X = equivalence-class-Set - ( Equivalence-Relation-obj-left-adjoint-subst-Abstract-Group-Action X) - -{- - obj-left-adjoint-subst-Abstract-Group-Action : - {l3 : Level} → Abstract-Group-Action G l3 → - Abstract-Group-Action H (lsuc l1 ⊔ lsuc l2 ⊔ lsuc l3) - pr1 (obj-left-adjoint-subst-Abstract-Group-Action X) = - set-left-adjoint-subst-Abstract-Group-Action X - pr1 (pr2 (obj-left-adjoint-subst-Abstract-Group-Action X)) h = {!!} - pr2 (pr2 (obj-left-adjoint-subst-Abstract-Group-Action X)) = {!!} --} + ( equivalence-relation-obj-left-adjoint-subst-action-Group X) ``` diff --git a/src/group-theory/surjective-group-homomorphisms.lagda.md b/src/group-theory/surjective-group-homomorphisms.lagda.md index 74a7f22fa3..c482bc5e50 100644 --- a/src/group-theory/surjective-group-homomorphisms.lagda.md +++ b/src/group-theory/surjective-group-homomorphisms.lagda.md @@ -11,15 +11,18 @@ open import foundation.propositions open import foundation.surjective-maps open import foundation.universe-levels +open import group-theory.full-subgroups open import group-theory.groups open import group-theory.homomorphisms-groups +open import group-theory.images-of-group-homomorphisms +open import group-theory.surjective-semigroup-homomorphisms ``` A [group homomorphism](group-theory.homomorphisms-groups.md) `f : G → H` is said to be **surjective** if its underlying map is -[surjective](foundation.surjective-maps.md) +[surjective](foundation.surjective-maps.md). ## Definition @@ -31,12 +34,43 @@ module _ where is-surjective-prop-hom-Group : Prop (l1 ⊔ l2) - is-surjective-prop-hom-Group = is-surjective-Prop (map-hom-Group G H f) + is-surjective-prop-hom-Group = + is-surjective-prop-hom-Semigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) is-surjective-hom-Group : UU (l1 ⊔ l2) - is-surjective-hom-Group = type-Prop is-surjective-prop-hom-Group + is-surjective-hom-Group = + is-surjective-hom-Semigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) is-prop-is-surjective-hom-Group : is-prop is-surjective-hom-Group is-prop-is-surjective-hom-Group = - is-prop-type-Prop is-surjective-prop-hom-Group + is-prop-is-surjective-hom-Semigroup + ( semigroup-Group G) + ( semigroup-Group H) + ( f) +``` + +## Properties + +### A group homomorphism is surjective if and only if its image is the full subgroup + +```agda +module _ + {l1 l2 : Level} (G : Group l1) (H : Group l2) (f : hom-Group G H) + where + + is-surjective-is-full-subgroup-image-hom-Group : + is-full-Subgroup H (image-hom-Group G H f) → + is-surjective-hom-Group G H f + is-surjective-is-full-subgroup-image-hom-Group u = u + + is-full-subgroup-image-is-surjective-hom-Group : + is-surjective-hom-Group G H f → + is-full-Subgroup H (image-hom-Group G H f) + is-full-subgroup-image-is-surjective-hom-Group u = u ``` diff --git a/src/group-theory/surjective-semigroup-homomorphisms.lagda.md b/src/group-theory/surjective-semigroup-homomorphisms.lagda.md new file mode 100644 index 0000000000..e112844df8 --- /dev/null +++ b/src/group-theory/surjective-semigroup-homomorphisms.lagda.md @@ -0,0 +1,65 @@ +# Surjective semigroup homomorphisms + +```agda +module group-theory.surjective-semigroup-homomorphisms where +``` + +
Imports + +```agda +open import foundation.propositions +open import foundation.surjective-maps +open import foundation.universe-levels + +open import group-theory.full-subsemigroups +open import group-theory.homomorphisms-semigroups +open import group-theory.images-of-semigroup-homomorphisms +open import group-theory.semigroups +``` + +
+ +A [semigroup homomorphism](group-theory.homomorphisms-semigroups.md) `f : G → H` +is said to be **surjective** if its underlying map is +[surjective](foundation.surjective-maps.md). + +## Definition + +### Surjective semigroup homomorphisms + +```agda +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2) (f : hom-Semigroup G H) + where + + is-surjective-prop-hom-Semigroup : Prop (l1 ⊔ l2) + is-surjective-prop-hom-Semigroup = + is-surjective-Prop (map-hom-Semigroup G H f) + + is-surjective-hom-Semigroup : UU (l1 ⊔ l2) + is-surjective-hom-Semigroup = type-Prop is-surjective-prop-hom-Semigroup + + is-prop-is-surjective-hom-Semigroup : is-prop is-surjective-hom-Semigroup + is-prop-is-surjective-hom-Semigroup = + is-prop-type-Prop is-surjective-prop-hom-Semigroup +``` + +## Properties + +### A semigroup homomorphism is surjective if and only if its image is the full subsemigroup + +```agda +module _ + {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2) (f : hom-Semigroup G H) + where + + is-surjective-is-full-subsemigroup-image-hom-Semigroup : + is-full-Subsemigroup H (image-hom-Semigroup G H f) → + is-surjective-hom-Semigroup G H f + is-surjective-is-full-subsemigroup-image-hom-Semigroup u = u + + is-full-subsemigroup-image-is-surjective-hom-Semigroup : + is-surjective-hom-Semigroup G H f → + is-full-Subsemigroup H (image-hom-Semigroup G H f) + is-full-subsemigroup-image-is-surjective-hom-Semigroup u = u +``` diff --git a/src/group-theory/symmetric-groups.lagda.md b/src/group-theory/symmetric-groups.lagda.md index ca763dcc5a..d8873ecf3f 100644 --- a/src/group-theory/symmetric-groups.lagda.md +++ b/src/group-theory/symmetric-groups.lagda.md @@ -87,22 +87,22 @@ module _ hom-symmetric-group-equiv-Set : hom-Group (symmetric-Group X) (symmetric-Group Y) pr1 hom-symmetric-group-equiv-Set f = e ∘e (f ∘e inv-equiv e) - pr2 hom-symmetric-group-equiv-Set f g = + pr2 hom-symmetric-group-equiv-Set {f} {g} = ( eq-equiv-eq-map-equiv refl) ∙ - ( ( ap - ( λ h → e ∘e (( f ∘e (h ∘e g)) ∘e inv-equiv e)) - ( inv (left-inverse-law-equiv e))) ∙ - ( eq-equiv-eq-map-equiv refl)) + ( ap + ( λ h → e ∘e (( f ∘e (h ∘e g)) ∘e inv-equiv e)) + ( inv (left-inverse-law-equiv e))) ∙ + ( eq-equiv-eq-map-equiv refl) hom-inv-symmetric-group-equiv-Set : hom-Group (symmetric-Group Y) (symmetric-Group X) pr1 hom-inv-symmetric-group-equiv-Set f = inv-equiv e ∘e (f ∘e e) - pr2 hom-inv-symmetric-group-equiv-Set f g = + pr2 hom-inv-symmetric-group-equiv-Set {f} {g} = ( eq-equiv-eq-map-equiv refl) ∙ - ( ( ap - ( λ h → inv-equiv e ∘e (( f ∘e (h ∘e g)) ∘e e)) - ( inv (right-inverse-law-equiv e))) ∙ - ( eq-equiv-eq-map-equiv refl)) + ( ap + ( λ h → inv-equiv e ∘e (( f ∘e (h ∘e g)) ∘e e)) + ( inv (right-inverse-law-equiv e))) ∙ + ( eq-equiv-eq-map-equiv refl) is-section-hom-inv-symmetric-group-equiv-Set : Id @@ -118,8 +118,8 @@ module _ ( eq-htpy ( λ f → ( eq-equiv-eq-map-equiv refl) ∙ - ( ( ap (λ h → h ∘e (f ∘e h)) (right-inverse-law-equiv e)) ∙ - ( eq-equiv-eq-map-equiv refl)))) + ( ap (λ h → h ∘e (f ∘e h)) (right-inverse-law-equiv e)) ∙ + ( eq-equiv-eq-map-equiv refl))) ( eq-is-prop ( is-prop-preserves-mul-Semigroup ( semigroup-Group (symmetric-Group Y)) @@ -140,8 +140,8 @@ module _ ( eq-htpy ( λ f → ( eq-equiv-eq-map-equiv refl) ∙ - ( ( ap (λ h → h ∘e (f ∘e h)) (left-inverse-law-equiv e)) ∙ - ( eq-equiv-eq-map-equiv refl)))) + ( ap (λ h → h ∘e (f ∘e h)) (left-inverse-law-equiv e)) ∙ + ( eq-equiv-eq-map-equiv refl))) ( eq-is-prop ( is-prop-preserves-mul-Semigroup ( semigroup-Group (symmetric-Group X)) @@ -184,11 +184,13 @@ module _ ( op-group-Concrete-Group (symmetric-Concrete-Group A)) ( symmetric-Group A) ( map-compute-symmetric-Concrete-Group) - preserves-mul-compute-symmetric-Concrete-Group = + preserves-mul-compute-symmetric-Concrete-Group {x} {y} = preserves-mul-equiv-eq-classifying-type-symmetric-Concrete-Group A ( shape-symmetric-Concrete-Group A) ( shape-symmetric-Concrete-Group A) ( shape-symmetric-Concrete-Group A) + ( x) + ( y) equiv-group-compute-symmetric-Concrete-Group : equiv-Group @@ -196,8 +198,8 @@ module _ ( symmetric-Group A) pr1 equiv-group-compute-symmetric-Concrete-Group = equiv-compute-symmetric-Concrete-Group - pr2 equiv-group-compute-symmetric-Concrete-Group = - preserves-mul-compute-symmetric-Concrete-Group + pr2 equiv-group-compute-symmetric-Concrete-Group {x} {y} = + preserves-mul-compute-symmetric-Concrete-Group {x} {y} compute-symmetric-Concrete-Group' : iso-Group diff --git a/src/group-theory/torsion-free-groups.lagda.md b/src/group-theory/torsion-free-groups.lagda.md index edbbf39e7d..fe76c11b29 100644 --- a/src/group-theory/torsion-free-groups.lagda.md +++ b/src/group-theory/torsion-free-groups.lagda.md @@ -54,7 +54,7 @@ holds for all elements `x : G`. This condition can be formulated in several ```text q · ---------> Prop - | | + | ⌟ | p| | P ↦ {k : ℤ ∣ (k = 0) ∨ P} V V G -------> Subgroup ℤ diff --git a/src/group-theory/torsors.lagda.md b/src/group-theory/torsors.lagda.md index 871157b23e..980fd85a72 100644 --- a/src/group-theory/torsors.lagda.md +++ b/src/group-theory/torsors.lagda.md @@ -52,21 +52,21 @@ A **torsor** of a [group](group-theory.groups.md) `G` is a ```agda module _ - {l1 l2 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) + {l1 l2 : Level} (G : Group l1) (X : action-Group G l2) where - is-torsor-Abstract-Group-Prop : Prop (l1 ⊔ l2) - is-torsor-Abstract-Group-Prop = - mere-equiv-Abstract-Group-Action-Prop G - ( principal-Abstract-Group-Action G) + is-torsor-prop-action-Group : Prop (l1 ⊔ l2) + is-torsor-prop-action-Group = + mere-equiv-prop-action-Group G + ( principal-action-Group G) ( X) - is-torsor-Abstract-Group : UU (l1 ⊔ l2) - is-torsor-Abstract-Group = type-Prop is-torsor-Abstract-Group-Prop + is-torsor-Group : UU (l1 ⊔ l2) + is-torsor-Group = type-Prop is-torsor-prop-action-Group - is-prop-is-torsor-Abstract-Group : is-prop is-torsor-Abstract-Group - is-prop-is-torsor-Abstract-Group = - is-prop-type-Prop is-torsor-Abstract-Group-Prop + is-prop-is-torsor-Group : is-prop is-torsor-Group + is-prop-is-torsor-Group = + is-prop-type-Prop is-torsor-prop-action-Group ``` ### The type of torsors @@ -76,46 +76,46 @@ module _ {l1 : Level} (G : Group l1) where - Torsor-Abstract-Group : (l : Level) → UU (l1 ⊔ lsuc l) - Torsor-Abstract-Group l = - Σ ( Abstract-Group-Action G l) - ( is-torsor-Abstract-Group G) + Torsor-Group : (l : Level) → UU (l1 ⊔ lsuc l) + Torsor-Group l = + Σ ( action-Group G l) + ( is-torsor-Group G) module _ - {l1 l : Level} (G : Group l1) (X : Torsor-Abstract-Group G l) + {l1 l : Level} (G : Group l1) (X : Torsor-Group G l) where - action-Torsor-Abstract-Group : Abstract-Group-Action G l - action-Torsor-Abstract-Group = pr1 X + action-Torsor-Group : action-Group G l + action-Torsor-Group = pr1 X - set-Torsor-Abstract-Group : Set l - set-Torsor-Abstract-Group = - set-Abstract-Group-Action G action-Torsor-Abstract-Group + set-Torsor-Group : Set l + set-Torsor-Group = + set-action-Group G action-Torsor-Group - type-Torsor-Abstract-Group : UU l - type-Torsor-Abstract-Group = type-Set set-Torsor-Abstract-Group + type-Torsor-Group : UU l + type-Torsor-Group = type-Set set-Torsor-Group - is-set-type-Torsor-Abstract-Group : is-set type-Torsor-Abstract-Group - is-set-type-Torsor-Abstract-Group = is-set-type-Set set-Torsor-Abstract-Group + is-set-type-Torsor-Group : is-set type-Torsor-Group + is-set-type-Torsor-Group = is-set-type-Set set-Torsor-Group - mul-hom-Torsor-Abstract-Group : - hom-Group G (symmetric-Group set-Torsor-Abstract-Group) - mul-hom-Torsor-Abstract-Group = pr2 action-Torsor-Abstract-Group + mul-hom-Torsor-Group : + hom-Group G (symmetric-Group set-Torsor-Group) + mul-hom-Torsor-Group = pr2 action-Torsor-Group - equiv-mul-Torsor-Abstract-Group : + equiv-mul-Torsor-Group : type-Group G → - type-Torsor-Abstract-Group ≃ type-Torsor-Abstract-Group - equiv-mul-Torsor-Abstract-Group = - equiv-mul-Abstract-Group-Action G action-Torsor-Abstract-Group - - mul-Torsor-Abstract-Group : - type-Group G → type-Torsor-Abstract-Group → type-Torsor-Abstract-Group - mul-Torsor-Abstract-Group = - mul-Abstract-Group-Action G action-Torsor-Abstract-Group - - is-torsor-action-Torsor-Abstract-Group : - is-torsor-Abstract-Group G action-Torsor-Abstract-Group - is-torsor-action-Torsor-Abstract-Group = pr2 X + type-Torsor-Group ≃ type-Torsor-Group + equiv-mul-Torsor-Group = + equiv-mul-action-Group G action-Torsor-Group + + mul-Torsor-Group : + type-Group G → type-Torsor-Group → type-Torsor-Group + mul-Torsor-Group = + mul-action-Group G action-Torsor-Group + + is-torsor-action-Torsor-Group : + is-torsor-Group G action-Torsor-Group + is-torsor-action-Torsor-Group = pr2 X ``` ### Principal torsor @@ -125,354 +125,354 @@ module _ {l1 : Level} (G : Group l1) where - principal-Torsor-Abstract-Group : Torsor-Abstract-Group G l1 - pr1 principal-Torsor-Abstract-Group = principal-Abstract-Group-Action G - pr2 principal-Torsor-Abstract-Group = + principal-Torsor-Group : Torsor-Group G l1 + pr1 principal-Torsor-Group = principal-action-Group G + pr2 principal-Torsor-Group = unit-trunc-Prop - ( id-equiv-Abstract-Group-Action G (principal-Abstract-Group-Action G)) + ( id-equiv-action-Group G (principal-action-Group G)) ``` ## Properties -### Characterization of the identity type of `Torsor-Abstract-Group` +### Characterization of the identity type of `Torsor-Group` ```agda module _ - {l1 l2 : Level} (G : Group l1) (X : Torsor-Abstract-Group G l2) + {l1 l2 : Level} (G : Group l1) (X : Torsor-Group G l2) where - equiv-Torsor-Abstract-Group : - {l3 : Level} (Y : Torsor-Abstract-Group G l3) → UU (l1 ⊔ l2 ⊔ l3) - equiv-Torsor-Abstract-Group Y = - equiv-Abstract-Group-Action G - ( action-Torsor-Abstract-Group G X) - ( action-Torsor-Abstract-Group G Y) - - id-equiv-Torsor-Abstract-Group : equiv-Torsor-Abstract-Group X - id-equiv-Torsor-Abstract-Group = - id-equiv-Abstract-Group-Action G (action-Torsor-Abstract-Group G X) - - equiv-eq-Torsor-Abstract-Group : - (Y : Torsor-Abstract-Group G l2) → Id X Y → equiv-Torsor-Abstract-Group Y - equiv-eq-Torsor-Abstract-Group .X refl = - id-equiv-Torsor-Abstract-Group - - is-torsorial-equiv-Torsor-Abstract-Group : - is-torsorial equiv-Torsor-Abstract-Group - is-torsorial-equiv-Torsor-Abstract-Group = + equiv-Torsor-Group : + {l3 : Level} (Y : Torsor-Group G l3) → UU (l1 ⊔ l2 ⊔ l3) + equiv-Torsor-Group Y = + equiv-action-Group G + ( action-Torsor-Group G X) + ( action-Torsor-Group G Y) + + id-equiv-Torsor-Group : equiv-Torsor-Group X + id-equiv-Torsor-Group = + id-equiv-action-Group G (action-Torsor-Group G X) + + equiv-eq-Torsor-Group : + (Y : Torsor-Group G l2) → Id X Y → equiv-Torsor-Group Y + equiv-eq-Torsor-Group .X refl = + id-equiv-Torsor-Group + + is-torsorial-equiv-Torsor-Group : + is-torsorial equiv-Torsor-Group + is-torsorial-equiv-Torsor-Group = is-torsorial-Eq-subtype - ( is-torsorial-equiv-Abstract-Group-Action G - ( action-Torsor-Abstract-Group G X)) - ( is-prop-is-torsor-Abstract-Group G) - ( action-Torsor-Abstract-Group G X) - ( id-equiv-Torsor-Abstract-Group) - ( is-torsor-action-Torsor-Abstract-Group G X) - - is-equiv-equiv-eq-Torsor-Abstract-Group : - (Y : Torsor-Abstract-Group G l2) → - is-equiv (equiv-eq-Torsor-Abstract-Group Y) - is-equiv-equiv-eq-Torsor-Abstract-Group = + ( is-torsorial-equiv-action-Group G + ( action-Torsor-Group G X)) + ( is-prop-is-torsor-Group G) + ( action-Torsor-Group G X) + ( id-equiv-Torsor-Group) + ( is-torsor-action-Torsor-Group G X) + + is-equiv-equiv-eq-Torsor-Group : + (Y : Torsor-Group G l2) → + is-equiv (equiv-eq-Torsor-Group Y) + is-equiv-equiv-eq-Torsor-Group = fundamental-theorem-id - is-torsorial-equiv-Torsor-Abstract-Group - equiv-eq-Torsor-Abstract-Group - - eq-equiv-Torsor-Abstract-Group : - (Y : Torsor-Abstract-Group G l2) → equiv-Torsor-Abstract-Group Y → Id X Y - eq-equiv-Torsor-Abstract-Group Y = - map-inv-is-equiv (is-equiv-equiv-eq-Torsor-Abstract-Group Y) - - extensionality-Torsor-Abstract-Group : - (Y : Torsor-Abstract-Group G l2) → Id X Y ≃ equiv-Torsor-Abstract-Group Y - pr1 (extensionality-Torsor-Abstract-Group Y) = - equiv-eq-Torsor-Abstract-Group Y - pr2 (extensionality-Torsor-Abstract-Group Y) = - is-equiv-equiv-eq-Torsor-Abstract-Group Y + is-torsorial-equiv-Torsor-Group + equiv-eq-Torsor-Group + + eq-equiv-Torsor-Group : + (Y : Torsor-Group G l2) → equiv-Torsor-Group Y → Id X Y + eq-equiv-Torsor-Group Y = + map-inv-is-equiv (is-equiv-equiv-eq-Torsor-Group Y) + + extensionality-Torsor-Group : + (Y : Torsor-Group G l2) → Id X Y ≃ equiv-Torsor-Group Y + pr1 (extensionality-Torsor-Group Y) = + equiv-eq-Torsor-Group Y + pr2 (extensionality-Torsor-Group Y) = + is-equiv-equiv-eq-Torsor-Group Y ``` -### Characterization of the identity type of equivalences between `Torsor-Abstract-Group` +### Characterization of the identity type of equivalences between `Torsor-Group` ```agda module _ {l1 l2 l3 : Level} (G : Group l1) - (X : Torsor-Abstract-Group G l2) - (Y : Torsor-Abstract-Group G l3) - (e : equiv-Torsor-Abstract-Group G X Y) + (X : Torsor-Group G l2) + (Y : Torsor-Group G l3) + (e : equiv-Torsor-Group G X Y) where - htpy-equiv-Torsor-Abstract-Group : - equiv-Torsor-Abstract-Group G X Y → UU (l2 ⊔ l3) - htpy-equiv-Torsor-Abstract-Group = - htpy-equiv-Abstract-Group-Action G - ( action-Torsor-Abstract-Group G X) - ( action-Torsor-Abstract-Group G Y) + htpy-equiv-Torsor-Group : + equiv-Torsor-Group G X Y → UU (l2 ⊔ l3) + htpy-equiv-Torsor-Group = + htpy-equiv-action-Group G + ( action-Torsor-Group G X) + ( action-Torsor-Group G Y) ( e) - refl-htpy-equiv-Torsor-Abstract-Group : - htpy-equiv-Torsor-Abstract-Group e - refl-htpy-equiv-Torsor-Abstract-Group = - refl-htpy-equiv-Abstract-Group-Action G - ( action-Torsor-Abstract-Group G X) - ( action-Torsor-Abstract-Group G Y) + refl-htpy-equiv-Torsor-Group : + htpy-equiv-Torsor-Group e + refl-htpy-equiv-Torsor-Group = + refl-htpy-equiv-action-Group G + ( action-Torsor-Group G X) + ( action-Torsor-Group G Y) ( e) - htpy-eq-equiv-Torsor-Abstract-Group : - (f : equiv-Torsor-Abstract-Group G X Y) → - Id e f → htpy-equiv-Torsor-Abstract-Group f - htpy-eq-equiv-Torsor-Abstract-Group .e refl = - refl-htpy-equiv-Torsor-Abstract-Group - - is-torsorial-htpy-equiv-Torsor-Abstract-Group : - is-torsorial htpy-equiv-Torsor-Abstract-Group - is-torsorial-htpy-equiv-Torsor-Abstract-Group = - is-torsorial-htpy-equiv-Abstract-Group-Action G - ( action-Torsor-Abstract-Group G X) - ( action-Torsor-Abstract-Group G Y) + htpy-eq-equiv-Torsor-Group : + (f : equiv-Torsor-Group G X Y) → + Id e f → htpy-equiv-Torsor-Group f + htpy-eq-equiv-Torsor-Group .e refl = + refl-htpy-equiv-Torsor-Group + + is-torsorial-htpy-equiv-Torsor-Group : + is-torsorial htpy-equiv-Torsor-Group + is-torsorial-htpy-equiv-Torsor-Group = + is-torsorial-htpy-equiv-action-Group G + ( action-Torsor-Group G X) + ( action-Torsor-Group G Y) ( e) - is-equiv-htpy-eq-equiv-Torsor-Abstract-Group : - (f : equiv-Torsor-Abstract-Group G X Y) → - is-equiv (htpy-eq-equiv-Torsor-Abstract-Group f) - is-equiv-htpy-eq-equiv-Torsor-Abstract-Group = + is-equiv-htpy-eq-equiv-Torsor-Group : + (f : equiv-Torsor-Group G X Y) → + is-equiv (htpy-eq-equiv-Torsor-Group f) + is-equiv-htpy-eq-equiv-Torsor-Group = fundamental-theorem-id - is-torsorial-htpy-equiv-Torsor-Abstract-Group - htpy-eq-equiv-Torsor-Abstract-Group - - extensionality-equiv-Torsor-Abstract-Group : - (f : equiv-Torsor-Abstract-Group G X Y) → - Id e f ≃ htpy-equiv-Torsor-Abstract-Group f - pr1 (extensionality-equiv-Torsor-Abstract-Group f) = - htpy-eq-equiv-Torsor-Abstract-Group f - pr2 (extensionality-equiv-Torsor-Abstract-Group f) = - is-equiv-htpy-eq-equiv-Torsor-Abstract-Group f - - eq-htpy-equiv-Torsor-Abstract-Group : - (f : equiv-Torsor-Abstract-Group G X Y) → - htpy-equiv-Torsor-Abstract-Group f → Id e f - eq-htpy-equiv-Torsor-Abstract-Group f = - map-inv-is-equiv (is-equiv-htpy-eq-equiv-Torsor-Abstract-Group f) + is-torsorial-htpy-equiv-Torsor-Group + htpy-eq-equiv-Torsor-Group + + extensionality-equiv-Torsor-Group : + (f : equiv-Torsor-Group G X Y) → + Id e f ≃ htpy-equiv-Torsor-Group f + pr1 (extensionality-equiv-Torsor-Group f) = + htpy-eq-equiv-Torsor-Group f + pr2 (extensionality-equiv-Torsor-Group f) = + is-equiv-htpy-eq-equiv-Torsor-Group f + + eq-htpy-equiv-Torsor-Group : + (f : equiv-Torsor-Group G X Y) → + htpy-equiv-Torsor-Group f → Id e f + eq-htpy-equiv-Torsor-Group f = + map-inv-is-equiv (is-equiv-htpy-eq-equiv-Torsor-Group f) ``` -### Definition of the Group `aut-principal-Torsor-Abstract-Group` from a `Torsor-Abstract-Group` +### Definition of the Group `aut-principal-Torsor-Group` from a `Torsor-Group` ```agda module _ {l1 l2 l3 : Level} (G : Group l1) - (X : Torsor-Abstract-Group G l2) - (Y : Torsor-Abstract-Group G l3) + (X : Torsor-Group G l2) + (Y : Torsor-Group G l3) where - is-set-equiv-Torsor-Abstract-Group : - is-set (equiv-Torsor-Abstract-Group G X Y) - is-set-equiv-Torsor-Abstract-Group e f = + is-set-equiv-Torsor-Group : + is-set (equiv-Torsor-Group G X Y) + is-set-equiv-Torsor-Group e f = is-prop-equiv - ( extensionality-equiv-Torsor-Abstract-Group G X Y e f) + ( extensionality-equiv-Torsor-Group G X Y e f) ( is-prop-Π ( λ x → - is-set-type-Torsor-Abstract-Group G Y + is-set-type-Torsor-Group G Y ( map-equiv (pr1 e) x) ( map-equiv (pr1 f) x))) module _ {l1 l2 l3 l4 : Level} (G : Group l1) - (X : Torsor-Abstract-Group G l2) - (Y : Torsor-Abstract-Group G l3) - (Z : Torsor-Abstract-Group G l4) + (X : Torsor-Group G l2) + (Y : Torsor-Group G l3) + (Z : Torsor-Group G l4) where - comp-equiv-Torsor-Abstract-Group : - equiv-Torsor-Abstract-Group G Y Z → - equiv-Torsor-Abstract-Group G X Y → - equiv-Torsor-Abstract-Group G X Z - comp-equiv-Torsor-Abstract-Group = - comp-equiv-Abstract-Group-Action G - ( action-Torsor-Abstract-Group G X) - ( action-Torsor-Abstract-Group G Y) - ( action-Torsor-Abstract-Group G Z) - - comp-equiv-Torsor-Abstract-Group' : - equiv-Torsor-Abstract-Group G X Y → - equiv-Torsor-Abstract-Group G Y Z → - equiv-Torsor-Abstract-Group G X Z - comp-equiv-Torsor-Abstract-Group' e f = - comp-equiv-Torsor-Abstract-Group f e + comp-equiv-Torsor-Group : + equiv-Torsor-Group G Y Z → + equiv-Torsor-Group G X Y → + equiv-Torsor-Group G X Z + comp-equiv-Torsor-Group = + comp-equiv-action-Group G + ( action-Torsor-Group G X) + ( action-Torsor-Group G Y) + ( action-Torsor-Group G Z) + + comp-equiv-Torsor-Group' : + equiv-Torsor-Group G X Y → + equiv-Torsor-Group G Y Z → + equiv-Torsor-Group G X Z + comp-equiv-Torsor-Group' e f = + comp-equiv-Torsor-Group f e module _ {l1 l2 l3 : Level} (G : Group l1) - (X : Torsor-Abstract-Group G l2) - (Y : Torsor-Abstract-Group G l3) + (X : Torsor-Group G l2) + (Y : Torsor-Group G l3) where - inv-equiv-Torsor-Abstract-Group : - equiv-Torsor-Abstract-Group G X Y → - equiv-Torsor-Abstract-Group G Y X - inv-equiv-Torsor-Abstract-Group = - inv-equiv-Abstract-Group-Action G - ( action-Torsor-Abstract-Group G X) - ( action-Torsor-Abstract-Group G Y) + inv-equiv-Torsor-Group : + equiv-Torsor-Group G X Y → + equiv-Torsor-Group G Y X + inv-equiv-Torsor-Group = + inv-equiv-action-Group G + ( action-Torsor-Group G X) + ( action-Torsor-Group G Y) module _ {l1 l2 l3 l4 l5 : Level} (G : Group l1) - (X1 : Torsor-Abstract-Group G l2) - (X2 : Torsor-Abstract-Group G l3) - (X3 : Torsor-Abstract-Group G l4) - (X4 : Torsor-Abstract-Group G l5) + (X1 : Torsor-Group G l2) + (X2 : Torsor-Group G l3) + (X3 : Torsor-Group G l4) + (X4 : Torsor-Group G l5) where - associative-comp-equiv-Torsor-Abstract-Group : - (h : equiv-Torsor-Abstract-Group G X3 X4) - (g : equiv-Torsor-Abstract-Group G X2 X3) - (f : equiv-Torsor-Abstract-Group G X1 X2) → + associative-comp-equiv-Torsor-Group : + (h : equiv-Torsor-Group G X3 X4) + (g : equiv-Torsor-Group G X2 X3) + (f : equiv-Torsor-Group G X1 X2) → Id - ( comp-equiv-Torsor-Abstract-Group G X1 X2 X4 - ( comp-equiv-Torsor-Abstract-Group G X2 X3 X4 h g) + ( comp-equiv-Torsor-Group G X1 X2 X4 + ( comp-equiv-Torsor-Group G X2 X3 X4 h g) ( f)) - ( comp-equiv-Torsor-Abstract-Group G X1 X3 X4 h - ( comp-equiv-Torsor-Abstract-Group G X1 X2 X3 g f)) - associative-comp-equiv-Torsor-Abstract-Group h g f = - eq-htpy-equiv-Torsor-Abstract-Group G X1 X4 - ( comp-equiv-Torsor-Abstract-Group G X1 X2 X4 - ( comp-equiv-Torsor-Abstract-Group G X2 X3 X4 h g) + ( comp-equiv-Torsor-Group G X1 X3 X4 h + ( comp-equiv-Torsor-Group G X1 X2 X3 g f)) + associative-comp-equiv-Torsor-Group h g f = + eq-htpy-equiv-Torsor-Group G X1 X4 + ( comp-equiv-Torsor-Group G X1 X2 X4 + ( comp-equiv-Torsor-Group G X2 X3 X4 h g) ( f)) - ( comp-equiv-Torsor-Abstract-Group G X1 X3 X4 h - ( comp-equiv-Torsor-Abstract-Group G X1 X2 X3 g f)) + ( comp-equiv-Torsor-Group G X1 X3 X4 h + ( comp-equiv-Torsor-Group G X1 X2 X3 g f)) ( refl-htpy) module _ {l1 l2 l3 : Level} (G : Group l1) - (X : Torsor-Abstract-Group G l2) - (Y : Torsor-Abstract-Group G l3) + (X : Torsor-Group G l2) + (Y : Torsor-Group G l3) where - left-unit-law-comp-equiv-Torsor-Abstract-Group : - (f : equiv-Torsor-Abstract-Group G X Y) → + left-unit-law-comp-equiv-Torsor-Group : + (f : equiv-Torsor-Group G X Y) → Id - ( comp-equiv-Torsor-Abstract-Group G X Y Y - ( id-equiv-Torsor-Abstract-Group G Y) + ( comp-equiv-Torsor-Group G X Y Y + ( id-equiv-Torsor-Group G Y) ( f)) ( f) - left-unit-law-comp-equiv-Torsor-Abstract-Group f = - eq-htpy-equiv-Torsor-Abstract-Group G X Y - ( comp-equiv-Torsor-Abstract-Group G X Y Y - ( id-equiv-Torsor-Abstract-Group G Y) + left-unit-law-comp-equiv-Torsor-Group f = + eq-htpy-equiv-Torsor-Group G X Y + ( comp-equiv-Torsor-Group G X Y Y + ( id-equiv-Torsor-Group G Y) ( f)) ( f) ( refl-htpy) - right-unit-law-comp-equiv-Torsor-Abstract-Group : - (f : equiv-Torsor-Abstract-Group G X Y) → + right-unit-law-comp-equiv-Torsor-Group : + (f : equiv-Torsor-Group G X Y) → Id - ( comp-equiv-Torsor-Abstract-Group G X X Y f - ( id-equiv-Torsor-Abstract-Group G X)) + ( comp-equiv-Torsor-Group G X X Y f + ( id-equiv-Torsor-Group G X)) ( f) - right-unit-law-comp-equiv-Torsor-Abstract-Group f = - eq-htpy-equiv-Torsor-Abstract-Group G X Y - ( comp-equiv-Torsor-Abstract-Group G X X Y f - ( id-equiv-Torsor-Abstract-Group G X)) + right-unit-law-comp-equiv-Torsor-Group f = + eq-htpy-equiv-Torsor-Group G X Y + ( comp-equiv-Torsor-Group G X X Y f + ( id-equiv-Torsor-Group G X)) ( f) ( refl-htpy) - left-inverse-law-comp-equiv-Torsor-Abstract-Group : - (f : equiv-Torsor-Abstract-Group G X Y) → + left-inverse-law-comp-equiv-Torsor-Group : + (f : equiv-Torsor-Group G X Y) → Id - ( comp-equiv-Torsor-Abstract-Group G X Y X - ( inv-equiv-Torsor-Abstract-Group G X Y f) + ( comp-equiv-Torsor-Group G X Y X + ( inv-equiv-Torsor-Group G X Y f) ( f)) - ( id-equiv-Torsor-Abstract-Group G X) - left-inverse-law-comp-equiv-Torsor-Abstract-Group f = - eq-htpy-equiv-Torsor-Abstract-Group G X X - ( comp-equiv-Torsor-Abstract-Group G X Y X - ( inv-equiv-Torsor-Abstract-Group G X Y f) + ( id-equiv-Torsor-Group G X) + left-inverse-law-comp-equiv-Torsor-Group f = + eq-htpy-equiv-Torsor-Group G X X + ( comp-equiv-Torsor-Group G X Y X + ( inv-equiv-Torsor-Group G X Y f) ( f)) - ( id-equiv-Torsor-Abstract-Group G X) + ( id-equiv-Torsor-Group G X) ( is-retraction-map-inv-equiv (pr1 f)) - right-inverse-law-comp-equiv-Torsor-Abstract-Group : - (f : equiv-Torsor-Abstract-Group G X Y) → + right-inverse-law-comp-equiv-Torsor-Group : + (f : equiv-Torsor-Group G X Y) → Id - ( comp-equiv-Torsor-Abstract-Group G Y X Y f - ( inv-equiv-Torsor-Abstract-Group G X Y f)) - ( id-equiv-Torsor-Abstract-Group G Y) - right-inverse-law-comp-equiv-Torsor-Abstract-Group f = - eq-htpy-equiv-Torsor-Abstract-Group G Y Y - ( comp-equiv-Torsor-Abstract-Group G Y X Y f - ( inv-equiv-Torsor-Abstract-Group G X Y f)) - ( id-equiv-Torsor-Abstract-Group G Y) + ( comp-equiv-Torsor-Group G Y X Y f + ( inv-equiv-Torsor-Group G X Y f)) + ( id-equiv-Torsor-Group G Y) + right-inverse-law-comp-equiv-Torsor-Group f = + eq-htpy-equiv-Torsor-Group G Y Y + ( comp-equiv-Torsor-Group G Y X Y f + ( inv-equiv-Torsor-Group G X Y f)) + ( id-equiv-Torsor-Group G Y) ( is-section-map-inv-equiv (pr1 f)) module _ {l1 : Level} (G : Group l1) where - preserves-mul-equiv-eq-Torsor-Abstract-Group : - {l2 : Level} (X Y Z : Torsor-Abstract-Group G l2) + preserves-mul-equiv-eq-Torsor-Group : + {l2 : Level} (X Y Z : Torsor-Group G l2) (p : Id X Y) (q : Id Y Z) → Id - ( equiv-eq-Torsor-Abstract-Group G X Z (p ∙ q)) - ( comp-equiv-Torsor-Abstract-Group G X Y Z - ( equiv-eq-Torsor-Abstract-Group G Y Z q) - ( equiv-eq-Torsor-Abstract-Group G X Y p)) - preserves-mul-equiv-eq-Torsor-Abstract-Group X .X Z refl q = - inv ( right-unit-law-comp-equiv-Torsor-Abstract-Group G X Z - ( equiv-eq-Torsor-Abstract-Group G X Z q)) + ( equiv-eq-Torsor-Group G X Z (p ∙ q)) + ( comp-equiv-Torsor-Group G X Y Z + ( equiv-eq-Torsor-Group G Y Z q) + ( equiv-eq-Torsor-Group G X Y p)) + preserves-mul-equiv-eq-Torsor-Group X .X Z refl q = + inv ( right-unit-law-comp-equiv-Torsor-Group G X Z + ( equiv-eq-Torsor-Group G X Z q)) module _ {l1 : Level} (G : Group l1) where - aut-principal-Torsor-Abstract-Group : Group l1 - pr1 (pr1 (pr1 aut-principal-Torsor-Abstract-Group)) = - equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr2 (pr1 (pr1 aut-principal-Torsor-Abstract-Group)) = - is-set-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr1 (pr2 (pr1 aut-principal-Torsor-Abstract-Group)) = - comp-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr2 (pr2 (pr1 aut-principal-Torsor-Abstract-Group)) = - associative-comp-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr1 (pr1 (pr2 aut-principal-Torsor-Abstract-Group)) = - id-equiv-Torsor-Abstract-Group G (principal-Torsor-Abstract-Group G) - pr1 (pr2 (pr1 (pr2 aut-principal-Torsor-Abstract-Group))) = - left-unit-law-comp-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr2 (pr2 (pr1 (pr2 aut-principal-Torsor-Abstract-Group))) = - right-unit-law-comp-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr1 (pr2 (pr2 aut-principal-Torsor-Abstract-Group)) = - inv-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr1 (pr2 (pr2 (pr2 aut-principal-Torsor-Abstract-Group))) = - left-inverse-law-comp-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr2 (pr2 (pr2 (pr2 aut-principal-Torsor-Abstract-Group))) = - right-inverse-law-comp-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) + aut-principal-Torsor-Group : Group l1 + pr1 (pr1 (pr1 aut-principal-Torsor-Group)) = + equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr2 (pr1 (pr1 aut-principal-Torsor-Group)) = + is-set-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr1 (pr2 (pr1 aut-principal-Torsor-Group)) = + comp-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr2 (pr2 (pr1 aut-principal-Torsor-Group)) = + associative-comp-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr1 (pr1 (pr2 aut-principal-Torsor-Group)) = + id-equiv-Torsor-Group G (principal-Torsor-Group G) + pr1 (pr2 (pr1 (pr2 aut-principal-Torsor-Group))) = + left-unit-law-comp-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr2 (pr2 (pr1 (pr2 aut-principal-Torsor-Group))) = + right-unit-law-comp-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr1 (pr2 (pr2 aut-principal-Torsor-Group)) = + inv-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr1 (pr2 (pr2 (pr2 aut-principal-Torsor-Group))) = + left-inverse-law-comp-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr2 (pr2 (pr2 (pr2 aut-principal-Torsor-Group))) = + right-inverse-law-comp-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) ``` -### The type `Torsor-Abstract-Group` is `0-connected` +### The type `Torsor-Group` is `0-connected` ```agda module _ - {l1 l2 : Level} (G : Group l1) (X : Torsor-Abstract-Group G l2) + {l1 l2 : Level} (G : Group l1) (X : Torsor-Group G l2) where - mere-eq-Torsor-Abstract-Group : - (Y : Torsor-Abstract-Group G l2) → mere-eq X Y - mere-eq-Torsor-Abstract-Group Y = + mere-eq-Torsor-Group : + (Y : Torsor-Group G l2) → mere-eq X Y + mere-eq-Torsor-Group Y = apply-universal-property-trunc-Prop ( pr2 X) ( mere-eq-Prop X Y) @@ -482,14 +482,14 @@ module _ ( mere-eq-Prop X Y) ( λ f → unit-trunc-Prop - ( eq-equiv-Torsor-Abstract-Group G X Y - ( comp-equiv-Torsor-Abstract-Group G + ( eq-equiv-Torsor-Group G X Y + ( comp-equiv-Torsor-Group G ( X) - ( principal-Torsor-Abstract-Group G) + ( principal-Torsor-Group G) ( Y) ( f) - ( inv-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) + ( inv-equiv-Torsor-Group G + ( principal-Torsor-Group G) ( X) ( e)))))) @@ -497,157 +497,157 @@ module _ {l1 : Level} (G : Group l1) where - is-0-connected-Torsor-Abstract-Group : - is-0-connected (Torsor-Abstract-Group G l1) - is-0-connected-Torsor-Abstract-Group = + is-0-connected-Torsor-Group : + is-0-connected (Torsor-Group G l1) + is-0-connected-Torsor-Group = is-0-connected-mere-eq - ( principal-Torsor-Abstract-Group G) - ( mere-eq-Torsor-Abstract-Group G (principal-Torsor-Abstract-Group G)) + ( principal-Torsor-Group G) + ( mere-eq-Torsor-Group G (principal-Torsor-Group G)) ``` -### The group `aut-principal-Torsor-Abstract-Group` is isomorphic to `G` +### The group `aut-principal-Torsor-Group` is isomorphic to `G` ```agda module _ {l1 : Level} (G : Group l1) where - Eq-Torsor-Abstract-Group : - (X : Torsor-Abstract-Group G l1) → UU l1 - Eq-Torsor-Abstract-Group X = type-Torsor-Abstract-Group G X + Eq-Torsor-Group : + (X : Torsor-Group G l1) → UU l1 + Eq-Torsor-Group X = type-Torsor-Group G X - refl-Eq-Torsor-Abstract-Group : - Eq-Torsor-Abstract-Group (principal-Torsor-Abstract-Group G) - refl-Eq-Torsor-Abstract-Group = unit-Group G + refl-Eq-Torsor-Group : + Eq-Torsor-Group (principal-Torsor-Group G) + refl-Eq-Torsor-Group = unit-Group G - Eq-equiv-Torsor-Abstract-Group : - (X : Torsor-Abstract-Group G l1) → - equiv-Torsor-Abstract-Group G (principal-Torsor-Abstract-Group G) X → - Eq-Torsor-Abstract-Group X - Eq-equiv-Torsor-Abstract-Group X (e , H) = map-equiv e (unit-Group G) + Eq-equiv-Torsor-Group : + (X : Torsor-Group G l1) → + equiv-Torsor-Group G (principal-Torsor-Group G) X → + Eq-Torsor-Group X + Eq-equiv-Torsor-Group X (e , H) = map-equiv e (unit-Group G) - preserves-mul-Eq-equiv-Torsor-Abstract-Group : + preserves-mul-Eq-equiv-Torsor-Group : (e f : - equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G)) → + equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G)) → Id - ( Eq-equiv-Torsor-Abstract-Group - ( principal-Torsor-Abstract-Group G) - ( comp-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) + ( Eq-equiv-Torsor-Group + ( principal-Torsor-Group G) + ( comp-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) ( f) ( e))) ( mul-Group G - ( Eq-equiv-Torsor-Abstract-Group - ( principal-Torsor-Abstract-Group G) + ( Eq-equiv-Torsor-Group + ( principal-Torsor-Group G) ( e)) - ( Eq-equiv-Torsor-Abstract-Group - ( principal-Torsor-Abstract-Group G) + ( Eq-equiv-Torsor-Group + ( principal-Torsor-Group G) ( f))) - preserves-mul-Eq-equiv-Torsor-Abstract-Group (e , H) (f , K) = + preserves-mul-Eq-equiv-Torsor-Group (e , H) (f , K) = ( ap ( map-equiv f) ( inv (right-unit-law-mul-Group G (map-equiv e (unit-Group G))))) ∙ ( K (map-equiv e (unit-Group G)) (unit-Group G)) - equiv-Eq-Torsor-Abstract-Group : - Eq-Torsor-Abstract-Group (principal-Torsor-Abstract-Group G) → - equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - pr1 (equiv-Eq-Torsor-Abstract-Group u) = equiv-mul-Group' G u - pr2 (equiv-Eq-Torsor-Abstract-Group u) g x = associative-mul-Group G g x u - - is-section-equiv-Eq-Torsor-Abstract-Group : - ( Eq-equiv-Torsor-Abstract-Group (principal-Torsor-Abstract-Group G) ∘ - equiv-Eq-Torsor-Abstract-Group) ~ + equiv-Eq-Torsor-Group : + Eq-Torsor-Group (principal-Torsor-Group G) → + equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + pr1 (equiv-Eq-Torsor-Group u) = equiv-mul-Group' G u + pr2 (equiv-Eq-Torsor-Group u) g x = associative-mul-Group G g x u + + is-section-equiv-Eq-Torsor-Group : + ( Eq-equiv-Torsor-Group (principal-Torsor-Group G) ∘ + equiv-Eq-Torsor-Group) ~ ( id) - is-section-equiv-Eq-Torsor-Abstract-Group u = left-unit-law-mul-Group G u + is-section-equiv-Eq-Torsor-Group u = left-unit-law-mul-Group G u - is-retraction-equiv-Eq-Torsor-Abstract-Group : - ( equiv-Eq-Torsor-Abstract-Group ∘ - Eq-equiv-Torsor-Abstract-Group (principal-Torsor-Abstract-Group G)) ~ + is-retraction-equiv-Eq-Torsor-Group : + ( equiv-Eq-Torsor-Group ∘ + Eq-equiv-Torsor-Group (principal-Torsor-Group G)) ~ ( id) - is-retraction-equiv-Eq-Torsor-Abstract-Group e = - eq-htpy-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - ( equiv-Eq-Torsor-Abstract-Group - ( Eq-equiv-Torsor-Abstract-Group (principal-Torsor-Abstract-Group G) e)) + is-retraction-equiv-Eq-Torsor-Group e = + eq-htpy-equiv-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + ( equiv-Eq-Torsor-Group + ( Eq-equiv-Torsor-Group (principal-Torsor-Group G) e)) ( e) ( λ g → ( inv (pr2 e g (unit-Group G))) ∙ ( ap (map-equiv (pr1 e)) (right-unit-law-mul-Group G g))) abstract - is-equiv-Eq-equiv-Torsor-Abstract-Group : - (X : Torsor-Abstract-Group G l1) → - is-equiv (Eq-equiv-Torsor-Abstract-Group X) - is-equiv-Eq-equiv-Torsor-Abstract-Group X = + is-equiv-Eq-equiv-Torsor-Group : + (X : Torsor-Group G l1) → + is-equiv (Eq-equiv-Torsor-Group X) + is-equiv-Eq-equiv-Torsor-Group X = apply-universal-property-trunc-Prop - ( is-torsor-action-Torsor-Abstract-Group G X) - ( is-equiv-Prop (Eq-equiv-Torsor-Abstract-Group X)) + ( is-torsor-action-Torsor-Group G X) + ( is-equiv-Prop (Eq-equiv-Torsor-Group X)) ( λ e → tr - ( λ Y → is-equiv (Eq-equiv-Torsor-Abstract-Group Y)) - ( eq-equiv-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) + ( λ Y → is-equiv (Eq-equiv-Torsor-Group Y)) + ( eq-equiv-Torsor-Group G + ( principal-Torsor-Group G) ( X) ( e)) ( is-equiv-is-invertible - equiv-Eq-Torsor-Abstract-Group - is-section-equiv-Eq-Torsor-Abstract-Group - is-retraction-equiv-Eq-Torsor-Abstract-Group)) - - equiv-Eq-equiv-Torsor-Abstract-Group : - (X : Torsor-Abstract-Group G l1) → - Id (principal-Torsor-Abstract-Group G) X ≃ Eq-Torsor-Abstract-Group X - equiv-Eq-equiv-Torsor-Abstract-Group X = - ( ( Eq-equiv-Torsor-Abstract-Group X) , - ( is-equiv-Eq-equiv-Torsor-Abstract-Group X)) ∘e - ( extensionality-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) + equiv-Eq-Torsor-Group + is-section-equiv-Eq-Torsor-Group + is-retraction-equiv-Eq-Torsor-Group)) + + equiv-Eq-equiv-Torsor-Group : + (X : Torsor-Group G l1) → + Id (principal-Torsor-Group G) X ≃ Eq-Torsor-Group X + equiv-Eq-equiv-Torsor-Group X = + ( ( Eq-equiv-Torsor-Group X) , + ( is-equiv-Eq-equiv-Torsor-Group X)) ∘e + ( extensionality-Torsor-Group G + ( principal-Torsor-Group G) ( X)) - preserves-mul-equiv-Eq-equiv-Torsor-Abstract-Group : - ( p q : + preserves-mul-equiv-Eq-equiv-Torsor-Group : + { p q : Id - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G)) → + ( principal-Torsor-Group G) + ( principal-Torsor-Group G)} → Id ( map-equiv - ( equiv-Eq-equiv-Torsor-Abstract-Group - ( principal-Torsor-Abstract-Group G)) + ( equiv-Eq-equiv-Torsor-Group + ( principal-Torsor-Group G)) ( p ∙ q)) ( mul-Group G ( map-equiv - ( equiv-Eq-equiv-Torsor-Abstract-Group - ( principal-Torsor-Abstract-Group G)) + ( equiv-Eq-equiv-Torsor-Group + ( principal-Torsor-Group G)) ( p)) ( map-equiv - ( equiv-Eq-equiv-Torsor-Abstract-Group - ( principal-Torsor-Abstract-Group G)) + ( equiv-Eq-equiv-Torsor-Group + ( principal-Torsor-Group G)) ( q))) - preserves-mul-equiv-Eq-equiv-Torsor-Abstract-Group p q = + preserves-mul-equiv-Eq-equiv-Torsor-Group {p} {q} = ( ap - ( Eq-equiv-Torsor-Abstract-Group (principal-Torsor-Abstract-Group G)) - ( preserves-mul-equiv-eq-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) + ( Eq-equiv-Torsor-Group (principal-Torsor-Group G)) + ( preserves-mul-equiv-eq-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) ( p) ( q))) ∙ - ( preserves-mul-Eq-equiv-Torsor-Abstract-Group - ( equiv-eq-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) + ( preserves-mul-Eq-equiv-Torsor-Group + ( equiv-eq-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) ( p)) - ( equiv-eq-Torsor-Abstract-Group G - ( principal-Torsor-Abstract-Group G) - ( principal-Torsor-Abstract-Group G) + ( equiv-eq-Torsor-Group G + ( principal-Torsor-Group G) + ( principal-Torsor-Group G) ( q))) ``` @@ -655,17 +655,17 @@ module _ ```agda ∞-group-Group : ∞-Group (lsuc l1) - pr1 (pr1 ∞-group-Group) = Torsor-Abstract-Group G l1 - pr2 (pr1 ∞-group-Group) = principal-Torsor-Abstract-Group G - pr2 ∞-group-Group = is-0-connected-Torsor-Abstract-Group G + pr1 (pr1 ∞-group-Group) = Torsor-Group G l1 + pr2 (pr1 ∞-group-Group) = principal-Torsor-Group G + pr2 ∞-group-Group = is-0-connected-Torsor-Group G concrete-group-Group : Concrete-Group (lsuc l1) pr1 concrete-group-Group = ∞-group-Group pr2 concrete-group-Group = is-set-equiv ( type-Group G) - ( equiv-Eq-equiv-Torsor-Abstract-Group - ( principal-Torsor-Abstract-Group G)) + ( equiv-Eq-equiv-Torsor-Group + ( principal-Torsor-Group G)) ( is-set-type-Group G) classifying-type-Group : UU (lsuc l1) @@ -684,19 +684,8 @@ module _ iso-equiv-Group ( group-Concrete-Group concrete-group-Group) ( G) - ( ( equiv-Eq-equiv-Torsor-Abstract-Group - ( principal-Torsor-Abstract-Group G)) , - ( preserves-mul-equiv-Eq-equiv-Torsor-Abstract-Group)) -``` - -```text -module _ - {l1 l2 : Level} (G : Group l1) (H : Group l2) - where - - map-Torsor-Abstract-Group : - hom-Group G H → Torsor-Abstract-Group G l1 → Torsor-Abstract-Group H l2 - pr1 (pr1 (map-Torsor-Abstract-Group f X)) = {!!} - pr2 (pr1 (map-Torsor-Abstract-Group f X)) = {!!} - pr2 (map-Torsor-Abstract-Group f X) = {!!} + ( ( equiv-Eq-equiv-Torsor-Group + ( principal-Torsor-Group G)) , + ( λ {p} {q} → + preserves-mul-equiv-Eq-equiv-Torsor-Group {p} {q})) ``` diff --git a/src/group-theory/transitive-concrete-group-actions.lagda.md b/src/group-theory/transitive-concrete-group-actions.lagda.md index 23c80306bc..0304de3da2 100644 --- a/src/group-theory/transitive-concrete-group-actions.lagda.md +++ b/src/group-theory/transitive-concrete-group-actions.lagda.md @@ -70,8 +70,8 @@ module _ {l1 l2 : Level} (G : Concrete-Group l1) (X : action-Concrete-Group l2 G) where - is-transitive-action-Concrete-Group-Prop : Prop (l1 ⊔ l2) - is-transitive-action-Concrete-Group-Prop = + is-transitive-prop-action-Concrete-Group : Prop (l1 ⊔ l2) + is-transitive-prop-action-Concrete-Group = is-transitive-prop-action-∞-Group ( ∞-group-Concrete-Group G) ( type-Set ∘ X) @@ -123,7 +123,7 @@ module _ transitive-action-Concrete-Group : {l1 : Level} (l2 : Level) (G : Concrete-Group l1) → UU (l1 ⊔ lsuc l2) transitive-action-Concrete-Group l2 G = - type-subtype (is-transitive-action-Concrete-Group-Prop {l2 = l2} G) + type-subtype (is-transitive-prop-action-Concrete-Group {l2 = l2} G) module _ {l1 l2 : Level} (G : Concrete-Group l1) @@ -250,7 +250,7 @@ module _ ( action-transitive-action-Concrete-Group G X) ( action-transitive-action-Concrete-Group G Y)) ∘e ( extensionality-type-subtype' - ( is-transitive-action-Concrete-Group-Prop G) + ( is-transitive-prop-action-Concrete-Group G) ( X) ( Y)) ``` @@ -273,9 +273,9 @@ module _ ( e) ( f) - htpy-equiv-transitive-action-Concrete-Group-Prop : Prop (l2 ⊔ l3) - htpy-equiv-transitive-action-Concrete-Group-Prop = - htpy-equiv-action-Concrete-Group-Prop G + htpy-prop-equiv-transitive-action-Concrete-Group : Prop (l2 ⊔ l3) + htpy-prop-equiv-transitive-action-Concrete-Group = + htpy-prop-equiv-action-Concrete-Group G ( action-transitive-action-Concrete-Group G X) ( action-transitive-action-Concrete-Group G Y) ( e) @@ -289,7 +289,7 @@ module _ htpy-equiv-transitive-action-Concrete-Group htpy-exists-equiv-transitive-action-Concrete-Group H = apply-universal-property-trunc-Prop H - ( htpy-equiv-transitive-action-Concrete-Group-Prop) + ( htpy-prop-equiv-transitive-action-Concrete-Group) ( λ (x , p) y → apply-universal-property-trunc-Prop ( pr2 @@ -324,7 +324,7 @@ module _ is-1-type (transitive-action-Concrete-Group l2 G) is-1-type-transitive-action-Concrete-Group = is-1-type-type-subtype - ( is-transitive-action-Concrete-Group-Prop G) + ( is-transitive-prop-action-Concrete-Group G) ( is-1-type-action-Concrete-Group G) transitive-action-1-type-Concrete-Group : 1-Type (l1 ⊔ lsuc l2) diff --git a/src/group-theory/transitive-group-actions.lagda.md b/src/group-theory/transitive-group-actions.lagda.md index 5b1f53fa44..921d189f73 100644 --- a/src/group-theory/transitive-group-actions.lagda.md +++ b/src/group-theory/transitive-group-actions.lagda.md @@ -10,6 +10,7 @@ module group-theory.transitive-group-actions where open import foundation.existential-quantification open import foundation.identity-types open import foundation.propositions +open import foundation.surjective-maps open import foundation.universe-levels open import group-theory.group-actions @@ -20,25 +21,27 @@ open import group-theory.groups ## Idea -A group `G` is said to act transitively on a set `X` if for every `x` and `y` in -`X` there is a group element `g` such that `gx = y`. +A [group](group-theory.groups.md) `G` is said to **act transitively** on a +[set](foundation-core.sets.md) `X` if for every `x : X` the map + +```text + g ↦ gx : G → X +``` + +is [surjective](foundation.surjective-maps.md). In other words, a +[group action](group-theory.group-actions.md) is transitive if any two elements +are in the same [orbit](group-theory.orbits-group-actions.md). ## Definition ```agda module _ - {l1 l2 : Level} (G : Group l1) (X : Abstract-Group-Action G l2) + {l1 l2 : Level} (G : Group l1) (X : action-Group G l2) where - is-transitive-Abstract-Group-Action : Prop (l1 ⊔ l2) - is-transitive-Abstract-Group-Action = + is-transitive-prop-action-Group : Prop (l1 ⊔ l2) + is-transitive-prop-action-Group = Π-Prop - ( type-Abstract-Group-Action G X) - ( λ x → - Π-Prop - ( type-Abstract-Group-Action G X) - ( λ y → - ∃-Prop - ( type-Group G) - ( λ g → Id (mul-Abstract-Group-Action G X g x) y))) + ( type-action-Group G X) + ( λ x → is-surjective-Prop (λ g → mul-action-Group G X g x)) ``` diff --git a/src/group-theory/trivial-group-homomorphisms.lagda.md b/src/group-theory/trivial-group-homomorphisms.lagda.md index c31818e98d..3cc3b50278 100644 --- a/src/group-theory/trivial-group-homomorphisms.lagda.md +++ b/src/group-theory/trivial-group-homomorphisms.lagda.md @@ -56,5 +56,5 @@ module _ trivial-hom-Group : hom-Group G H pr1 trivial-hom-Group x = unit-Group H - pr2 trivial-hom-Group x y = inv (left-unit-law-mul-Group H (unit-Group H)) + pr2 trivial-hom-Group = inv (left-unit-law-mul-Group H (unit-Group H)) ``` diff --git a/src/group-theory/trivial-subgroups.lagda.md b/src/group-theory/trivial-subgroups.lagda.md index 3f7e5e1284..e26bfde47b 100644 --- a/src/group-theory/trivial-subgroups.lagda.md +++ b/src/group-theory/trivial-subgroups.lagda.md @@ -24,30 +24,29 @@ it only contains the unit element of `G`. ## Definitions -### Trivial subgroups +### The trivial subgroup ```agda module _ - {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) + {l1 : Level} (G : Group l1) where - is-trivial-Subgroup : UU (l1 ⊔ l2) - is-trivial-Subgroup = - (x : type-Group G) → is-in-Subgroup G H x → x = unit-Group G + trivial-Subgroup : Subgroup l1 G + pr1 trivial-Subgroup x = is-unit-prop-Group' G x + pr1 (pr2 trivial-Subgroup) = refl + pr1 (pr2 (pr2 trivial-Subgroup)) refl refl = + inv (left-unit-law-mul-Group G (unit-Group G)) + pr2 (pr2 (pr2 trivial-Subgroup)) refl = + inv (inv-unit-Group G) ``` -### The trivial subgroup +### The predicate of being a trivial subgroup ```agda module _ - {l1 : Level} (G : Group l1) + {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) where - trivial-Subgroup : Subgroup l1 G - pr1 trivial-Subgroup x = is-unit-group-Prop G x - pr1 (pr2 trivial-Subgroup) = refl - pr1 (pr2 (pr2 trivial-Subgroup)) .(unit-Group G) .(unit-Group G) refl refl = - left-unit-law-mul-Group G (unit-Group G) - pr2 (pr2 (pr2 trivial-Subgroup)) .(unit-Group G) refl = - inv-unit-Group G + is-trivial-Subgroup : UU (l1 ⊔ l2) + is-trivial-Subgroup = leq-Subgroup G H (trivial-Subgroup G) ``` diff --git a/src/group-theory/wild-representations-monoids.lagda.md b/src/group-theory/wild-representations-monoids.lagda.md index 74d678fd3e..0e219abd51 100644 --- a/src/group-theory/wild-representations-monoids.lagda.md +++ b/src/group-theory/wild-representations-monoids.lagda.md @@ -64,7 +64,7 @@ module _ ( hom-action-wild-representation-type-Monoid) preserves-mul-action-wild-representation-type-Monoid : - ( x y : type-Monoid M) → + { x y : type-Monoid M} → ( action-wild-representation-type-Monoid (mul-Monoid M x y)) = ( ( action-wild-representation-type-Monoid x) ∘ ( action-wild-representation-type-Monoid y)) diff --git a/src/higher-group-theory/homomorphisms-higher-groups.lagda.md b/src/higher-group-theory/homomorphisms-higher-groups.lagda.md index dfe8b1b2d1..e40ff05191 100644 --- a/src/higher-group-theory/homomorphisms-higher-groups.lagda.md +++ b/src/higher-group-theory/homomorphisms-higher-groups.lagda.md @@ -54,7 +54,7 @@ module _ preserves-unit-map-hom-∞-Group = preserves-refl-map-Ω preserves-mul-map-hom-∞-Group : - (f : hom-∞-Group) (x y : type-∞-Group G) → + (f : hom-∞-Group) {x y : type-∞-Group G} → map-hom-∞-Group f (mul-∞-Group G x y) = mul-∞-Group H (map-hom-∞-Group f x) (map-hom-∞-Group f y) preserves-mul-map-hom-∞-Group = preserves-mul-map-Ω diff --git a/src/linear-algebra/scalar-multiplication-vectors-on-rings.lagda.md b/src/linear-algebra/scalar-multiplication-vectors-on-rings.lagda.md index a8bf826d42..b4d616f839 100644 --- a/src/linear-algebra/scalar-multiplication-vectors-on-rings.lagda.md +++ b/src/linear-algebra/scalar-multiplication-vectors-on-rings.lagda.md @@ -85,18 +85,18 @@ module _ scalar-mul-vec-Ring-endomorphism : (n : ℕ) (r : type-Ring R) → hom-Ab (vec-Ring-Ab R n) (vec-Ring-Ab R n) pr1 (scalar-mul-vec-Ring-endomorphism n r) = scalar-mul-vec-Ring r - pr2 (scalar-mul-vec-Ring-endomorphism n r) = - left-distributive-scalar-mul-add-vec-Ring r + pr2 (scalar-mul-vec-Ring-endomorphism n r) {x} {y} = + left-distributive-scalar-mul-add-vec-Ring r x y scalar-mul-hom-Ring : (n : ℕ) → hom-Ring R (endomorphism-ring-Ab (vec-Ring-Ab R n)) pr1 (pr1 (scalar-mul-hom-Ring n)) = scalar-mul-vec-Ring-endomorphism n - pr2 (pr1 (scalar-mul-hom-Ring n)) k1 k2 = + pr2 (pr1 (scalar-mul-hom-Ring n)) {k1} {k2} = eq-htpy-hom-Ab ( vec-Ring-Ab R n) ( vec-Ring-Ab R n) ( right-distributive-scalar-mul-add-vec-Ring k1 k2) - pr1 (pr2 (scalar-mul-hom-Ring n)) k1 k2 = + pr1 (pr2 (scalar-mul-hom-Ring n)) {k1} {k2} = eq-htpy-hom-Ab ( vec-Ring-Ab R n) ( vec-Ring-Ab R n) diff --git a/src/lists/universal-property-lists-wild-monoids.lagda.md b/src/lists/universal-property-lists-wild-monoids.lagda.md index f247d877b9..1610b71b90 100644 --- a/src/lists/universal-property-lists-wild-monoids.lagda.md +++ b/src/lists/universal-property-lists-wild-monoids.lagda.md @@ -134,7 +134,7 @@ module _ preserves-unit-map-elim-list-Wild-Monoid = refl preserves-mul-map-elim-list-Wild-Monoid : - preserves-mul + preserves-mul' ( concat-list) ( mul-Wild-Monoid M) ( map-elim-list-Wild-Monoid) @@ -158,7 +158,7 @@ module _ ( left-unit-law-mul-Wild-Monoid M) ( map-elim-list-Wild-Monoid) ( preserves-unit-map-elim-list-Wild-Monoid) - ( preserves-mul-map-elim-list-Wild-Monoid) + ( λ {x} {y} → preserves-mul-map-elim-list-Wild-Monoid x y) preserves-left-unit-law-map-elim-list-Wild-Monoid x = inv ( left-inv @@ -173,7 +173,7 @@ module _ ( right-unit-law-mul-Wild-Monoid M) ( map-elim-list-Wild-Monoid) ( preserves-unit-map-elim-list-Wild-Monoid) - ( preserves-mul-map-elim-list-Wild-Monoid) + ( λ {x} {y} → preserves-mul-map-elim-list-Wild-Monoid x y) preserves-right-unit-law-map-elim-list-Wild-Monoid nil = ( inv (left-inv (left-unit-law-mul-Wild-Monoid M (unit-Wild-Monoid M)))) ∙ ( ap @@ -267,7 +267,7 @@ preserves-coh-unit-laws-map-elim-list-Wild-Monoid : ( list-H-Space X) ( h-space-Wild-Monoid M) ( pair (map-elim-list-Wild-Monoid M f) refl) - ( preserves-mul-map-elim-list-Wild-Monoid M f) + ( λ {x} {y} → preserves-mul-map-elim-list-Wild-Monoid M f x y) ( preserves-left-unit-law-map-elim-list-Wild-Monoid M f) ( preserves-right-unit-law-map-elim-list-Wild-Monoid M f) preserves-coh-unit-laws-map-elim-list-Wild-Monoid @@ -281,7 +281,7 @@ elim-list-Wild-Monoid M f = pair ( pair (map-elim-list-Wild-Monoid M f) refl) ( pair - ( preserves-mul-map-elim-list-Wild-Monoid M f) + ( λ {x} {y} → preserves-mul-map-elim-list-Wild-Monoid M f x y) ( pair (preserves-left-unit-law-map-elim-list-Wild-Monoid M f) ( pair ( preserves-right-unit-law-map-elim-list-Wild-Monoid M f) @@ -290,43 +290,46 @@ elim-list-Wild-Monoid M f = ### Contractibility of the type `hom (list X) M` of morphisms of wild monoids -```agda --- htpy-elim-list-Wild-Monoid : --- {l1 l2 : Level} {X : UU l1} (M : Wild-Monoid l2) --- (g h : hom-Wild-Monoid (list-Wild-Monoid X) M) --- ( H : ( map-hom-Wild-Monoid (list-Wild-Monoid X) M g ∘ unit-list) ~ --- ( map-hom-Wild-Monoid (list-Wild-Monoid X) M h ∘ unit-list)) → --- htpy-hom-Wild-Monoid (list-Wild-Monoid X) M g h --- htpy-elim-list-Wild-Monoid {X = X} M g h H = --- pair (pair α β) γ --- where --- α : pr1 (pr1 g) ~ pr1 (pr1 h) --- α nil = --- ( preserves-unit-map-hom-Wild-Monoid (list-Wild-Monoid X) M g) ∙ --- ( inv (preserves-unit-map-hom-Wild-Monoid (list-Wild-Monoid X) M h)) --- α (cons x l) = --- ( preserves-mul-map-hom-Wild-Monoid --- ( list-Wild-Monoid X) --- ( M) --- ( g) --- ( unit-list x) --- ( l)) ∙ --- ( ( ap-mul-Wild-Monoid M (H x) (α l)) ∙ --- ( inv --- ( preserves-mul-map-hom-Wild-Monoid --- ( list-Wild-Monoid X) --- ( M) --- ( h) --- ( unit-list x) --- ( l)))) --- β : (x y : pr1 (pr1 (list-Wild-Monoid X))) → --- Id ( pr2 (pr1 g) x y ∙ ap-mul-Wild-Monoid M (α x) (α y)) --- ( α (concat-list x y) ∙ pr2 (pr1 h) x y) --- β nil y = {!!} --- β (cons x x₁) y = {!!} --- γ : Id (pr2 g) (α nil ∙ pr2 h) --- γ = --- ( inv right-unit) ∙ --- ( ( ap (concat (pr2 g) (pr1 (pr2 M))) (inv (left-inv (pr2 h)))) ∙ --- ( inv (assoc (pr2 g) (inv (pr2 h)) (pr2 h)))) +This remains to be formalized. The following block contains some abandoned old +code towards this goal: + +```text +htpy-elim-list-Wild-Monoid : + {l1 l2 : Level} {X : UU l1} (M : Wild-Monoid l2) + (g h : hom-Wild-Monoid (list-Wild-Monoid X) M) + ( H : ( map-hom-Wild-Monoid (list-Wild-Monoid X) M g ∘ unit-list) ~ + ( map-hom-Wild-Monoid (list-Wild-Monoid X) M h ∘ unit-list)) → + htpy-hom-Wild-Monoid (list-Wild-Monoid X) M g h +htpy-elim-list-Wild-Monoid {X = X} M g h H = + pair (pair α β) γ + where + α : pr1 (pr1 g) ~ pr1 (pr1 h) + α nil = + ( preserves-unit-map-hom-Wild-Monoid (list-Wild-Monoid X) M g) ∙ + ( inv (preserves-unit-map-hom-Wild-Monoid (list-Wild-Monoid X) M h)) + α (cons x l) = + ( preserves-mul-map-hom-Wild-Monoid + ( list-Wild-Monoid X) + ( M) + ( g) + ( unit-list x) + ( l)) ∙ + ( ( ap-mul-Wild-Monoid M (H x) (α l)) ∙ + ( inv + ( preserves-mul-map-hom-Wild-Monoid + ( list-Wild-Monoid X) + ( M) + ( h) + ( unit-list x) + ( l)))) + β : (x y : pr1 (pr1 (list-Wild-Monoid X))) → + Id ( pr2 (pr1 g) x y ∙ ap-mul-Wild-Monoid M (α x) (α y)) + ( α (concat-list x y) ∙ pr2 (pr1 h) x y) + β nil y = {!!} + β (cons x x₁) y = {!!} + γ : Id (pr2 g) (α nil ∙ pr2 h) + γ = + ( inv right-unit) ∙ + ( ( ap (concat (pr2 g) (pr1 (pr2 M))) (inv (left-inv (pr2 h)))) ∙ + ( inv (assoc (pr2 g) (inv (pr2 h)) (pr2 h)))) ``` diff --git a/src/order-theory.lagda.md b/src/order-theory.lagda.md index 63bb2e593b..a243276159 100644 --- a/src/order-theory.lagda.md +++ b/src/order-theory.lagda.md @@ -11,6 +11,8 @@ open import order-theory.chains-posets public open import order-theory.chains-preorders public open import order-theory.closure-operators-large-locales public open import order-theory.closure-operators-large-posets public +open import order-theory.commuting-squares-of-galois-connections-large-posets public +open import order-theory.commuting-squares-of-order-preserving-maps-large-posets public open import order-theory.coverings-locales public open import order-theory.decidable-posets public open import order-theory.decidable-preorders public @@ -68,6 +70,7 @@ open import order-theory.locales public open import order-theory.locally-finite-posets public open import order-theory.lower-bounds-large-posets public open import order-theory.lower-bounds-posets public +open import order-theory.lower-sets-large-posets public open import order-theory.lower-types-preorders public open import order-theory.maximal-chains-posets public open import order-theory.maximal-chains-preorders public @@ -87,9 +90,13 @@ open import order-theory.precategory-of-inhabited-finite-total-orders public open import order-theory.precategory-of-posets public open import order-theory.precategory-of-total-orders public open import order-theory.preorders public +open import order-theory.principal-lower-sets-large-posets public +open import order-theory.principal-upper-sets-large-posets public open import order-theory.reflective-galois-connections-large-posets public open import order-theory.similarity-of-elements-large-posets public open import order-theory.similarity-of-elements-large-preorders public +open import order-theory.similarity-of-order-preserving-maps-large-posets public +open import order-theory.similarity-of-order-preserving-maps-large-preorders public open import order-theory.subposets public open import order-theory.subpreorders public open import order-theory.suplattices public @@ -100,4 +107,5 @@ open import order-theory.total-orders public open import order-theory.total-preorders public open import order-theory.upper-bounds-large-posets public open import order-theory.upper-bounds-posets public +open import order-theory.upper-sets-large-posets public ``` diff --git a/src/order-theory/closure-operators-large-locales.lagda.md b/src/order-theory/closure-operators-large-locales.lagda.md index ed34d62d05..598a5cebe2 100644 --- a/src/order-theory/closure-operators-large-locales.lagda.md +++ b/src/order-theory/closure-operators-large-locales.lagda.md @@ -63,7 +63,7 @@ module _ where hom-large-poset-closure-operator-Large-Locale : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( large-poset-Large-Locale L) ( large-poset-Large-Locale L) diff --git a/src/order-theory/closure-operators-large-posets.lagda.md b/src/order-theory/closure-operators-large-posets.lagda.md index 5c2fed2f49..87c91ccfb9 100644 --- a/src/order-theory/closure-operators-large-posets.lagda.md +++ b/src/order-theory/closure-operators-large-posets.lagda.md @@ -47,7 +47,7 @@ module _ where field hom-closure-operator-Large-Poset : - hom-set-Large-Poset (λ l → l) P P + hom-Large-Poset (λ l → l) P P is-inflationary-closure-operator-Large-Poset : {l1 : Level} (x : type-Large-Poset P l1) → leq-Large-Poset P x diff --git a/src/order-theory/commuting-squares-of-galois-connections-large-posets.lagda.md b/src/order-theory/commuting-squares-of-galois-connections-large-posets.lagda.md new file mode 100644 index 0000000000..ff9bfb86c1 --- /dev/null +++ b/src/order-theory/commuting-squares-of-galois-connections-large-posets.lagda.md @@ -0,0 +1,116 @@ +# Commuting squares of Galois connections between large posets + +```agda +module order-theory.commuting-squares-of-galois-connections-large-posets where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import order-theory.commuting-squares-of-order-preserving-maps-large-posets +open import order-theory.galois-connections-large-posets +open import order-theory.large-posets +``` + +
+ +## Idea + +Consider a diagram of +[Galois connections](order-theory.galois-connections-large-posets.md) + +```text + LI + -------> + P ⊥ U + | <------- + | ∧ UI | ∧ + | | | | + LF | | LG | | + |⊣| UF |⊣| UG + | | | | + ∨ | LJ ∨ | + -------> | + Q ⊥ V. + <------- + UJ +``` + +between [large posets](order-theory.large-posets.md). We say that the diagram +**commutes** if there is a +[similarity](order-theory.similarity-of-order-preserving-maps-large-posets.md) +`LJ ∘ LF ≈ LG ∘ LI`. This condition is +[equivalent](foundation.logical-equivalences.md) the condition that there is a +similarity `UF ∘ UJ ≈ UI ∘ UG`. + +## Definitions + +### Commuting squares of Galois connections + +```agda +module _ + {αP αQ αU αV γF γG γI γJ δF δG δI δJ : Level → Level} + {βP βQ βU βV : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (U : Large-Poset αU βU) + (V : Large-Poset αV βV) + (I : galois-connection-Large-Poset γI δI P U) + (F : galois-connection-Large-Poset γF δF P Q) + (G : galois-connection-Large-Poset γG δG U V) + (J : galois-connection-Large-Poset γJ δJ Q V) + where + + lower-coherence-square-galois-connection-Large-Poset : UUω + lower-coherence-square-galois-connection-Large-Poset = + lower-sim-galois-connection-Large-Poset P V + ( comp-galois-connection-Large-Poset P Q V J F) + ( comp-galois-connection-Large-Poset P U V G I) + + upper-coherence-square-galois-connection-Large-Poset : UUω + upper-coherence-square-galois-connection-Large-Poset = + upper-sim-galois-connection-Large-Poset P V + ( comp-galois-connection-Large-Poset P U V G I) + ( comp-galois-connection-Large-Poset P Q V J F) +``` + +## Properties + +### A commuting square of lower adjoints of galois connections induces a commuting square of upper adjoints and vice versa + +```agda +module _ + {αP αQ αU αV γF γG γI γJ δF δG δI δJ : Level → Level} + {βP βQ βU βV : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (U : Large-Poset αU βU) + (V : Large-Poset αV βV) + (I : galois-connection-Large-Poset γI δI P U) + (F : galois-connection-Large-Poset γF δF P Q) + (G : galois-connection-Large-Poset γG δG U V) + (J : galois-connection-Large-Poset γJ δJ Q V) + where + + lower-coherence-square-upper-coherence-square-galois-connection-Large-Poset : + upper-coherence-square-galois-connection-Large-Poset + P Q U V I F G J → + lower-coherence-square-galois-connection-Large-Poset + P Q U V I F G J + lower-coherence-square-upper-coherence-square-galois-connection-Large-Poset = + lower-sim-upper-sim-galois-connection-Large-Poset P V + ( comp-galois-connection-Large-Poset P Q V J F) + ( comp-galois-connection-Large-Poset P U V G I) + + upper-coherence-square-lower-coherence-square-galois-connection-Large-Poset : + lower-coherence-square-galois-connection-Large-Poset + P Q U V I F G J → + upper-coherence-square-galois-connection-Large-Poset + P Q U V I F G J + upper-coherence-square-lower-coherence-square-galois-connection-Large-Poset = + upper-sim-lower-sim-galois-connection-Large-Poset P V + ( comp-galois-connection-Large-Poset P Q V J F) + ( comp-galois-connection-Large-Poset P U V G I) +``` diff --git a/src/order-theory/commuting-squares-of-order-preserving-maps-large-posets.lagda.md b/src/order-theory/commuting-squares-of-order-preserving-maps-large-posets.lagda.md new file mode 100644 index 0000000000..757d613c0d --- /dev/null +++ b/src/order-theory/commuting-squares-of-order-preserving-maps-large-posets.lagda.md @@ -0,0 +1,72 @@ +# Commuting squares of order preserving maps of large posets + +```agda +module + order-theory.commuting-squares-of-order-preserving-maps-large-posets + where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import foundation-core.commuting-squares-of-maps + +open import order-theory.large-posets +open import order-theory.order-preserving-maps-large-posets +open import order-theory.similarity-of-order-preserving-maps-large-posets +``` + +
+ +## Idea + +A square + +```text + i + P -----> U + | | + f | | g + V V + Q -----> V + j +``` + +of [order preserving maps](order-theory.order-preserving-maps-large-posets.md) +between [large posets](order-theory.large-posets.md) is said to **commute** if +for each `x : type-Large-Poset P l` the elements + +```text + j (f x) : type-Large-Poset V (γj (γf l)) + g (i x) : type-Large-Poset V (γg (γi l)) +``` + +are [similar](order-theory.similarity-of-elements-large-posets.md). In other +words, we say that the square above commutes if the composites `j ∘ f` and +`g ∘ i` are +[similar](order-theory.similarity-of-order-preserving-maps-large-posets.md). + +## Definitions + +```agda +module _ + {αP αQ αU αV γi γf γg γj : Level → Level} + {βP βQ βU βV : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (U : Large-Poset αU βU) + (V : Large-Poset αV βV) + (i : hom-Large-Poset γi P U) + (f : hom-Large-Poset γf P Q) + (g : hom-Large-Poset γg U V) + (j : hom-Large-Poset γj Q V) + where + + coherence-square-hom-Large-Poset : UUω + coherence-square-hom-Large-Poset = + sim-hom-Large-Poset P V + ( comp-hom-Large-Poset P Q V j f) + ( comp-hom-Large-Poset P U V g i) +``` diff --git a/src/order-theory/galois-connections-large-posets.lagda.md b/src/order-theory/galois-connections-large-posets.lagda.md index 98e4ac5e41..eee2b9a4da 100644 --- a/src/order-theory/galois-connections-large-posets.lagda.md +++ b/src/order-theory/galois-connections-large-posets.lagda.md @@ -7,12 +7,20 @@ module order-theory.galois-connections-large-posets where
Imports ```agda +open import foundation.action-on-identifications-functions +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.homotopies open import foundation.logical-equivalences open import foundation.universe-levels open import order-theory.large-posets open import order-theory.least-upper-bounds-large-posets open import order-theory.order-preserving-maps-large-posets +open import order-theory.principal-lower-sets-large-posets +open import order-theory.principal-upper-sets-large-posets +open import order-theory.similarity-of-elements-large-posets +open import order-theory.similarity-of-order-preserving-maps-large-posets ```
@@ -22,8 +30,8 @@ open import order-theory.order-preserving-maps-large-posets A **galois connection** between [large posets](order-theory.large-posets.md) `P` and `Q` consists of [order preserving maps](order-theory.order-preserving-maps-large-posets.md) -`f : hom-set-Large-Poset (λ l → l) P Q` and `hom-set-Large-Poset id Q P` such -that the adjoint relation +`f : hom-Large-Poset (λ l → l) P Q` and `hom-Large-Poset id Q P` such that the +adjoint relation ```text (f x ≤ y) ↔ (x ≤ g y) @@ -36,7 +44,40 @@ the agda-unimath library {{#include tables/galois-connections.md}} -## Definition +## Definitions + +### The adjoint relation between order preserving maps between large posets + +```agda +module _ + {αP αQ γ δ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (F : hom-Large-Poset γ P Q) (G : hom-Large-Poset δ Q P) + where + + forward-implication-adjoint-relation-hom-Large-Poset : UUω + forward-implication-adjoint-relation-hom-Large-Poset = + {l1 l2 : Level} + {x : type-Large-Poset P l1} {y : type-Large-Poset Q l2} → + leq-Large-Poset Q (map-hom-Large-Poset P Q F x) y → + leq-Large-Poset P x (map-hom-Large-Poset Q P G y) + + backward-implication-adjoint-relation-hom-Large-Poset : UUω + backward-implication-adjoint-relation-hom-Large-Poset = + {l1 l2 : Level} + {x : type-Large-Poset P l1} {y : type-Large-Poset Q l2} → + leq-Large-Poset P x (map-hom-Large-Poset Q P G y) → + leq-Large-Poset Q (map-hom-Large-Poset P Q F x) y + + adjoint-relation-hom-Large-Poset : UUω + adjoint-relation-hom-Large-Poset = + {l1 l2 : Level} + (x : type-Large-Poset P l1) (y : type-Large-Poset Q l2) → + leq-Large-Poset Q (map-hom-Large-Poset P Q F x) y ↔ + leq-Large-Poset P x (map-hom-Large-Poset Q P G y) +``` + +### Galois connections between large posets ```agda module _ @@ -52,21 +93,13 @@ module _ make-galois-connection-Large-Poset field lower-adjoint-galois-connection-Large-Poset : - hom-set-Large-Poset γ P Q + hom-Large-Poset γ P Q upper-adjoint-galois-connection-Large-Poset : - hom-set-Large-Poset δ Q P + hom-Large-Poset δ Q P adjoint-relation-galois-connection-Large-Poset : - {l1 l2 : Level} - (x : type-Large-Poset P l1) (y : type-Large-Poset Q l2) → - leq-Large-Poset Q - ( map-hom-Large-Poset P Q - ( lower-adjoint-galois-connection-Large-Poset) - ( x)) - ( y) ↔ - leq-Large-Poset P x - ( map-hom-Large-Poset Q P - ( upper-adjoint-galois-connection-Large-Poset) - ( y)) + adjoint-relation-hom-Large-Poset P Q + lower-adjoint-galois-connection-Large-Poset + upper-adjoint-galois-connection-Large-Poset open galois-connection-Large-Poset public @@ -108,6 +141,443 @@ module _ preserves-order-upper-adjoint-galois-connection-Large-Poset = preserves-order-hom-Large-Poset Q P ( upper-adjoint-galois-connection-Large-Poset G) + + forward-implication-adjoint-relation-galois-connection-Large-Poset : + forward-implication-adjoint-relation-hom-Large-Poset P Q + ( lower-adjoint-galois-connection-Large-Poset G) + ( upper-adjoint-galois-connection-Large-Poset G) + forward-implication-adjoint-relation-galois-connection-Large-Poset = + forward-implication (adjoint-relation-galois-connection-Large-Poset G _ _) + + backward-implication-adjoint-relation-galois-connection-Large-Poset : + backward-implication-adjoint-relation-hom-Large-Poset P Q + ( lower-adjoint-galois-connection-Large-Poset G) + ( upper-adjoint-galois-connection-Large-Poset G) + backward-implication-adjoint-relation-galois-connection-Large-Poset = + backward-implication (adjoint-relation-galois-connection-Large-Poset G _ _) +``` + +### Composition of Galois connections + +```agda +module _ + {αP αQ αR : Level → Level} {βP βQ βR : Level → Level → Level} + {γG γH : Level → Level} {δG δH : Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (R : Large-Poset αR βR) + (H : galois-connection-Large-Poset γH δH Q R) + (G : galois-connection-Large-Poset γG δG P Q) + where + + lower-adjoint-comp-galois-connection-Large-Poset : + hom-Large-Poset (λ l → γH (γG l)) P R + lower-adjoint-comp-galois-connection-Large-Poset = + comp-hom-Large-Poset P Q R + ( lower-adjoint-galois-connection-Large-Poset H) + ( lower-adjoint-galois-connection-Large-Poset G) + + map-lower-adjoint-comp-galois-connection-Large-Poset : + {l : Level} → type-Large-Poset P l → type-Large-Poset R (γH (γG l)) + map-lower-adjoint-comp-galois-connection-Large-Poset = + map-comp-hom-Large-Poset P Q R + ( lower-adjoint-galois-connection-Large-Poset H) + ( lower-adjoint-galois-connection-Large-Poset G) + + preserves-order-lower-adjoint-comp-galois-connection-Large-Poset : + preserves-order-map-Large-Poset P R + map-lower-adjoint-comp-galois-connection-Large-Poset + preserves-order-lower-adjoint-comp-galois-connection-Large-Poset = + preserves-order-comp-hom-Large-Poset P Q R + ( lower-adjoint-galois-connection-Large-Poset H) + ( lower-adjoint-galois-connection-Large-Poset G) + + upper-adjoint-comp-galois-connection-Large-Poset : + hom-Large-Poset (λ l → δG (δH l)) R P + upper-adjoint-comp-galois-connection-Large-Poset = + comp-hom-Large-Poset R Q P + ( upper-adjoint-galois-connection-Large-Poset G) + ( upper-adjoint-galois-connection-Large-Poset H) + + map-upper-adjoint-comp-galois-connection-Large-Poset : + {l : Level} → type-Large-Poset R l → type-Large-Poset P (δG (δH l)) + map-upper-adjoint-comp-galois-connection-Large-Poset = + map-comp-hom-Large-Poset R Q P + ( upper-adjoint-galois-connection-Large-Poset G) + ( upper-adjoint-galois-connection-Large-Poset H) + + preserves-order-upper-adjoint-comp-galois-connection-Large-Poset : + preserves-order-map-Large-Poset R P + map-upper-adjoint-comp-galois-connection-Large-Poset + preserves-order-upper-adjoint-comp-galois-connection-Large-Poset = + preserves-order-comp-hom-Large-Poset R Q P + ( upper-adjoint-galois-connection-Large-Poset G) + ( upper-adjoint-galois-connection-Large-Poset H) + + forward-implication-adjoint-relation-comp-galois-connection-Large-Poset : + forward-implication-adjoint-relation-hom-Large-Poset P R + lower-adjoint-comp-galois-connection-Large-Poset + upper-adjoint-comp-galois-connection-Large-Poset + forward-implication-adjoint-relation-comp-galois-connection-Large-Poset = + forward-implication-adjoint-relation-galois-connection-Large-Poset P Q G ∘ + forward-implication-adjoint-relation-galois-connection-Large-Poset Q R H + + backward-implication-adjoint-relation-comp-galois-connection-Large-Poset : + backward-implication-adjoint-relation-hom-Large-Poset P R + lower-adjoint-comp-galois-connection-Large-Poset + upper-adjoint-comp-galois-connection-Large-Poset + backward-implication-adjoint-relation-comp-galois-connection-Large-Poset = + backward-implication-adjoint-relation-galois-connection-Large-Poset Q R H ∘ + backward-implication-adjoint-relation-galois-connection-Large-Poset P Q G + + adjoint-relation-comp-galois-connection-Large-Poset : + adjoint-relation-hom-Large-Poset P R + lower-adjoint-comp-galois-connection-Large-Poset + upper-adjoint-comp-galois-connection-Large-Poset + pr1 (adjoint-relation-comp-galois-connection-Large-Poset x y) = + forward-implication-adjoint-relation-comp-galois-connection-Large-Poset + pr2 (adjoint-relation-comp-galois-connection-Large-Poset x y) = + backward-implication-adjoint-relation-comp-galois-connection-Large-Poset + + comp-galois-connection-Large-Poset : + galois-connection-Large-Poset (λ l → γH (γG l)) (λ l → δG (δH l)) P R + lower-adjoint-galois-connection-Large-Poset + comp-galois-connection-Large-Poset = + lower-adjoint-comp-galois-connection-Large-Poset + upper-adjoint-galois-connection-Large-Poset + comp-galois-connection-Large-Poset = + upper-adjoint-comp-galois-connection-Large-Poset + adjoint-relation-galois-connection-Large-Poset + comp-galois-connection-Large-Poset = + adjoint-relation-comp-galois-connection-Large-Poset +``` + +### Homotopies of Galois connections + +**Homotopies of Galois connections** are pointwise identifications between +either their lower adjoints or their upper adjoints. We will show below that +homotopies between lower adjoints induce homotopies between upper adjoints and +vice versa. + +**Note:** We can only have homotopies between Galois connections with the same +universe level reindexing functions. + +```agda +module _ + {αP αQ γ δ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (G H : galois-connection-Large-Poset γ δ P Q) + where + + lower-htpy-galois-connection-Large-Poset : UUω + lower-htpy-galois-connection-Large-Poset = + htpy-hom-Large-Poset P Q + ( lower-adjoint-galois-connection-Large-Poset G) + ( lower-adjoint-galois-connection-Large-Poset H) + + upper-htpy-galois-connection-Large-Poset : UUω + upper-htpy-galois-connection-Large-Poset = + htpy-hom-Large-Poset Q P + ( upper-adjoint-galois-connection-Large-Poset G) + ( upper-adjoint-galois-connection-Large-Poset H) +``` + +### Similarity of Galois connections + +**Similarities of Galois connections** are pointwise +[similarities](order-theory.similarity-of-elements-large-posets.md) between +either their lower or their upper adjoints. We will show below that similarities +between lower adjoints induce similarities between upper adjoints and vice +versa. + +**Note:** Since the notion of similarity applies to galois connections with not +necessarily the same universe level reindexing function, it is slightly more +flexible. For this reason, it may be easier to work with similarity of galois +connections. + +```agda +module _ + {αP αQ γG γH δG δH : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (G : galois-connection-Large-Poset γG δG P Q) + (H : galois-connection-Large-Poset γH δH P Q) + where + + lower-sim-galois-connection-Large-Poset : UUω + lower-sim-galois-connection-Large-Poset = + sim-hom-Large-Poset P Q + ( lower-adjoint-galois-connection-Large-Poset G) + ( lower-adjoint-galois-connection-Large-Poset H) + + upper-sim-galois-connection-Large-Poset : UUω + upper-sim-galois-connection-Large-Poset = + sim-hom-Large-Poset Q P + ( upper-adjoint-galois-connection-Large-Poset G) + ( upper-adjoint-galois-connection-Large-Poset H) +``` + +### Lower universal objects of galois connections + +Consider a Galois connection `G : P → Q` and an element `x : P`. An element +`x' : Q` is then said to satisfy the **lower universal property** with respect +to `x` if the logical equivalence + +```text + (x' ≤-Q y) ↔ (x ≤-P UG y) +``` + +holds for every element `y : Q`. + +```agda +module _ + {αP αQ γ δ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (G : galois-connection-Large-Poset γ δ P Q) + {l1 l2 : Level} (x : type-Large-Poset P l1) + (x' : type-Large-Poset Q l2) + where + + is-lower-element-galois-connection-Large-Poset : UUω + is-lower-element-galois-connection-Large-Poset = + {l : Level} (y : type-Large-Poset Q l) → + leq-Large-Poset Q x' y ↔ + leq-Large-Poset P x + ( map-upper-adjoint-galois-connection-Large-Poset P Q G y) +``` + +### Upper universal objects of galois connections + +Consider a Galois connection `G : P → Q` and an element `y : Q`. An element +`y' : P` is then said to satisfy the **upper universal property** with respect +to `y` if the logical equivalence + +```text + (LG x ≤-Q y) ↔ (x ≤-P y') +``` + +holds for every element `x : P`. + +```agda +module _ + {αP αQ γ δ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (G : galois-connection-Large-Poset γ δ P Q) + {l1 l2 : Level} (y : type-Large-Poset Q l1) + (y' : type-Large-Poset P l2) + where + + is-upper-element-galois-connection-Large-Poset : UUω + is-upper-element-galois-connection-Large-Poset = + {l : Level} (x : type-Large-Poset P l) → + leq-Large-Poset Q + ( map-lower-adjoint-galois-connection-Large-Poset P Q G x) + ( y) ↔ + leq-Large-Poset P x y' +``` + +## Properties + +### A similarity between lower adjoints of a Galois connection induces a similarity between upper adjoints, and vice versa + +**Proof:** Consider two Galois connections `LG ⊣ UG` and `LH ⊣ UH` between `P` +and `Q`, and suppose that `LG(x) ~ LH(x)` for all elements `x : P`. Then it +follows that + +```text + (x ≤ UG(y)) ↔ (LG(x) ≤ y) ↔ (LH(x) ≤ y) ↔ (x ≤ UH(y)). +``` + +Therefore it follows that `UG(y)` and `UH(y)` have the same lower sets, and +hence they must be equal. + +```agda +module _ + {αP αQ γG γH δG δH : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (G : galois-connection-Large-Poset γG δG P Q) + (H : galois-connection-Large-Poset γH δH P Q) + where + + upper-sim-lower-sim-galois-connection-Large-Poset : + lower-sim-galois-connection-Large-Poset P Q G H → + upper-sim-galois-connection-Large-Poset P Q H G + upper-sim-lower-sim-galois-connection-Large-Poset + p x = + sim-has-same-elements-principal-lower-set-element-Large-Poset P + ( λ y → + logical-equivalence-reasoning + leq-Large-Poset P y + ( map-upper-adjoint-galois-connection-Large-Poset P Q H x) + ↔ leq-Large-Poset Q + ( map-lower-adjoint-galois-connection-Large-Poset P Q H y) + ( x) + by inv-iff (adjoint-relation-galois-connection-Large-Poset H y x) + ↔ leq-Large-Poset Q + ( map-lower-adjoint-galois-connection-Large-Poset P Q G y) + ( x) + by + inv-iff + ( has-same-elements-principal-upper-set-element-sim-Large-Poset Q + ( p y) + ( x)) + ↔ leq-Large-Poset P y + ( map-upper-adjoint-galois-connection-Large-Poset P Q G x) + by adjoint-relation-galois-connection-Large-Poset G y x) + + lower-sim-upper-sim-galois-connection-Large-Poset : + upper-sim-galois-connection-Large-Poset P Q H G → + lower-sim-galois-connection-Large-Poset P Q G H + lower-sim-upper-sim-galois-connection-Large-Poset + p y = + sim-has-same-elements-principal-upper-set-element-Large-Poset Q + ( λ x → + logical-equivalence-reasoning + leq-Large-Poset Q + ( map-lower-adjoint-galois-connection-Large-Poset P Q G y) + ( x) + ↔ leq-Large-Poset P y + ( map-upper-adjoint-galois-connection-Large-Poset P Q G x) + by adjoint-relation-galois-connection-Large-Poset G y x + ↔ leq-Large-Poset P y + ( map-upper-adjoint-galois-connection-Large-Poset P Q H x) + by + inv-iff + ( has-same-elements-principal-lower-set-element-sim-Large-Poset P + ( p x) + ( y)) + ↔ leq-Large-Poset Q + ( map-lower-adjoint-galois-connection-Large-Poset P Q H y) + ( x) + by inv-iff (adjoint-relation-galois-connection-Large-Poset H y x)) +``` + +### A homotopy between lower adjoints of a Galois connection induces a homotopy between upper adjoints, and vice versa + +**Proof:** Consider two Galois connections `LG ⊣ UG` and `LH ⊣ UH` between `P` +and `Q`, and suppose that `LG ~ LH`. Then there is a similarity `LG ≈ LH`, and +this induces a similarity `UG ≈ UH`. In other words, we obtain that + +```text + UG y ~ UH y +``` + +for any element `y : Q`. Since `UG y` and `UH y` are of the same universe level, +it follows that they are equal. + +```agda +module _ + {αP αQ γ δ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (G H : galois-connection-Large-Poset γ δ P Q) + where + + upper-htpy-lower-htpy-galois-connection-Large-Poset : + lower-htpy-galois-connection-Large-Poset P Q G H → + upper-htpy-galois-connection-Large-Poset P Q G H + upper-htpy-lower-htpy-galois-connection-Large-Poset p = + htpy-sim-hom-Large-Poset Q P + ( upper-adjoint-galois-connection-Large-Poset G) + ( upper-adjoint-galois-connection-Large-Poset H) + ( upper-sim-lower-sim-galois-connection-Large-Poset P Q H G + ( sim-htpy-hom-Large-Poset P Q + ( lower-adjoint-galois-connection-Large-Poset H) + ( lower-adjoint-galois-connection-Large-Poset G) + ( inv-htpy p))) + + lower-htpy-upper-htpy-galois-connection-Large-Poset : + upper-htpy-galois-connection-Large-Poset P Q H G → + lower-htpy-galois-connection-Large-Poset P Q G H + lower-htpy-upper-htpy-galois-connection-Large-Poset p = + htpy-sim-hom-Large-Poset P Q + ( lower-adjoint-galois-connection-Large-Poset G) + ( lower-adjoint-galois-connection-Large-Poset H) + ( lower-sim-upper-sim-galois-connection-Large-Poset P Q G H + ( sim-htpy-hom-Large-Poset Q P + ( upper-adjoint-galois-connection-Large-Poset H) + ( upper-adjoint-galois-connection-Large-Poset G) + ( p))) +``` + +### An element `x' : Q` satisfies the lower universal property with respect to `x : P` if and only if it is similar to the element `LG x` + +```agda +module _ + {αP αQ : Level → Level} {βP βQ : Level → Level → Level} + {γ δ : Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (G : galois-connection-Large-Poset γ δ P Q) + {l1 l2 : Level} (x : type-Large-Poset P l1) (x' : type-Large-Poset Q l2) + where + + is-lower-element-sim-galois-connection-Large-Poset : + sim-Large-Poset Q + ( map-lower-adjoint-galois-connection-Large-Poset P Q G x) + ( x') → + is-lower-element-galois-connection-Large-Poset P Q G x x' + pr1 (is-lower-element-sim-galois-connection-Large-Poset s y) p = + forward-implication-adjoint-relation-galois-connection-Large-Poset P Q G + ( transitive-leq-Large-Poset Q _ x' y p (pr1 s)) + pr2 (is-lower-element-sim-galois-connection-Large-Poset s y) p = + transitive-leq-Large-Poset Q x' _ y + ( backward-implication-adjoint-relation-galois-connection-Large-Poset + P Q G p) + ( pr2 s) + + sim-is-lower-element-galois-connection-Large-Poset : + is-lower-element-galois-connection-Large-Poset P Q G x x' → + sim-Large-Poset Q + ( map-lower-adjoint-galois-connection-Large-Poset P Q G x) + ( x') + sim-is-lower-element-galois-connection-Large-Poset l = + sim-has-same-elements-principal-upper-set-element-Large-Poset Q + ( λ y → + logical-equivalence-reasoning + leq-Large-Poset Q _ y + ↔ leq-Large-Poset P x _ + by adjoint-relation-galois-connection-Large-Poset G x y + ↔ leq-Large-Poset Q x' y + by inv-iff (l y)) +``` + +### An element `y' : P` satisfies the upper universal property with respect to `y : Q` if and only if it is similar to the element `UG y` + +```agda +module _ + {αP αQ : Level → Level} {βP βQ : Level → Level → Level} + {γ δ : Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + (G : galois-connection-Large-Poset γ δ P Q) + {l1 l2 : Level} (y : type-Large-Poset Q l1) (y' : type-Large-Poset P l2) + where + + is-upper-element-sim-galois-connection-Large-Poset : + sim-Large-Poset P + ( map-upper-adjoint-galois-connection-Large-Poset P Q G y) + ( y') → + is-upper-element-galois-connection-Large-Poset P Q G y y' + pr1 (is-upper-element-sim-galois-connection-Large-Poset s x) p = + transitive-leq-Large-Poset P x _ y' + ( pr1 s) + ( forward-implication-adjoint-relation-galois-connection-Large-Poset + P Q G p) + pr2 (is-upper-element-sim-galois-connection-Large-Poset s x) p = + backward-implication-adjoint-relation-galois-connection-Large-Poset P Q G + ( transitive-leq-Large-Poset P x y' _ (pr2 s) p) + + sim-is-upper-element-galois-connection-Large-Poset : + is-upper-element-galois-connection-Large-Poset P Q G y y' → + sim-Large-Poset P + ( map-upper-adjoint-galois-connection-Large-Poset P Q G y) + ( y') + sim-is-upper-element-galois-connection-Large-Poset u = + sim-has-same-elements-principal-lower-set-element-Large-Poset P + ( λ x → + logical-equivalence-reasoning + leq-Large-Poset P x _ + ↔ leq-Large-Poset Q _ y + by inv-iff (adjoint-relation-galois-connection-Large-Poset G x y) + ↔ leq-Large-Poset P x y' + by u x) ``` ### The lower adjoint of a Galois connection preserves all existing joins @@ -131,13 +601,13 @@ module _ UU (βQ l1 l2) _≤-Q_ = leq-Large-Poset Q - hom-f : hom-set-Large-Poset _ P Q + hom-f : hom-Large-Poset _ P Q hom-f = lower-adjoint-galois-connection-Large-Poset G f : {l : Level} → type-Large-Poset P l → type-Large-Poset Q (γ l) f = map-hom-Large-Poset P Q hom-f - hom-g : hom-set-Large-Poset _ Q P + hom-g : hom-Large-Poset _ Q P hom-g = upper-adjoint-galois-connection-Large-Poset G g : {l : Level} → type-Large-Poset Q l → type-Large-Poset P (δ l) diff --git a/src/order-theory/homomorphisms-large-frames.lagda.md b/src/order-theory/homomorphisms-large-frames.lagda.md index 441c3fb91d..80de9de25d 100644 --- a/src/order-theory/homomorphisms-large-frames.lagda.md +++ b/src/order-theory/homomorphisms-large-frames.lagda.md @@ -33,11 +33,11 @@ module _ where record - hom-set-Large-Frame : UUω + hom-Large-Frame : UUω where field hom-large-meet-semilattice-hom-Large-Frame : - hom-set-Large-Meet-Semilattice + hom-Large-Meet-Semilattice ( large-meet-semilattice-Large-Frame K) ( large-meet-semilattice-Large-Frame L) preserves-sup-hom-Large-Frame : @@ -47,10 +47,10 @@ module _ ( hom-large-poset-hom-Large-Meet-Semilattice ( hom-large-meet-semilattice-hom-Large-Frame)) - open hom-set-Large-Frame public + open hom-Large-Frame public module _ - (f : hom-set-Large-Frame) + (f : hom-Large-Frame) where map-hom-Large-Frame : diff --git a/src/order-theory/homomorphisms-large-locales.lagda.md b/src/order-theory/homomorphisms-large-locales.lagda.md index eb64ab8e8f..ae621fd45d 100644 --- a/src/order-theory/homomorphisms-large-locales.lagda.md +++ b/src/order-theory/homomorphisms-large-locales.lagda.md @@ -30,11 +30,11 @@ module _ (K : Large-Locale αK βK γ) (L : Large-Locale αL βL γ) where - hom-set-Large-Locale : UUω - hom-set-Large-Locale = hom-set-Large-Frame L K + hom-Large-Locale : UUω + hom-Large-Locale = hom-Large-Frame L K module _ - (f : hom-set-Large-Locale) + (f : hom-Large-Locale) where map-hom-Large-Locale : diff --git a/src/order-theory/homomorphisms-large-meet-semilattices.lagda.md b/src/order-theory/homomorphisms-large-meet-semilattices.lagda.md index 19d1d2deaf..ab3ec69077 100644 --- a/src/order-theory/homomorphisms-large-meet-semilattices.lagda.md +++ b/src/order-theory/homomorphisms-large-meet-semilattices.lagda.md @@ -35,11 +35,11 @@ module _ where record - hom-set-Large-Meet-Semilattice : UUω + hom-Large-Meet-Semilattice : UUω where field hom-large-poset-hom-Large-Meet-Semilattice : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( large-poset-Large-Meet-Semilattice K) ( large-poset-Large-Meet-Semilattice L) @@ -71,10 +71,10 @@ module _ ( top-Large-Meet-Semilattice K) = top-Large-Meet-Semilattice L - open hom-set-Large-Meet-Semilattice public + open hom-Large-Meet-Semilattice public module _ - (f : hom-set-Large-Meet-Semilattice) + (f : hom-Large-Meet-Semilattice) where map-hom-Large-Meet-Semilattice : diff --git a/src/order-theory/homomorphisms-large-suplattices.lagda.md b/src/order-theory/homomorphisms-large-suplattices.lagda.md index d68714dc51..ee06bb060a 100644 --- a/src/order-theory/homomorphisms-large-suplattices.lagda.md +++ b/src/order-theory/homomorphisms-large-suplattices.lagda.md @@ -35,7 +35,7 @@ module _ where preserves-sup-hom-Large-Poset : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( large-poset-Large-Suplattice K) ( large-poset-Large-Suplattice L) → @@ -56,21 +56,21 @@ module _ ( x i)) record - hom-set-Large-Suplattice : UUω + hom-Large-Suplattice : UUω where field hom-large-poset-hom-Large-Suplattice : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( large-poset-Large-Suplattice K) ( large-poset-Large-Suplattice L) preserves-sup-hom-Large-Suplattice : preserves-sup-hom-Large-Poset hom-large-poset-hom-Large-Suplattice - open hom-set-Large-Suplattice public + open hom-Large-Suplattice public module _ - (f : hom-set-Large-Suplattice) + (f : hom-Large-Suplattice) where map-hom-Large-Suplattice : diff --git a/src/order-theory/homomorphisms-meet-semilattices.lagda.md b/src/order-theory/homomorphisms-meet-semilattices.lagda.md index 2e4ded3740..d22b55a690 100644 --- a/src/order-theory/homomorphisms-meet-semilattices.lagda.md +++ b/src/order-theory/homomorphisms-meet-semilattices.lagda.md @@ -91,7 +91,7 @@ module _ ( poset-Meet-Semilattice B) ( map-hom-Meet-Semilattice) preserves-order-hom-Meet-Semilattice x y H = - ( inv (preserves-meet-hom-Meet-Semilattice x y)) ∙ + ( inv preserves-meet-hom-Meet-Semilattice) ∙ ( ap map-hom-Meet-Semilattice H) hom-poset-hom-Meet-Semilattice : diff --git a/src/order-theory/join-semilattices.lagda.md b/src/order-theory/join-semilattices.lagda.md index f201e41ec0..cf1160ecee 100644 --- a/src/order-theory/join-semilattices.lagda.md +++ b/src/order-theory/join-semilattices.lagda.md @@ -53,8 +53,8 @@ module _ {l : Level} (X : Semigroup l) where - is-join-semilattice-Semigroup-Prop : Prop l - is-join-semilattice-Semigroup-Prop = + is-join-semilattice-prop-Semigroup : Prop l + is-join-semilattice-prop-Semigroup = prod-Prop ( Π-Prop ( type-Semigroup X) @@ -76,19 +76,19 @@ module _ is-join-semilattice-Semigroup : UU l is-join-semilattice-Semigroup = - type-Prop is-join-semilattice-Semigroup-Prop + type-Prop is-join-semilattice-prop-Semigroup is-prop-is-join-semilattice-Semigroup : is-prop is-join-semilattice-Semigroup is-prop-is-join-semilattice-Semigroup = - is-prop-type-Prop is-join-semilattice-Semigroup-Prop + is-prop-type-Prop is-join-semilattice-prop-Semigroup ``` ### The algebraic definition of join-semilattices ```agda Join-Semilattice : (l : Level) → UU (lsuc l) -Join-Semilattice l = type-subtype is-join-semilattice-Semigroup-Prop +Join-Semilattice l = type-subtype is-join-semilattice-prop-Semigroup module _ {l : Level} (X : Join-Semilattice l) diff --git a/src/order-theory/large-posets.lagda.md b/src/order-theory/large-posets.lagda.md index fd55dfa299..18b3359ba2 100644 --- a/src/order-theory/large-posets.lagda.md +++ b/src/order-theory/large-posets.lagda.md @@ -131,8 +131,6 @@ module _ is-antisymmetric-is-large-poset-Large-Category H ``` -## Properties - ### Small posets from large posets ```agda @@ -154,6 +152,8 @@ module _ is-set-type-Large-Poset {l} = is-set-type-Poset (poset-Large-Poset l) ``` +## Properties + ### Large posets are large categories ```agda diff --git a/src/order-theory/large-subposets.lagda.md b/src/order-theory/large-subposets.lagda.md index 2f9d75d9dc..b29f425ab2 100644 --- a/src/order-theory/large-subposets.lagda.md +++ b/src/order-theory/large-subposets.lagda.md @@ -9,6 +9,7 @@ module order-theory.large-subposets where ```agda open import foundation.dependent-pair-types open import foundation.large-binary-relations +open import foundation.logical-equivalences open import foundation.subtypes open import foundation.universe-levels @@ -34,6 +35,25 @@ this is automatic by antisymmetry. ## Definition +### The predicate of being closed under similarity + +```agda +module _ + {α γ : Level → Level} {β : Level → Level → Level} + (P : Large-Poset α β) (S : Large-Subpreorder γ (large-preorder-Large-Poset P)) + where + + is-closed-under-sim-Large-Subpreorder : UUω + is-closed-under-sim-Large-Subpreorder = + {l1 l2 : Level} + (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → + leq-Large-Poset P x y → leq-Large-Poset P y x → + is-in-Large-Subpreorder (large-preorder-Large-Poset P) S x → + is-in-Large-Subpreorder (large-preorder-Large-Poset P) S y +``` + +### Large subposets + ```agda module _ {α : Level → Level} {β : Level → Level → Level} (γ : Level → Level) @@ -47,17 +67,7 @@ module _ large-subpreorder-Large-Subposet : Large-Subpreorder γ (large-preorder-Large-Poset P) is-closed-under-sim-Large-Subposet : - {l1 l2 : Level} - (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → - leq-Large-Poset P x y → leq-Large-Poset P y x → - is-in-Large-Subpreorder - ( large-preorder-Large-Poset P) - ( large-subpreorder-Large-Subposet) - ( x) → - is-in-Large-Subpreorder - ( large-preorder-Large-Poset P) - ( large-subpreorder-Large-Subposet) - ( y) + is-closed-under-sim-Large-Subpreorder P large-subpreorder-Large-Subposet open Large-Subposet public @@ -136,3 +146,17 @@ module _ large-poset-Large-Subposet = antisymmetric-leq-Large-Subposet ``` + +### The predicate of having the same elements + +```agda +module _ + {α γS γT : Level → Level} {β : Level → Level → Level} + (P : Large-Poset α β) (S : Large-Subposet γS P) (T : Large-Subposet γT P) + where + + has-same-elements-Large-Subposet : UUω + has-same-elements-Large-Subposet = + {l : Level} (x : type-Large-Poset P l) → + is-in-Large-Subposet P S x ↔ is-in-Large-Subposet P T x +``` diff --git a/src/order-theory/lower-sets-large-posets.lagda.md b/src/order-theory/lower-sets-large-posets.lagda.md new file mode 100644 index 0000000000..bef92c55f0 --- /dev/null +++ b/src/order-theory/lower-sets-large-posets.lagda.md @@ -0,0 +1,79 @@ +# Lower sets in large posets + +```agda +module order-theory.lower-sets-large-posets where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import order-theory.large-posets +open import order-theory.large-subposets +``` + +
+ +## Idea + +A **lower set** or **downwards closed set** in a +[large poset](order-theory.large-posets.md) is a +[large subposet](order-theory.large-subposets.md) that is downwards closed, +i.e., that satisfies the condition that + +```text + ∀ (x y : P), (y ≤ x) → x ∈ S → y ∈ S. +``` + +## Definitions + +### The predicate of being a lower set + +```agda +module _ + {α γ : Level → Level} {β : Level → Level → Level} + (P : Large-Poset α β) (S : Large-Subposet γ P) + where + + is-lower-set-Large-Subposet : UUω + is-lower-set-Large-Subposet = + {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → + leq-Large-Poset P y x → + is-in-Large-Subposet P S x → is-in-Large-Subposet P S y +``` + +### Lower sets of a large poset + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (γ : Level → Level) + (P : Large-Poset α β) + where + + record + lower-set-Large-Poset : UUω + where + field + large-subposet-lower-set-Large-Poset : + Large-Subposet γ P + is-lower-set-lower-set-Large-Poset : + is-lower-set-Large-Subposet P large-subposet-lower-set-Large-Poset + + open lower-set-Large-Poset public + +module _ + {α γ : Level → Level} {β : Level → Level → Level} + (P : Large-Poset α β) (L : lower-set-Large-Poset γ P) + where + + is-in-lower-set-Large-Poset : + {l : Level} (x : type-Large-Poset P l) → UU (γ l) + is-in-lower-set-Large-Poset = + is-in-Large-Subposet P (large-subposet-lower-set-Large-Poset L) +``` + +## See also + +- [Principal lower sets](order-theory.principal-lower-sets-large-posets.md) +- [Upper sets](order-theory.upper-sets-large-posets.md) diff --git a/src/order-theory/meet-semilattices.lagda.md b/src/order-theory/meet-semilattices.lagda.md index 11b6daf8df..2012a68036 100644 --- a/src/order-theory/meet-semilattices.lagda.md +++ b/src/order-theory/meet-semilattices.lagda.md @@ -53,8 +53,8 @@ module _ {l : Level} (X : Semigroup l) where - is-meet-semilattice-Semigroup-Prop : Prop l - is-meet-semilattice-Semigroup-Prop = + is-meet-semilattice-prop-Semigroup : Prop l + is-meet-semilattice-prop-Semigroup = prod-Prop ( Π-Prop ( type-Semigroup X) @@ -76,19 +76,19 @@ module _ is-meet-semilattice-Semigroup : UU l is-meet-semilattice-Semigroup = - type-Prop is-meet-semilattice-Semigroup-Prop + type-Prop is-meet-semilattice-prop-Semigroup is-prop-is-meet-semilattice-Semigroup : is-prop is-meet-semilattice-Semigroup is-prop-is-meet-semilattice-Semigroup = - is-prop-type-Prop is-meet-semilattice-Semigroup-Prop + is-prop-type-Prop is-meet-semilattice-prop-Semigroup ``` ### The algebraic definition of meet-semilattices ```agda Meet-Semilattice : (l : Level) → UU (lsuc l) -Meet-Semilattice l = type-subtype is-meet-semilattice-Semigroup-Prop +Meet-Semilattice l = type-subtype is-meet-semilattice-prop-Semigroup module _ {l : Level} (X : Meet-Semilattice l) diff --git a/src/order-theory/nuclei-large-locales.lagda.md b/src/order-theory/nuclei-large-locales.lagda.md index b62fdad6ec..3feccc0a9f 100644 --- a/src/order-theory/nuclei-large-locales.lagda.md +++ b/src/order-theory/nuclei-large-locales.lagda.md @@ -35,8 +35,8 @@ open import order-theory.least-upper-bounds-large-posets ## Idea A **nucleus** on a [large locale](order-theory.large-locales.md) `L` is an order -preserving map `j : hom-set-Large-Poset (λ l → l) L L` such that `j` preserves -meets and is inflationary and idempotent. +preserving map `j : hom-Large-Poset (λ l → l) L L` such that `j` preserves meets +and is inflationary and idempotent. ## Definitions @@ -53,7 +53,7 @@ module _ where field hom-large-meet-semilattice-nucleus-Large-Locale : - hom-set-Large-Meet-Semilattice + hom-Large-Meet-Semilattice ( large-meet-semilattice-Large-Locale L) ( large-meet-semilattice-Large-Locale L) is-inflationary-nucleus-Large-Locale : diff --git a/src/order-theory/order-preserving-maps-large-posets.lagda.md b/src/order-theory/order-preserving-maps-large-posets.lagda.md index e1e1280218..d96f54b891 100644 --- a/src/order-theory/order-preserving-maps-large-posets.lagda.md +++ b/src/order-theory/order-preserving-maps-large-posets.lagda.md @@ -9,24 +9,51 @@ module order-theory.order-preserving-maps-large-posets where ```agda open import foundation.universe-levels +open import foundation-core.function-types +open import foundation-core.homotopies + open import order-theory.large-posets open import order-theory.order-preserving-maps-large-preorders +open import order-theory.similarity-of-elements-large-posets ``` ## Idea -An order preserving map between large posets from `P` to `Q` consists of a map +An **order preserving map** between [large posets](order-theory.large-posets.md) +`P` and `Q` consists of a map ```text f : type-Large-Poset P l1 → type-Large-Poset Q (γ l1) ``` -for each universe level `l1`, such that `x ≤ y` implies `f x ≤ f y` for any two -elements `x y : P`. +for each [universe level](foundation.universe-levels.md) `l1`, such that `x ≤ y` +implies `f x ≤ f y` for any two elements `x y : P`. The function +`γ : Level → Level` that specifies the universe level of `f x` in terms of the +universe level of `x` is called the **universe level reindexing function** of +the order preserving map `f`. + +## Definitions -## Definition +### The predicate that a map between large posets is order preserving + +```agda +module _ + {αP αQ : Level → Level} {βP βQ : Level → Level → Level} {γ : Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + where + + preserves-order-map-Large-Poset : + ({l : Level} → type-Large-Poset P l → type-Large-Poset Q (γ l)) → + UUω + preserves-order-map-Large-Poset = + preserves-order-map-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) +``` + +### The type of order preserving maps between large posets ```agda module _ @@ -35,27 +62,196 @@ module _ (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) where - hom-set-Large-Poset : UUω - hom-set-Large-Poset = - hom-set-Large-Preorder γ + hom-Large-Poset : UUω + hom-Large-Poset = + hom-Large-Preorder γ ( large-preorder-Large-Poset P) ( large-preorder-Large-Poset Q) module _ - {αP αQ : Level → Level} {βP βQ : Level → Level → Level} {γ : Level → Level} - (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) - (f : hom-set-Large-Poset γ P Q) + {αP αQ γ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) (f : hom-Large-Poset γ P Q) where map-hom-Large-Poset : - {l1 : Level} → type-Large-Poset P l1 → type-Large-Poset Q (γ l1) - map-hom-Large-Poset = map-hom-Large-Preorder f + {l : Level} → type-Large-Poset P l → type-Large-Poset Q (γ l) + map-hom-Large-Poset = + map-hom-Large-Preorder f preserves-order-hom-Large-Poset : - {l1 l2 : Level} - (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → - leq-Large-Poset P x y → - leq-Large-Poset Q (map-hom-Large-Poset x) (map-hom-Large-Poset y) + preserves-order-map-Large-Poset P Q map-hom-Large-Poset preserves-order-hom-Large-Poset = preserves-order-hom-Large-Preorder f ``` + +### The identity order preserving map on a large poset + +```agda +module _ + {αP : Level → Level} {βP : Level → Level → Level} (P : Large-Poset αP βP) + where + + id-hom-Large-Poset : hom-Large-Poset (λ l → l) P P + id-hom-Large-Poset = id-hom-Large-Preorder (large-preorder-Large-Poset P) +``` + +### Composition of order preserving maps between large posets + +```agda +module _ + {αP αQ αR γg γf : Level → Level} {βP βQ βR : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (R : Large-Poset αR βR) + (g : hom-Large-Poset γg Q R) + (f : hom-Large-Poset γf P Q) + where + + map-comp-hom-Large-Poset : + {l1 : Level} → type-Large-Poset P l1 → type-Large-Poset R (γg (γf l1)) + map-comp-hom-Large-Poset = + map-comp-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( large-preorder-Large-Poset R) + ( g) + ( f) + + preserves-order-comp-hom-Large-Poset : + preserves-order-map-Large-Poset P R map-comp-hom-Large-Poset + preserves-order-comp-hom-Large-Poset = + preserves-order-comp-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( large-preorder-Large-Poset R) + ( g) + ( f) + + comp-hom-Large-Poset : hom-Large-Poset (λ l → γg (γf l)) P R + comp-hom-Large-Poset = + comp-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( large-preorder-Large-Poset R) + ( g) + ( f) +``` + +### Homotopies of order preserving maps between large posets + +Given two order preserving maps `f g : hom-Large-Poset γ P Q` with the same +universe level reindexing `γ`, a **homotopy of order preserving maps** from `f` +to `g` is simply a pointwise identification of the underlying maps of `f` and +`g`. + +```agda +module _ + {αP αQ γ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) + where + + htpy-hom-Large-Poset : (f g : hom-Large-Poset γ P Q) → UUω + htpy-hom-Large-Poset = + htpy-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + + refl-htpy-hom-Large-Poset : + (f : hom-Large-Poset γ P Q) → htpy-hom-Large-Poset f f + refl-htpy-hom-Large-Poset = + refl-htpy-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) +``` + +## Properties + +### Composition of order preserving maps is associative + +```agda +module _ + {αP αQ αR αS γh γg γf : Level → Level} {βP βQ βR βS : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (R : Large-Poset αR βR) + (S : Large-Poset αS βS) + (h : hom-Large-Poset γh R S) + (g : hom-Large-Poset γg Q R) + (f : hom-Large-Poset γf P Q) + where + + associative-comp-hom-Large-Poset : + htpy-hom-Large-Poset P S + ( comp-hom-Large-Poset P Q S (comp-hom-Large-Poset Q R S h g) f) + ( comp-hom-Large-Poset P R S h (comp-hom-Large-Poset P Q R g f)) + associative-comp-hom-Large-Poset = + associative-comp-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( large-preorder-Large-Poset R) + ( large-preorder-Large-Poset S) + ( h) + ( g) + ( f) +``` + +### Composition of order preserving maps satisfies left and right unit laws + +```agda +module _ + {αP αQ γf : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (f : hom-Large-Poset γf P Q) + where + + left-unit-law-comp-hom-Large-Poset : + htpy-hom-Large-Poset P Q + ( comp-hom-Large-Poset P Q Q (id-hom-Large-Poset Q) f) + ( f) + left-unit-law-comp-hom-Large-Poset = + left-unit-law-comp-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( f) + + right-unit-law-comp-hom-Large-Poset : + htpy-hom-Large-Poset P Q + ( comp-hom-Large-Poset P P Q f (id-hom-Large-Poset P)) + ( f) + right-unit-law-comp-hom-Large-Poset = + right-unit-law-comp-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( f) +``` + +### Order preserving maps preserve similarity of elements + +```agda +module _ + {αP αQ γf : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (f : hom-Large-Poset γf P Q) + where + + preserves-sim-hom-Large-Poset : + {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → + sim-Large-Poset P x y → + sim-Large-Poset Q + ( map-hom-Large-Poset P Q f x) + ( map-hom-Large-Poset P Q f y) + preserves-sim-hom-Large-Poset = + preserves-sim-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( f) +``` + +## See also + +- [Order preserving maps](order-theory.order-preserving-maps-large-posets.md) + between large posets +- [Similarity](order-theory.similarity-of-order-preserving-maps-large-posets.md) + of order preserving maps between large posets diff --git a/src/order-theory/order-preserving-maps-large-preorders.lagda.md b/src/order-theory/order-preserving-maps-large-preorders.lagda.md index 825ab09970..bd0cc64cb4 100644 --- a/src/order-theory/order-preserving-maps-large-preorders.lagda.md +++ b/src/order-theory/order-preserving-maps-large-preorders.lagda.md @@ -7,26 +7,53 @@ module order-theory.order-preserving-maps-large-preorders where
Imports ```agda +open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation-core.function-types +open import foundation-core.homotopies + open import order-theory.large-preorders +open import order-theory.similarity-of-elements-large-preorders ```
## Idea -An order preserving map between large preorders from `P` to `Q` consists of a -map +An **order preserving map** between +[large preorders](order-theory.large-preorders.md) `P` and `Q` consists of a map ```text f : type-Large-Preorder P l1 → type-Large-Preorder Q (γ l1) ``` -for each universe level `l1`, such that `x ≤ y` implies `f x ≤ f y` for any two -elements `x y : P`. +for each [universe level](foundation.universe-levels.md) `l1`, such that `x ≤ y` +implies `f x ≤ f y` for any two elements `x y : P`. The function +`γ : Level → Level` that specifies the universe level of `f x` in terms of the +universe level of `x` is called the **universe level reindexing function** of +the order preserving map `f`. + +## Definitions + +### The predicate that a map between large preorders is order preserving + +```agda +module _ + {αP αQ : Level → Level} {βP βQ : Level → Level → Level} {γ : Level → Level} + (P : Large-Preorder αP βP) (Q : Large-Preorder αQ βQ) + where + + preserves-order-map-Large-Preorder : + ({l : Level} → type-Large-Preorder P l → type-Large-Preorder Q (γ l)) → + UUω + preserves-order-map-Large-Preorder f = + {l1 l2 : Level} + (x : type-Large-Preorder P l1) (y : type-Large-Preorder P l2) → + leq-Large-Preorder P x y → leq-Large-Preorder Q (f x) (f y) +``` -## Definition +### The type of order preserving maps between large preorders ```agda module _ @@ -35,7 +62,7 @@ module _ (P : Large-Preorder αP βP) (Q : Large-Preorder αQ βQ) where - record hom-set-Large-Preorder : UUω + record hom-Large-Preorder : UUω where constructor make-hom-Large-Preorder @@ -43,13 +70,147 @@ module _ map-hom-Large-Preorder : {l1 : Level} → type-Large-Preorder P l1 → type-Large-Preorder Q (γ l1) preserves-order-hom-Large-Preorder : - {l1 l2 : Level} - (x : type-Large-Preorder P l1) - (y : type-Large-Preorder P l2) → - leq-Large-Preorder P x y → - leq-Large-Preorder Q - ( map-hom-Large-Preorder x) - ( map-hom-Large-Preorder y) + preserves-order-map-Large-Preorder P Q map-hom-Large-Preorder - open hom-set-Large-Preorder public + open hom-Large-Preorder public ``` + +### The identity order preserving map on a large preorder + +```agda +module _ + {αP : Level → Level} {βP : Level → Level → Level} (P : Large-Preorder αP βP) + where + + id-hom-Large-Preorder : hom-Large-Preorder (λ l → l) P P + map-hom-Large-Preorder id-hom-Large-Preorder = id + preserves-order-hom-Large-Preorder id-hom-Large-Preorder x y = id +``` + +### Composition of order preserving maps between large preorders + +```agda +module _ + {αP αQ αR γg γf : Level → Level} {βP βQ βR : Level → Level → Level} + (P : Large-Preorder αP βP) + (Q : Large-Preorder αQ βQ) + (R : Large-Preorder αR βR) + (g : hom-Large-Preorder γg Q R) + (f : hom-Large-Preorder γf P Q) + where + + map-comp-hom-Large-Preorder : + {l1 : Level} → type-Large-Preorder P l1 → type-Large-Preorder R (γg (γf l1)) + map-comp-hom-Large-Preorder = + map-hom-Large-Preorder g ∘ map-hom-Large-Preorder f + + preserves-order-comp-hom-Large-Preorder : + preserves-order-map-Large-Preorder P R map-comp-hom-Large-Preorder + preserves-order-comp-hom-Large-Preorder x y = + preserves-order-hom-Large-Preorder g _ _ ∘ + preserves-order-hom-Large-Preorder f _ _ + + comp-hom-Large-Preorder : hom-Large-Preorder (λ l → γg (γf l)) P R + map-hom-Large-Preorder comp-hom-Large-Preorder = + map-comp-hom-Large-Preorder + preserves-order-hom-Large-Preorder comp-hom-Large-Preorder = + preserves-order-comp-hom-Large-Preorder +``` + +### Homotopies of order preserving maps between large preorders + +Given two order preserving maps `f g : hom-Large-Preorder γ P Q` with the same +universe level reindexing `γ`, a **homotopy of order preserving maps** from `f` +to `g` is simply a pointwise identification of the underlying maps of `f` and +`g`. + +```agda +module _ + {αP αQ γ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Preorder αP βP) (Q : Large-Preorder αQ βQ) + where + + htpy-hom-Large-Preorder : (f g : hom-Large-Preorder γ P Q) → UUω + htpy-hom-Large-Preorder f g = + {l : Level} → map-hom-Large-Preorder f {l} ~ map-hom-Large-Preorder g {l} + + refl-htpy-hom-Large-Preorder : + (f : hom-Large-Preorder γ P Q) → htpy-hom-Large-Preorder f f + refl-htpy-hom-Large-Preorder f = refl-htpy +``` + +## Properties + +### Composition of order preserving maps is associative + +```agda +module _ + {αP αQ αR αS γh γg γf : Level → Level} {βP βQ βR βS : Level → Level → Level} + (P : Large-Preorder αP βP) + (Q : Large-Preorder αQ βQ) + (R : Large-Preorder αR βR) + (S : Large-Preorder αS βS) + (h : hom-Large-Preorder γh R S) + (g : hom-Large-Preorder γg Q R) + (f : hom-Large-Preorder γf P Q) + where + + associative-comp-hom-Large-Preorder : + htpy-hom-Large-Preorder P S + ( comp-hom-Large-Preorder P Q S (comp-hom-Large-Preorder Q R S h g) f) + ( comp-hom-Large-Preorder P R S h (comp-hom-Large-Preorder P Q R g f)) + associative-comp-hom-Large-Preorder = refl-htpy +``` + +### Composition of order preserving maps satisfies left and right unit laws + +```agda +module _ + {αP αQ γf : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Preorder αP βP) + (Q : Large-Preorder αQ βQ) + (f : hom-Large-Preorder γf P Q) + where + + left-unit-law-comp-hom-Large-Preorder : + htpy-hom-Large-Preorder P Q + ( comp-hom-Large-Preorder P Q Q (id-hom-Large-Preorder Q) f) + ( f) + left-unit-law-comp-hom-Large-Preorder = refl-htpy + + right-unit-law-comp-hom-Large-Preorder : + htpy-hom-Large-Preorder P Q + ( comp-hom-Large-Preorder P P Q f (id-hom-Large-Preorder P)) + ( f) + right-unit-law-comp-hom-Large-Preorder = refl-htpy +``` + +### Order preserving maps preserve similarity of elements + +```agda +module _ + {αP αQ γf : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Preorder αP βP) + (Q : Large-Preorder αQ βQ) + (f : hom-Large-Preorder γf P Q) + where + + preserves-sim-hom-Large-Preorder : + {l1 l2 : Level} + (x : type-Large-Preorder P l1) (y : type-Large-Preorder P l2) → + sim-Large-Preorder P x y → + sim-Large-Preorder Q + ( map-hom-Large-Preorder f x) + ( map-hom-Large-Preorder f y) + pr1 (preserves-sim-hom-Large-Preorder x y (s , t)) = + preserves-order-hom-Large-Preorder f x y s + pr2 (preserves-sim-hom-Large-Preorder x y (s , t)) = + preserves-order-hom-Large-Preorder f y x t +``` + +## See also + +- [Order preserving maps](order-theory.order-preserving-maps-large-posets.md) + between large posets +- [Similarity](order-theory.similarity-of-order-preserving-maps-large-preorders.md) + of order preserving maps between large preorders diff --git a/src/order-theory/principal-lower-sets-large-posets.lagda.md b/src/order-theory/principal-lower-sets-large-posets.lagda.md new file mode 100644 index 0000000000..d09a15d4c9 --- /dev/null +++ b/src/order-theory/principal-lower-sets-large-posets.lagda.md @@ -0,0 +1,131 @@ +# Principal lower sets of large posets + +```agda +module order-theory.principal-lower-sets-large-posets where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.universe-levels + +open import order-theory.large-posets +open import order-theory.large-subposets +open import order-theory.large-subpreorders +open import order-theory.similarity-of-elements-large-posets +``` + +
+ +## Idea + +The **principal lower set** `↓{x}` of an element `x` of a +[large poset](order-theory.large-posets.md) `P` is the +[large subposet](order-theory.large-subposets.md) consisting of all elements +`y ≤ x` in `P`. + +Two elements `x` and `y` in a large poset `P` are +[similar](order-theory.similarity-of-elements-large-posets.md) if and only if +they have the same principal lower sets, and if `x` and `y` are of the same +[universe level](foundation.universe-levels.md), then `x` and `y` are equal if +and only if they have the same principal lower sets. To see this, simply note +that if `↓{x} = ↓{y}`, then we have the implications `(x ≤ x) → (x ≤ y)` and +`(y ≤ y) → (y ≤ x)`. + +## Definitions + +### The predicate of being a principal lower set of an element + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) + {l1 : Level} (x : type-Large-Poset P l1) + {γ : Level → Level} (S : Large-Subposet γ P) + where + + is-principal-lower-set-Large-Subposet : UUω + is-principal-lower-set-Large-Subposet = + {l : Level} (y : type-Large-Poset P l) → + leq-Large-Poset P y x ↔ is-in-Large-Subposet P S y +``` + +### The principal lower set of an element + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) + {l1 : Level} (x : type-Large-Poset P l1) + where + + large-subpreorder-principal-lower-set-element-Large-Poset : + Large-Subpreorder (λ l → β l l1) (large-preorder-Large-Poset P) + large-subpreorder-principal-lower-set-element-Large-Poset y = + leq-prop-Large-Poset P y x + + is-closed-under-sim-principal-lower-set-element-Large-Poset : + is-closed-under-sim-Large-Subpreorder P + ( large-subpreorder-principal-lower-set-element-Large-Poset) + is-closed-under-sim-principal-lower-set-element-Large-Poset y z p q l = + transitive-leq-Large-Poset P z y x l q + + principal-lower-set-element-Large-Poset : Large-Subposet (λ l → β l l1) P + large-subpreorder-Large-Subposet principal-lower-set-element-Large-Poset = + large-subpreorder-principal-lower-set-element-Large-Poset + is-closed-under-sim-Large-Subposet principal-lower-set-element-Large-Poset = + is-closed-under-sim-principal-lower-set-element-Large-Poset +``` + +## Properties + +### The principal lower sets `↓{x}` and `↓{y}` have the same elements if and only if `x` and `y` are similar + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) + {l1 l2 : Level} {x : type-Large-Poset P l1} {y : type-Large-Poset P l2} + where + + sim-has-same-elements-principal-lower-set-element-Large-Poset : + has-same-elements-Large-Subposet P + ( principal-lower-set-element-Large-Poset P x) + ( principal-lower-set-element-Large-Poset P y) → + sim-Large-Poset P x y + pr1 (sim-has-same-elements-principal-lower-set-element-Large-Poset H) = + forward-implication (H x) (refl-leq-Large-Poset P x) + pr2 (sim-has-same-elements-principal-lower-set-element-Large-Poset H) = + backward-implication (H y) (refl-leq-Large-Poset P y) + + has-same-elements-principal-lower-set-element-sim-Large-Poset : + sim-Large-Poset P x y → + has-same-elements-Large-Subposet P + ( principal-lower-set-element-Large-Poset P x) + ( principal-lower-set-element-Large-Poset P y) + pr1 + ( has-same-elements-principal-lower-set-element-sim-Large-Poset (H , K) z) = + transitive-leq-Large-Poset P z x y H + pr2 + ( has-same-elements-principal-lower-set-element-sim-Large-Poset (H , K) z) = + transitive-leq-Large-Poset P z y x K +``` + +### For two elements `x` and `y` of a large poset of the same universe level, if the principal lower sets `↓{x}` and `↓{y}` have the same elements, then `x` and `y` are equal + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) + {l1 : Level} (x y : type-Large-Poset P l1) + where + + eq-has-same-elements-principal-lower-set-element-Large-Poset : + has-same-elements-Large-Subposet P + ( principal-lower-set-element-Large-Poset P x) + ( principal-lower-set-element-Large-Poset P y) → + x = y + eq-has-same-elements-principal-lower-set-element-Large-Poset H = + antisymmetric-leq-Large-Poset P x y + ( pr1 (sim-has-same-elements-principal-lower-set-element-Large-Poset P H)) + ( pr2 (sim-has-same-elements-principal-lower-set-element-Large-Poset P H)) +``` diff --git a/src/order-theory/principal-upper-sets-large-posets.lagda.md b/src/order-theory/principal-upper-sets-large-posets.lagda.md new file mode 100644 index 0000000000..d46e71aa27 --- /dev/null +++ b/src/order-theory/principal-upper-sets-large-posets.lagda.md @@ -0,0 +1,133 @@ +# Principal upper sets of large posets + +```agda +module order-theory.principal-upper-sets-large-posets where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.universe-levels + +open import order-theory.large-posets +open import order-theory.large-subposets +open import order-theory.large-subpreorders +open import order-theory.similarity-of-elements-large-posets +``` + +
+ +## Idea + +The **principal upper set** `↑{x}` of an element `x` of a +[large poset](order-theory.large-posets.md) `P` is the +[large subposet](order-theory.large-subposets.md) consisting of all elements +`x ≤ y` in `P`. + +Two elements `x` and `y` in a large poset `P` are +[similar](order-theory.similarity-of-elements-large-posets.md) if and only if +they have the same principal upper sets, and if `x` and `y` are of the same +[universe level](foundation.universe-levels.md), then `x` and `y` are equal if +and only if they have the same principal upper sets. To see this, simply note +that if `↑{x} = ↑{y}`, then we have the implications `(x ≤ x) → (x ≤ y)` and +`(y ≤ y) → (y ≤ x)`. + +## Definitions + +### The predicate of being a principal upper set of an element + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) + {l1 : Level} (x : type-Large-Poset P l1) + {γ : Level → Level} (S : Large-Subposet γ P) + where + + is-principal-upper-set-Large-Subposet : UUω + is-principal-upper-set-Large-Subposet = + {l : Level} (y : type-Large-Poset P l) → + leq-Large-Poset P y x ↔ is-in-Large-Subposet P S y +``` + +### The principal upper set of an element + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) + {l1 : Level} (x : type-Large-Poset P l1) + where + + large-subpreorder-principal-upper-set-element-Large-Poset : + Large-Subpreorder (λ l → β l1 l) (large-preorder-Large-Poset P) + large-subpreorder-principal-upper-set-element-Large-Poset y = + leq-prop-Large-Poset P x y + + is-closed-under-sim-principal-upper-set-element-Large-Poset : + is-closed-under-sim-Large-Subpreorder P + ( large-subpreorder-principal-upper-set-element-Large-Poset) + is-closed-under-sim-principal-upper-set-element-Large-Poset y z p q l = + transitive-leq-Large-Poset P x y z p l + + principal-upper-set-element-Large-Poset : Large-Subposet (λ l → β l1 l) P + large-subpreorder-Large-Subposet principal-upper-set-element-Large-Poset = + large-subpreorder-principal-upper-set-element-Large-Poset + is-closed-under-sim-Large-Subposet principal-upper-set-element-Large-Poset = + is-closed-under-sim-principal-upper-set-element-Large-Poset +``` + +## Properties + +### The principal upper sets `↑{x}` and `↑{y}` have the same elements if and only if `x` and `y` are similar + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) + {l1 l2 : Level} {x : type-Large-Poset P l1} {y : type-Large-Poset P l2} + where + + sim-has-same-elements-principal-upper-set-element-Large-Poset : + has-same-elements-Large-Subposet P + ( principal-upper-set-element-Large-Poset P x) + ( principal-upper-set-element-Large-Poset P y) → + sim-Large-Poset P x y + pr1 (sim-has-same-elements-principal-upper-set-element-Large-Poset H) = + backward-implication (H y) (refl-leq-Large-Poset P y) + pr2 (sim-has-same-elements-principal-upper-set-element-Large-Poset H) = + forward-implication (H x) (refl-leq-Large-Poset P x) + + has-same-elements-principal-upper-set-element-sim-Large-Poset : + sim-Large-Poset P x y → + has-same-elements-Large-Subposet P + ( principal-upper-set-element-Large-Poset P x) + ( principal-upper-set-element-Large-Poset P y) + pr1 + ( has-same-elements-principal-upper-set-element-sim-Large-Poset (H , K) z) + ( p) = + transitive-leq-Large-Poset P y x z p K + pr2 + ( has-same-elements-principal-upper-set-element-sim-Large-Poset (H , K) z) + ( q) = + transitive-leq-Large-Poset P x y z q H +``` + +### For two elements `x` and `y` of a large poset of the same universe level, if the principal upper sets `↑{x}` and `↑{y}` have the same elements, then `x` and `y` are equal + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Poset α β) + {l1 : Level} (x y : type-Large-Poset P l1) + where + + eq-has-same-elements-principal-upper-set-element-Large-Poset : + has-same-elements-Large-Subposet P + ( principal-upper-set-element-Large-Poset P x) + ( principal-upper-set-element-Large-Poset P y) → + x = y + eq-has-same-elements-principal-upper-set-element-Large-Poset H = + antisymmetric-leq-Large-Poset P x y + ( pr1 (sim-has-same-elements-principal-upper-set-element-Large-Poset P H)) + ( pr2 (sim-has-same-elements-principal-upper-set-element-Large-Poset P H)) +``` diff --git a/src/order-theory/reflective-galois-connections-large-posets.lagda.md b/src/order-theory/reflective-galois-connections-large-posets.lagda.md index a55d6c14fc..bd27be52af 100644 --- a/src/order-theory/reflective-galois-connections-large-posets.lagda.md +++ b/src/order-theory/reflective-galois-connections-large-posets.lagda.md @@ -71,7 +71,7 @@ module _ where lower-adjoint-reflective-galois-connection-Large-Poset : - hom-set-Large-Poset γ P Q + hom-Large-Poset γ P Q lower-adjoint-reflective-galois-connection-Large-Poset = lower-adjoint-galois-connection-Large-Poset ( galois-connection-reflective-galois-connection-Large-Poset G) diff --git a/src/order-theory/similarity-of-elements-large-posets.lagda.md b/src/order-theory/similarity-of-elements-large-posets.lagda.md index b54fef7031..4411f41ae4 100644 --- a/src/order-theory/similarity-of-elements-large-posets.lagda.md +++ b/src/order-theory/similarity-of-elements-large-posets.lagda.md @@ -31,6 +31,9 @@ are said to be **similar** if both `x ≤ y` and `y ≤ x` hold. Note that the similarity relation is defined across universe levels, and that only similar elements of the same universe level are equal. +In informal writing we will use the notation `x ≈ y` to assert that `x` and `y` +are similar elements in a poset `P`. + ## Definition ```agda @@ -142,22 +145,22 @@ module _ where sim-eq-Large-Poset : - {l1 : Level} (x y : type-Large-Poset P l1) → + {l1 : Level} {x y : type-Large-Poset P l1} → x = y → sim-Large-Poset P x y - sim-eq-Large-Poset x .x refl = refl-sim-Large-Poset P x + sim-eq-Large-Poset refl = refl-sim-Large-Poset P _ is-equiv-sim-eq-Large-Poset : {l1 : Level} (x y : type-Large-Poset P l1) → - is-equiv (sim-eq-Large-Poset x y) + is-equiv (sim-eq-Large-Poset {l1} {x} {y}) is-equiv-sim-eq-Large-Poset x = fundamental-theorem-id ( is-torsorial-sim-Large-Poset P x) - ( sim-eq-Large-Poset x) + ( λ y → sim-eq-Large-Poset {_} {x} {y}) extensionality-Large-Poset : {l1 : Level} (x y : type-Large-Poset P l1) → (x = y) ≃ sim-Large-Poset P x y - pr1 (extensionality-Large-Poset x y) = sim-eq-Large-Poset x y + pr1 (extensionality-Large-Poset x y) = sim-eq-Large-Poset pr2 (extensionality-Large-Poset x y) = is-equiv-sim-eq-Large-Poset x y eq-sim-Large-Poset : diff --git a/src/order-theory/similarity-of-elements-large-preorders.lagda.md b/src/order-theory/similarity-of-elements-large-preorders.lagda.md index 3a8396b576..4f5472ef53 100644 --- a/src/order-theory/similarity-of-elements-large-preorders.lagda.md +++ b/src/order-theory/similarity-of-elements-large-preorders.lagda.md @@ -8,6 +8,7 @@ module order-theory.similarity-of-elements-large-preorders where ```agda open import foundation.dependent-pair-types +open import foundation.identity-types open import foundation.large-binary-relations open import foundation.propositions open import foundation.universe-levels @@ -22,6 +23,9 @@ open import order-theory.large-preorders Two elements `x` and `y` of a [large preorder](order-theory.large-preorders.md) `P` are said to be **similar** if both `x ≤ y` and `y ≤ x` hold. +In informal writing we will use the notation `x ≈ y` to assert that `x` and `y` +are similar elements in a preorder `P`. + ## Definition ```agda @@ -94,3 +98,16 @@ module _ pr1 (symmetric-sim-Large-Preorder _ _ H) = pr2 H pr2 (symmetric-sim-Large-Preorder _ _ H) = pr1 H ``` + +### Equal elements are similar + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (P : Large-Preorder α β) + where + + sim-eq-Large-Preorder : + {l : Level} {x y : type-Large-Preorder P l} → + x = y → sim-Large-Preorder P x y + sim-eq-Large-Preorder refl = refl-sim-Large-Preorder P _ +``` diff --git a/src/order-theory/similarity-of-order-preserving-maps-large-posets.lagda.md b/src/order-theory/similarity-of-order-preserving-maps-large-posets.lagda.md new file mode 100644 index 0000000000..663ec217c0 --- /dev/null +++ b/src/order-theory/similarity-of-order-preserving-maps-large-posets.lagda.md @@ -0,0 +1,110 @@ +# Similarity of order preserving maps between large posets + +```agda +module order-theory.similarity-of-order-preserving-maps-large-posets where +``` + +
Imports + +```agda +open import foundation.cartesian-product-types +open import foundation.universe-levels + +open import order-theory.large-posets +open import order-theory.order-preserving-maps-large-posets +open import order-theory.similarity-of-elements-large-posets +open import order-theory.similarity-of-order-preserving-maps-large-preorders +``` + +
+ +## Idea + +Consider two +[order preserving maps](order-theory.order-preserving-maps-large-posets.md) +`f : hom-Large-Poset γf P Q` and `g : hom-Large-Poset γg P Q` between the same +two [large posets](order-theory.large-posets.md) `P` and `Q`, but each specified +with their own universe level reindexing functions. We say that `f` and `g` are +**similar** if the values `f x` and `g x` are +[similar](order-theory.similarity-of-elements-large-posets.md) for each `x : P`. +In other words, a **similarity of order preserving maps** between `f` and `g` +consists of an assignment `x ↦ h x` where + +```text + h x : f x ≈ g x +``` + +for each `x : type-Large-Poset P`. In informal writing we will use the notation +`f ≈ g` to assert that the order preserving map `f` is similar to the order +preserving map `g`. + +## Definitions + +### Similarity of order preserving maps between large posets + +```agda +module _ + {αP αQ γf γg : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (f : hom-Large-Poset γf P Q) + (g : hom-Large-Poset γg P Q) + where + + sim-hom-Large-Poset : UUω + sim-hom-Large-Poset = + sim-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( f) + ( g) +``` + +### The reflexive similarity of order preserving maps between large posets + +```agda +module _ + {αP αQ γf : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (f : hom-Large-Poset γf P Q) + where + + refl-sim-hom-Large-Poset : sim-hom-Large-Poset P Q f f + refl-sim-hom-Large-Poset = + refl-sim-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( f) +``` + +## Properties + +### Order preserving maps with the same universe level reindexing function are homotopic if and only if they are similar + +```agda +module _ + {αP αQ γ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Poset αP βP) + (Q : Large-Poset αQ βQ) + (f : hom-Large-Poset γ P Q) + (g : hom-Large-Poset γ P Q) + where + + sim-htpy-hom-Large-Poset : + htpy-hom-Large-Poset P Q f g → sim-hom-Large-Poset P Q f g + sim-htpy-hom-Large-Poset = + sim-htpy-hom-Large-Preorder + ( large-preorder-Large-Poset P) + ( large-preorder-Large-Poset Q) + ( f) + ( g) + + htpy-sim-hom-Large-Poset : + sim-hom-Large-Poset P Q f g → htpy-hom-Large-Poset P Q f g + htpy-sim-hom-Large-Poset H x = + eq-sim-Large-Poset Q + ( map-hom-Large-Poset P Q f x) + ( map-hom-Large-Poset P Q g x) + ( H x) +``` diff --git a/src/order-theory/similarity-of-order-preserving-maps-large-preorders.lagda.md b/src/order-theory/similarity-of-order-preserving-maps-large-preorders.lagda.md new file mode 100644 index 0000000000..62ce3a3d85 --- /dev/null +++ b/src/order-theory/similarity-of-order-preserving-maps-large-preorders.lagda.md @@ -0,0 +1,92 @@ +# Similarity of order preserving maps between large preorders + +```agda +module order-theory.similarity-of-order-preserving-maps-large-preorders where +``` + +
Imports + +```agda +open import foundation.cartesian-product-types +open import foundation.universe-levels + +open import order-theory.large-preorders +open import order-theory.order-preserving-maps-large-preorders +open import order-theory.similarity-of-elements-large-preorders +``` + +
+ +## Idea + +Consider two +[order preserving maps](order-theory.order-preserving-maps-large-preorders.md) +`f : hom-Large-Preorder γf P Q` and `g : hom-Large-Preorder γg P Q` between the +same two [large preorders](order-theory.large-preorders.md) `P` and `Q`, but +each specified with their own universe level reindexing functions. We say that +`f` and `g` are **similar** if the values `f x` and `g x` are +[similar](order-theory.similarity-of-elements-large-preorders.md) for each +`x : P`. In other words, a **similarity of order preserving maps** between `f` +and `g` consists of an assignment `x ↦ h x` where + +```text + h x : f x ≈ g x +``` + +for each `x : type-Large-Preorder P`. In informal writing we will use the +notation `f ≈ g` to assert that the order preserving map `f` is similar to the +order preserving map `g`. + +## Definitions + +### Similarities of order preserving maps between large preorders + +```agda +module _ + {αP αQ γf γg : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Preorder αP βP) + (Q : Large-Preorder αQ βQ) + (f : hom-Large-Preorder γf P Q) + (g : hom-Large-Preorder γg P Q) + where + + sim-hom-Large-Preorder : UUω + sim-hom-Large-Preorder = + {l : Level} (x : type-Large-Preorder P l) → + sim-Large-Preorder Q + ( map-hom-Large-Preorder f x) + ( map-hom-Large-Preorder g x) +``` + +### The reflexive similarity of order preserving maps between large preorders + +```agda +module _ + {αP αQ γf : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Preorder αP βP) + (Q : Large-Preorder αQ βQ) + (f : hom-Large-Preorder γf P Q) + where + + refl-sim-hom-Large-Preorder : sim-hom-Large-Preorder P Q f f + refl-sim-hom-Large-Preorder x = + refl-sim-Large-Preorder Q (map-hom-Large-Preorder f x) +``` + +## Properties + +### Homotopic order preserving maps are similar + +```agda +module _ + {αP αQ γ : Level → Level} {βP βQ : Level → Level → Level} + (P : Large-Preorder αP βP) + (Q : Large-Preorder αQ βQ) + (f : hom-Large-Preorder γ P Q) + (g : hom-Large-Preorder γ P Q) + where + + sim-htpy-hom-Large-Preorder : + htpy-hom-Large-Preorder P Q f g → sim-hom-Large-Preorder P Q f g + sim-htpy-hom-Large-Preorder H x = sim-eq-Large-Preorder Q (H x) +``` diff --git a/src/order-theory/upper-sets-large-posets.lagda.md b/src/order-theory/upper-sets-large-posets.lagda.md new file mode 100644 index 0000000000..f5c8d8ec1c --- /dev/null +++ b/src/order-theory/upper-sets-large-posets.lagda.md @@ -0,0 +1,69 @@ +# Upper sets of large posets + +```agda +module order-theory.upper-sets-large-posets where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import order-theory.large-posets +open import order-theory.large-subposets +``` + +
+ +## Idea + +An **upper set** or **upwards closed set** in a +[large poset](order-theory.large-posets.md) is a +[large subposet](order-theory.large-subposets.md) that is upwards closed, i.e., +that satisfies the condition that + +```text + ∀ (x y : P), (x ≤ y) → x ∈ S → y ∈ S. +``` + +## Definitions + +### The predicate of being an upper set + +```agda +module _ + {α γ : Level → Level} {β : Level → Level → Level} + (P : Large-Poset α β) (S : Large-Subposet γ P) + where + + is-upper-set-Large-Subposet : UUω + is-upper-set-Large-Subposet = + {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → + leq-Large-Poset P x y → + is-in-Large-Subposet P S x → is-in-Large-Subposet P S y +``` + +### Upper sets of a large poset + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (γ : Level → Level) + (P : Large-Poset α β) + where + + record + upper-set-Large-Poset : UUω + where + field + large-subposet-upper-set-Large-Poset : + Large-Subposet γ P + is-upper-set-upper-set-Large-Poset : + is-upper-set-Large-Subposet P large-subposet-upper-set-Large-Poset + + open upper-set-Large-Poset public +``` + +## See also + +- [Lower sets](order-theory.lower-sets-large-posets.md) +- [Principal upper sets](order-theory.principal-upper-sets-large-posets.md) diff --git a/src/reflection/group-solver.lagda.md b/src/reflection/group-solver.lagda.md index 9b2ca9c4d9..92cda445f2 100644 --- a/src/reflection/group-solver.lagda.md +++ b/src/reflection/group-solver.lagda.md @@ -346,7 +346,7 @@ module _ {n : ℕ} where useGroupEqualityElem env xinv-unit-GE = inv-unit-Group G useGroupEqualityElem env (xinv-inv-GE x) = inv-inv-Group G (unQuoteGS x env) useGroupEqualityElem env (xdistr-inv-mul-GE x y) = - distributive-inv-mul-Group G (unQuoteGS x env) (unQuoteGS y env) + distributive-inv-mul-Group G useGroupEquality : {x y : GroupSyntax n} (env : Env n (type-Group G)) → diff --git a/src/ring-theory/additive-orders-of-elements-rings.lagda.md b/src/ring-theory/additive-orders-of-elements-rings.lagda.md index 30d2a20e4b..f6194036a3 100644 --- a/src/ring-theory/additive-orders-of-elements-rings.lagda.md +++ b/src/ring-theory/additive-orders-of-elements-rings.lagda.md @@ -97,10 +97,10 @@ module _ (x : type-Ring R) → div-order-element-Group (group-Ring R) x (one-Ring R) div-additive-order-element-additive-order-one-Ring x k H = - ( ap (integer-multiple-Ring R k) (inv (left-unit-law-mul-Ring R x))) ∙ - ( inv (left-integer-multiple-law-mul-Ring R k _ _)) ∙ + ( inv (left-zero-law-mul-Ring R x)) ∙ ( ap (mul-Ring' R x) H) ∙ - ( left-zero-law-mul-Ring R x) + ( left-integer-multiple-law-mul-Ring R k _ _) ∙ + ( ap (integer-multiple-Ring R k) (left-unit-law-mul-Ring R x)) ``` ### If there exists an integer `k` such that `k·x = y` then the order of `y` divides the order of `x` @@ -123,10 +123,10 @@ module _ apply-universal-property-trunc-Prop H ( subset-additive-order-element-Ring R y l) ( λ (k , q) → - ( ap (integer-multiple-Ring R l) (inv q)) ∙ - ( swap-integer-multiple-Ring R l k x) ∙ + ( inv (right-zero-law-integer-multiple-Ring R k)) ∙ ( ap (integer-multiple-Ring R k) p) ∙ - ( right-zero-law-integer-multiple-Ring R k)) + ( swap-integer-multiple-Ring R k l x ∙ + ( ap (integer-multiple-Ring R l) q))) ``` ### If there exists an integer `k` such that `k·x = 1` then the order of `x` is the order of `1` diff --git a/src/ring-theory/central-elements-semirings.lagda.md b/src/ring-theory/central-elements-semirings.lagda.md index d991b52168..41cb19f6ef 100644 --- a/src/ring-theory/central-elements-semirings.lagda.md +++ b/src/ring-theory/central-elements-semirings.lagda.md @@ -32,7 +32,7 @@ module _ is-central-element-semiring-Prop : type-Semiring R → Prop l is-central-element-semiring-Prop = - is-central-element-monoid-Prop + is-central-element-prop-Monoid ( multiplicative-monoid-Semiring R) is-central-element-Semiring : type-Semiring R → UU l diff --git a/src/ring-theory/congruence-relations-rings.lagda.md b/src/ring-theory/congruence-relations-rings.lagda.md index c8eebf7f6e..69b74f8dc4 100644 --- a/src/ring-theory/congruence-relations-rings.lagda.md +++ b/src/ring-theory/congruence-relations-rings.lagda.md @@ -42,10 +42,10 @@ module _ {l2 : Level} → congruence-Ab l2 (ab-Ring R) → UU (l1 ⊔ l2) is-congruence-Ring = is-congruence-Semiring (semiring-Ring R) - is-congruence-eq-rel-Ring : - {l2 : Level} (S : Equivalence-Relation l2 (type-Ring R)) → UU (l1 ⊔ l2) - is-congruence-eq-rel-Ring S = - is-congruence-eq-rel-Semiring (semiring-Ring R) S + is-congruence-equivalence-relation-Ring : + {l2 : Level} (S : equivalence-relation l2 (type-Ring R)) → UU (l1 ⊔ l2) + is-congruence-equivalence-relation-Ring S = + is-congruence-equivalence-relation-Semiring (semiring-Ring R) S congruence-Ring : {l1 : Level} (l2 : Level) (R : Ring l1) → UU (l1 ⊔ lsuc l2) @@ -59,9 +59,9 @@ module _ congruence-ab-congruence-Ring = congruence-additive-monoid-congruence-Semiring (semiring-Ring R) S - eq-rel-congruence-Ring : Equivalence-Relation l2 (type-Ring R) - eq-rel-congruence-Ring = - eq-rel-congruence-Semiring (semiring-Ring R) S + equivalence-relation-congruence-Ring : equivalence-relation l2 (type-Ring R) + equivalence-relation-congruence-Ring = + equivalence-relation-congruence-Semiring (semiring-Ring R) S prop-congruence-Ring : Relation-Prop l2 (type-Ring R) prop-congruence-Ring = prop-congruence-Semiring (semiring-Ring R) S @@ -110,7 +110,7 @@ module _ transitive-congruence-Semiring (semiring-Ring R) S add-congruence-Ring : - is-congruence-Ab (ab-Ring R) eq-rel-congruence-Ring + is-congruence-Ab (ab-Ring R) equivalence-relation-congruence-Ring add-congruence-Ring = add-congruence-Semiring (semiring-Ring R) S left-add-congruence-Ring : @@ -186,7 +186,7 @@ module _ mul-congruence-Ring : is-congruence-Monoid ( multiplicative-monoid-Ring R) - ( eq-rel-congruence-Ring) + ( equivalence-relation-congruence-Ring) mul-congruence-Ring = pr2 S left-mul-congruence-Ring : @@ -205,7 +205,7 @@ module _ construct-congruence-Ring : {l1 l2 : Level} (R : Ring l1) → - (S : Equivalence-Relation l2 (type-Ring R)) → + (S : equivalence-relation l2 (type-Ring R)) → is-congruence-Ab (ab-Ring R) S → is-congruence-Monoid (multiplicative-monoid-Ring R) S → congruence-Ring l2 R @@ -257,9 +257,9 @@ extensionality-congruence-Ring : extensionality-congruence-Ring R = extensionality-congruence-Semiring (semiring-Ring R) -eq-relate-same-elements-congruence-Ring : +equivalence-relationate-same-elements-congruence-Ring : {l1 l2 : Level} (R : Ring l1) (S T : congruence-Ring l2 R) → relate-same-elements-congruence-Ring R S T → S = T -eq-relate-same-elements-congruence-Ring R = - eq-relate-same-elements-congruence-Semiring (semiring-Ring R) +equivalence-relationate-same-elements-congruence-Ring R = + equivalence-relationate-same-elements-congruence-Semiring (semiring-Ring R) ``` diff --git a/src/ring-theory/congruence-relations-semirings.lagda.md b/src/ring-theory/congruence-relations-semirings.lagda.md index df505add5f..b5453666ac 100644 --- a/src/ring-theory/congruence-relations-semirings.lagda.md +++ b/src/ring-theory/congruence-relations-semirings.lagda.md @@ -46,7 +46,7 @@ module _ is-congruence-Semiring S = is-congruence-Monoid ( multiplicative-monoid-Semiring R) - ( eq-rel-congruence-Monoid (additive-monoid-Semiring R) S) + ( equivalence-relation-congruence-Monoid (additive-monoid-Semiring R) S) is-prop-is-congruence-Semiring : {l2 : Level} (S : congruence-Monoid l2 (additive-monoid-Semiring R)) → @@ -54,11 +54,11 @@ module _ is-prop-is-congruence-Semiring S = is-prop-is-congruence-Monoid ( multiplicative-monoid-Semiring R) - ( eq-rel-congruence-Monoid (additive-monoid-Semiring R) S) + ( equivalence-relation-congruence-Monoid (additive-monoid-Semiring R) S) - is-congruence-eq-rel-Semiring : - {l2 : Level} (S : Equivalence-Relation l2 (type-Semiring R)) → UU (l1 ⊔ l2) - is-congruence-eq-rel-Semiring S = + is-congruence-equivalence-relation-Semiring : + {l2 : Level} (S : equivalence-relation l2 (type-Semiring R)) → UU (l1 ⊔ l2) + is-congruence-equivalence-relation-Semiring S = ( is-congruence-Monoid (additive-monoid-Semiring R) S) × ( is-congruence-Monoid (multiplicative-monoid-Semiring R) S) @@ -76,9 +76,10 @@ module _ congruence-Monoid l2 (additive-monoid-Semiring R) congruence-additive-monoid-congruence-Semiring = pr1 S - eq-rel-congruence-Semiring : Equivalence-Relation l2 (type-Semiring R) - eq-rel-congruence-Semiring = - eq-rel-congruence-Monoid + equivalence-relation-congruence-Semiring : + equivalence-relation l2 (type-Semiring R) + equivalence-relation-congruence-Semiring = + equivalence-relation-congruence-Monoid ( additive-monoid-Semiring R) ( congruence-additive-monoid-congruence-Semiring) @@ -133,7 +134,7 @@ module _ add-congruence-Semiring : is-congruence-Monoid ( additive-monoid-Semiring R) - ( eq-rel-congruence-Semiring) + ( equivalence-relation-congruence-Semiring) add-congruence-Semiring = mul-congruence-Monoid ( additive-monoid-Semiring R) @@ -142,12 +143,12 @@ module _ mul-congruence-Semiring : is-congruence-Monoid ( multiplicative-monoid-Semiring R) - ( eq-rel-congruence-Semiring) + ( equivalence-relation-congruence-Semiring) mul-congruence-Semiring = pr2 S construct-congruence-Semiring : {l1 l2 : Level} (R : Semiring l1) → - (S : Equivalence-Relation l2 (type-Semiring R)) → + (S : equivalence-relation l2 (type-Semiring R)) → is-congruence-Monoid (additive-monoid-Semiring R) S → is-congruence-Monoid (multiplicative-monoid-Semiring R) S → congruence-Semiring l2 R @@ -165,16 +166,16 @@ relate-same-elements-congruence-Semiring : {l1 l2 l3 : Level} (R : Semiring l1) → congruence-Semiring l2 R → congruence-Semiring l3 R → UU (l1 ⊔ l2 ⊔ l3) relate-same-elements-congruence-Semiring R S T = - relate-same-elements-Equivalence-Relation - ( eq-rel-congruence-Semiring R S) - ( eq-rel-congruence-Semiring R T) + relate-same-elements-equivalence-relation + ( equivalence-relation-congruence-Semiring R S) + ( equivalence-relation-congruence-Semiring R T) refl-relate-same-elements-congruence-Semiring : {l1 l2 : Level} (R : Semiring l1) (S : congruence-Semiring l2 R) → relate-same-elements-congruence-Semiring R S S refl-relate-same-elements-congruence-Semiring R S = - refl-relate-same-elements-Equivalence-Relation - ( eq-rel-congruence-Semiring R S) + refl-relate-same-elements-equivalence-relation + ( equivalence-relation-congruence-Semiring R S) is-torsorial-relate-same-elements-congruence-Semiring : {l1 l2 : Level} (R : Semiring l1) (S : congruence-Semiring l2 R) → @@ -211,9 +212,9 @@ pr1 (extensionality-congruence-Semiring R S T) = pr2 (extensionality-congruence-Semiring R S T) = is-equiv-relate-same-elements-eq-congruence-Semiring R S T -eq-relate-same-elements-congruence-Semiring : +equivalence-relationate-same-elements-congruence-Semiring : {l1 l2 : Level} (R : Semiring l1) (S T : congruence-Semiring l2 R) → relate-same-elements-congruence-Semiring R S T → S = T -eq-relate-same-elements-congruence-Semiring R S T = +equivalence-relationate-same-elements-congruence-Semiring R S T = map-inv-equiv (extensionality-congruence-Semiring R S T) ``` diff --git a/src/ring-theory/full-ideals-rings.lagda.md b/src/ring-theory/full-ideals-rings.lagda.md index 86c104e184..a415b1eeeb 100644 --- a/src/ring-theory/full-ideals-rings.lagda.md +++ b/src/ring-theory/full-ideals-rings.lagda.md @@ -71,20 +71,20 @@ module _ is-closed-under-addition-full-ideal-Ring : is-closed-under-addition-subset-Ring R subset-full-ideal-Ring - is-closed-under-addition-full-ideal-Ring x y H K = raise-star + is-closed-under-addition-full-ideal-Ring H K = raise-star is-closed-under-negatives-full-ideal-Ring : is-closed-under-negatives-subset-Ring R subset-full-ideal-Ring - is-closed-under-negatives-full-ideal-Ring x H = raise-star + is-closed-under-negatives-full-ideal-Ring H = raise-star is-additive-subgroup-full-ideal-Ring : is-additive-subgroup-subset-Ring R subset-full-ideal-Ring pr1 is-additive-subgroup-full-ideal-Ring = contains-zero-full-ideal-Ring - pr1 (pr2 is-additive-subgroup-full-ideal-Ring) = - is-closed-under-addition-full-ideal-Ring - pr2 (pr2 is-additive-subgroup-full-ideal-Ring) = - is-closed-under-negatives-full-ideal-Ring + pr1 (pr2 is-additive-subgroup-full-ideal-Ring) {x} {y} = + is-closed-under-addition-full-ideal-Ring {x} {y} + pr2 (pr2 is-additive-subgroup-full-ideal-Ring) {x} = + is-closed-under-negatives-full-ideal-Ring {x} is-closed-under-left-multiplication-full-ideal-Ring : is-closed-under-left-multiplication-subset-Ring R subset-full-ideal-Ring diff --git a/src/ring-theory/groups-of-units-rings.lagda.md b/src/ring-theory/groups-of-units-rings.lagda.md index 80f85ac6eb..99ec3f0e07 100644 --- a/src/ring-theory/groups-of-units-rings.lagda.md +++ b/src/ring-theory/groups-of-units-rings.lagda.md @@ -135,13 +135,13 @@ module _ inclusion-core-Monoid (multiplicative-monoid-Ring R) preserves-mul-inclusion-group-of-units-Ring : - (x y : type-group-of-units-Ring) → + {x y : type-group-of-units-Ring} → inclusion-group-of-units-Ring (mul-group-of-units-Ring x y) = mul-Ring R ( inclusion-group-of-units-Ring x) ( inclusion-group-of-units-Ring y) - preserves-mul-inclusion-group-of-units-Ring = - preserves-mul-inclusion-core-Monoid (multiplicative-monoid-Ring R) + preserves-mul-inclusion-group-of-units-Ring {x} {y} = + preserves-mul-inclusion-core-Monoid (multiplicative-monoid-Ring R) {x} {y} hom-inclusion-group-of-units-Ring : hom-Monoid monoid-group-of-units-Ring (multiplicative-monoid-Ring R) @@ -169,7 +169,7 @@ module _ ( hom-multiplicative-monoid-hom-Ring R S f) preserves-mul-hom-group-of-units-hom-Ring : - (x y : type-group-of-units-Ring R) → + {x y : type-group-of-units-Ring R} → map-group-of-units-hom-Ring (mul-group-of-units-Ring R x y) = mul-group-of-units-Ring S ( map-group-of-units-hom-Ring x) @@ -198,7 +198,7 @@ module _ ( hom-multiplicative-monoid-hom-Ring R S f) preserves-inv-hom-group-of-units-hom-Ring : - (x : type-group-of-units-Ring R) → + {x : type-group-of-units-Ring R} → map-group-of-units-hom-Ring (inv-group-of-units-Ring R x) = inv-group-of-units-Ring S (map-group-of-units-hom-Ring x) preserves-inv-hom-group-of-units-hom-Ring = diff --git a/src/ring-theory/homomorphisms-rings.lagda.md b/src/ring-theory/homomorphisms-rings.lagda.md index 172309e266..55c4d83fd2 100644 --- a/src/ring-theory/homomorphisms-rings.lagda.md +++ b/src/ring-theory/homomorphisms-rings.lagda.md @@ -45,7 +45,7 @@ preserves-mul-hom-Ab : {l1 l2 : Level} (R : Ring l1) (S : Ring l2) → hom-Ab (ab-Ring R) (ab-Ring S) → UU (l1 ⊔ l2) preserves-mul-hom-Ab R S f = - (x y : type-Ring R) → + {x y : type-Ring R} → map-hom-Ab (ab-Ring R) (ab-Ring S) f (mul-Ring R x y) = mul-Ring S ( map-hom-Ab (ab-Ring R) (ab-Ring S) f x) @@ -56,9 +56,9 @@ is-prop-preserves-mul-hom-Ab : ( f : hom-Ab (ab-Ring R) (ab-Ring S)) → is-prop (preserves-mul-hom-Ab R S f) is-prop-preserves-mul-hom-Ab R S f = - is-prop-Π + is-prop-Π' ( λ x → - is-prop-Π + is-prop-Π' ( λ y → is-set-type-Ring S ( map-hom-Ab (ab-Ring R) (ab-Ring S) f (mul-Ring R x y)) @@ -96,7 +96,7 @@ module _ is-ring-homomorphism-hom-Ab-Prop : hom-Ab (ab-Ring R) (ab-Ring S) → Prop (l1 ⊔ l2) is-ring-homomorphism-hom-Ab-Prop f = - is-homomorphism-semiring-hom-Commutative-Monoid-Prop + is-homomorphism-semiring-prop-hom-Commutative-Monoid ( semiring-Ring R) ( semiring-Ring S) ( hom-commutative-monoid-hom-Ab (ab-Ring R) (ab-Ring S) f) @@ -200,7 +200,7 @@ module _ where preserves-mul-id-hom-Ring : preserves-mul-hom-Ab R R (id-hom-Ab (ab-Ring R)) - preserves-mul-id-hom-Ring x y = refl + preserves-mul-id-hom-Ring = refl preserves-unit-id-hom-Ring : preserves-unit-hom-Ab R R (id-hom-Ab (ab-Ring R)) preserves-unit-id-hom-Ring = refl diff --git a/src/ring-theory/homomorphisms-semirings.lagda.md b/src/ring-theory/homomorphisms-semirings.lagda.md index 5f335566f6..b3d88655e3 100644 --- a/src/ring-theory/homomorphisms-semirings.lagda.md +++ b/src/ring-theory/homomorphisms-semirings.lagda.md @@ -41,11 +41,11 @@ module _ {l1 l2 : Level} (R : Semiring l1) (S : Semiring l2) where - is-homomorphism-semiring-hom-Commutative-Monoid-Prop : + is-homomorphism-semiring-prop-hom-Commutative-Monoid : ( hom-Commutative-Monoid ( additive-commutative-monoid-Semiring R) ( additive-commutative-monoid-Semiring S)) → Prop (l1 ⊔ l2) - is-homomorphism-semiring-hom-Commutative-Monoid-Prop f = + is-homomorphism-semiring-prop-hom-Commutative-Monoid f = Σ-Prop ( preserves-mul-prop-Semigroup ( multiplicative-semigroup-Semiring R) @@ -55,7 +55,7 @@ module _ ( additive-commutative-monoid-Semiring S) ( f))) ( λ H → - preserves-unit-hom-semigroup-Prop + preserves-unit-prop-hom-Semigroup ( multiplicative-monoid-Semiring R) ( multiplicative-monoid-Semiring S) ( ( map-hom-Commutative-Monoid @@ -69,7 +69,7 @@ module _ ( additive-commutative-monoid-Semiring R) ( additive-commutative-monoid-Semiring S)) → UU (l1 ⊔ l2) is-homomorphism-semiring-hom-Commutative-Monoid f = - type-Prop (is-homomorphism-semiring-hom-Commutative-Monoid-Prop f) + type-Prop (is-homomorphism-semiring-prop-hom-Commutative-Monoid f) is-prop-is-homomorphism-semiring-hom-Commutative-Monoid : ( f : @@ -78,7 +78,7 @@ module _ ( additive-commutative-monoid-Semiring S)) → is-prop (is-homomorphism-semiring-hom-Commutative-Monoid f) is-prop-is-homomorphism-semiring-hom-Commutative-Monoid f = - is-prop-type-Prop (is-homomorphism-semiring-hom-Commutative-Monoid-Prop f) + is-prop-type-Prop (is-homomorphism-semiring-prop-hom-Commutative-Monoid f) hom-set-Semiring : Set (l1 ⊔ l2) hom-set-Semiring = @@ -86,7 +86,7 @@ module _ ( hom-set-Commutative-Monoid ( additive-commutative-monoid-Semiring R) ( additive-commutative-monoid-Semiring S)) - ( is-homomorphism-semiring-hom-Commutative-Monoid-Prop) + ( is-homomorphism-semiring-prop-hom-Commutative-Monoid) hom-Semiring : UU (l1 ⊔ l2) hom-Semiring = type-Set hom-set-Semiring @@ -112,7 +112,7 @@ module _ ( hom-additive-commutative-monoid-hom-Semiring) preserves-addition-hom-Semiring : - (x y : type-Semiring R) → + {x y : type-Semiring R} → map-hom-Semiring (add-Semiring R x y) = add-Semiring S (map-hom-Semiring x) (map-hom-Semiring y) preserves-addition-hom-Semiring = @@ -130,7 +130,7 @@ module _ ( hom-additive-commutative-monoid-hom-Semiring) preserves-mul-hom-Semiring : - (x y : type-Semiring R) → + {x y : type-Semiring R} → map-hom-Semiring (mul-Semiring R x y) = mul-Semiring S (map-hom-Semiring x) (map-hom-Semiring y) preserves-mul-hom-Semiring = pr1 (pr2 f) @@ -172,8 +172,8 @@ module _ id-hom-Commutative-Monoid (additive-commutative-monoid-Semiring R) preserves-mul-id-hom-Semiring : - (x y : type-Semiring R) → mul-Semiring R x y = mul-Semiring R x y - preserves-mul-id-hom-Semiring x y = refl + {x y : type-Semiring R} → mul-Semiring R x y = mul-Semiring R x y + preserves-mul-id-hom-Semiring = refl preserves-unit-id-hom-Semiring : one-Semiring R = one-Semiring R @@ -227,7 +227,7 @@ module _ ( hom-additive-commutative-monoid-comp-hom-Semiring) preserves-mul-comp-hom-Semiring : - (x y : type-Semiring R) → + {x y : type-Semiring R} → map-comp-hom-Semiring (mul-Semiring R x y) = mul-Semiring T (map-comp-hom-Semiring x) (map-comp-hom-Semiring y) preserves-mul-comp-hom-Semiring = diff --git a/src/ring-theory/ideals-generated-by-subsets-rings.lagda.md b/src/ring-theory/ideals-generated-by-subsets-rings.lagda.md index 794b0633cf..253c79f500 100644 --- a/src/ring-theory/ideals-generated-by-subsets-rings.lagda.md +++ b/src/ring-theory/ideals-generated-by-subsets-rings.lagda.md @@ -206,7 +206,7 @@ module _ is-closed-under-addition-ideal-subset-Ring : is-closed-under-addition-subset-Ring R subset-ideal-subset-Ring - is-closed-under-addition-ideal-subset-Ring x y H K = + is-closed-under-addition-ideal-subset-Ring {x} {y} H K = apply-universal-property-trunc-Prop H ( subset-ideal-subset-Ring (add-Ring R x y)) ( λ H' → @@ -259,7 +259,7 @@ module _ is-closed-under-negatives-ideal-subset-Ring : is-closed-under-negatives-subset-Ring R subset-ideal-subset-Ring - is-closed-under-negatives-ideal-subset-Ring x H = + is-closed-under-negatives-ideal-subset-Ring {x} H = tr ( is-in-ideal-subset-Ring) ( mul-neg-one-Ring R x) @@ -299,8 +299,6 @@ module _ contains-formal-combinations-ideal-subset-Ring I H ( cons (r , (s , K) , t) c) = is-closed-under-addition-ideal-Ring R I - ( mul-Ring R (mul-Ring R r s) t) - ( ev-formal-combination-subset-Ring c) ( is-closed-under-right-multiplication-ideal-Ring R I ( mul-Ring R r s) ( t) @@ -353,7 +351,7 @@ module _ ( H)) ideal-subset-hom-large-poset-Ring : - hom-set-Large-Poset + hom-Large-Poset ( λ l2 → l1 ⊔ l2) ( powerset-Large-Poset (type-Ring A)) ( ideal-Ring-Large-Poset A) @@ -552,7 +550,7 @@ module _ cases-forward-inclusion-idempotent-ideal-subset-Ring nil = contains-zero-ideal-Ring R I cases-forward-inclusion-idempotent-ideal-subset-Ring (cons (x , u , y) l) = - is-closed-under-addition-ideal-Ring R I _ _ + is-closed-under-addition-ideal-Ring R I ( is-closed-under-right-multiplication-ideal-Ring R I _ _ ( is-closed-under-left-multiplication-ideal-Ring R I _ _ (pr2 u))) ( cases-forward-inclusion-idempotent-ideal-subset-Ring l) diff --git a/src/ring-theory/ideals-rings.lagda.md b/src/ring-theory/ideals-rings.lagda.md index 205736af78..bec2aff146 100644 --- a/src/ring-theory/ideals-rings.lagda.md +++ b/src/ring-theory/ideals-rings.lagda.md @@ -246,10 +246,10 @@ module _ #### The left equivalence relation obtained from an ideal ```agda - left-eq-rel-congruence-ideal-Ring : - Equivalence-Relation l2 (type-Ring R) - left-eq-rel-congruence-ideal-Ring = - left-eq-rel-congruence-Subgroup-Ab + left-equivalence-relation-congruence-ideal-Ring : + equivalence-relation l2 (type-Ring R) + left-equivalence-relation-congruence-ideal-Ring = + left-equivalence-relation-congruence-Subgroup-Ab ( ab-Ring R) ( subgroup-ideal-Ring R I) @@ -307,16 +307,17 @@ module _ ( ab-Ring R) ( subgroup-ideal-Ring R I) - eq-rel-congruence-ideal-Ring : Equivalence-Relation l2 (type-Ring R) - eq-rel-congruence-ideal-Ring = - eq-rel-congruence-Subgroup-Ab + equivalence-relation-congruence-ideal-Ring : + equivalence-relation l2 (type-Ring R) + equivalence-relation-congruence-ideal-Ring = + equivalence-relation-congruence-Subgroup-Ab ( ab-Ring R) ( subgroup-ideal-Ring R I) relate-same-elements-left-sim-congruence-ideal-Ring : - relate-same-elements-Equivalence-Relation - ( eq-rel-congruence-ideal-Ring) - ( left-eq-rel-congruence-ideal-Ring) + relate-same-elements-equivalence-relation + ( equivalence-relation-congruence-ideal-Ring) + ( left-equivalence-relation-congruence-ideal-Ring) relate-same-elements-left-sim-congruence-ideal-Ring = relate-same-elements-left-sim-congruence-Subgroup-Ab ( ab-Ring R) @@ -325,7 +326,7 @@ module _ add-congruence-ideal-Ring : ( is-congruence-Ab ( ab-Ring R) - ( eq-rel-congruence-ideal-Ring)) + ( equivalence-relation-congruence-ideal-Ring)) add-congruence-ideal-Ring = ( add-congruence-Subgroup-Ab ( ab-Ring R) @@ -340,8 +341,6 @@ module _ is-congruence-monoid-mul-congruence-ideal-Ring {x} {y} {u} {v} e f = ( is-closed-under-eq-ideal-Ring R I ( is-closed-under-addition-ideal-Ring R I - ( mul-Ring R (add-Ring R (neg-Ring R x) y) u) - ( mul-Ring R y (add-Ring R (neg-Ring R u) v)) ( is-closed-under-right-multiplication-ideal-Ring R I ( add-Ring R (neg-Ring R x) y) ( u) @@ -399,13 +398,13 @@ module _ mul-congruence-ideal-Ring : ( is-congruence-Monoid ( multiplicative-monoid-Ring R) - ( eq-rel-congruence-ideal-Ring)) + ( equivalence-relation-congruence-ideal-Ring)) mul-congruence-ideal-Ring = is-congruence-monoid-mul-congruence-ideal-Ring congruence-ideal-Ring : congruence-Ring l2 R congruence-ideal-Ring = construct-congruence-Ring R - ( eq-rel-congruence-ideal-Ring) + ( equivalence-relation-congruence-ideal-Ring) ( add-congruence-ideal-Ring) ( mul-congruence-ideal-Ring) ``` @@ -430,14 +429,14 @@ module _ is-closed-under-addition-subset-congruence-Ring : is-closed-under-addition-subset-Ring R subset-congruence-Ring - is-closed-under-addition-subset-congruence-Ring x y H K = + is-closed-under-addition-subset-congruence-Ring H K = concatenate-eq-sim-congruence-Ring R S ( inv (left-unit-law-add-Ring R (zero-Ring R))) ( add-congruence-Ring R S H K) is-closed-under-negatives-subset-congruence-Ring : is-closed-under-negatives-subset-Ring R subset-congruence-Ring - is-closed-under-negatives-subset-congruence-Ring x H = + is-closed-under-negatives-subset-congruence-Ring H = concatenate-eq-sim-congruence-Ring R S ( inv (neg-zero-Ring R)) ( neg-congruence-Ring R S H) @@ -533,7 +532,7 @@ module _ is-section-ideal-congruence-Ring : congruence-ideal-Ring R (ideal-congruence-Ring R S) = S is-section-ideal-congruence-Ring = - eq-relate-same-elements-congruence-Ring R + equivalence-relationate-same-elements-congruence-Ring R ( congruence-ideal-Ring R (ideal-congruence-Ring R S)) ( S) ( relate-same-elements-congruence-ideal-congruence-Ring) diff --git a/src/ring-theory/ideals-semirings.lagda.md b/src/ring-theory/ideals-semirings.lagda.md index 827486e542..2caf235123 100644 --- a/src/ring-theory/ideals-semirings.lagda.md +++ b/src/ring-theory/ideals-semirings.lagda.md @@ -46,7 +46,7 @@ module _ is-additive-submonoid-Semiring : {l2 : Level} → subset-Semiring l2 R → UU (l1 ⊔ l2) is-additive-submonoid-Semiring = - is-submonoid-Monoid (additive-monoid-Semiring R) + is-submonoid-subset-Monoid (additive-monoid-Semiring R) ``` ### Left ideals diff --git a/src/ring-theory/intersections-ideals-rings.lagda.md b/src/ring-theory/intersections-ideals-rings.lagda.md index badb9865f7..4444ab8716 100644 --- a/src/ring-theory/intersections-ideals-rings.lagda.md +++ b/src/ring-theory/intersections-ideals-rings.lagda.md @@ -69,18 +69,18 @@ module _ is-closed-under-addition-intersection-ideal-Ring : is-closed-under-addition-subset-Ring R subset-intersection-ideal-Ring - pr1 (is-closed-under-addition-intersection-ideal-Ring x y H K) = - is-closed-under-addition-ideal-Ring R I x y (pr1 H) (pr1 K) - pr2 (is-closed-under-addition-intersection-ideal-Ring x y H K) = - is-closed-under-addition-ideal-Ring R J x y (pr2 H) (pr2 K) + pr1 (is-closed-under-addition-intersection-ideal-Ring H K) = + is-closed-under-addition-ideal-Ring R I (pr1 H) (pr1 K) + pr2 (is-closed-under-addition-intersection-ideal-Ring H K) = + is-closed-under-addition-ideal-Ring R J (pr2 H) (pr2 K) is-closed-under-negatives-intersection-ideal-Ring : is-closed-under-negatives-subset-Ring R subset-intersection-ideal-Ring - pr1 (is-closed-under-negatives-intersection-ideal-Ring x H) = - is-closed-under-negatives-ideal-Ring R I x (pr1 H) - pr2 (is-closed-under-negatives-intersection-ideal-Ring x H) = - is-closed-under-negatives-ideal-Ring R J x (pr2 H) + pr1 (is-closed-under-negatives-intersection-ideal-Ring H) = + is-closed-under-negatives-ideal-Ring R I (pr1 H) + pr2 (is-closed-under-negatives-intersection-ideal-Ring H) = + is-closed-under-negatives-ideal-Ring R J (pr2 H) is-closed-under-left-multiplication-intersection-ideal-Ring : is-closed-under-left-multiplication-subset-Ring R diff --git a/src/ring-theory/invertible-elements-rings.lagda.md b/src/ring-theory/invertible-elements-rings.lagda.md index a620ec3575..fe1fd2d214 100644 --- a/src/ring-theory/invertible-elements-rings.lagda.md +++ b/src/ring-theory/invertible-elements-rings.lagda.md @@ -161,7 +161,7 @@ module _ is-invertible-element-prop-Ring : type-Ring R → Prop l is-invertible-element-prop-Ring = - is-invertible-element-monoid-Prop + is-invertible-element-prop-Monoid ( multiplicative-monoid-Ring R) ``` diff --git a/src/ring-theory/isomorphisms-rings.lagda.md b/src/ring-theory/isomorphisms-rings.lagda.md index ce374c416a..500028bcc4 100644 --- a/src/ring-theory/isomorphisms-rings.lagda.md +++ b/src/ring-theory/isomorphisms-rings.lagda.md @@ -15,11 +15,13 @@ open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types open import foundation.equivalences open import foundation.function-types +open import foundation.functoriality-dependent-function-types open import foundation.functoriality-dependent-pair-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies open import foundation.homotopy-induction open import foundation.identity-types +open import foundation.implicit-function-types open import foundation.iterated-dependent-product-types open import foundation.propositions open import foundation.structure-identity-principle @@ -143,18 +145,18 @@ module _ preserves-one-iso-Ring f = preserves-one-hom-Ring R S (hom-iso-Ring f) preserves-add-iso-Ring : - (f : iso-Ring) (x y : type-Ring R) → + (f : iso-Ring) {x y : type-Ring R} → map-iso-Ring f (add-Ring R x y) = add-Ring S (map-iso-Ring f x) (map-iso-Ring f y) preserves-add-iso-Ring f = preserves-add-hom-Ring R S (hom-iso-Ring f) preserves-neg-iso-Ring : - (f : iso-Ring) (x : type-Ring R) → + (f : iso-Ring) {x : type-Ring R} → map-iso-Ring f (neg-Ring R x) = neg-Ring S (map-iso-Ring f x) preserves-neg-iso-Ring f = preserves-neg-hom-Ring R S (hom-iso-Ring f) preserves-mul-iso-Ring : - (f : iso-Ring) (x y : type-Ring R) → + (f : iso-Ring) {x y : type-Ring R} → map-iso-Ring f (mul-Ring R x y) = mul-Ring S (map-iso-Ring f x) (map-iso-Ring f y) preserves-mul-iso-Ring f = @@ -183,20 +185,20 @@ module _ preserves-one-hom-Ring S R (hom-inv-iso-Ring f) preserves-add-inv-iso-Ring : - (f : iso-Ring) (x y : type-Ring S) → + (f : iso-Ring) {x y : type-Ring S} → map-inv-iso-Ring f (add-Ring S x y) = add-Ring R (map-inv-iso-Ring f x) (map-inv-iso-Ring f y) preserves-add-inv-iso-Ring f = preserves-add-hom-Ring S R (hom-inv-iso-Ring f) preserves-neg-inv-iso-Ring : - (f : iso-Ring) (x : type-Ring S) → + (f : iso-Ring) {x : type-Ring S} → map-inv-iso-Ring f (neg-Ring S x) = neg-Ring R (map-inv-iso-Ring f x) preserves-neg-inv-iso-Ring f = preserves-neg-hom-Ring S R (hom-inv-iso-Ring f) preserves-mul-inv-iso-Ring : - (f : iso-Ring) (x y : type-Ring S) → + (f : iso-Ring) {x y : type-Ring S} → map-inv-iso-Ring f (mul-Ring S x y) = mul-Ring R (map-inv-iso-Ring f x) (map-inv-iso-Ring f y) preserves-mul-inv-iso-Ring f = @@ -338,13 +340,11 @@ module _ preserves-mul-hom-Ab R S f → preserves-mul-hom-Ab S R ( hom-inv-is-iso-Ab (ab-Ring R) (ab-Ring S) f U) - preserves-mul-inv-is-iso-Ab f U μ x y = + preserves-mul-inv-is-iso-Ab f U μ {x} {y} = ( inv ( ap ( map-inv-is-iso-Ab (ab-Ring R) (ab-Ring S) f U) - ( ( μ - ( map-inv-is-iso-Ab (ab-Ring R) (ab-Ring S) f U x) - ( map-inv-is-iso-Ab (ab-Ring R) (ab-Ring S) f U y)) ∙ + ( ( μ) ∙ ( ap-mul-Ring S ( is-section-map-inv-is-iso-Ab (ab-Ring R) (ab-Ring S) f U x) ( is-section-map-inv-is-iso-Ab @@ -483,16 +483,24 @@ module _ ( is-torsorial-Eq-structure ( λ μ H pres-mul → one-Ring R = pr1 (pr1 H)) ( is-torsorial-Eq-subtype - ( is-torsorial-Eq-Π - ( λ x m → (y : type-Ring R) → mul-Ring R x y = m y) - ( λ x → is-torsorial-htpy (mul-Ring R x))) + ( is-contr-equiv + ( Σ ( (x y : type-Ring R) → type-Ring R) + ( λ g → + (x y : type-Ring R) → mul-Ring R x y = g x y)) + ( equiv-tot + ( λ m → + equiv-Π-equiv-family (λ x → equiv-explicit-implicit-Π) ∘e + equiv-explicit-implicit-Π)) + ( is-torsorial-Eq-Π + ( λ x m → (y : type-Ring R) → mul-Ring R x y = m y) + ( λ x → is-torsorial-htpy (mul-Ring R x)))) ( λ μ → is-prop-iterated-Π 3 ( λ x y z → is-set-type-Ring R (μ (μ x y) z) (μ x (μ y z)))) ( mul-Ring R) - ( λ x y → refl) + ( λ {x} {y} → refl) ( associative-mul-Ring R)) - ( (mul-Ring R , associative-mul-Ring R) , λ x y → refl) + ( (mul-Ring R , associative-mul-Ring R) , λ {x} {y} → refl) ( is-torsorial-Eq-subtype ( is-torsorial-Eq-subtype ( is-torsorial-path (one-Ring R)) diff --git a/src/ring-theory/kernels-of-ring-homomorphisms.lagda.md b/src/ring-theory/kernels-of-ring-homomorphisms.lagda.md index dd0678fc12..905d2411ee 100644 --- a/src/ring-theory/kernels-of-ring-homomorphisms.lagda.md +++ b/src/ring-theory/kernels-of-ring-homomorphisms.lagda.md @@ -12,7 +12,7 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import group-theory.kernels +open import group-theory.kernels-homomorphisms-groups open import group-theory.subgroups-abelian-groups open import ring-theory.homomorphisms-rings @@ -76,16 +76,16 @@ module _ is-closed-under-left-multiplication-kernel-hom-Ring : is-closed-under-left-multiplication-subset-Ring R subset-kernel-hom-Ring is-closed-under-left-multiplication-kernel-hom-Ring x y H = - ( preserves-mul-hom-Ring R S f x y) ∙ + ( inv (right-zero-law-mul-Ring S _)) ∙ ( ap (mul-Ring S _) H) ∙ - ( right-zero-law-mul-Ring S _) + ( inv (preserves-mul-hom-Ring R S f)) is-closed-under-right-multiplication-kernel-hom-Ring : is-closed-under-right-multiplication-subset-Ring R subset-kernel-hom-Ring is-closed-under-right-multiplication-kernel-hom-Ring x y H = - ( preserves-mul-hom-Ring R S f x y) ∙ + ( inv (left-zero-law-mul-Ring S _)) ∙ ( ap (mul-Ring' S _) H) ∙ - ( left-zero-law-mul-Ring S _) + ( inv (preserves-mul-hom-Ring R S f)) kernel-hom-Ring : ideal-Ring l2 R pr1 kernel-hom-Ring = diff --git a/src/ring-theory/left-ideals-generated-by-subsets-rings.lagda.md b/src/ring-theory/left-ideals-generated-by-subsets-rings.lagda.md index d1060ba3ae..3283bfa3cb 100644 --- a/src/ring-theory/left-ideals-generated-by-subsets-rings.lagda.md +++ b/src/ring-theory/left-ideals-generated-by-subsets-rings.lagda.md @@ -186,7 +186,7 @@ module _ is-closed-under-addition-left-ideal-subset-Ring : is-closed-under-addition-subset-Ring R subset-left-ideal-subset-Ring - is-closed-under-addition-left-ideal-subset-Ring x y H K = + is-closed-under-addition-left-ideal-subset-Ring {x} {y} H K = apply-universal-property-trunc-Prop H ( subset-left-ideal-subset-Ring (add-Ring R x y)) ( λ H' → @@ -221,7 +221,7 @@ module _ is-closed-under-negatives-left-ideal-subset-Ring : is-closed-under-negatives-subset-Ring R subset-left-ideal-subset-Ring - is-closed-under-negatives-left-ideal-subset-Ring x H = + is-closed-under-negatives-left-ideal-subset-Ring {x} H = tr ( type-Prop ∘ subset-left-ideal-subset-Ring) ( mul-neg-one-Ring R x) @@ -258,8 +258,6 @@ module _ contains-left-formal-combinations-left-ideal-subset-Ring I H ( cons (pair r (pair s K)) c) = is-closed-under-addition-left-ideal-Ring R I - ( mul-Ring R r s) - ( ev-left-formal-combination-subset-Ring c) ( is-closed-under-left-multiplication-left-ideal-Ring R I r s (H s K)) ( contains-left-formal-combinations-left-ideal-subset-Ring I H c) @@ -309,7 +307,7 @@ module _ ( H)) left-ideal-subset-hom-large-poset-Ring : - hom-set-Large-Poset + hom-Large-Poset ( λ l2 → l1 ⊔ l2) ( powerset-Large-Poset (type-Ring A)) ( left-ideal-Ring-Large-Poset A) @@ -518,7 +516,7 @@ module _ contains-zero-left-ideal-Ring R I cases-forward-inclusion-idempotent-left-ideal-subset-Ring ( cons (x , y , u) l) = - is-closed-under-addition-left-ideal-Ring R I _ _ + is-closed-under-addition-left-ideal-Ring R I ( is-closed-under-left-multiplication-left-ideal-Ring R I x y u) ( cases-forward-inclusion-idempotent-left-ideal-subset-Ring l) diff --git a/src/ring-theory/localizations-rings.lagda.md b/src/ring-theory/localizations-rings.lagda.md index 1a6fbabd5e..0c3aeb511a 100644 --- a/src/ring-theory/localizations-rings.lagda.md +++ b/src/ring-theory/localizations-rings.lagda.md @@ -85,18 +85,12 @@ inverts-element-comp-hom-Ring R S T x g f H = pair ( map-hom-Ring S T g (inv-inverts-element-hom-Ring R S x f H)) ( pair - ( ( inv - ( preserves-mul-hom-Ring S T g - ( map-hom-Ring R S f x) - ( inv-inverts-element-hom-Ring R S x f H))) ∙ + ( ( inv (preserves-mul-hom-Ring S T g)) ∙ ( ( ap ( map-hom-Ring S T g) ( is-right-inverse-inv-inverts-element-hom-Ring R S x f H)) ∙ ( preserves-one-hom-Ring S T g))) - ( ( inv - ( preserves-mul-hom-Ring S T g - ( inv-inverts-element-hom-Ring R S x f H) - ( map-hom-Ring R S f x))) ∙ + ( ( inv (preserves-mul-hom-Ring S T g)) ∙ ( ( ap ( map-hom-Ring S T g) ( is-left-inverse-inv-inverts-element-hom-Ring R S x f H)) ∙ diff --git a/src/ring-theory/modules-rings.lagda.md b/src/ring-theory/modules-rings.lagda.md index 7d01f84c0a..dd09b187e4 100644 --- a/src/ring-theory/modules-rings.lagda.md +++ b/src/ring-theory/modules-rings.lagda.md @@ -156,7 +156,7 @@ module _ ( add-left-module-Ring ( mul-left-module-Ring r x) ( mul-left-module-Ring r y)) - left-distributive-mul-add-left-module-Ring r = + left-distributive-mul-add-left-module-Ring r x y = preserves-add-hom-Ab ( ab-left-module-Ring) ( ab-left-module-Ring) @@ -193,9 +193,7 @@ module _ ( s))) ( preserves-add-hom-Ring R ( endomorphism-ring-ab-left-module-Ring) - ( mul-hom-left-module-Ring) - ( r) - ( s)) + ( mul-hom-left-module-Ring)) associative-mul-left-module-Ring : (r s : type-Ring R) (x : type-left-module-Ring) → @@ -224,9 +222,7 @@ module _ ( s))) ( preserves-mul-hom-Ring R ( endomorphism-ring-ab-left-module-Ring) - ( mul-hom-left-module-Ring) - ( r) - ( s)) + ( mul-hom-left-module-Ring)) left-zero-law-mul-left-module-Ring : (x : type-left-module-Ring) → @@ -278,15 +274,14 @@ module _ ( r))) ( preserves-neg-hom-Ring R ( endomorphism-ring-ab-left-module-Ring) - ( mul-hom-left-module-Ring) - ( r)) + ( mul-hom-left-module-Ring)) right-negative-law-mul-left-module-Ring : (r : type-Ring R) (x : type-left-module-Ring) → Id ( mul-left-module-Ring r (neg-left-module-Ring x)) ( neg-left-module-Ring (mul-left-module-Ring r x)) - right-negative-law-mul-left-module-Ring r = + right-negative-law-mul-left-module-Ring r x = preserves-negatives-hom-Ab ( ab-left-module-Ring) ( ab-left-module-Ring) @@ -405,7 +400,7 @@ module _ ( add-right-module-Ring ( mul-right-module-Ring r x) ( mul-right-module-Ring r y)) - left-distributive-mul-add-right-module-Ring r = + left-distributive-mul-add-right-module-Ring r x y = preserves-add-hom-Ab ( ab-right-module-Ring) ( ab-right-module-Ring) @@ -442,9 +437,7 @@ module _ ( s))) ( preserves-add-hom-Ring R ( op-Ring endomorphism-ring-ab-right-module-Ring) - ( mul-hom-right-module-Ring) - ( r) - ( s)) + ( mul-hom-right-module-Ring)) associative-mul-right-module-Ring : (r s : type-Ring R) (x : type-right-module-Ring) → @@ -473,9 +466,7 @@ module _ ( r))) ( preserves-mul-hom-Ring R ( op-Ring endomorphism-ring-ab-right-module-Ring) - ( mul-hom-right-module-Ring) - ( r) - ( s)) + ( mul-hom-right-module-Ring)) left-zero-law-mul-right-module-Ring : (x : type-right-module-Ring) → @@ -527,15 +518,14 @@ module _ ( r))) ( preserves-neg-hom-Ring R ( op-Ring endomorphism-ring-ab-right-module-Ring) - ( mul-hom-right-module-Ring) - ( r)) + ( mul-hom-right-module-Ring)) right-negative-law-mul-right-module-Ring : (r : type-Ring R) (x : type-right-module-Ring) → Id ( mul-right-module-Ring r (neg-right-module-Ring x)) ( neg-right-module-Ring (mul-right-module-Ring r x)) - right-negative-law-mul-right-module-Ring r = + right-negative-law-mul-right-module-Ring r x = preserves-negatives-hom-Ab ( ab-right-module-Ring) ( ab-right-module-Ring) diff --git a/src/ring-theory/nilpotent-elements-rings.lagda.md b/src/ring-theory/nilpotent-elements-rings.lagda.md index 0e8824d726..1c96f4d478 100644 --- a/src/ring-theory/nilpotent-elements-rings.lagda.md +++ b/src/ring-theory/nilpotent-elements-rings.lagda.md @@ -75,7 +75,7 @@ is-nilpotent-add-Ring R = is-nilpotent-add-Semiring (semiring-Ring R) is-nilpotent-element-neg-Ring : {l : Level} (R : Ring l) → is-closed-under-negatives-subset-Ring R (is-nilpotent-element-ring-Prop R) -is-nilpotent-element-neg-Ring R x H = +is-nilpotent-element-neg-Ring R {x} H = apply-universal-property-trunc-Prop H ( is-nilpotent-element-ring-Prop R (neg-Ring R x)) ( λ (n , p) → diff --git a/src/ring-theory/poset-of-ideals-rings.lagda.md b/src/ring-theory/poset-of-ideals-rings.lagda.md index 6fb53bd08a..1603169bcf 100644 --- a/src/ring-theory/poset-of-ideals-rings.lagda.md +++ b/src/ring-theory/poset-of-ideals-rings.lagda.md @@ -151,7 +151,7 @@ module _ preserves-order-subset-ideal-Ring I J H = H subset-ideal-hom-large-poset-Ring : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( ideal-Ring-Large-Poset R) ( powerset-Large-Poset (type-Ring R)) diff --git a/src/ring-theory/poset-of-left-ideals-rings.lagda.md b/src/ring-theory/poset-of-left-ideals-rings.lagda.md index 133aac4fcb..4454c433e0 100644 --- a/src/ring-theory/poset-of-left-ideals-rings.lagda.md +++ b/src/ring-theory/poset-of-left-ideals-rings.lagda.md @@ -161,7 +161,7 @@ module _ preserves-order-subset-left-ideal-Ring I J H = H subset-left-ideal-hom-large-poset-Ring : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( left-ideal-Ring-Large-Poset R) ( powerset-Large-Poset (type-Ring R)) diff --git a/src/ring-theory/poset-of-right-ideals-rings.lagda.md b/src/ring-theory/poset-of-right-ideals-rings.lagda.md index 64d4e54ecc..f7fccd43b4 100644 --- a/src/ring-theory/poset-of-right-ideals-rings.lagda.md +++ b/src/ring-theory/poset-of-right-ideals-rings.lagda.md @@ -162,7 +162,7 @@ module _ preserves-order-subset-right-ideal-Ring I J H = H subset-right-ideal-hom-large-poset-Ring : - hom-set-Large-Poset + hom-Large-Poset ( λ l → l) ( right-ideal-Ring-Large-Poset R) ( powerset-Large-Poset (type-Ring R)) diff --git a/src/ring-theory/right-ideals-generated-by-subsets-rings.lagda.md b/src/ring-theory/right-ideals-generated-by-subsets-rings.lagda.md index 041d821bfe..ec913d21e3 100644 --- a/src/ring-theory/right-ideals-generated-by-subsets-rings.lagda.md +++ b/src/ring-theory/right-ideals-generated-by-subsets-rings.lagda.md @@ -182,7 +182,7 @@ module _ is-closed-under-addition-right-ideal-subset-Ring : is-closed-under-addition-subset-Ring R subset-right-ideal-subset-Ring - is-closed-under-addition-right-ideal-subset-Ring x y H K = + is-closed-under-addition-right-ideal-subset-Ring {x} {y} H K = apply-universal-property-trunc-Prop H ( subset-right-ideal-subset-Ring (add-Ring R x y)) ( λ H' → @@ -218,7 +218,7 @@ module _ is-closed-under-negatives-right-ideal-subset-Ring : is-closed-under-negatives-subset-Ring R subset-right-ideal-subset-Ring - is-closed-under-negatives-right-ideal-subset-Ring x H = + is-closed-under-negatives-right-ideal-subset-Ring {x} H = tr ( type-Prop ∘ subset-right-ideal-subset-Ring) ( mul-neg-one-Ring' R x) @@ -256,8 +256,6 @@ module _ contains-right-formal-combinations-right-ideal-subset-Ring I H ( cons (pair (pair s K) r) c) = is-closed-under-addition-right-ideal-Ring R I - ( mul-Ring R s r) - ( ev-right-formal-combination-subset-Ring c) ( is-closed-under-right-multiplication-right-ideal-Ring R I s r (H s K)) ( contains-right-formal-combinations-right-ideal-subset-Ring I H c) @@ -307,7 +305,7 @@ module _ ( H)) right-ideal-subset-hom-large-poset-Ring : - hom-set-Large-Poset + hom-Large-Poset ( λ l2 → l1 ⊔ l2) ( powerset-Large-Poset (type-Ring A)) ( right-ideal-Ring-Large-Poset A) @@ -518,7 +516,7 @@ module _ contains-zero-right-ideal-Ring R I cases-forward-inclusion-idempotent-right-ideal-subset-Ring ( cons ((x , u) , y) l) = - is-closed-under-addition-right-ideal-Ring R I _ _ + is-closed-under-addition-right-ideal-Ring R I ( is-closed-under-right-multiplication-right-ideal-Ring R I x y u) ( cases-forward-inclusion-idempotent-right-ideal-subset-Ring l) diff --git a/src/ring-theory/subsets-rings.lagda.md b/src/ring-theory/subsets-rings.lagda.md index e5fa7e6bb4..227607bf6a 100644 --- a/src/ring-theory/subsets-rings.lagda.md +++ b/src/ring-theory/subsets-rings.lagda.md @@ -99,7 +99,7 @@ module _ ```agda is-closed-under-addition-subset-Ring : UU (l1 ⊔ l2) is-closed-under-addition-subset-Ring = - (x y : type-Ring R) → + {x y : type-Ring R} → is-in-subset-Ring R S x → is-in-subset-Ring R S y → is-in-subset-Ring R S (add-Ring R x y) ``` @@ -109,7 +109,7 @@ module _ ```agda is-closed-under-negatives-subset-Ring : UU (l1 ⊔ l2) is-closed-under-negatives-subset-Ring = - (x : type-Ring R) → + {x : type-Ring R} → is-in-subset-Ring R S x → is-in-subset-Ring R S (neg-Ring R x) ``` diff --git a/src/ring-theory/transporting-ring-structure-along-isomorphisms-abelian-groups.lagda.md b/src/ring-theory/transporting-ring-structure-along-isomorphisms-abelian-groups.lagda.md index cd604d680c..d69f003772 100644 --- a/src/ring-theory/transporting-ring-structure-along-isomorphisms-abelian-groups.lagda.md +++ b/src/ring-theory/transporting-ring-structure-along-isomorphisms-abelian-groups.lagda.md @@ -103,9 +103,9 @@ module _ x y z = ( ap ( map-f) - ( ( ap (mul-Ring R _) (preserves-add-inv-iso-Ab (ab-Ring R) A f y z)) ∙ + ( ( ap (mul-Ring R _) (preserves-add-inv-iso-Ab (ab-Ring R) A f)) ∙ ( left-distributive-mul-add-Ring R _ _ _))) ∙ - ( preserves-add-iso-Ab (ab-Ring R) A f _ _) + ( preserves-add-iso-Ab (ab-Ring R) A f) right-distributive-mul-add-transport-ring-structure-iso-Ab : (x y z : type-Ab A) → mul (add-Ab A x y) z = add-Ab A (mul x z) (mul y z) @@ -113,9 +113,9 @@ module _ x y z = ( ap ( map-f) - ( ( ap (mul-Ring' R _) (preserves-add-inv-iso-Ab (ab-Ring R) A f x y)) ∙ + ( ( ap (mul-Ring' R _) (preserves-add-inv-iso-Ab (ab-Ring R) A f)) ∙ ( right-distributive-mul-add-Ring R _ _ _))) ∙ - ( preserves-add-iso-Ab (ab-Ring R) A f _ _) + ( preserves-add-iso-Ab (ab-Ring R) A f) has-associative-mul-transport-ring-structure-iso-Ab : has-associative-mul-Set (set-Ab A) @@ -148,7 +148,7 @@ module _ ( R) ( transport-ring-structure-iso-Ab) ( hom-iso-Ab (ab-Ring R) A f) - preserves-mul-transport-ring-structure-iso-Ab x y = + preserves-mul-transport-ring-structure-iso-Ab {x} {y} = ap map-f ( ap-mul-Ring R ( inv (is-retraction-map-inv-iso-Ab (ab-Ring R) A f x)) diff --git a/src/set-theory/cardinalities.lagda.md b/src/set-theory/cardinalities.lagda.md index 4d34964701..6d862dbe3b 100644 --- a/src/set-theory/cardinalities.lagda.md +++ b/src/set-theory/cardinalities.lagda.md @@ -72,7 +72,7 @@ leq-cardinality-Prop : {l1 l2 : Level} → cardinal l1 → cardinal l2 → Prop (l1 ⊔ l2) leq-cardinality-Prop {l1} {l2} = map-universal-property-trunc-Set - ( hom-Set (cardinal-Set l2) (Prop-Set (l1 ⊔ l2))) + ( hom-set-Set (cardinal-Set l2) (Prop-Set (l1 ⊔ l2))) ( leq-cardinality-Prop') leq-cardinality : {l1 l2 : Level} → cardinal l1 → cardinal l2 → UU (l1 ⊔ l2) @@ -92,7 +92,7 @@ compute-leq-cardinality {l1} {l2} X Y = equiv-eq-Prop ( ( htpy-eq ( triangle-universal-property-trunc-Set - ( hom-Set (cardinal-Set l2) (Prop-Set (l1 ⊔ l2))) + ( hom-set-Set (cardinal-Set l2) (Prop-Set (l1 ⊔ l2))) ( leq-cardinality-Prop') X) (cardinality Y)) ∙ ( compute-leq-cardinality-Prop' X Y)) diff --git a/src/structured-types/morphisms-h-spaces.lagda.md b/src/structured-types/morphisms-h-spaces.lagda.md index 93f221b86e..d6819d89eb 100644 --- a/src/structured-types/morphisms-h-spaces.lagda.md +++ b/src/structured-types/morphisms-h-spaces.lagda.md @@ -41,7 +41,7 @@ preserves-left-unit-law-mul : (ν : B → B → B) {eB : B} → ((y : B) → Id (ν eB y) y) → (f : A → B) → Id (f eA) eB → preserves-mul μ ν f → UU (l1 ⊔ l2) preserves-left-unit-law-mul {A = A} {B} μ {eA} lA ν {eB} lB f p μf = - (x : A) → Id (ap f (lA x)) (μf eA x ∙ (ap (λ t → ν t (f x)) p ∙ lB (f x))) + (x : A) → Id (ap f (lA x)) (μf ∙ (ap (λ t → ν t (f x)) p ∙ lB (f x))) preserves-right-unit-law-mul : {l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -49,7 +49,7 @@ preserves-right-unit-law-mul : (ν : B → B → B) {eB : B} → ((y : B) → Id (ν y eB) y) → (f : A → B) → Id (f eA) eB → preserves-mul μ ν f → UU (l1 ⊔ l2) preserves-right-unit-law-mul {A = A} {B} μ {eA} rA ν {eB} rB f p μf = - (x : A) → Id (ap f (rA x)) (μf x eA ∙ (ap (ν (f x)) p ∙ rB (f x))) + (x : A) → Id (ap f (rA x)) (μf ∙ (ap (ν (f x)) p ∙ rB (f x))) preserves-coh-unit-laws-mul : {l1 l2 : Level} (M : H-Space l1) (N : H-Space l2) → @@ -76,7 +76,7 @@ preserves-coh-unit-laws-mul : preserves-coh-unit-laws-mul M (pair (pair N ._) μ) (pair f refl) μf lf rf = - Id (ap (ap f) cM ∙ rf eM) (lf eM ∙ ap (concat (μf eM eM) (f eM)) cN) + Id (ap (ap f) cM ∙ rf eM) (lf eM ∙ ap (concat μf (f eM)) cN) where eM = unit-H-Space M cM = coh-unit-laws-mul-H-Space M @@ -111,36 +111,36 @@ preserves-coh-unit-laws-mul' : preserves-coh-unit-laws-mul' M N f μf lf rf = Id { A = - Id (ap (pr1 f) (lM eM) ∙ ef) ((μf eM eM ∙ ap-binary μN ef ef) ∙ rN eN)} + Id (ap (pr1 f) (lM eM) ∙ ef) ((μf ∙ ap-binary μN ef ef) ∙ rN eN)} ( ( horizontal-concat-Id² (lf eM) (inv (ap-id ef))) ∙ ( ( ap ( _∙ (ap id ef)) ( inv ( assoc - ( μf eM eM) + ( μf) ( ap (mul-H-Space' N (pr1 f eM)) ef) ( lN (pr1 f eM))))) ∙ ( ( assoc - ( μf eM eM ∙ ap (mul-H-Space' N (pr1 f eM)) ef) + ( μf ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ( lN (pr1 f eM)) ( ap id ef)) ∙ ( ( ap - ( ( μf eM eM ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ∙_) + ( ( μf ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ∙_) ( nat-htpy lN ef)) ∙ ( ( inv ( assoc - ( μf eM eM ∙ ap (mul-H-Space' N (pr1 f eM)) ef) + ( μf ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ( ap (μN eN) ef) ( lN eN))) ∙ ( ( ap ( λ t → t ∙ lN eN) ( assoc - ( μf eM eM) + ( μf) ( ap (mul-H-Space' N (pr1 f eM)) ef) ( ap (μN eN) ef))) ∙ ( horizontal-concat-Id² ( ap - ( μf eM eM ∙_) + ( μf ∙_) ( inv (triangle-ap-binary μN ef ef))) ( cN)))))))) ( ( ap (_∙ ef) (ap (ap (pr1 f)) cM)) ∙ @@ -149,27 +149,27 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = ( _∙ ap id ef) ( inv ( assoc - ( μf eM eM) (ap (μN (pr1 f eM)) ef) (rN (pr1 f eM))))) ∙ + ( μf) (ap (μN (pr1 f eM)) ef) (rN (pr1 f eM))))) ∙ ( ( assoc - ( μf eM eM ∙ ap (μN (pr1 f eM)) ef) + ( μf ∙ ap (μN (pr1 f eM)) ef) ( rN (pr1 f eM)) ( ap id ef)) ∙ ( ( ap - ( ( μf eM eM ∙ ap (μN (pr1 f eM)) ef) ∙_) + ( ( μf ∙ ap (μN (pr1 f eM)) ef) ∙_) ( nat-htpy rN ef)) ∙ ( ( inv ( assoc - ( μf eM eM ∙ ap (μN (pr1 f eM)) ef) + ( μf ∙ ap (μN (pr1 f eM)) ef) ( ap (mul-H-Space' N eN) ef) ( rN eN))) ∙ ( ap ( λ t → t ∙ rN eN) ( ( assoc - ( μf eM eM) + ( μf) ( ap (μN (pr1 f eM)) ef) ( ap (mul-H-Space' N eN) ef)) ∙ ( ap - ( μf eM eM ∙_) + ( μf ∙_) ( inv (triangle-ap-binary' μN ef ef))))))))))) where eM = unit-H-Space M @@ -219,19 +219,5 @@ preserves-mul-htpy : {f g : A → B} (μf : preserves-mul μA μB f) (μg : preserves-mul μA μB g) → (f ~ g) → UU (l1 ⊔ l2) preserves-mul-htpy {A = A} μA μB μf μg H = - (a b : A) → Id (μf a b ∙ ap-binary μB (H a) (H b)) (H (μA a b) ∙ μg a b) - -{- -preserves-left-unit-law-mul-htpy : - {l1 l2 : Level} {A : UU l1} {B : UU l2} - (μA : A → A → A) {eA : A} (lA : (a : A) → Id (μA eA a) a) - (μB : B → B → B) {eB : B} (lB : (b : B) → Id (μB eB b) b) - {f : A → B} {pf : Id (f eA) eB} (μf : preserves-mul μA μB f) - (lf : preserves-left-unit-law-mul μA lA μB lB f pf μf) - {g : A → B} {pg : Id (g eA) eB} (μg : preserves-mul μA μB g) - (lg : preserves-left-unit-law-mul μA lA μB lB g pg μg) → - {H : f ~ g} (μH : preserves-mul-htpy μA μB μf μg H) (pH : Id pf (H eA ∙ pg)) → - UU (l1 ⊔ l2) -preserves-left-unit-law-mul-htpy μA lA μB lB μf lf μg lg μH pH = {!!} --} + (a b : A) → Id (μf ∙ ap-binary μB (H a) (H b)) (H (μA a b) ∙ μg) ``` diff --git a/src/synthetic-homotopy-theory/flattening-lemma-pushouts.lagda.md b/src/synthetic-homotopy-theory/flattening-lemma-pushouts.lagda.md index df32507051..0f01ea0f94 100644 --- a/src/synthetic-homotopy-theory/flattening-lemma-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/flattening-lemma-pushouts.lagda.md @@ -45,7 +45,7 @@ given a pushout square S -----> B | | f| |j - V V + V ⌜ V A -----> X i ``` @@ -57,7 +57,7 @@ commuting square Σ (s : S), P(if(s)) ---> Σ (s : S), P(jg(s)) ---> Σ (b : B), P(j(b)) | | | | - V V + V ⌜ V Σ (a : A), P(i(a)) -----------------------------> Σ (x : X), P(x) ``` diff --git a/src/synthetic-homotopy-theory/functoriality-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/functoriality-loop-spaces.lagda.md index af5d1a3962..3b49db32e9 100644 --- a/src/synthetic-homotopy-theory/functoriality-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-loop-spaces.lagda.md @@ -53,8 +53,8 @@ module _ pr2 pointed-map-Ω = preserves-refl-map-Ω preserves-mul-map-Ω : - (x y : type-Ω A) → map-Ω (mul-Ω A x y) = mul-Ω B (map-Ω x) (map-Ω y) - preserves-mul-map-Ω x y = + {x y : type-Ω A} → map-Ω (mul-Ω A x y) = mul-Ω B (map-Ω x) (map-Ω y) + preserves-mul-map-Ω {x} {y} = ( ap ( tr-type-Ω (preserves-point-pointed-map f)) ( ap-concat (map-pointed-map f) x y)) ∙ diff --git a/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md b/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md index 68d89269b2..2b61a2255b 100644 --- a/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md +++ b/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md @@ -94,7 +94,7 @@ hom-algebra-Hatcher-Acyclic-Type ( ( map-power-nat-Ω 2 f (a1 ∙ a2)) ∙ ( ap ( power-nat-Ω 2 B) - ( ( preserves-mul-map-Ω f a1 a2) ∙ + ( ( preserves-mul-map-Ω f) ∙ ( horizontal-concat-Id² u v)))) ( s2))))) ``` diff --git a/src/synthetic-homotopy-theory/powers-of-loops.lagda.md b/src/synthetic-homotopy-theory/powers-of-loops.lagda.md index 6a1e1c3b88..1b562cf416 100644 --- a/src/synthetic-homotopy-theory/powers-of-loops.lagda.md +++ b/src/synthetic-homotopy-theory/powers-of-loops.lagda.md @@ -129,7 +129,7 @@ map-power-nat-Ω : map-Ω f (power-nat-Ω n A ω) = power-nat-Ω n B (map-Ω f ω) map-power-nat-Ω zero-ℕ {A} {B} f ω = preserves-refl-map-Ω f map-power-nat-Ω (succ-ℕ n) {A} {B} f ω = - ( preserves-mul-map-Ω f (power-nat-Ω n A ω) ω) ∙ + ( preserves-mul-map-Ω f) ∙ ( ap ( concat' (point-Pointed-Type B) (map-Ω f ω)) ( map-power-nat-Ω n f ω)) diff --git a/src/synthetic-homotopy-theory/pullback-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/pullback-property-pushouts.lagda.md index e781819a3a..5db28faeff 100644 --- a/src/synthetic-homotopy-theory/pullback-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/pullback-property-pushouts.lagda.md @@ -30,7 +30,7 @@ pushout of `S` if and only if the square ```text Y^X -----> Y^B - | | + | ⌟ | | | V V Y^A -----> Y^S diff --git a/src/synthetic-homotopy-theory/pushouts.lagda.md b/src/synthetic-homotopy-theory/pushouts.lagda.md index 0e14b07bd3..8a5f156df1 100644 --- a/src/synthetic-homotopy-theory/pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/pushouts.lagda.md @@ -229,7 +229,7 @@ Given a pushout square with a A ----> ∙ \ \ inl \ | m \ cogap\ | - \ \ v + \ ∨ v \-----> X ``` @@ -353,7 +353,7 @@ We record the following auxiliary lemma which says that if we have types `T`, T ----------> G | | u | | - v ⌜ v + v ⌜ v F ----> fiber cogap x ``` diff --git a/src/synthetic-homotopy-theory/tangent-spheres.lagda.md b/src/synthetic-homotopy-theory/tangent-spheres.lagda.md index 94a327f9d6..c2e04b85ff 100644 --- a/src/synthetic-homotopy-theory/tangent-spheres.lagda.md +++ b/src/synthetic-homotopy-theory/tangent-spheres.lagda.md @@ -39,7 +39,7 @@ Consider a type `X` and a point `x : X`. We say that `x` **has a tangent T -----> C | | | | i - V V + V ⌜ V 1 -----> X x ``` diff --git a/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md index f894ed82fc..bb03790830 100644 --- a/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md @@ -564,7 +564,7 @@ again a pushout. S' ---> S ----> B | ≃ | | f' | | f | - v ≃ v ⌜ v + v ≃ v ⌜ v A' ---> A ----> X j ``` @@ -612,7 +612,7 @@ rectangle is a pushout if and only if the bottom square is a pushout. A -----> X | | f| | - v v + v ⌜ v B -----> Y | | k| | @@ -825,18 +825,18 @@ Given a commutative diagram where `i`, `j` and `k` are equivalences, A' S ----> B \ | | i \ | f | - \ v ⌜ v + \ v ⌜ v > A ----> X ``` -the induced square is a pushout. +the induced square is a pushout: ```text S' ---> B' | | | | - v v - A' ---> X + v ⌜ v + A' ---> X. ``` This combines both special cases of the pushout pasting lemmas for equivalences. diff --git a/src/synthetic-homotopy-theory/wedges-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/wedges-of-pointed-types.lagda.md index b78c57bca8..39551fc6a0 100644 --- a/src/synthetic-homotopy-theory/wedges-of-pointed-types.lagda.md +++ b/src/synthetic-homotopy-theory/wedges-of-pointed-types.lagda.md @@ -37,7 +37,7 @@ defined by the following unit ------> A | | | | - v ⌜ v + v ⌜ v B -----> A ∨∗ B, ``` diff --git a/src/univalent-combinatorics/binomial-types.lagda.md b/src/univalent-combinatorics/binomial-types.lagda.md index 294e060253..f4e5e7c1dc 100644 --- a/src/univalent-combinatorics/binomial-types.lagda.md +++ b/src/univalent-combinatorics/binomial-types.lagda.md @@ -351,7 +351,7 @@ equiv-small-binomial-type {l1} {l2} {l3} {l4} {A} {A'} {B} {B'} e f = ( ( right-unit-law-Σ-is-contr ( λ u → is-contr-map-is-equiv (is-equiv-map-equiv e) (pr1 u))) ∘e - ( equiv-compute-fiber-comp P (map-equiv e) true))) B) ∘e + ( compute-fiber-comp P (map-equiv e) true))) B) ∘e ( equiv-precomp-equiv f (fiber P true)))) equiv-binomial-type : diff --git a/src/univalent-combinatorics/cyclic-finite-types.lagda.md b/src/univalent-combinatorics/cyclic-finite-types.lagda.md index 649904a36d..da2741d64a 100644 --- a/src/univalent-combinatorics/cyclic-finite-types.lagda.md +++ b/src/univalent-combinatorics/cyclic-finite-types.lagda.md @@ -561,13 +561,13 @@ preserves-comp-Eq-equiv-Cyclic-Type k e f = ( zero-ℤ-Mod k))) preserves-concat-equiv-compute-Ω-Cyclic-Type : - (k : ℕ) (p q : type-Ω (Cyclic-Type-Pointed-Type k)) → + (k : ℕ) {p q : type-Ω (Cyclic-Type-Pointed-Type k)} → Id ( map-equiv (equiv-compute-Ω-Cyclic-Type k) (p ∙ q)) ( add-ℤ-Mod k ( map-equiv (equiv-compute-Ω-Cyclic-Type k) p) ( map-equiv (equiv-compute-Ω-Cyclic-Type k) q)) -preserves-concat-equiv-compute-Ω-Cyclic-Type k p q = +preserves-concat-equiv-compute-Ω-Cyclic-Type k {p} {q} = ( ap ( Eq-equiv-Cyclic-Type k (ℤ-Mod-Cyclic-Type k)) ( preserves-concat-equiv-eq-Cyclic-Type k @@ -604,8 +604,8 @@ pr2 (concrete-group-Cyclic-Type k) = is-set-type-Ω-Cyclic-Type k equiv-Ω-Cyclic-Type-Group : (k : ℕ) → equiv-Group (Ω-Cyclic-Type-Group k) (ℤ-Mod-Group k) pr1 (equiv-Ω-Cyclic-Type-Group k) = equiv-compute-Ω-Cyclic-Type k -pr2 (equiv-Ω-Cyclic-Type-Group k) = - preserves-concat-equiv-compute-Ω-Cyclic-Type k +pr2 (equiv-Ω-Cyclic-Type-Group k) {x} {y} = + preserves-concat-equiv-compute-Ω-Cyclic-Type k {x} {y} iso-Ω-Cyclic-Type-Group : (k : ℕ) → iso-Group (Ω-Cyclic-Type-Group k) (ℤ-Mod-Group k) diff --git a/src/univalent-combinatorics/decidable-equivalence-relations.lagda.md b/src/univalent-combinatorics/decidable-equivalence-relations.lagda.md index 0f3dc73a32..16859778e6 100644 --- a/src/univalent-combinatorics/decidable-equivalence-relations.lagda.md +++ b/src/univalent-combinatorics/decidable-equivalence-relations.lagda.md @@ -50,63 +50,63 @@ each `R x y` is a ## Definition ```agda -Decidable-Equivalence-Relation-𝔽 : +Decidable-equivalence-relation-𝔽 : {l1 : Level} (l2 : Level) (X : 𝔽 l1) → UU (l1 ⊔ lsuc l2) -Decidable-Equivalence-Relation-𝔽 l2 X = - Decidable-Equivalence-Relation l2 (type-𝔽 X) +Decidable-equivalence-relation-𝔽 l2 X = + Decidable-equivalence-relation l2 (type-𝔽 X) module _ - {l1 l2 : Level} (X : 𝔽 l1) (R : Decidable-Equivalence-Relation-𝔽 l2 X) + {l1 l2 : Level} (X : 𝔽 l1) (R : Decidable-equivalence-relation-𝔽 l2 X) where - decidable-relation-Decidable-Equivalence-Relation-𝔽 : + decidable-relation-Decidable-equivalence-relation-𝔽 : Decidable-Relation l2 (type-𝔽 X) - decidable-relation-Decidable-Equivalence-Relation-𝔽 = - decidable-relation-Decidable-Equivalence-Relation R + decidable-relation-Decidable-equivalence-relation-𝔽 = + decidable-relation-Decidable-equivalence-relation R - relation-Decidable-Equivalence-Relation-𝔽 : + relation-Decidable-equivalence-relation-𝔽 : type-𝔽 X → type-𝔽 X → Prop l2 - relation-Decidable-Equivalence-Relation-𝔽 = - relation-Decidable-Equivalence-Relation R - - sim-Decidable-Equivalence-Relation-𝔽 : type-𝔽 X → type-𝔽 X → UU l2 - sim-Decidable-Equivalence-Relation-𝔽 = - sim-Decidable-Equivalence-Relation R - - is-prop-sim-Decidable-Equivalence-Relation-𝔽 : - (x y : type-𝔽 X) → is-prop (sim-Decidable-Equivalence-Relation-𝔽 x y) - is-prop-sim-Decidable-Equivalence-Relation-𝔽 = - is-prop-sim-Decidable-Equivalence-Relation R - - is-decidable-sim-Decidable-Equivalence-Relation-𝔽 : - (x y : type-𝔽 X) → is-decidable (sim-Decidable-Equivalence-Relation-𝔽 x y) - is-decidable-sim-Decidable-Equivalence-Relation-𝔽 = - is-decidable-sim-Decidable-Equivalence-Relation R - - is-equivalence-relation-Decidable-Equivalence-Relation-𝔽 : - is-equivalence-relation relation-Decidable-Equivalence-Relation-𝔽 - is-equivalence-relation-Decidable-Equivalence-Relation-𝔽 = - is-equivalence-relation-Decidable-Equivalence-Relation R - - equivalence-relation-Decidable-Equivalence-Relation-𝔽 : - Equivalence-Relation l2 (type-𝔽 X) - equivalence-relation-Decidable-Equivalence-Relation-𝔽 = - equivalence-relation-Decidable-Equivalence-Relation R - - refl-Decidable-Equivalence-Relation-𝔽 : - is-reflexive sim-Decidable-Equivalence-Relation-𝔽 - refl-Decidable-Equivalence-Relation-𝔽 = - refl-Decidable-Equivalence-Relation R - - symmetric-Decidable-Equivalence-Relation-𝔽 : - is-symmetric sim-Decidable-Equivalence-Relation-𝔽 - symmetric-Decidable-Equivalence-Relation-𝔽 = - symmetric-Decidable-Equivalence-Relation R - - transitive-Decidable-Equivalence-Relation-𝔽 : - is-transitive sim-Decidable-Equivalence-Relation-𝔽 - transitive-Decidable-Equivalence-Relation-𝔽 = - transitive-Decidable-Equivalence-Relation R + relation-Decidable-equivalence-relation-𝔽 = + relation-Decidable-equivalence-relation R + + sim-Decidable-equivalence-relation-𝔽 : type-𝔽 X → type-𝔽 X → UU l2 + sim-Decidable-equivalence-relation-𝔽 = + sim-Decidable-equivalence-relation R + + is-prop-sim-Decidable-equivalence-relation-𝔽 : + (x y : type-𝔽 X) → is-prop (sim-Decidable-equivalence-relation-𝔽 x y) + is-prop-sim-Decidable-equivalence-relation-𝔽 = + is-prop-sim-Decidable-equivalence-relation R + + is-decidable-sim-Decidable-equivalence-relation-𝔽 : + (x y : type-𝔽 X) → is-decidable (sim-Decidable-equivalence-relation-𝔽 x y) + is-decidable-sim-Decidable-equivalence-relation-𝔽 = + is-decidable-sim-Decidable-equivalence-relation R + + is-equivalence-relation-Decidable-equivalence-relation-𝔽 : + is-equivalence-relation relation-Decidable-equivalence-relation-𝔽 + is-equivalence-relation-Decidable-equivalence-relation-𝔽 = + is-equivalence-relation-Decidable-equivalence-relation R + + equivalence-relation-Decidable-equivalence-relation-𝔽 : + equivalence-relation l2 (type-𝔽 X) + equivalence-relation-Decidable-equivalence-relation-𝔽 = + equivalence-relation-Decidable-equivalence-relation R + + refl-Decidable-equivalence-relation-𝔽 : + is-reflexive sim-Decidable-equivalence-relation-𝔽 + refl-Decidable-equivalence-relation-𝔽 = + refl-Decidable-equivalence-relation R + + symmetric-Decidable-equivalence-relation-𝔽 : + is-symmetric sim-Decidable-equivalence-relation-𝔽 + symmetric-Decidable-equivalence-relation-𝔽 = + symmetric-Decidable-equivalence-relation R + + transitive-Decidable-equivalence-relation-𝔽 : + is-transitive sim-Decidable-equivalence-relation-𝔽 + transitive-Decidable-equivalence-relation-𝔽 = + transitive-Decidable-equivalence-relation R module _ {l1 l2 : Level} (A : 𝔽 l1) (R : Decidable-Relation l2 (type-𝔽 A)) @@ -173,11 +173,11 @@ module _ #### The type of decidable equivalence relations on `A` is equivalent to the type of surjections from `A` into a finite type ```agda -equiv-Surjection-𝔽-Decidable-Equivalence-Relation-𝔽 : +equiv-Surjection-𝔽-Decidable-equivalence-relation-𝔽 : {l1 : Level} (A : 𝔽 l1) → - Decidable-Equivalence-Relation-𝔽 l1 A ≃ + Decidable-equivalence-relation-𝔽 l1 A ≃ Surjection-𝔽 l1 A -equiv-Surjection-𝔽-Decidable-Equivalence-Relation-𝔽 {l1} A = +equiv-Surjection-𝔽-Decidable-equivalence-relation-𝔽 {l1} A = ( equiv-Σ-equiv-base ( λ X → (type-𝔽 A) ↠ (type-𝔽 X)) ( equiv-Σ @@ -223,7 +223,7 @@ equiv-Surjection-𝔽-Decidable-Equivalence-Relation-𝔽 {l1} A = is-surjective-precomp-equiv ( is-surjective-map-surjection (pr1 x)) ( equiv-count count-A)))))))))))) ∘e - ( equiv-Surjection-Into-Set-Decidable-Equivalence-Relation + ( equiv-Surjection-Into-Set-Decidable-equivalence-relation ( type-𝔽 A)))))) ``` @@ -241,10 +241,10 @@ is-finite-Decidable-Relation-𝔽 A = ( is-finite-type-𝔽 A) ( λ b → is-finite-Decidable-Prop)) -is-finite-Decidable-Equivalence-Relation-𝔽 : +is-finite-Decidable-equivalence-relation-𝔽 : {l1 : Level} (A : 𝔽 l1) → - is-finite (Decidable-Equivalence-Relation-𝔽 l1 A) -is-finite-Decidable-Equivalence-Relation-𝔽 A = + is-finite (Decidable-equivalence-relation-𝔽 l1 A) +is-finite-Decidable-equivalence-relation-𝔽 A = is-finite-Σ ( is-finite-Decidable-Relation-𝔽 A) ( is-finite-is-equivalence-Dec-Relation-Prop-𝔽 A) diff --git a/src/univalent-combinatorics/orientations-complete-undirected-graph.lagda.md b/src/univalent-combinatorics/orientations-complete-undirected-graph.lagda.md index 85751ee1f0..c4c8b668f2 100644 --- a/src/univalent-combinatorics/orientations-complete-undirected-graph.lagda.md +++ b/src/univalent-combinatorics/orientations-complete-undirected-graph.lagda.md @@ -411,7 +411,7 @@ module _ ( 2-Element-Decidable-Subtype-subtype-pointwise-difference d2 d3)) ( is-finite-2-Element-Decidable-Subtype n X)) even-difference-orientation-Complete-Undirected-Graph : - Equivalence-Relation lzero orientation-Complete-Undirected-Graph + equivalence-relation lzero orientation-Complete-Undirected-Graph pr1 even-difference-orientation-Complete-Undirected-Graph d d' = Id-Prop ( Fin-Set 2) @@ -439,7 +439,7 @@ module _ is-decidable-even-difference-orientation-Complete-Undirected-Graph : (Y Y' : orientation-Complete-Undirected-Graph) → is-decidable - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph) ( Y) ( Y')) @@ -557,11 +557,11 @@ module _ preserves-even-difference-orientation-complete-undirected-graph-equiv : (X X' : UU-Fin l n) ( e : type-UU-Fin n X ≃ type-UU-Fin n X') → ( d d' : orientation-Complete-Undirected-Graph n X) → - ( sim-Equivalence-Relation + ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph n X) ( d) ( d') ↔ - sim-Equivalence-Relation + sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph n X') ( map-orientation-complete-undirected-graph-equiv X X' e d) ( map-orientation-complete-undirected-graph-equiv X X' e d')) @@ -667,7 +667,7 @@ module _ P = tr ( λ g → - sim-Equivalence-Relation + sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph n X) ( map-equiv g d) ( map-equiv g d')) @@ -3110,7 +3110,7 @@ module _ ( has-decidable-equality-count eX) ( np)))) ( orientation-two-elements-count j i (np ∘ inv))) → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX)))) @@ -3135,7 +3135,7 @@ module _ i j np (inl pl) = tr ( λ d → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX)))) @@ -3151,7 +3151,7 @@ module _ ( inv pl) ( tr ( λ d → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX)))) @@ -3171,7 +3171,7 @@ module _ i j np (inr pr) = tr ( λ d → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX)))) @@ -3187,7 +3187,7 @@ module _ ( inv pr) ( tr ( λ d → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX)))) @@ -3218,7 +3218,7 @@ module _ not-even-difference-orientation-aut-transposition-count : ( Y : 2-Element-Decidable-Subtype l X) → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX)))) @@ -3232,7 +3232,7 @@ module _ not-even-difference-orientation-aut-transposition-count Y = tr ( λ Y' → - ¬ ( sim-Equivalence-Relation + ¬ ( sim-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( number-of-elements-count eX) ( pair X (unit-trunc-Prop (equiv-count eX)))) @@ -3508,7 +3508,7 @@ module _ section-orientation (inl (inr star)) (inr NQ) = ex-falso ( NQ - ( refl-Equivalence-Relation + ( refl-equivalence-relation ( even-difference-orientation-Complete-Undirected-Graph ( number-of-elements-count eX) ( X , (unit-trunc-Prop (equiv-count eX)))) diff --git a/src/univalent-combinatorics/partitions.lagda.md b/src/univalent-combinatorics/partitions.lagda.md index c54ee9927a..25e5efb15c 100644 --- a/src/univalent-combinatorics/partitions.lagda.md +++ b/src/univalent-combinatorics/partitions.lagda.md @@ -133,11 +133,11 @@ module _ transitive-rel-partition-𝔽 : is-transitive rel-partition-𝔽 transitive-rel-partition-𝔽 x y z r s = s ∙ r - eq-rel-partition-𝔽 : Equivalence-Relation l2 (type-𝔽 X) - pr1 eq-rel-partition-𝔽 = rel-partition-𝔽-Prop - pr1 (pr2 eq-rel-partition-𝔽) = refl-rel-partition-𝔽 - pr1 (pr2 (pr2 eq-rel-partition-𝔽)) = symmetric-rel-partition-𝔽 - pr2 (pr2 (pr2 eq-rel-partition-𝔽)) = transitive-rel-partition-𝔽 + equivalence-relation-partition-𝔽 : equivalence-relation l2 (type-𝔽 X) + pr1 equivalence-relation-partition-𝔽 = rel-partition-𝔽-Prop + pr1 (pr2 equivalence-relation-partition-𝔽) = refl-rel-partition-𝔽 + pr1 (pr2 (pr2 equivalence-relation-partition-𝔽)) = symmetric-rel-partition-𝔽 + pr2 (pr2 (pr2 equivalence-relation-partition-𝔽)) = transitive-rel-partition-𝔽 ``` ### Equivalences of partitions diff --git a/src/univalent-combinatorics/pi-finite-types.lagda.md b/src/univalent-combinatorics/pi-finite-types.lagda.md index 04c104e005..9792646aaa 100644 --- a/src/univalent-combinatorics/pi-finite-types.lagda.md +++ b/src/univalent-combinatorics/pi-finite-types.lagda.md @@ -629,7 +629,7 @@ has-finite-connected-components-Σ-is-0-connected {A = A} {B} C H K = ( λ ω → is-finite-is-decidable-Prop (P ω) (d ω)))) where ℙ : is-contr - ( Σ ( type-hom-Set (trunc-Set (Id a a)) (Prop-Set _)) + ( Σ ( hom-Set (trunc-Set (Id a a)) (Prop-Set _)) ( λ h → ( λ a₁ → h (unit-trunc-Set a₁)) ~ ( λ ω₁ → trunc-Prop (Id (tr B ω₁ y) y')))) @@ -664,7 +664,7 @@ has-finite-connected-components-Σ-is-0-connected {A = A} {B} C H K = λ (u , v) → apply-dependent-universal-property-trunc-Set' ( λ u' → - hom-Set + hom-set-Set ( set-Prop (P u')) ( set-Prop ( mere-eq-Prop (a , y) (a , y')))) diff --git a/src/univalent-combinatorics/quotients-finite-types.lagda.md b/src/univalent-combinatorics/quotients-finite-types.lagda.md index beb62c2522..e552d9ce7a 100644 --- a/src/univalent-combinatorics/quotients-finite-types.lagda.md +++ b/src/univalent-combinatorics/quotients-finite-types.lagda.md @@ -27,21 +27,21 @@ finite type. In this file we set up some infrastructure for such quotients. ```agda module _ - {l1 l2 : Level} (X : 𝔽 l1) (R : Decidable-Equivalence-Relation-𝔽 l2 X) + {l1 l2 : Level} (X : 𝔽 l1) (R : Decidable-equivalence-relation-𝔽 l2 X) where - equivalence-class-Decidable-Equivalence-Relation-𝔽 : UU (l1 ⊔ lsuc l2) - equivalence-class-Decidable-Equivalence-Relation-𝔽 = - im (decidable-relation-Decidable-Equivalence-Relation-𝔽 X R) + equivalence-class-Decidable-equivalence-relation-𝔽 : UU (l1 ⊔ lsuc l2) + equivalence-class-Decidable-equivalence-relation-𝔽 = + im (decidable-relation-Decidable-equivalence-relation-𝔽 X R) - is-finite-equivalence-class-Decidable-Equivalence-Relation-𝔽' : - is-finite equivalence-class-Decidable-Equivalence-Relation-𝔽 - is-finite-equivalence-class-Decidable-Equivalence-Relation-𝔽' = + is-finite-equivalence-class-Decidable-equivalence-relation-𝔽' : + is-finite equivalence-class-Decidable-equivalence-relation-𝔽 + is-finite-equivalence-class-Decidable-equivalence-relation-𝔽' = is-finite-im ( is-finite-type-𝔽 X) ( has-decidable-equality-Subset-𝔽 X) quotient-𝔽 : 𝔽 (l1 ⊔ lsuc l2) - pr1 quotient-𝔽 = equivalence-class-Decidable-Equivalence-Relation-𝔽 - pr2 quotient-𝔽 = is-finite-equivalence-class-Decidable-Equivalence-Relation-𝔽' + pr1 quotient-𝔽 = equivalence-class-Decidable-equivalence-relation-𝔽 + pr2 quotient-𝔽 = is-finite-equivalence-class-Decidable-equivalence-relation-𝔽' ``` diff --git a/src/univalent-combinatorics/set-quotients-of-index-two.lagda.md b/src/univalent-combinatorics/set-quotients-of-index-two.lagda.md index bb91dbc220..e90a165f22 100644 --- a/src/univalent-combinatorics/set-quotients-of-index-two.lagda.md +++ b/src/univalent-combinatorics/set-quotients-of-index-two.lagda.md @@ -36,39 +36,39 @@ open import univalent-combinatorics.standard-finite-types ```agda module _ {l1 l2 l3 : Level} - {A : UU l1} (R : Equivalence-Relation l2 A) - (QR : Set l3) (f : reflecting-map-Equivalence-Relation R (type-Set QR)) + {A : UU l1} (R : equivalence-relation l2 A) + (QR : Set l3) (f : reflecting-map-equivalence-relation R (type-Set QR)) (Uf : {l : Level} → is-set-quotient l R QR f) (eA : type-Set QR ≃ Fin 2) (h : A → A) (H : {x y : A} → - sim-Equivalence-Relation R x y ↔ sim-Equivalence-Relation R (h x) (h y)) + sim-equivalence-relation R x y ↔ sim-equivalence-relation R (h x) (h y)) (h' : type-Set QR → type-Set QR) (x : A) (P : - h' (map-reflecting-map-Equivalence-Relation R f x) = - map-reflecting-map-Equivalence-Relation R f (h x)) + h' (map-reflecting-map-equivalence-relation R f x) = + map-reflecting-map-equivalence-relation R f (h x)) where cases-coherence-square-maps-eq-one-value-emb-is-set-quotient : is-emb h' → (y : A) (k k' k'' : Fin 2) → - map-equiv eA (h' (map-reflecting-map-Equivalence-Relation R f x)) = k → - map-equiv eA (h' (map-reflecting-map-Equivalence-Relation R f y)) = k' → - map-equiv eA (map-reflecting-map-Equivalence-Relation R f (h y)) = k'' → - h' (map-reflecting-map-Equivalence-Relation R f y) = - map-reflecting-map-Equivalence-Relation R f (h y) + map-equiv eA (h' (map-reflecting-map-equivalence-relation R f x)) = k → + map-equiv eA (h' (map-reflecting-map-equivalence-relation R f y)) = k' → + map-equiv eA (map-reflecting-map-equivalence-relation R f (h y)) = k'' → + h' (map-reflecting-map-equivalence-relation R f y) = + map-reflecting-map-equivalence-relation R f (h y) cases-coherence-square-maps-eq-one-value-emb-is-set-quotient H' y ( inl (inr _)) (inl (inr _)) k'' p q r = ( is-injective-map-equiv eA (q ∙ inv p)) ∙ ( P ∙ - reflects-map-reflecting-map-Equivalence-Relation R f + reflects-map-reflecting-map-equivalence-relation R f ( pr1 H ( map-equiv ( is-effective-is-set-quotient R QR f Uf x y) ( map-inv-is-equiv ( H' - ( map-reflecting-map-Equivalence-Relation R f x) - ( map-reflecting-map-Equivalence-Relation R f y)) + ( map-reflecting-map-equivalence-relation R f x) + ( map-reflecting-map-equivalence-relation R f y)) ( is-injective-map-equiv eA (p ∙ inv q)))))) cases-coherence-square-maps-eq-one-value-emb-is-set-quotient H' y ( inl (inr _)) (inr _) (inl (inr _)) p q r = @@ -77,7 +77,7 @@ module _ ( inv p ∙ ( ( ap ( map-equiv eA ∘ h') - ( reflects-map-reflecting-map-Equivalence-Relation R f + ( reflects-map-reflecting-map-equivalence-relation R f ( pr2 H (map-equiv ( is-effective-is-set-quotient R QR f Uf (h x) (h y)) @@ -96,7 +96,7 @@ module _ ( inv p ∙ ( ( ap ( map-equiv eA ∘ h') - ( reflects-map-reflecting-map-Equivalence-Relation R f + ( reflects-map-reflecting-map-equivalence-relation R f ( pr2 H (map-equiv ( is-effective-is-set-quotient R QR f Uf (h x) (h y)) @@ -106,28 +106,28 @@ module _ ( inr _) (inr _) k'' p q r = ( is-injective-map-equiv eA (q ∙ inv p)) ∙ ( P ∙ - reflects-map-reflecting-map-Equivalence-Relation R f + reflects-map-reflecting-map-equivalence-relation R f ( pr1 H ( map-equiv ( is-effective-is-set-quotient R QR f Uf x y) ( map-inv-is-equiv ( H' - ( map-reflecting-map-Equivalence-Relation R f x) - ( map-reflecting-map-Equivalence-Relation R f y)) + ( map-reflecting-map-equivalence-relation R f x) + ( map-reflecting-map-equivalence-relation R f y)) ( is-injective-map-equiv eA (p ∙ inv q)))))) coherence-square-maps-eq-one-value-emb-is-set-quotient : is-emb h' → coherence-square-maps ( h) - ( map-reflecting-map-Equivalence-Relation R f) - ( map-reflecting-map-Equivalence-Relation R f) + ( map-reflecting-map-equivalence-relation R f) + ( map-reflecting-map-equivalence-relation R f) ( h') coherence-square-maps-eq-one-value-emb-is-set-quotient H' y = cases-coherence-square-maps-eq-one-value-emb-is-set-quotient H' y - ( map-equiv eA (h' (map-reflecting-map-Equivalence-Relation R f x))) - ( map-equiv eA (h' (map-reflecting-map-Equivalence-Relation R f y))) - ( map-equiv eA (map-reflecting-map-Equivalence-Relation R f (h y))) + ( map-equiv eA (h' (map-reflecting-map-equivalence-relation R f x))) + ( map-equiv eA (h' (map-reflecting-map-equivalence-relation R f y))) + ( map-equiv eA (map-reflecting-map-equivalence-relation R f (h y))) ( refl) ( refl) ( refl) diff --git a/src/univalent-combinatorics/sigma-decompositions.lagda.md b/src/univalent-combinatorics/sigma-decompositions.lagda.md index 6d573588ca..e0d860e70d 100644 --- a/src/univalent-combinatorics/sigma-decompositions.lagda.md +++ b/src/univalent-combinatorics/sigma-decompositions.lagda.md @@ -191,11 +191,11 @@ module _ ### Equivalence between finite decidable equivalence relations and finite Σ-decompositions ```agda - equiv-Decidable-Equivalence-Relation-𝔽-Σ-Decomposition-𝔽 : + equiv-Decidable-equivalence-relation-𝔽-Σ-Decomposition-𝔽 : Σ-Decomposition-𝔽 l l A ≃ - Decidable-Equivalence-Relation-𝔽 l A - equiv-Decidable-Equivalence-Relation-𝔽-Σ-Decomposition-𝔽 = - inv-equiv (equiv-Surjection-𝔽-Decidable-Equivalence-Relation-𝔽 A) ∘e + Decidable-equivalence-relation-𝔽 l A + equiv-Decidable-equivalence-relation-𝔽-Σ-Decomposition-𝔽 = + inv-equiv (equiv-Surjection-𝔽-Decidable-equivalence-relation-𝔽 A) ∘e equiv-finite-surjection-Σ-Decomposition-𝔽 ``` @@ -206,8 +206,8 @@ module _ is-finite (Σ-Decomposition-𝔽 l l A) is-finite-Σ-Decomposition-𝔽 = is-finite-equiv - ( inv-equiv equiv-Decidable-Equivalence-Relation-𝔽-Σ-Decomposition-𝔽) - ( is-finite-Decidable-Equivalence-Relation-𝔽 A) + ( inv-equiv equiv-Decidable-equivalence-relation-𝔽-Σ-Decomposition-𝔽) + ( is-finite-Decidable-equivalence-relation-𝔽 A) ``` ### Characterization of the equality of finite Σ-decompositions diff --git a/src/universal-algebra/congruences.lagda.md b/src/universal-algebra/congruences.lagda.md index 8dd8273bcd..811e9e865c 100644 --- a/src/universal-algebra/congruences.lagda.md +++ b/src/universal-algebra/congruences.lagda.md @@ -41,19 +41,19 @@ module _ relation-holds-all-vec : { l4 : Level} → - ( R : Equivalence-Relation l4 (type-Algebra Sg Th Alg)) → + ( R : equivalence-relation l4 (type-Algebra Sg Th Alg)) → { n : ℕ} → ( v : vec (type-Algebra Sg Th Alg) n) → ( v' : vec (type-Algebra Sg Th Alg) n) → UU l4 relation-holds-all-vec {l4} R {.zero-ℕ} empty-vec empty-vec = raise-unit l4 relation-holds-all-vec {l4} R {.(succ-ℕ _)} (x ∷ v) (x' ∷ v') = - ( type-Prop (prop-Equivalence-Relation R x x')) × + ( type-Prop (prop-equivalence-relation R x x')) × ( relation-holds-all-vec R v v') preserves-operations : { l4 : Level} → - ( R : Equivalence-Relation l4 (type-Algebra Sg Th Alg)) → + ( R : equivalence-relation l4 (type-Algebra Sg Th Alg)) → UU (l1 ⊔ l3 ⊔ l4) preserves-operations R = ( op : operation-signature Sg) → @@ -63,7 +63,7 @@ module _ ( arity-operation-signature Sg op)) → ( relation-holds-all-vec R v v' → ( type-Prop - ( prop-Equivalence-Relation R + ( prop-equivalence-relation R ( is-model-set-Algebra Sg Th Alg op v) ( is-model-set-Algebra Sg Th Alg op v')))) @@ -71,17 +71,17 @@ module _ ( l4 : Level) → UU (l1 ⊔ l3 ⊔ lsuc l4) congruence-Algebra l4 = - Σ ( Equivalence-Relation l4 (type-Algebra Sg Th Alg)) + Σ ( equivalence-relation l4 (type-Algebra Sg Th Alg)) ( preserves-operations) - eq-rel-congruence-Algebra : + equivalence-relation-congruence-Algebra : { l4 : Level} → - congruence-Algebra l4 → ( Equivalence-Relation l4 (type-Algebra Sg Th Alg)) - eq-rel-congruence-Algebra = pr1 + congruence-Algebra l4 → ( equivalence-relation l4 (type-Algebra Sg Th Alg)) + equivalence-relation-congruence-Algebra = pr1 preserves-operations-congruence-Algebra : { l4 : Level} → ( R : congruence-Algebra l4) → - ( preserves-operations (eq-rel-congruence-Algebra R)) + ( preserves-operations (equivalence-relation-congruence-Algebra R)) preserves-operations-congruence-Algebra = pr2 ``` diff --git a/src/universal-algebra/kernels.lagda.md b/src/universal-algebra/kernels.lagda.md index d118361522..e8c0fe6128 100644 --- a/src/universal-algebra/kernels.lagda.md +++ b/src/universal-algebra/kernels.lagda.md @@ -54,17 +54,17 @@ module _ pr2 (rel-prop-kernel-hom-Algebra x y) = is-set-Algebra Sg Th Alg2 _ _ - eq-rel-kernel-hom-Algebra : - Equivalence-Relation l4 (type-Algebra Sg Th Alg1) - pr1 eq-rel-kernel-hom-Algebra = + equivalence-relation-kernel-hom-Algebra : + equivalence-relation l4 (type-Algebra Sg Th Alg1) + pr1 equivalence-relation-kernel-hom-Algebra = rel-prop-kernel-hom-Algebra - pr1 (pr2 eq-rel-kernel-hom-Algebra) _ = refl - pr1 (pr2 (pr2 eq-rel-kernel-hom-Algebra)) _ _ = inv - pr2 (pr2 (pr2 eq-rel-kernel-hom-Algebra)) _ _ _ f g = g ∙ f + pr1 (pr2 equivalence-relation-kernel-hom-Algebra) _ = refl + pr1 (pr2 (pr2 equivalence-relation-kernel-hom-Algebra)) _ _ = inv + pr2 (pr2 (pr2 equivalence-relation-kernel-hom-Algebra)) _ _ _ f g = g ∙ f kernel-hom-Algebra : congruence-Algebra Sg Th Alg1 l4 - pr1 kernel-hom-Algebra = eq-rel-kernel-hom-Algebra + pr1 kernel-hom-Algebra = equivalence-relation-kernel-hom-Algebra pr2 kernel-hom-Algebra op v v' p = equational-reasoning f (is-model-set-Algebra Sg Th Alg1 op v) @@ -82,7 +82,8 @@ module _ map-hom-Algebra-lemma : ( n : ℕ) → ( v v' : vec (type-Algebra Sg Th Alg1) n) → - ( relation-holds-all-vec Sg Th Alg1 eq-rel-kernel-hom-Algebra v v') → + ( relation-holds-all-vec Sg Th Alg1 + equivalence-relation-kernel-hom-Algebra v v') → (map-vec f v) = (map-vec f v') map-hom-Algebra-lemma zero-ℕ empty-vec empty-vec p = refl map-hom-Algebra-lemma (succ-ℕ n) (x ∷ v) (x' ∷ v') (p , p') = diff --git a/src/universal-algebra/quotient-algebras.lagda.md b/src/universal-algebra/quotient-algebras.lagda.md index 59657d55be..6a031ee6f2 100644 --- a/src/universal-algebra/quotient-algebras.lagda.md +++ b/src/universal-algebra/quotient-algebras.lagda.md @@ -53,7 +53,7 @@ module _ set-quotient-Algebra : Set (l3 ⊔ l4) set-quotient-Algebra = - quotient-Set ( eq-rel-congruence-Algebra Sg Th Alg R) + quotient-Set ( equivalence-relation-congruence-Algebra Sg Th Alg R) type-quotient-Algebra : UU (l3 ⊔ l4) type-quotient-Algebra = pr1 set-quotient-Algebra @@ -63,15 +63,15 @@ module _ compute-quotient-Algebra : equivalence-class - ( eq-rel-congruence-Algebra Sg Th Alg R) ≃ + ( equivalence-relation-congruence-Algebra Sg Th Alg R) ≃ ( type-quotient-Algebra) compute-quotient-Algebra = compute-set-quotient - ( eq-rel-congruence-Algebra Sg Th Alg R) + ( equivalence-relation-congruence-Algebra Sg Th Alg R) set-quotient-equivalence-class-Algebra : equivalence-class - ( eq-rel-congruence-Algebra Sg Th Alg R) → + ( equivalence-relation-congruence-Algebra Sg Th Alg R) → type-quotient-Algebra set-quotient-equivalence-class-Algebra = map-equiv compute-quotient-Algebra @@ -79,7 +79,7 @@ module _ equivalence-class-set-quotient-Algebra : type-quotient-Algebra → equivalence-class - ( eq-rel-congruence-Algebra Sg Th Alg R) + ( equivalence-relation-congruence-Algebra Sg Th Alg R) equivalence-class-set-quotient-Algebra = map-inv-equiv compute-quotient-Algebra @@ -97,23 +97,23 @@ module _ ( vec-type-quotient-vec-type-Algebra v)) ( pr2 (equivalence-class-set-quotient-Algebra x)) - relation-holds-all-vec-all-sim-Equivalence-Relation : + relation-holds-all-vec-all-sim-equivalence-relation : { n : ℕ} ( v v' : multivariable-input n ( λ _ → type-Algebra Sg Th Alg)) → ( type-Prop - ( prop-Equivalence-Relation - ( all-sim-Equivalence-Relation n + ( prop-equivalence-relation + ( all-sim-equivalence-relation n ( λ _ → type-Algebra Sg Th Alg) - ( λ _ → eq-rel-congruence-Algebra Sg Th Alg R)) v v')) → + ( λ _ → equivalence-relation-congruence-Algebra Sg Th Alg R)) v v')) → relation-holds-all-vec Sg Th Alg - ( eq-rel-congruence-Algebra Sg Th Alg R) + ( equivalence-relation-congruence-Algebra Sg Th Alg R) ( vector-multivariable-input n (type-Algebra Sg Th Alg) v) ( vector-multivariable-input n (type-Algebra Sg Th Alg) v') - relation-holds-all-vec-all-sim-Equivalence-Relation {zero-ℕ} v v' p = + relation-holds-all-vec-all-sim-equivalence-relation {zero-ℕ} v v' p = raise-star - relation-holds-all-vec-all-sim-Equivalence-Relation + relation-holds-all-vec-all-sim-equivalence-relation {succ-ℕ n} (x , v) (x' , v') (p , p') = - p , (relation-holds-all-vec-all-sim-Equivalence-Relation v v' p') + p , (relation-holds-all-vec-all-sim-equivalence-relation v v' p') is-model-set-quotient-Algebra : is-model-signature Sg set-quotient-Algebra @@ -121,8 +121,8 @@ module _ multivariable-map-set-quotient ( arity-operation-signature Sg op) ( λ _ → type-Algebra Sg Th Alg) - ( λ _ → eq-rel-congruence-Algebra Sg Th Alg R) - ( eq-rel-congruence-Algebra Sg Th Alg R) + ( λ _ → equivalence-relation-congruence-Algebra Sg Th Alg R) + ( equivalence-relation-congruence-Algebra Sg Th Alg R) ( pair ( λ v → is-model-set-Algebra Sg Th Alg op @@ -140,7 +140,7 @@ module _ ( arity-operation-signature Sg op) ( type-Algebra Sg Th Alg) ( v')) - (relation-holds-all-vec-all-sim-Equivalence-Relation v v' p))) + (relation-holds-all-vec-all-sim-equivalence-relation v v' p))) ( multivariable-input-vector ( arity-operation-signature Sg op) ( type-quotient-Algebra) diff --git a/tables/galois-connections.md b/tables/galois-connections.md index 8f0856ad65..36f715055b 100644 --- a/tables/galois-connections.md +++ b/tables/galois-connections.md @@ -1,9 +1,12 @@ -| Galois connection | File | -| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | -| Ideals generated by subsets of rings | [`ring-theory.ideals-generated-by-subsets-rings`](ring-theory.ideals-generated-by-subsets-rings.md) | -| Left ideals generated by subsets of rings | [`ring-theory.left-ideals-generated-by-subsets-rings`](ring-theory.left-ideals-generated-by-subsets-rings.md) | -| Normal closures of subgroups | [`group-theory.normal-closures-subgroups`](group-theory.normal-closures-subgroups.md) | -| Normal cores of subgroups | [`group-theory.normal-cores-subgroups`](group-theory.normal-cores-subgroups.md) | -| Radicals of ideals of commutative rings | [`commutative-algebra.radicals-of-ideals-commutative-rings`](commutative-algebra.radicals-of-ideals-commutative-rings.md) | -| Right ideals generated by subsets of rings | [`ring-theory.right-ideals-generated-by-subsets-rings`](ring-theory.right-ideals-generated-by-subsets-rings.md) | -| Subgroups generated by subsets of groups | [`group-theory.subgroups-generated-by-subsets-groups`](group-theory.subgroups-generated-by-subsets-groups.md) | +| Galois connection | File | +| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| Ideals generated by subsets of rings | [`ring-theory.ideals-generated-by-subsets-rings`](ring-theory.ideals-generated-by-subsets-rings.md) | +| Images of subgroups under group homomorphisms | [`group-theory.images-of-grouphomomorphisms`](group-theory.images-of-group-homomorphisms.md) | +| Images of subsemigroups under semigroup homomorphisms | [`group-theory.images-of-semigroup-homomorphisms`](group-theory.images-of-semigroup-homomorphisms.md) | +| Images of subtypes | [`foundation.images-subtypes`](foundation.images-subtypes.md) | +| Left ideals generated by subsets of rings | [`ring-theory.left-ideals-generated-by-subsets-rings`](ring-theory.left-ideals-generated-by-subsets-rings.md) | +| Normal closures of subgroups | [`group-theory.normal-closures-subgroups`](group-theory.normal-closures-subgroups.md) | +| Normal cores of subgroups | [`group-theory.normal-cores-subgroups`](group-theory.normal-cores-subgroups.md) | +| Radicals of ideals of commutative rings | [`commutative-algebra.radicals-of-ideals-commutative-rings`](commutative-algebra.radicals-of-ideals-commutative-rings.md) | +| Right ideals generated by subsets of rings | [`ring-theory.right-ideals-generated-by-subsets-rings`](ring-theory.right-ideals-generated-by-subsets-rings.md) | +| Subgroups generated by subsets of groups | [`group-theory.subgroups-generated-by-subsets-groups`](group-theory.subgroups-generated-by-subsets-groups.md) |