diff --git a/src/commutative-algebra.lagda.md b/src/commutative-algebra.lagda.md
index bfad391a1c..0f1fc660db 100644
--- a/src/commutative-algebra.lagda.md
+++ b/src/commutative-algebra.lagda.md
@@ -39,6 +39,7 @@ open import commutative-algebra.isomorphisms-commutative-rings public
open import commutative-algebra.joins-ideals-commutative-rings public
open import commutative-algebra.joins-radical-ideals-commutative-rings public
open import commutative-algebra.large-commutative-rings public
+open import commutative-algebra.large-function-commutative-rings public
open import commutative-algebra.local-commutative-rings public
open import commutative-algebra.maximal-ideals-commutative-rings public
open import commutative-algebra.multiples-of-elements-commutative-rings public
diff --git a/src/commutative-algebra/large-function-commutative-rings.lagda.md b/src/commutative-algebra/large-function-commutative-rings.lagda.md
new file mode 100644
index 0000000000..b536098e0e
--- /dev/null
+++ b/src/commutative-algebra/large-function-commutative-rings.lagda.md
@@ -0,0 +1,42 @@
+# Large function commutative rings
+
+```agda
+module commutative-algebra.large-function-commutative-rings where
+```
+
+Imports
+
+```agda
+open import commutative-algebra.large-commutative-rings
+
+open import foundation.function-extensionality
+open import foundation.universe-levels
+
+open import ring-theory.large-function-rings
+```
+
+
+
+## Idea
+
+Given a [large commutative ring](commutative-algebra.large-commutative-rings.md)
+`R` and an arbitrary type `A`, `A → R` forms a large commutative ring.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ {α : Level → Level}
+ {β : Level → Level → Level}
+ (A : UU l1)
+ (R : Large-Commutative-Ring α β)
+ where
+
+ function-Large-Commutative-Ring :
+ Large-Commutative-Ring (λ l → l1 ⊔ α l) (λ l2 l3 → l1 ⊔ β l2 l3)
+ large-ring-Large-Commutative-Ring function-Large-Commutative-Ring =
+ function-Large-Ring A (large-ring-Large-Commutative-Ring R)
+ commutative-mul-Large-Commutative-Ring function-Large-Commutative-Ring f g =
+ eq-htpy (λ a → commutative-mul-Large-Commutative-Ring R (f a) (g a))
+```
diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md
index f63911de8f..931de9244e 100644
--- a/src/foundation.lagda.md
+++ b/src/foundation.lagda.md
@@ -213,6 +213,8 @@ open import foundation.fixed-points-endofunctions public
open import foundation.freely-generated-equivalence-relations public
open import foundation.full-subtypes public
open import foundation.function-extensionality public
+open import foundation.function-large-equivalence-relations public
+open import foundation.function-large-similarity-relations public
open import foundation.function-types public
open import foundation.function-types-with-apartness-relations public
open import foundation.functional-correspondences public
diff --git a/src/foundation/function-large-equivalence-relations.lagda.md b/src/foundation/function-large-equivalence-relations.lagda.md
new file mode 100644
index 0000000000..d889d2fcf7
--- /dev/null
+++ b/src/foundation/function-large-equivalence-relations.lagda.md
@@ -0,0 +1,55 @@
+# Function large equivalence relations
+
+```agda
+module foundation.function-large-equivalence-relations where
+```
+
+Imports
+
+```agda
+open import foundation.large-equivalence-relations
+open import foundation.propositions
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+Given a [large equivalence relation](foundation.large-equivalence-relations.md)
+on `X` and a type `A`, there is an induced large equivalence relation on
+`A → X`.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ {α : Level → Level}
+ {β : Level → Level → Level}
+ {X : (l : Level) → UU (α l)}
+ (A : UU l1)
+ (R : Large-Equivalence-Relation β X)
+ where
+
+ function-Large-Equivalence-Relation :
+ Large-Equivalence-Relation
+ ( λ l2 l3 → l1 ⊔ β l2 l3)
+ ( λ l → A → X l)
+ sim-prop-Large-Equivalence-Relation function-Large-Equivalence-Relation f g =
+ Π-Prop A (λ a → sim-prop-Large-Equivalence-Relation R (f a) (g a))
+ refl-sim-Large-Equivalence-Relation function-Large-Equivalence-Relation f a =
+ refl-sim-Large-Equivalence-Relation R (f a)
+ symmetric-sim-Large-Equivalence-Relation function-Large-Equivalence-Relation
+ f g f~g a =
+ symmetric-sim-Large-Equivalence-Relation R (f a) (g a) (f~g a)
+ transitive-sim-Large-Equivalence-Relation function-Large-Equivalence-Relation
+ f g h g~h f~g a =
+ transitive-sim-Large-Equivalence-Relation
+ ( R)
+ ( f a)
+ ( g a)
+ ( h a)
+ ( g~h a)
+ ( f~g a)
+```
diff --git a/src/foundation/function-large-similarity-relations.lagda.md b/src/foundation/function-large-similarity-relations.lagda.md
new file mode 100644
index 0000000000..748f22e0e6
--- /dev/null
+++ b/src/foundation/function-large-similarity-relations.lagda.md
@@ -0,0 +1,46 @@
+# Function large similarity relations
+
+```agda
+module foundation.function-large-similarity-relations where
+```
+
+Imports
+
+```agda
+open import foundation.function-extensionality
+open import foundation.function-large-equivalence-relations
+open import foundation.large-similarity-relations
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+Given a [large similarity relation](foundation.large-similarity-relations.md) on
+`X` and any type `A`, there is an induced large similarity relation on `A → X`.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ {α : Level → Level}
+ {β : Level → Level → Level}
+ {X : (l : Level) → UU (α l)}
+ (A : UU l1)
+ (R : Large-Similarity-Relation β X)
+ where
+
+ function-Large-Similarity-Relation :
+ Large-Similarity-Relation
+ ( λ l2 l3 → l1 ⊔ β l2 l3)
+ ( λ l → A → X l)
+ large-equivalence-relation-Large-Similarity-Relation
+ function-Large-Similarity-Relation =
+ function-Large-Equivalence-Relation
+ ( A)
+ ( large-equivalence-relation-Large-Similarity-Relation R)
+ eq-sim-Large-Similarity-Relation function-Large-Similarity-Relation f g f~g =
+ eq-htpy (λ a → eq-sim-Large-Similarity-Relation R (f a) (g a) (f~g a))
+```
diff --git a/src/group-theory.lagda.md b/src/group-theory.lagda.md
index 9200822653..03ff85ef95 100644
--- a/src/group-theory.lagda.md
+++ b/src/group-theory.lagda.md
@@ -121,6 +121,11 @@ open import group-theory.kernels-homomorphisms-concrete-groups public
open import group-theory.kernels-homomorphisms-groups public
open import group-theory.large-abelian-groups public
open import group-theory.large-commutative-monoids public
+open import group-theory.large-function-abelian-groups public
+open import group-theory.large-function-commutative-monoids public
+open import group-theory.large-function-groups public
+open import group-theory.large-function-monoids public
+open import group-theory.large-function-semigroups public
open import group-theory.large-groups public
open import group-theory.large-monoids public
open import group-theory.large-semigroups public
diff --git a/src/group-theory/large-function-abelian-groups.lagda.md b/src/group-theory/large-function-abelian-groups.lagda.md
new file mode 100644
index 0000000000..6e5b712512
--- /dev/null
+++ b/src/group-theory/large-function-abelian-groups.lagda.md
@@ -0,0 +1,40 @@
+# Large function abelian groups
+
+```agda
+module group-theory.large-function-abelian-groups where
+```
+
+Imports
+
+```agda
+open import foundation.function-extensionality
+open import foundation.universe-levels
+
+open import group-theory.large-abelian-groups
+open import group-theory.large-function-groups
+```
+
+
+
+## Idea
+
+Given a [large abelian group](group-theory.large-abelian-groups.md) `G` and an
+arbitrary type `A`, `A → G` forms a large abelian group.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ {α : Level → Level}
+ {β : Level → Level → Level}
+ (A : UU l1)
+ (G : Large-Ab α β)
+ where
+
+ function-Large-Ab : Large-Ab (λ l → l1 ⊔ α l) (λ l2 l3 → l1 ⊔ β l2 l3)
+ large-group-Large-Ab function-Large-Ab =
+ function-Large-Group A (large-group-Large-Ab G)
+ commutative-add-Large-Ab function-Large-Ab f g =
+ eq-htpy (λ a → commutative-add-Large-Ab G (f a) (g a))
+```
diff --git a/src/group-theory/large-function-commutative-monoids.lagda.md b/src/group-theory/large-function-commutative-monoids.lagda.md
new file mode 100644
index 0000000000..0bdffb1644
--- /dev/null
+++ b/src/group-theory/large-function-commutative-monoids.lagda.md
@@ -0,0 +1,42 @@
+# Large function commutative monoids
+
+```agda
+module group-theory.large-function-commutative-monoids where
+```
+
+Imports
+
+```agda
+open import foundation.function-extensionality
+open import foundation.universe-levels
+
+open import group-theory.large-commutative-monoids
+open import group-theory.large-function-monoids
+```
+
+
+
+## Idea
+
+Given a [large commutative monoid](group-theory.large-commutative-monoids.md)
+`M` and an arbitrary type `A`, `A → M` forms a large commutative monoid.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ {α : Level → Level}
+ {β : Level → Level → Level}
+ (A : UU l1)
+ (M : Large-Commutative-Monoid α β)
+ where
+
+ function-Large-Commutative-Monoid :
+ Large-Commutative-Monoid (λ l → l1 ⊔ α l) (λ l2 l3 → l1 ⊔ β l2 l3)
+ large-monoid-Large-Commutative-Monoid function-Large-Commutative-Monoid =
+ function-Large-Monoid A (large-monoid-Large-Commutative-Monoid M)
+ commutative-mul-Large-Commutative-Monoid function-Large-Commutative-Monoid
+ f g =
+ eq-htpy ( λ a → commutative-mul-Large-Commutative-Monoid M (f a) (g a))
+```
diff --git a/src/group-theory/large-function-groups.lagda.md b/src/group-theory/large-function-groups.lagda.md
new file mode 100644
index 0000000000..b392b0619d
--- /dev/null
+++ b/src/group-theory/large-function-groups.lagda.md
@@ -0,0 +1,45 @@
+# Large function groups
+
+```agda
+module group-theory.large-function-groups where
+```
+
+Imports
+
+```agda
+open import foundation.function-extensionality
+open import foundation.universe-levels
+
+open import group-theory.large-function-monoids
+open import group-theory.large-groups
+```
+
+
+
+## Idea
+
+Given a [large group](group-theory.large-groups.md) `G` and an arbitrary type
+`A`, `A → G` forms a large group.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ {α : Level → Level}
+ {β : Level → Level → Level}
+ (A : UU l1)
+ (G : Large-Group α β)
+ where
+
+ function-Large-Group : Large-Group (λ l → l1 ⊔ α l) (λ l2 l3 → l1 ⊔ β l2 l3)
+ large-monoid-Large-Group function-Large-Group =
+ function-Large-Monoid A (large-monoid-Large-Group G)
+ inv-Large-Group function-Large-Group f a = inv-Large-Group G (f a)
+ preserves-sim-inv-Large-Group function-Large-Group f g f~g a =
+ preserves-sim-inv-Large-Group G (f a) (g a) (f~g a)
+ left-inverse-law-mul-Large-Group function-Large-Group f =
+ eq-htpy (λ a → left-inverse-law-mul-Large-Group G (f a))
+ right-inverse-law-mul-Large-Group function-Large-Group f =
+ eq-htpy (λ a → right-inverse-law-mul-Large-Group G (f a))
+```
diff --git a/src/group-theory/large-function-monoids.lagda.md b/src/group-theory/large-function-monoids.lagda.md
new file mode 100644
index 0000000000..73ea17caf6
--- /dev/null
+++ b/src/group-theory/large-function-monoids.lagda.md
@@ -0,0 +1,54 @@
+# Large function monoids
+
+```agda
+module group-theory.large-function-monoids where
+```
+
+Imports
+
+```agda
+open import foundation.function-extensionality
+open import foundation.function-large-similarity-relations
+open import foundation.universe-levels
+
+open import group-theory.large-function-semigroups
+open import group-theory.large-monoids
+```
+
+
+
+## Idea
+
+Given a [large monoid](group-theory.large-monoids.md) `M` and an arbitrary type
+`A`, `A → M` forms a large monoid.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ {α : Level → Level}
+ {β : Level → Level → Level}
+ (A : UU l1)
+ (M : Large-Monoid α β)
+ where
+
+ function-Large-Monoid :
+ Large-Monoid (λ l → l1 ⊔ α l) (λ l2 l3 → l1 ⊔ β l2 l3)
+ large-semigroup-Large-Monoid function-Large-Monoid =
+ function-Large-Semigroup A (large-semigroup-Large-Monoid M)
+ large-similarity-relation-Large-Monoid function-Large-Monoid =
+ function-Large-Similarity-Relation
+ ( A)
+ ( large-similarity-relation-Large-Monoid M)
+ raise-Large-Monoid function-Large-Monoid l f a = raise-Large-Monoid M l (f a)
+ sim-raise-Large-Monoid function-Large-Monoid l2 f a =
+ sim-raise-Large-Monoid M l2 (f a)
+ preserves-sim-mul-Large-Monoid function-Large-Monoid f f' f~f' g g' g~g' a =
+ preserves-sim-mul-Large-Monoid M (f a) (f' a) (f~f' a) (g a) (g' a) (g~g' a)
+ unit-Large-Monoid function-Large-Monoid a = unit-Large-Monoid M
+ left-unit-law-mul-Large-Monoid function-Large-Monoid f =
+ eq-htpy (λ a → left-unit-law-mul-Large-Monoid M (f a))
+ right-unit-law-mul-Large-Monoid function-Large-Monoid f =
+ eq-htpy (λ a → right-unit-law-mul-Large-Monoid M (f a))
+```
diff --git a/src/group-theory/large-function-semigroups.lagda.md b/src/group-theory/large-function-semigroups.lagda.md
new file mode 100644
index 0000000000..eccc5ffe24
--- /dev/null
+++ b/src/group-theory/large-function-semigroups.lagda.md
@@ -0,0 +1,36 @@
+# Large function semigroups
+
+```agda
+module group-theory.large-function-semigroups where
+```
+
+Imports
+
+```agda
+open import foundation.function-extensionality
+open import foundation.sets
+open import foundation.universe-levels
+
+open import group-theory.large-semigroups
+```
+
+
+
+## Idea
+
+Given a [large semigroup](group-theory.large-semigroups.md) `G` and an arbitrary
+type `A`, `A → G` forms a large semigroup.
+
+## Definition
+
+```agda
+function-Large-Semigroup :
+ {l : Level} {α : Level → Level} → UU l → Large-Semigroup α →
+ Large-Semigroup (λ l' → l ⊔ α l')
+function-Large-Semigroup A G =
+ make-Large-Semigroup
+ ( λ l → function-Set A (set-Large-Semigroup G l))
+ ( λ f g a → mul-Large-Semigroup G (f a) (g a))
+ ( λ f g h →
+ eq-htpy (λ a → associative-mul-Large-Semigroup G (f a) (g a) (h a)))
+```
diff --git a/src/ring-theory.lagda.md b/src/ring-theory.lagda.md
index 86b8179244..896f12a557 100644
--- a/src/ring-theory.lagda.md
+++ b/src/ring-theory.lagda.md
@@ -54,6 +54,7 @@ open import ring-theory.joins-ideals-rings public
open import ring-theory.joins-left-ideals-rings public
open import ring-theory.joins-right-ideals-rings public
open import ring-theory.kernels-of-ring-homomorphisms public
+open import ring-theory.large-function-rings public
open import ring-theory.large-rings public
open import ring-theory.left-ideals-generated-by-subsets-rings public
open import ring-theory.left-ideals-rings public
diff --git a/src/ring-theory/large-function-rings.lagda.md b/src/ring-theory/large-function-rings.lagda.md
new file mode 100644
index 0000000000..b5b54bff30
--- /dev/null
+++ b/src/ring-theory/large-function-rings.lagda.md
@@ -0,0 +1,53 @@
+# Large function rings
+
+```agda
+module ring-theory.large-function-rings where
+```
+
+Imports
+
+```agda
+open import foundation.function-extensionality
+open import foundation.universe-levels
+
+open import group-theory.large-function-abelian-groups
+
+open import ring-theory.large-rings
+```
+
+
+
+## Idea
+
+Given a [large ring](ring-theory.large-rings.md) `R` and an arbitrary type `A`,
+`A → R` forms a large ring.
+
+## Definition
+
+```agda
+module _
+ {l1 : Level}
+ {α : Level → Level}
+ {β : Level → Level → Level}
+ (A : UU l1)
+ (R : Large-Ring α β)
+ where
+
+ function-Large-Ring : Large-Ring (λ l → l1 ⊔ α l) (λ l2 l3 → l1 ⊔ β l2 l3)
+ large-ab-Large-Ring function-Large-Ring =
+ function-Large-Ab A (large-ab-Large-Ring R)
+ mul-Large-Ring function-Large-Ring f g a = mul-Large-Ring R (f a) (g a)
+ preserves-sim-mul-Large-Ring function-Large-Ring f f' f~f' g g' g~g' a =
+ preserves-sim-mul-Large-Ring R (f a) (f' a) (f~f' a) (g a) (g' a) (g~g' a)
+ one-Large-Ring function-Large-Ring a = one-Large-Ring R
+ associative-mul-Large-Ring function-Large-Ring f g h =
+ eq-htpy (λ a → associative-mul-Large-Ring R (f a) (g a) (h a))
+ left-unit-law-mul-Large-Ring function-Large-Ring f =
+ eq-htpy (λ a → left-unit-law-mul-Large-Ring R (f a))
+ right-unit-law-mul-Large-Ring function-Large-Ring f =
+ eq-htpy (λ a → right-unit-law-mul-Large-Ring R (f a))
+ left-distributive-mul-add-Large-Ring function-Large-Ring f g h =
+ eq-htpy (λ a → left-distributive-mul-add-Large-Ring R (f a) (g a) (h a))
+ right-distributive-mul-add-Large-Ring function-Large-Ring f g h =
+ eq-htpy (λ a → right-distributive-mul-add-Large-Ring R (f a) (g a) (h a))
+```