diff --git a/references.bib b/references.bib
index c2241820e2..9a25a11681 100644
--- a/references.bib
+++ b/references.bib
@@ -44,6 +44,17 @@ @article{AL19
langid = {english}
}
+@misc{Awodey22,
+ author = {{Awodey}, Steve},
+ title = "{On Hofmann-Streicher universes}",
+ keywords = {Mathematics - Category Theory, Mathematics - Logic},
+ year = 2022,
+ month = may,
+archivePrefix = {arXiv},
+ eprint = {2205.10917},
+ primaryClass = {math.CT}
+}
+
@online{BCDE21,
title = {Free groups in HoTT/UF in Agda},
author = {Bezem, Marc and Coquand, Thierry and Dybjer, Peter and Escardó, Martín},
diff --git a/src/foundation-core/equality-dependent-pair-types.lagda.md b/src/foundation-core/equality-dependent-pair-types.lagda.md
index ffa4c8674f..6b6374433d 100644
--- a/src/foundation-core/equality-dependent-pair-types.lagda.md
+++ b/src/foundation-core/equality-dependent-pair-types.lagda.md
@@ -155,6 +155,20 @@ tr-eq-pair-Σ :
tr-eq-pair-Σ C refl refl u = refl
```
+### The action of `pr1` on identifcations of the form `eq-pair-Σ`
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} {B : A → UU l2}
+ where
+
+ ap-pr1-eq-pair-Σ :
+ {x x' : A} {y : B x} {y' : B x'}
+ (p : x = x') (q : dependent-identification B p y y') →
+ ap pr1 (eq-pair-Σ p q) = p
+ ap-pr1-eq-pair-Σ refl refl = refl
+```
+
## See also
- Equality proofs in cartesian product types are characterized in
diff --git a/src/foundation-core/torsorial-type-families.lagda.md b/src/foundation-core/torsorial-type-families.lagda.md
index 35882429c6..e2dfd083f2 100644
--- a/src/foundation-core/torsorial-type-families.lagda.md
+++ b/src/foundation-core/torsorial-type-families.lagda.md
@@ -99,5 +99,5 @@ module _
### See also
-- [Discrete relations](foundation.discrete-relations.md) are binary torsorial
- type families.
+- [Discrete reflexive relations](foundation.discrete-reflexive-relations.md) are
+ binary torsorial type families.
diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md
index 17148ba8de..f8cd8ac55b 100644
--- a/src/foundation.lagda.md
+++ b/src/foundation.lagda.md
@@ -20,6 +20,7 @@ open import foundation.action-on-equivalences-type-families public
open import foundation.action-on-equivalences-type-families-over-subuniverses public
open import foundation.action-on-higher-identifications-functions public
open import foundation.action-on-homotopies-functions public
+open import foundation.action-on-identifications-binary-dependent-functions public
open import foundation.action-on-identifications-binary-functions public
open import foundation.action-on-identifications-dependent-functions public
open import foundation.action-on-identifications-functions public
@@ -31,6 +32,7 @@ open import foundation.axiom-of-choice public
open import foundation.bands public
open import foundation.base-changes-span-diagrams public
open import foundation.bicomposition-functions public
+open import foundation.binary-dependent-identifications public
open import foundation.binary-embeddings public
open import foundation.binary-equivalences public
open import foundation.binary-equivalences-unordered-pairs-of-types public
@@ -130,7 +132,8 @@ open import foundation.diagonal-maps-of-types public
open import foundation.diagonal-span-diagrams public
open import foundation.diagonals-of-maps public
open import foundation.diagonals-of-morphisms-arrows public
-open import foundation.discrete-relations public
+open import foundation.discrete-binary-relations public
+open import foundation.discrete-reflexive-relations public
open import foundation.discrete-relaxed-sigma-decompositions public
open import foundation.discrete-sigma-decompositions public
open import foundation.discrete-types public
@@ -207,6 +210,8 @@ open import foundation.functoriality-truncation public
open import foundation.fundamental-theorem-of-identity-types public
open import foundation.global-choice public
open import foundation.global-subuniverses public
+open import foundation.globular-type-of-dependent-functions public
+open import foundation.globular-type-of-functions public
open import foundation.higher-homotopies-morphisms-arrows public
open import foundation.hilberts-epsilon-operators public
open import foundation.homotopies public
diff --git a/src/foundation/action-on-identifications-binary-dependent-functions.lagda.md b/src/foundation/action-on-identifications-binary-dependent-functions.lagda.md
new file mode 100644
index 0000000000..fafa19d405
--- /dev/null
+++ b/src/foundation/action-on-identifications-binary-dependent-functions.lagda.md
@@ -0,0 +1,53 @@
+# The binary action on identifications of binary dependent functions
+
+```agda
+module foundation.action-on-identifications-binary-dependent-functions where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-dependent-functions
+open import foundation.binary-dependent-identifications
+open import foundation.universe-levels
+
+open import foundation-core.identity-types
+```
+
+
+
+## Idea
+
+Given a binary dependent function `f : (x : A) (y : B) → C x y` and
+[identifications](foundation-core.identity-types.md) `p : x = x'` in `A` and
+`q : y = y'` in `B`, we obtain a
+[binary dependent identification](foundation.binary-dependent-identifications.md)
+
+```text
+ apd-binary f p q : binary-dependent-identification p q (f x y) (f x' y')
+```
+
+we call this the
+{{#concept "binary action on identifications of dependent binary functions" Agda=apd-binary}}.
+
+## Definitions
+
+### The binary action on identifications of binary dependent functions
+
+```agda
+module _
+ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : A → B → UU l3}
+ (f : (x : A) (y : B) → C x y)
+ where
+
+ apd-binary :
+ {x x' : A} (p : x = x') {y y' : B} (q : y = y') →
+ binary-dependent-identification C p q (f x y) (f x' y')
+ apd-binary refl refl = refl
+```
+
+## See also
+
+- [Action of functions on identifications](foundation.action-on-identifications-functions.md)
+- [Action of functions on higher identifications](foundation.action-on-higher-identifications-functions.md).
+- [Action of dependent functions on identifications](foundation.action-on-identifications-dependent-functions.md).
diff --git a/src/foundation/action-on-identifications-binary-functions.lagda.md b/src/foundation/action-on-identifications-binary-functions.lagda.md
index 626856cd0b..300b1fe86e 100644
--- a/src/foundation/action-on-identifications-binary-functions.lagda.md
+++ b/src/foundation/action-on-identifications-binary-functions.lagda.md
@@ -198,6 +198,7 @@ module _
## See also
+- [Action of binary dependent functions on identifications](foundation.action-on-identifications-binary-dependent-functions.md)
- [Action of functions on identifications](foundation.action-on-identifications-functions.md)
- [Action of functions on higher identifications](foundation.action-on-higher-identifications-functions.md).
- [Action of dependent functions on identifications](foundation.action-on-identifications-dependent-functions.md).
diff --git a/src/foundation/binary-dependent-identifications.lagda.md b/src/foundation/binary-dependent-identifications.lagda.md
new file mode 100644
index 0000000000..28877b6bcd
--- /dev/null
+++ b/src/foundation/binary-dependent-identifications.lagda.md
@@ -0,0 +1,43 @@
+# Binary dependent identifications
+
+```agda
+module foundation.binary-dependent-identifications where
+```
+
+Imports
+
+```agda
+open import foundation.binary-transport
+open import foundation.identity-types
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+Consider a family of types `C x y` indexed by `x : A` and `y : B`, and consider
+[identifications](foundation-core.identity-types.md) `p : x = x'` and
+`q : y = y'` in `A` and `B`, respectively. A
+{{#concept "binary dependent identification" Agda=binary-dependent-identification}}
+from `c : C x y` to `c' : C x' y'` over `p` and `q` is a
+[dependent identification](foundation.dependent-identifications.md)
+
+```text
+ r : dependent-identification (C x') p (tr (λ t → C t y) p c) c'.
+```
+
+## Definitions
+
+### Binary dependent identifications
+
+```agda
+module _
+ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (C : A → B → UU l3)
+ where
+
+ binary-dependent-identification :
+ {x x' : A} (p : x = x') {y y' : B} (q : y = y') →
+ C x y → C x' y' → UU l3
+ binary-dependent-identification p q c c' = binary-tr C p q c = c'
+```
diff --git a/src/foundation/binary-relations.lagda.md b/src/foundation/binary-relations.lagda.md
index 3de5b00037..e4fe8d4600 100644
--- a/src/foundation/binary-relations.lagda.md
+++ b/src/foundation/binary-relations.lagda.md
@@ -154,6 +154,9 @@ module _
is-transitive : UU (l1 ⊔ l2)
is-transitive = (x y z : A) → R y z → R x y → R x z
+
+ is-transitive' : UU (l1 ⊔ l2)
+ is-transitive' = {x y z : A} → R y z → R x y → R x z
```
### The predicate of being a transitive relation valued in propositions
diff --git a/src/foundation/binary-transport.lagda.md b/src/foundation/binary-transport.lagda.md
index 5ac3a40225..5ce9abd175 100644
--- a/src/foundation/binary-transport.lagda.md
+++ b/src/foundation/binary-transport.lagda.md
@@ -37,7 +37,7 @@ module _
where
binary-tr : (p : x = x') (q : y = y') → C x y → C x' y'
- binary-tr refl refl = id
+ binary-tr p q c = tr (C _) q (tr (λ u → C u _) p c)
is-equiv-binary-tr : (p : x = x') (q : y = y') → is-equiv (binary-tr p q)
is-equiv-binary-tr refl refl = is-equiv-id
diff --git a/src/foundation/dependent-function-types.lagda.md b/src/foundation/dependent-function-types.lagda.md
index 51ebd0bde3..9ac456c7c7 100644
--- a/src/foundation/dependent-function-types.lagda.md
+++ b/src/foundation/dependent-function-types.lagda.md
@@ -79,3 +79,7 @@ module _
( span-type-family-Π B)
( universal-property-dependent-function-types-Π B)
```
+
+## See also
+
+- [The globular type of dependent functions](foundation.globular-type-of-dependent-functions.md)
diff --git a/src/foundation/dependent-identifications.lagda.md b/src/foundation/dependent-identifications.lagda.md
index fa4dda4374..4a1da7c967 100644
--- a/src/foundation/dependent-identifications.lagda.md
+++ b/src/foundation/dependent-identifications.lagda.md
@@ -298,3 +298,7 @@ module _
( inv-dependent-identification B p p'))
distributive-inv-concat-dependent-identification refl refl refl refl = refl
```
+
+## See also
+
+- [Binary dependent identifications](foundation.binary-dependent-identifications.md)
diff --git a/src/foundation/discrete-binary-relations.lagda.md b/src/foundation/discrete-binary-relations.lagda.md
new file mode 100644
index 0000000000..c35d108444
--- /dev/null
+++ b/src/foundation/discrete-binary-relations.lagda.md
@@ -0,0 +1,75 @@
+# Discrete binary relations
+
+```agda
+module foundation.discrete-binary-relations where
+```
+
+Imports
+
+```agda
+open import foundation.binary-relations
+open import foundation.empty-types
+open import foundation.propositions
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+A [binary relation](foundation.binary-relations.md) `R` on `A` is said to be
+{{#concept "discrete" Disambiguation="binary relation" Agda=is-discrete-Relation}}
+if it does not relate any elements, i.e., if the type `R x y` is empty for all
+`x y : A`. In other words, a binary relation is discrete if and only if it is
+the initial binary relation. This definition ensures that the inclusion of
+[discrete directed graphs](graph-theory.discrete-directed-graphs.md) is a left
+adjoint to the forgetful functor `(V , E) ↦ (V , ∅)`.
+
+The condition of discreteness of binary relations compares to the condition of
+[discreteness](foundation.discrete-reflexive-relations.md) of
+[reflexive relations](foundation.reflexive-relations.md) in the sense that both
+conditions imply initiality. Nevertheless, the condition of discreteness on
+reflexive relations asserts that the type family `R x` is
+[torsorial](foundation-core.torsorial-type-families.md) for every `x : A`, which
+looks quite differently.
+
+The condition of torsoriality is not adequate as a condition for discreteness
+for arbitrary binary relations. For example, the binary relation on
+[natural numbers](elementary-number-theory.natural-numbers.md) given by
+`R m n := (m + 1 = n)`, relating natural numbers as follows
+
+```text
+ 0 ---> 1 ---> 2 ---> ⋯,
+```
+
+satisfies the condition that the type family `R m` is torsorial for every
+`m : ℕ`, simply because the relation `R` is a
+[functional correspondence](foundation.functional-correspondences.md). Since
+this relation relates distinct elements, it is typically not considered to be
+discrete.
+
+## Definitions
+
+### The predicate on relations of being discrete
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} (R : Relation l2 A)
+ where
+
+ is-discrete-prop-Relation : Prop (l1 ⊔ l2)
+ is-discrete-prop-Relation =
+ Π-Prop A (λ x → Π-Prop A (λ y → is-empty-Prop (R x y)))
+
+ is-discrete-Relation : UU (l1 ⊔ l2)
+ is-discrete-Relation = type-Prop is-discrete-prop-Relation
+
+ is-prop-is-discrete-Relation : is-prop is-discrete-Relation
+ is-prop-is-discrete-Relation = is-prop-type-Prop is-discrete-prop-Relation
+```
+
+## See also
+
+- [Discrete reflexive relations](foundation.discrete-reflexive-relations.md)
+- [Discrete directed graphs](graph-theory.discrete-directed-graphs.md)
+- [Discrete-reflexive graphs](graph-theory.discrete-reflexive-graphs.md)
diff --git a/src/foundation/discrete-relations.lagda.md b/src/foundation/discrete-reflexive-relations.lagda.md
similarity index 54%
rename from src/foundation/discrete-relations.lagda.md
rename to src/foundation/discrete-reflexive-relations.lagda.md
index 1a6535940b..236e380874 100644
--- a/src/foundation/discrete-relations.lagda.md
+++ b/src/foundation/discrete-reflexive-relations.lagda.md
@@ -1,7 +1,7 @@
-# Discrete relations
+# Discrete reflexive relations
```agda
-module foundation.discrete-relations where
+module foundation.discrete-reflexive-relations where
```
Imports
@@ -22,15 +22,15 @@ open import foundation-core.propositions
## Idea
-A [relation](foundation.binary-relations.md) `R` on `A` is said to be
-{{#concept "discrete" Disambiguation="binary relations valued in types" Agda=is-discrete-Relation}}
+A [reflexive relation](foundation.binary-relations.md) `R` on `A` is said to be
+{{#concept "discrete" Disambiguation="reflexive relations valued in types" Agda=is-discrete-Reflexive-Relation}}
if, for every element `x : A`, the type family `R x` is
[torsorial](foundation-core.torsorial-type-families.md). In other words, the
[dependent sum](foundation.dependent-pair-types.md) `Σ (y : A), (R x y)` is
-[contractible](foundation-core.contractible-types.md) for every `x`. The
-{{#concept "standard discrete relation" Disambiguation="binary relations valued in types"}}
-on a type `X` is the relation defined by
-[identifications](foundation-core.identity-types.md),
+[contractible](foundation-core.contractible-types.md) for every `x`.
+
+The {{#concept "standard discrete reflexive relation"}} on a type `X` is the
+relation defined by [identifications](foundation-core.identity-types.md),
```text
R x y := (x = y).
@@ -38,25 +38,6 @@ on a type `X` is the relation defined by
## Definitions
-### The predicate on relations of being discrete
-
-```agda
-module _
- {l1 l2 : Level} {A : UU l1} (R : Relation l2 A)
- where
-
- is-discrete-prop-Relation : Prop (l1 ⊔ l2)
- is-discrete-prop-Relation = Π-Prop A (λ x → is-torsorial-Prop (R x))
-
- is-discrete-Relation : UU (l1 ⊔ l2)
- is-discrete-Relation =
- type-Prop is-discrete-prop-Relation
-
- is-prop-is-discrete-Relation : is-prop is-discrete-Relation
- is-prop-is-discrete-Relation =
- is-prop-type-Prop is-discrete-prop-Relation
-```
-
### The predicate on reflexive relations of being discrete
```agda
@@ -66,7 +47,7 @@ module _
is-discrete-prop-Reflexive-Relation : Prop (l1 ⊔ l2)
is-discrete-prop-Reflexive-Relation =
- is-discrete-prop-Relation (rel-Reflexive-Relation R)
+ Π-Prop A (λ a → is-torsorial-Prop (rel-Reflexive-Relation R a))
is-discrete-Reflexive-Relation : UU (l1 ⊔ l2)
is-discrete-Reflexive-Relation =
@@ -78,13 +59,22 @@ module _
is-prop-type-Prop is-discrete-prop-Reflexive-Relation
```
-### The standard discrete relation on a type
+## Properties
+
+### The identity relation is discrete
```agda
module _
{l : Level} (A : UU l)
where
- is-discrete-Id-Relation : is-discrete-Relation (Id {A = A})
- is-discrete-Id-Relation = is-torsorial-Id
+ is-discrete-Id-Reflexive-Relation :
+ is-discrete-Reflexive-Relation (Id-Reflexive-Relation A)
+ is-discrete-Id-Reflexive-Relation = is-torsorial-Id
```
+
+## See also
+
+- [Discrete binary relations](foundation.discrete-binary-relations.md)
+- [Discrete directed graphs](graph-theory.discrete-directed-graphs.md)
+- [Discrete reflexive graphs](graph-theory.discrete-reflexive-graphs.md)
diff --git a/src/foundation/functional-correspondences.lagda.md b/src/foundation/functional-correspondences.lagda.md
index a615239cd0..ed5998a661 100644
--- a/src/foundation/functional-correspondences.lagda.md
+++ b/src/foundation/functional-correspondences.lagda.md
@@ -14,6 +14,7 @@ open import foundation.equality-dependent-function-types
open import foundation.function-extensionality
open import foundation.fundamental-theorem-of-identity-types
open import foundation.subtype-identity-principle
+open import foundation.torsorial-type-families
open import foundation.univalence
open import foundation.universe-levels
@@ -21,18 +22,19 @@ open import foundation-core.equivalences
open import foundation-core.identity-types
open import foundation-core.propositions
open import foundation-core.subtypes
-open import foundation-core.torsorial-type-families
```
## Idea
-A functional dependent correspondence is a dependent binary correspondence
-`C : Π (a : A) → B a → 𝒰` from a type `A` to a type family `B` over `A` such
-that for every `a : A` the type `Σ (b : B a), C a b` is contractible. The type
-of dependent functions from `A` to `B` is equivalent to the type of functional
-dependent correspondences.
+A
+{{#concept "functional (dependent) correspondence" Agda=is-functional-correspondence}}
+is a dependent binary correspondence `C : Π (a : A) → B a → 𝒰` from a type `A`
+to a type family `B` over `A` such that for every `a : A` the type family
+`C a : B a → Type` is [torsorial](foundation-core.torsorial-type-families.md).
+The type of dependent functions from `A` to `B` is equivalent to the type of
+functional dependent correspondences.
## Definition
@@ -41,7 +43,7 @@ is-functional-correspondence-Prop :
{l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} (C : (a : A) → B a → UU l3) →
Prop (l1 ⊔ l2 ⊔ l3)
is-functional-correspondence-Prop {A = A} {B} C =
- Π-Prop A (λ x → is-contr-Prop (Σ (B x) (C x)))
+ Π-Prop A (λ x → is-torsorial-Prop (C x))
is-functional-correspondence :
{l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} (C : (a : A) → B a → UU l3) →
diff --git a/src/foundation/globular-type-of-dependent-functions.lagda.md b/src/foundation/globular-type-of-dependent-functions.lagda.md
new file mode 100644
index 0000000000..ac01ad8d14
--- /dev/null
+++ b/src/foundation/globular-type-of-dependent-functions.lagda.md
@@ -0,0 +1,109 @@
+# The globular type of dependent functions
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module foundation.globular-type-of-dependent-functions where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import foundation-core.homotopies
+
+open import structured-types.globular-types
+open import structured-types.reflexive-globular-types
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+The
+{{#concept "globular type of dependent functions" Agda=dependent-function-type-Globular-Type}}
+is the [globular type](structured-types.globular-types.md) consisting of
+[dependent functions](foundation.dependent-function-types.md) and
+[homotopies](foundation-core.homotopies.md) between them. Since homotopies are
+themselves defined to be certain dependent functions, they directly provide a
+globular structure on dependent function types.
+
+The globular type of dependent functions of a type family `B` over `A` is
+[reflexive](structured-types.reflexive-globular-types.md) and
+[transitive](structured-types.transitive-globular-types.md), so it is a
+[noncoherent wild higher precategory](wild-category-theory.noncoherent-wild-higher-precategories.md).
+
+The structures defined in this file are used to define the
+[noncoherent large wild higher precategory of types](foundation.wild-category-of-types.md).
+
+## Definitions
+
+### The globular type of dependent functions
+
+```agda
+dependent-function-type-Globular-Type :
+ {l1 l2 : Level} (A : UU l1) (B : A → UU l2) →
+ Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+0-cell-Globular-Type (dependent-function-type-Globular-Type A B) =
+ (x : A) → B x
+1-cell-globular-type-Globular-Type
+ ( dependent-function-type-Globular-Type A B) f g =
+ dependent-function-type-Globular-Type A (eq-value f g)
+```
+
+## Properties
+
+### The globular type of dependent functions is reflexive
+
+```agda
+is-reflexive-dependent-function-type-Globular-Type :
+ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} →
+ is-reflexive-Globular-Type (dependent-function-type-Globular-Type A B)
+is-reflexive-1-cell-is-reflexive-Globular-Type
+ is-reflexive-dependent-function-type-Globular-Type f =
+ refl-htpy
+is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ is-reflexive-dependent-function-type-Globular-Type =
+ is-reflexive-dependent-function-type-Globular-Type
+
+dependent-function-type-Reflexive-Globular-Type :
+ {l1 l2 : Level} (A : UU l1) (B : A → UU l2) →
+ Reflexive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+globular-type-Reflexive-Globular-Type
+ ( dependent-function-type-Reflexive-Globular-Type A B) =
+ dependent-function-type-Globular-Type A B
+refl-Reflexive-Globular-Type
+ ( dependent-function-type-Reflexive-Globular-Type A B) =
+ is-reflexive-dependent-function-type-Globular-Type
+```
+
+### The globular type of dependent functions is transitive
+
+```agda
+is-transitive-dependent-function-type-Globular-Type :
+ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} →
+ is-transitive-Globular-Type (dependent-function-type-Globular-Type A B)
+comp-1-cell-is-transitive-Globular-Type
+ is-transitive-dependent-function-type-Globular-Type K H =
+ H ∙h K
+is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ is-transitive-dependent-function-type-Globular-Type =
+ is-transitive-dependent-function-type-Globular-Type
+
+dependent-function-type-Transitive-Globular-Type :
+ {l1 l2 : Level} (A : UU l1) (B : A → UU l2) →
+ Transitive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+globular-type-Transitive-Globular-Type
+ ( dependent-function-type-Transitive-Globular-Type A B) =
+ dependent-function-type-Globular-Type A B
+is-transitive-Transitive-Globular-Type
+ ( dependent-function-type-Transitive-Globular-Type A B) =
+ is-transitive-dependent-function-type-Globular-Type
+```
+
+## See also
+
+- [The globular type of functions](foundation.globular-type-of-functions.md)
+- [The wild category of types](foundation.wild-category-of-types.md)
diff --git a/src/foundation/globular-type-of-functions.lagda.md b/src/foundation/globular-type-of-functions.lagda.md
new file mode 100644
index 0000000000..5dd8c2acee
--- /dev/null
+++ b/src/foundation/globular-type-of-functions.lagda.md
@@ -0,0 +1,91 @@
+# The globular type of functions
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module foundation.globular-type-of-functions where
+```
+
+Imports
+
+```agda
+open import foundation.globular-type-of-dependent-functions
+open import foundation.universe-levels
+
+open import foundation-core.homotopies
+
+open import structured-types.globular-types
+open import structured-types.reflexive-globular-types
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+The {{#concept "globular type of functions" Agda=function-type-Globular-Type}}
+is the [globular type](structured-types.globular-types.md) consisting of
+[functions](foundation.function-types.md) and
+[homotopies](foundation-core.homotopies.md) between them. Since functions are
+dependent functions of constant type families, we define the globular type of
+functions in terms of the
+[globular type of dependent functions](foundation.globular-type-of-dependent-functions.md).
+
+The globular type of functions of a type family `B` over `A` is
+[reflexive](structured-types.reflexive-globular-types.md) and
+[transitive](structured-types.transitive-globular-types.md), so it is a
+[noncoherent wild higher precategory](wild-category-theory.noncoherent-wild-higher-precategories.md).
+
+The structures defined in this file are used to define the
+[noncoherent large wild higher precategory of types](foundation.wild-category-of-types.md).
+
+## Definitions
+
+### The globular type of functions
+
+```agda
+function-type-Globular-Type :
+ {l1 l2 : Level} (A : UU l1) (B : UU l2) →
+ Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+function-type-Globular-Type A B =
+ dependent-function-type-Globular-Type A (λ _ → B)
+```
+
+## Properties
+
+### The globular type of functions is reflexive
+
+```agda
+is-reflexive-function-type-Globular-Type :
+ {l1 l2 : Level} {A : UU l1} {B : UU l2} →
+ is-reflexive-Globular-Type (function-type-Globular-Type A B)
+is-reflexive-function-type-Globular-Type {l1} {l2} {A} {B} =
+ is-reflexive-dependent-function-type-Globular-Type
+
+function-type-Reflexive-Globular-Type :
+ {l1 l2 : Level} (A : UU l1) (B : UU l2) →
+ Reflexive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+function-type-Reflexive-Globular-Type A B =
+ dependent-function-type-Reflexive-Globular-Type A (λ _ → B)
+```
+
+### The globular type of functions is transitive
+
+```agda
+is-transitive-function-type-Globular-Type :
+ {l1 l2 : Level} {A : UU l1} {B : UU l2} →
+ is-transitive-Globular-Type (function-type-Globular-Type A B)
+is-transitive-function-type-Globular-Type =
+ is-transitive-dependent-function-type-Globular-Type
+
+function-type-Transitive-Globular-Type :
+ {l1 l2 : Level} (A : UU l1) (B : UU l2) →
+ Transitive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+function-type-Transitive-Globular-Type A B =
+ dependent-function-type-Transitive-Globular-Type A (λ _ → B)
+```
+
+## See also
+
+- [The globular type of functions](foundation.globular-type-of-functions.md)
+- [The wild category of types](foundation.wild-category-of-types.md)
diff --git a/src/foundation/reflexive-relations.lagda.md b/src/foundation/reflexive-relations.lagda.md
index 65190e7d3e..0953b7c3f4 100644
--- a/src/foundation/reflexive-relations.lagda.md
+++ b/src/foundation/reflexive-relations.lagda.md
@@ -7,6 +7,7 @@ module foundation.reflexive-relations where
Imports
```agda
+open import foundation.binary-dependent-identifications
open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.universe-levels
@@ -19,7 +20,7 @@ open import foundation-core.identity-types
## Idea
A {{#concept "reflexive relation" Agda=Reflexive-Relation}} on a type `A` is a
-type-valued [binary relation](foundation.binary-relations.md) `R : A → A → 𝒰`
+type valued [binary relation](foundation.binary-relations.md) `R : A → A → 𝒰`
[equipped](foundation.structure.md) with a proof `r : (x : A) → R x x`.
## Definitions
@@ -38,8 +39,8 @@ module _
rel-Reflexive-Relation : Relation l2 A
rel-Reflexive-Relation = pr1 R
- is-reflexive-Reflexive-Relation : is-reflexive rel-Reflexive-Relation
- is-reflexive-Reflexive-Relation = pr2 R
+ refl-Reflexive-Relation : is-reflexive rel-Reflexive-Relation
+ refl-Reflexive-Relation = pr2 R
```
### The identity reflexive relation on a type
@@ -48,3 +49,49 @@ module _
Id-Reflexive-Relation : {l : Level} (A : UU l) → Reflexive-Relation l A
Id-Reflexive-Relation A = (Id , (λ x → refl))
```
+
+## Properties
+
+### A formulation of the dependent action on identifications of reflexivity
+
+Consider a reflexive relation `R` on a type `A` with reflexivity
+`r : (x : A) → R x x`, and consider an
+[identification](foundation-core.identity-types.md) `p : x = y` in `A`. The
+usual
+[action on identifications](foundation.action-on-identifications-dependent-functions.md)
+yields a [dependent identification](foundation.dependent-identifications.md)
+
+```text
+ tr (λ u → R u u) p (r x) = (r y).
+```
+
+However, since `R` is a binary indexed family of types, there is also the
+[binary dependent identity type](foundation.binary-dependent-identifications.md),
+which can be used to express another version of the action on identifications of
+the reflexivity element `r`:
+
+```text
+ binary-dependent-identification R p p (r x) (r y).
+```
+
+This action on identifications can be seen as an instance of a dependent
+function over the diagonal map `Δ : A → A × A`, a situation wich can be
+generalized. At the time of writing, however, the library lacks infrastructure
+for the general formulation of the action on identifications of dependent
+functions over functions yielding binary dependent identifications.
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} (R : Reflexive-Relation l2 A)
+ where
+
+ binary-dependent-identification-refl-Reflexive-Relation :
+ {x y : A} (p : x = y) →
+ binary-dependent-identification
+ ( rel-Reflexive-Relation R)
+ ( p)
+ ( p)
+ ( refl-Reflexive-Relation R x)
+ ( refl-Reflexive-Relation R y)
+ binary-dependent-identification-refl-Reflexive-Relation refl = refl
+```
diff --git a/src/foundation/torsorial-type-families.lagda.md b/src/foundation/torsorial-type-families.lagda.md
index db72746fb4..0929568e83 100644
--- a/src/foundation/torsorial-type-families.lagda.md
+++ b/src/foundation/torsorial-type-families.lagda.md
@@ -113,5 +113,5 @@ module _
### See also
-- [Discrete relations](foundation.discrete-relations.md) are binary torsorial
- type families.
+- [Discrete reflexive relations](foundation.discrete-reflexive-relations.md) are
+ binary torsorial type families.
diff --git a/src/foundation/wild-category-of-types.lagda.md b/src/foundation/wild-category-of-types.lagda.md
index d712b916cc..ea2edac1e1 100644
--- a/src/foundation/wild-category-of-types.lagda.md
+++ b/src/foundation/wild-category-of-types.lagda.md
@@ -11,6 +11,7 @@ module foundation.wild-category-of-types where
```agda
open import foundation.dependent-pair-types
open import foundation.fundamental-theorem-of-identity-types
+open import foundation.globular-type-of-functions
open import foundation.homotopies
open import foundation.isomorphisms-of-sets
open import foundation.sets
@@ -42,67 +43,53 @@ open import wild-category-theory.noncoherent-wild-higher-precategories
The
{{#concept "wild category of types" Agda=Type-Noncoherent-Large-Wild-Higher-Precategory}}
-consists of types and functions and homotopies.
+consists of types and [functions](foundation.dependent-function-types.md) and
+[homotopies](foundation-core.homotopies.md).
## Definitions
-### The globular structure on dependent function types
+### The large globular type of types
```agda
-globular-structure-Π :
- {l1 l2 : Level} {A : UU l1} {B : A → UU l2} →
- globular-structure (l1 ⊔ l2) ((x : A) → B x)
-globular-structure-Π =
- λ where
- .1-cell-globular-structure → _~_
- .globular-structure-1-cell-globular-structure f g → globular-structure-Π
-
-is-reflexive-globular-structure-Π :
- {l1 l2 : Level} {A : UU l1} {B : A → UU l2} →
- is-reflexive-globular-structure (globular-structure-Π {A = A} {B})
-is-reflexive-globular-structure-Π =
- λ where
- .is-reflexive-1-cell-is-reflexive-globular-structure f → refl-htpy
- .is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure f g →
- is-reflexive-globular-structure-Π
-
-is-transitive-globular-structure-Π :
- {l1 l2 : Level} {A : UU l1} {B : A → UU l2} →
- is-transitive-globular-structure (globular-structure-Π {A = A} {B})
-is-transitive-globular-structure-Π =
- λ where
- .comp-1-cell-is-transitive-globular-structure H K → K ∙h H
- .is-transitive-globular-structure-1-cell-is-transitive-globular-structure
- H K →
- is-transitive-globular-structure-Π
-```
-
-### The large globular structure on types
-
-```agda
-large-globular-structure-Type : large-globular-structure (_⊔_) (λ l → UU l)
-large-globular-structure-Type =
- λ where
- .1-cell-large-globular-structure X Y → (X → Y)
- .globular-structure-1-cell-large-globular-structure X Y → globular-structure-Π
-
-is-reflexive-large-globular-structure-Type :
- is-reflexive-large-globular-structure large-globular-structure-Type
-is-reflexive-large-globular-structure-Type =
- λ where
- .is-reflexive-1-cell-is-reflexive-large-globular-structure X → id
- .is-reflexive-globular-structure-1-cell-is-reflexive-large-globular-structure
- X Y →
- is-reflexive-globular-structure-Π
-
-is-transitive-large-globular-structure-Type :
- is-transitive-large-globular-structure large-globular-structure-Type
-is-transitive-large-globular-structure-Type =
- λ where
- .comp-1-cell-is-transitive-large-globular-structure g f → g ∘ f
- .is-transitive-globular-structure-1-cell-is-transitive-large-globular-structure
- X Y →
- is-transitive-globular-structure-Π
+Type-Large-Globular-Type : Large-Globular-Type lsuc (_⊔_)
+0-cell-Large-Globular-Type Type-Large-Globular-Type l =
+ UU l
+1-cell-globular-type-Large-Globular-Type Type-Large-Globular-Type A B =
+ function-type-Globular-Type A B
+
+is-reflexive-Type-Large-Globular-Type :
+ is-reflexive-Large-Globular-Type Type-Large-Globular-Type
+refl-1-cell-is-reflexive-Large-Globular-Type
+ is-reflexive-Type-Large-Globular-Type X =
+ id
+is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type
+ is-reflexive-Type-Large-Globular-Type =
+ is-reflexive-function-type-Globular-Type
+
+Type-Large-Reflexive-Globular-Type : Large-Reflexive-Globular-Type lsuc (_⊔_)
+large-globular-type-Large-Reflexive-Globular-Type
+ Type-Large-Reflexive-Globular-Type =
+ Type-Large-Globular-Type
+is-reflexive-Large-Reflexive-Globular-Type
+ Type-Large-Reflexive-Globular-Type =
+ is-reflexive-Type-Large-Globular-Type
+
+is-transitive-Type-Large-Globular-Type :
+ is-transitive-Large-Globular-Type Type-Large-Globular-Type
+comp-1-cell-is-transitive-Large-Globular-Type
+ is-transitive-Type-Large-Globular-Type g f =
+ g ∘ f
+is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type
+ is-transitive-Type-Large-Globular-Type =
+ is-transitive-function-type-Globular-Type
+
+Type-Large-Transitive-Globular-Type : Large-Transitive-Globular-Type lsuc (_⊔_)
+large-globular-type-Large-Transitive-Globular-Type
+ Type-Large-Transitive-Globular-Type =
+ Type-Large-Globular-Type
+is-transitive-Large-Transitive-Globular-Type
+ Type-Large-Transitive-Globular-Type =
+ is-transitive-Type-Large-Globular-Type
```
### The noncoherent large wild higher precategory of types
@@ -110,14 +97,13 @@ is-transitive-large-globular-structure-Type =
```agda
Type-Noncoherent-Large-Wild-Higher-Precategory :
Noncoherent-Large-Wild-Higher-Precategory lsuc (_⊔_)
-Type-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .obj-Noncoherent-Large-Wild-Higher-Precategory l →
- UU l
- .hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- large-globular-structure-Type
- .id-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- is-reflexive-large-globular-structure-Type
- .comp-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- is-transitive-large-globular-structure-Type
+large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ Type-Noncoherent-Large-Wild-Higher-Precategory =
+ Type-Large-Globular-Type
+id-structure-Noncoherent-Large-Wild-Higher-Precategory
+ Type-Noncoherent-Large-Wild-Higher-Precategory =
+ is-reflexive-Type-Large-Globular-Type
+comp-structure-Noncoherent-Large-Wild-Higher-Precategory
+ Type-Noncoherent-Large-Wild-Higher-Precategory =
+ is-transitive-Type-Large-Globular-Type
```
diff --git a/src/graph-theory.lagda.md b/src/graph-theory.lagda.md
index 9ac8fd5589..c873b5ded2 100644
--- a/src/graph-theory.lagda.md
+++ b/src/graph-theory.lagda.md
@@ -6,6 +6,10 @@
module graph-theory where
open import graph-theory.acyclic-undirected-graphs public
+open import graph-theory.base-change-dependent-directed-graphs public
+open import graph-theory.base-change-dependent-reflexive-graphs public
+open import graph-theory.cartesian-products-directed-graphs public
+open import graph-theory.cartesian-products-reflexive-graphs public
open import graph-theory.circuits-undirected-graphs public
open import graph-theory.closed-walks-undirected-graphs public
open import graph-theory.complete-bipartite-graphs public
@@ -13,29 +17,46 @@ open import graph-theory.complete-multipartite-graphs public
open import graph-theory.complete-undirected-graphs public
open import graph-theory.connected-undirected-graphs public
open import graph-theory.cycles-undirected-graphs public
+open import graph-theory.dependent-directed-graphs public
+open import graph-theory.dependent-products-directed-graphs public
+open import graph-theory.dependent-products-reflexive-graphs public
+open import graph-theory.dependent-reflexive-graphs public
+open import graph-theory.dependent-sums-directed-graphs public
+open import graph-theory.dependent-sums-reflexive-graphs public
+open import graph-theory.directed-graph-duality public
open import graph-theory.directed-graph-structures-on-standard-finite-sets public
open import graph-theory.directed-graphs public
-open import graph-theory.discrete-graphs public
+open import graph-theory.discrete-dependent-reflexive-graphs public
+open import graph-theory.discrete-directed-graphs public
+open import graph-theory.discrete-reflexive-graphs public
open import graph-theory.displayed-large-reflexive-graphs public
open import graph-theory.edge-coloured-undirected-graphs public
open import graph-theory.embeddings-directed-graphs public
open import graph-theory.embeddings-undirected-graphs public
open import graph-theory.enriched-undirected-graphs public
+open import graph-theory.equivalences-dependent-directed-graphs public
+open import graph-theory.equivalences-dependent-reflexive-graphs public
open import graph-theory.equivalences-directed-graphs public
open import graph-theory.equivalences-enriched-undirected-graphs public
+open import graph-theory.equivalences-reflexive-graphs public
open import graph-theory.equivalences-undirected-graphs public
open import graph-theory.eulerian-circuits-undirected-graphs public
open import graph-theory.faithful-morphisms-undirected-graphs public
open import graph-theory.fibers-directed-graphs public
+open import graph-theory.fibers-morphisms-directed-graphs public
+open import graph-theory.fibers-morphisms-reflexive-graphs public
open import graph-theory.finite-graphs public
open import graph-theory.geometric-realizations-undirected-graphs public
open import graph-theory.higher-directed-graphs public
open import graph-theory.hypergraphs public
+open import graph-theory.internal-hom-directed-graphs public
open import graph-theory.large-higher-directed-graphs public
open import graph-theory.large-reflexive-graphs public
open import graph-theory.matchings public
open import graph-theory.mere-equivalences-undirected-graphs public
+open import graph-theory.morphisms-dependent-directed-graphs public
open import graph-theory.morphisms-directed-graphs public
+open import graph-theory.morphisms-reflexive-graphs public
open import graph-theory.morphisms-undirected-graphs public
open import graph-theory.neighbors-undirected-graphs public
open import graph-theory.orientations-undirected-graphs public
@@ -45,13 +66,19 @@ open import graph-theory.raising-universe-levels-directed-graphs public
open import graph-theory.reflecting-maps-undirected-graphs public
open import graph-theory.reflexive-graphs public
open import graph-theory.regular-undirected-graphs public
+open import graph-theory.sections-dependent-directed-graphs public
+open import graph-theory.sections-dependent-reflexive-graphs public
open import graph-theory.simple-undirected-graphs public
open import graph-theory.stereoisomerism-enriched-undirected-graphs public
+open import graph-theory.terminal-directed-graphs public
+open import graph-theory.terminal-reflexive-graphs public
open import graph-theory.totally-faithful-morphisms-undirected-graphs public
open import graph-theory.trails-directed-graphs public
open import graph-theory.trails-undirected-graphs public
open import graph-theory.undirected-graph-structures-on-standard-finite-sets public
open import graph-theory.undirected-graphs public
+open import graph-theory.universal-directed-graph public
+open import graph-theory.universal-reflexive-graph public
open import graph-theory.vertex-covers public
open import graph-theory.voltage-graphs public
open import graph-theory.walks-directed-graphs public
diff --git a/src/graph-theory/base-change-dependent-directed-graphs.lagda.md b/src/graph-theory/base-change-dependent-directed-graphs.lagda.md
new file mode 100644
index 0000000000..839b1619cd
--- /dev/null
+++ b/src/graph-theory/base-change-dependent-directed-graphs.lagda.md
@@ -0,0 +1,64 @@
+# Base change of dependent directed graphs
+
+```agda
+module graph-theory.base-change-dependent-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+```
+
+
+
+## Idea
+
+Consider a [dependent directed graph](graph-theory.dependent-directed-graphs.md)
+`B` over a [directed graph](graph-theory.directed-graphs.md) `A`, and consider a
+[graph homomorphism](graph-theory.morphisms-directed-graphs.md) `f : C → A`. The
+{{#concept "base change" Disambiguation="dependent directed graphs" Agda=base-change-Dependent-Directed-Graph}}
+`f*B` of `B` along `f` is defined by substituting the values of `f` into `B`.
+More precisely, `f*B` is defined by
+
+```text
+ (f*B)₀ c := B₀ (f₀ c)
+ (f*B)₁ e := B₁ (f₁ e).
+```
+
+## Definitions
+
+### Base change of dependent directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {A : Directed-Graph l1 l2}
+ (C : Directed-Graph l3 l4) (f : hom-Directed-Graph C A)
+ (B : Dependent-Directed-Graph l5 l6 A)
+ where
+
+ vertex-base-change-Dependent-Directed-Graph :
+ (c : vertex-Directed-Graph C) → UU l5
+ vertex-base-change-Dependent-Directed-Graph c =
+ vertex-Dependent-Directed-Graph B (vertex-hom-Directed-Graph C A f c)
+
+ edge-base-change-Dependent-Directed-Graph :
+ {x y : vertex-Directed-Graph C} (e : edge-Directed-Graph C x y) →
+ vertex-base-change-Dependent-Directed-Graph x →
+ vertex-base-change-Dependent-Directed-Graph y → UU l6
+ edge-base-change-Dependent-Directed-Graph e =
+ edge-Dependent-Directed-Graph B (edge-hom-Directed-Graph C A f e)
+
+ base-change-Dependent-Directed-Graph :
+ Dependent-Directed-Graph l5 l6 C
+ pr1 base-change-Dependent-Directed-Graph =
+ vertex-base-change-Dependent-Directed-Graph
+ pr2 base-change-Dependent-Directed-Graph _ _ =
+ edge-base-change-Dependent-Directed-Graph
+```
diff --git a/src/graph-theory/base-change-dependent-reflexive-graphs.lagda.md b/src/graph-theory/base-change-dependent-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..d1168be9c8
--- /dev/null
+++ b/src/graph-theory/base-change-dependent-reflexive-graphs.lagda.md
@@ -0,0 +1,90 @@
+# Base change of dependent reflexive graphs
+
+```agda
+module graph-theory.base-change-dependent-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.identity-types
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import graph-theory.base-change-dependent-directed-graphs
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.dependent-reflexive-graphs
+open import graph-theory.morphisms-reflexive-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+Consider a
+[dependent reflexive graph](graph-theory.dependent-reflexive-graphs.md) `B` over
+a [reflexive graph](graph-theory.reflexive-graphs.md) `A`, and consider a
+[graph homomorphism](graph-theory.morphisms-reflexive-graphs.md) `f : C → A`.
+The
+{{#concept "base change" Disambiguation="dependent reflexive graphs" Agda=base-change-Dependent-Reflexive-Graph}}
+`f*B` of `B` along `f` is defined by substituting the values of `f` into `B`.
+More precisely, `f*B` is defined by
+
+```text
+ (f*B)₀ c := B₀ (f₀ c)
+ (f*B)₁ e := B₁ (f₁ e).
+```
+
+## Definitions
+
+### Base change of dependent reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {A : Reflexive-Graph l1 l2}
+ (C : Reflexive-Graph l3 l4) (f : hom-Reflexive-Graph C A)
+ (B : Dependent-Reflexive-Graph l5 l6 A)
+ where
+
+ dependent-directed-graph-base-change-Dependent-Reflexive-Graph :
+ Dependent-Directed-Graph l5 l6 (directed-graph-Reflexive-Graph C)
+ dependent-directed-graph-base-change-Dependent-Reflexive-Graph =
+ base-change-Dependent-Directed-Graph
+ ( directed-graph-Reflexive-Graph C)
+ ( hom-directed-graph-hom-Reflexive-Graph C A f)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+
+ vertex-base-change-Dependent-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph C) → UU l5
+ vertex-base-change-Dependent-Reflexive-Graph =
+ vertex-Dependent-Directed-Graph
+ dependent-directed-graph-base-change-Dependent-Reflexive-Graph
+
+ edge-base-change-Dependent-Reflexive-Graph :
+ {x y : vertex-Reflexive-Graph C} (e : edge-Reflexive-Graph C x y) →
+ vertex-base-change-Dependent-Reflexive-Graph x →
+ vertex-base-change-Dependent-Reflexive-Graph y → UU l6
+ edge-base-change-Dependent-Reflexive-Graph =
+ edge-Dependent-Directed-Graph
+ dependent-directed-graph-base-change-Dependent-Reflexive-Graph
+
+ refl-base-change-Dependent-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph C}
+ (y : vertex-base-change-Dependent-Reflexive-Graph x) →
+ edge-base-change-Dependent-Reflexive-Graph (refl-Reflexive-Graph C x) y y
+ refl-base-change-Dependent-Reflexive-Graph {x} y =
+ tr
+ ( λ u → edge-Dependent-Reflexive-Graph B u y y)
+ ( inv (refl-hom-Reflexive-Graph C A f x))
+ ( refl-Dependent-Reflexive-Graph B y)
+
+ base-change-Dependent-Reflexive-Graph :
+ Dependent-Reflexive-Graph l5 l6 C
+ pr1 base-change-Dependent-Reflexive-Graph =
+ dependent-directed-graph-base-change-Dependent-Reflexive-Graph
+ pr2 base-change-Dependent-Reflexive-Graph _ =
+ refl-base-change-Dependent-Reflexive-Graph
+```
diff --git a/src/graph-theory/cartesian-products-directed-graphs.lagda.md b/src/graph-theory/cartesian-products-directed-graphs.lagda.md
new file mode 100644
index 0000000000..50840f8b15
--- /dev/null
+++ b/src/graph-theory/cartesian-products-directed-graphs.lagda.md
@@ -0,0 +1,105 @@
+# Cartesian products of directed graphs
+
+```agda
+module graph-theory.cartesian-products-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.cartesian-product-types
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+```
+
+
+
+## Idea
+
+Consider two [directed graphs](graph-theory.directed-graphs.md) `A := (A₀ , A₁)`
+and `B := (B₀ , B₁)`. The
+{{#concept "cartesian product" Disambiguation="directed graphs" Agda=product-Directed-Graph}}
+of `A` and `B` is the directed graph `A × B` given by
+
+```text
+ (A × B)₀ := A₀ × B₀
+ (A × B)₁ (x , y) (x' , y') := A₁ x x' × B₁ y y'.
+```
+
+## Definitions
+
+### The cartesian product of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Directed-Graph l1 l2) (B : Directed-Graph l3 l4)
+ where
+
+ vertex-product-Directed-Graph : UU (l1 ⊔ l3)
+ vertex-product-Directed-Graph =
+ vertex-Directed-Graph A × vertex-Directed-Graph B
+
+ edge-product-Directed-Graph :
+ (x y : vertex-product-Directed-Graph) → UU (l2 ⊔ l4)
+ edge-product-Directed-Graph (x , y) (x' , y') =
+ edge-Directed-Graph A x x' × edge-Directed-Graph B y y'
+
+ product-Directed-Graph : Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4)
+ pr1 product-Directed-Graph = vertex-product-Directed-Graph
+ pr2 product-Directed-Graph = edge-product-Directed-Graph
+```
+
+### The projections out of cartesian products of directed graphs
+
+#### The first projection out of the cartesian product of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Directed-Graph l1 l2) (B : Directed-Graph l3 l4)
+ where
+
+ vertex-pr1-product-Directed-Graph :
+ vertex-product-Directed-Graph A B → vertex-Directed-Graph A
+ vertex-pr1-product-Directed-Graph = pr1
+
+ edge-pr1-product-Directed-Graph :
+ {x y : vertex-product-Directed-Graph A B} →
+ edge-product-Directed-Graph A B x y →
+ edge-Directed-Graph A
+ ( vertex-pr1-product-Directed-Graph x)
+ ( vertex-pr1-product-Directed-Graph y)
+ edge-pr1-product-Directed-Graph = pr1
+
+ pr1-product-Directed-Graph :
+ hom-Directed-Graph (product-Directed-Graph A B) A
+ pr1 pr1-product-Directed-Graph = vertex-pr1-product-Directed-Graph
+ pr2 pr1-product-Directed-Graph _ _ = edge-pr1-product-Directed-Graph
+```
+
+#### The second projection out of the cartesian product of two directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Directed-Graph l1 l2) (B : Directed-Graph l3 l4)
+ where
+
+ vertex-pr2-product-Directed-Graph :
+ vertex-product-Directed-Graph A B → vertex-Directed-Graph B
+ vertex-pr2-product-Directed-Graph = pr2
+
+ edge-pr2-product-Directed-Graph :
+ {x y : vertex-product-Directed-Graph A B} →
+ edge-product-Directed-Graph A B x y →
+ edge-Directed-Graph B
+ ( vertex-pr2-product-Directed-Graph x)
+ ( vertex-pr2-product-Directed-Graph y)
+ edge-pr2-product-Directed-Graph = pr2
+
+ pr2-product-Directed-Graph :
+ hom-Directed-Graph (product-Directed-Graph A B) B
+ pr1 pr2-product-Directed-Graph = vertex-pr2-product-Directed-Graph
+ pr2 pr2-product-Directed-Graph _ _ = edge-pr2-product-Directed-Graph
+```
diff --git a/src/graph-theory/cartesian-products-reflexive-graphs.lagda.md b/src/graph-theory/cartesian-products-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..f68342b1c5
--- /dev/null
+++ b/src/graph-theory/cartesian-products-reflexive-graphs.lagda.md
@@ -0,0 +1,175 @@
+# Cartesian products of reflexive graphs
+
+```agda
+module graph-theory.cartesian-products-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.cartesian-product-types
+open import foundation.dependent-pair-types
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import graph-theory.cartesian-products-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+open import graph-theory.morphisms-reflexive-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+Consider two [reflexive graphs](graph-theory.reflexive-graphs.md)
+`A := (A₀ , A₁)` and `B := (B₀ , B₁)`. The
+{{#concept "cartesian product" Disambiguation="reflexive graphs" Agda=product-Reflexive-Graph}}
+of `A` and `B` is the reflexive graph `A × B` given by
+
+```text
+ (A × B)₀ := A₀ × B₀
+ (A × B)₁ (x , y) (x' , y') := A₁ x x' × B₁ y y'
+ refl (A × B) (x , y) := (refl A x , refl B y).
+```
+
+## Definitions
+
+### The cartesian product of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Reflexive-Graph l1 l2) (B : Reflexive-Graph l3 l4)
+ where
+
+ directed-graph-product-Reflexive-Graph :
+ Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4)
+ directed-graph-product-Reflexive-Graph =
+ product-Directed-Graph
+ ( directed-graph-Reflexive-Graph A)
+ ( directed-graph-Reflexive-Graph B)
+
+ vertex-product-Reflexive-Graph : UU (l1 ⊔ l3)
+ vertex-product-Reflexive-Graph =
+ vertex-Directed-Graph directed-graph-product-Reflexive-Graph
+
+ edge-product-Reflexive-Graph :
+ (x y : vertex-product-Reflexive-Graph) → UU (l2 ⊔ l4)
+ edge-product-Reflexive-Graph =
+ edge-Directed-Graph directed-graph-product-Reflexive-Graph
+
+ refl-product-Reflexive-Graph :
+ (x : vertex-product-Reflexive-Graph) → edge-product-Reflexive-Graph x x
+ pr1 (refl-product-Reflexive-Graph (x , y)) = refl-Reflexive-Graph A x
+ pr2 (refl-product-Reflexive-Graph (x , y)) = refl-Reflexive-Graph B y
+
+ product-Reflexive-Graph :
+ Reflexive-Graph (l1 ⊔ l3) (l2 ⊔ l4)
+ pr1 product-Reflexive-Graph =
+ directed-graph-product-Reflexive-Graph
+ pr2 product-Reflexive-Graph =
+ refl-product-Reflexive-Graph
+```
+
+### The projections out of cartesian products of reflexive graphs
+
+#### The first projection out of the cartesian product of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Reflexive-Graph l1 l2) (B : Reflexive-Graph l3 l4)
+ where
+
+ hom-directed-graph-pr1-product-Reflexive-Graph :
+ hom-Directed-Graph
+ ( directed-graph-product-Reflexive-Graph A B)
+ ( directed-graph-Reflexive-Graph A)
+ hom-directed-graph-pr1-product-Reflexive-Graph =
+ pr1-product-Directed-Graph
+ ( directed-graph-Reflexive-Graph A)
+ ( directed-graph-Reflexive-Graph B)
+
+ vertex-pr1-product-Reflexive-Graph :
+ vertex-product-Reflexive-Graph A B → vertex-Reflexive-Graph A
+ vertex-pr1-product-Reflexive-Graph =
+ vertex-hom-Directed-Graph
+ ( directed-graph-product-Reflexive-Graph A B)
+ ( directed-graph-Reflexive-Graph A)
+ ( hom-directed-graph-pr1-product-Reflexive-Graph)
+
+ edge-pr1-product-Reflexive-Graph :
+ {x y : vertex-product-Reflexive-Graph A B} →
+ edge-product-Reflexive-Graph A B x y →
+ edge-Reflexive-Graph A
+ ( vertex-pr1-product-Reflexive-Graph x)
+ ( vertex-pr1-product-Reflexive-Graph y)
+ edge-pr1-product-Reflexive-Graph =
+ edge-hom-Directed-Graph
+ ( directed-graph-product-Reflexive-Graph A B)
+ ( directed-graph-Reflexive-Graph A)
+ ( hom-directed-graph-pr1-product-Reflexive-Graph)
+
+ refl-pr1-product-Reflexive-Graph :
+ (x : vertex-product-Reflexive-Graph A B) →
+ edge-pr1-product-Reflexive-Graph (refl-product-Reflexive-Graph A B x) =
+ refl-Reflexive-Graph A (vertex-pr1-product-Reflexive-Graph x)
+ refl-pr1-product-Reflexive-Graph x = refl
+
+ pr1-product-Reflexive-Graph :
+ hom-Reflexive-Graph (product-Reflexive-Graph A B) A
+ pr1 pr1-product-Reflexive-Graph =
+ hom-directed-graph-pr1-product-Reflexive-Graph
+ pr2 pr1-product-Reflexive-Graph =
+ refl-pr1-product-Reflexive-Graph
+```
+
+#### The second projection out of the cartesian product of two reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Reflexive-Graph l1 l2) (B : Reflexive-Graph l3 l4)
+ where
+
+ hom-directed-graph-pr2-product-Reflexive-Graph :
+ hom-Directed-Graph
+ ( directed-graph-product-Reflexive-Graph A B)
+ ( directed-graph-Reflexive-Graph B)
+ hom-directed-graph-pr2-product-Reflexive-Graph =
+ pr2-product-Directed-Graph
+ ( directed-graph-Reflexive-Graph A)
+ ( directed-graph-Reflexive-Graph B)
+
+ vertex-pr2-product-Reflexive-Graph :
+ vertex-product-Reflexive-Graph A B → vertex-Reflexive-Graph B
+ vertex-pr2-product-Reflexive-Graph =
+ vertex-hom-Directed-Graph
+ ( directed-graph-product-Reflexive-Graph A B)
+ ( directed-graph-Reflexive-Graph B)
+ ( hom-directed-graph-pr2-product-Reflexive-Graph)
+
+ edge-pr2-product-Reflexive-Graph :
+ {x y : vertex-product-Reflexive-Graph A B} →
+ edge-product-Reflexive-Graph A B x y →
+ edge-Reflexive-Graph B
+ ( vertex-pr2-product-Reflexive-Graph x)
+ ( vertex-pr2-product-Reflexive-Graph y)
+ edge-pr2-product-Reflexive-Graph =
+ edge-hom-Directed-Graph
+ ( directed-graph-product-Reflexive-Graph A B)
+ ( directed-graph-Reflexive-Graph B)
+ ( hom-directed-graph-pr2-product-Reflexive-Graph)
+
+ refl-pr2-product-Reflexive-Graph :
+ (x : vertex-product-Reflexive-Graph A B) →
+ edge-pr2-product-Reflexive-Graph (refl-product-Reflexive-Graph A B x) =
+ refl-Reflexive-Graph B (vertex-pr2-product-Reflexive-Graph x)
+ refl-pr2-product-Reflexive-Graph x = refl
+
+ pr2-product-Reflexive-Graph :
+ hom-Reflexive-Graph (product-Reflexive-Graph A B) B
+ pr1 pr2-product-Reflexive-Graph =
+ hom-directed-graph-pr2-product-Reflexive-Graph
+ pr2 pr2-product-Reflexive-Graph =
+ refl-pr2-product-Reflexive-Graph
+```
diff --git a/src/graph-theory/dependent-directed-graphs.lagda.md b/src/graph-theory/dependent-directed-graphs.lagda.md
new file mode 100644
index 0000000000..bd7a43b39d
--- /dev/null
+++ b/src/graph-theory/dependent-directed-graphs.lagda.md
@@ -0,0 +1,97 @@
+# Dependent directed graphs
+
+```agda
+module graph-theory.dependent-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import graph-theory.directed-graphs
+```
+
+
+
+## Idea
+
+Consider a [directed graph](graph-theory.directed-graphs.md) `A`. A
+{{#concept "dependent directed graph" Agda=Dependent-Directed-Graph}} `B` over
+`A` consists of:
+
+- A family `B₀ : A₀ → 𝒰` of vertices
+- A family `B₁ : (x y : A₀) → A₁ x y → B₀ x → B₀ y → 𝒰` of
+ [binary relations](foundation.binary-relations.md) between the types of
+ vertices `B₀`, indexed by the type of edges `A₁` in `A`.
+
+To see that this is a sensible definition of dependent directed graphs, observe
+that the type of directed graphs itself is
+[equivalent](foundation-core.equivalences.md) to the type of dependent directed
+graphs over the
+[terminal directed graph](graph-theory.terminal-directed-graphs.md).
+Furthermore, [graph homomorphisms](graph-theory.morphisms-directed-graphs.md)
+into the [universal directed graph](graph-theory.universal-directed-graph.md)
+are equivalent to dependent directed graphs.
+
+## Definitions
+
+### Dependent directed graphs
+
+```agda
+Dependent-Directed-Graph :
+ {l1 l2 : Level} (l3 l4 : Level) → Directed-Graph l1 l2 →
+ UU (l1 ⊔ l2 ⊔ lsuc l3 ⊔ lsuc l4)
+Dependent-Directed-Graph l3 l4 A =
+ Σ ( vertex-Directed-Graph A → UU l3)
+ ( λ B₀ →
+ (x y : vertex-Directed-Graph A) →
+ edge-Directed-Graph A x y → B₀ x → B₀ y → UU l4)
+
+module _
+ {l1 l2 l3 l4 : Level} {A : Directed-Graph l1 l2}
+ (B : Dependent-Directed-Graph l3 l4 A)
+ where
+
+ vertex-Dependent-Directed-Graph : vertex-Directed-Graph A → UU l3
+ vertex-Dependent-Directed-Graph = pr1 B
+
+ edge-Dependent-Directed-Graph :
+ {x y : vertex-Directed-Graph A} →
+ edge-Directed-Graph A x y →
+ vertex-Dependent-Directed-Graph x →
+ vertex-Dependent-Directed-Graph y → UU l4
+ edge-Dependent-Directed-Graph = pr2 B _ _
+```
+
+### Constant dependent directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Directed-Graph l1 l2) (B : Directed-Graph l3 l4)
+ where
+
+ vertex-constant-Dependent-Directed-Graph :
+ vertex-Directed-Graph A → UU l3
+ vertex-constant-Dependent-Directed-Graph x = vertex-Directed-Graph B
+
+ edge-constant-Dependent-Directed-Graph :
+ {x y : vertex-Directed-Graph A} →
+ edge-Directed-Graph A x y →
+ vertex-constant-Dependent-Directed-Graph x →
+ vertex-constant-Dependent-Directed-Graph y → UU l4
+ edge-constant-Dependent-Directed-Graph e =
+ edge-Directed-Graph B
+
+ constant-Dependent-Directed-Graph : Dependent-Directed-Graph l3 l4 A
+ pr1 constant-Dependent-Directed-Graph =
+ vertex-constant-Dependent-Directed-Graph
+ pr2 constant-Dependent-Directed-Graph _ _ =
+ edge-constant-Dependent-Directed-Graph
+```
+
+## See also
+
+- The [universal directed graph](graph-theory.universal-directed-graph.md)
+- [base change of dependent directed graphs](graph-theory.base-change-dependent-directed-graphs.md)
diff --git a/src/graph-theory/dependent-products-directed-graphs.lagda.md b/src/graph-theory/dependent-products-directed-graphs.lagda.md
new file mode 100644
index 0000000000..5e0174ead8
--- /dev/null
+++ b/src/graph-theory/dependent-products-directed-graphs.lagda.md
@@ -0,0 +1,270 @@
+# Dependent products of directed graphs
+
+```agda
+module graph-theory.dependent-products-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.homotopies
+open import foundation.retractions
+open import foundation.sections
+open import foundation.universe-levels
+
+open import graph-theory.base-change-dependent-directed-graphs
+open import graph-theory.cartesian-products-directed-graphs
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+open import graph-theory.sections-dependent-directed-graphs
+```
+
+
+
+## Idea
+
+Given a [dependent directed graph](graph-theory.dependent-directed-graphs.md)
+`B` over a [directed graphs](graph-theory.directed-graphs.md) `A`, the
+{{#concept "dependent product" Disambiguation="directed graph" agda=Π-Directed-Graph}}
+`Π A B` is the directed graph that satisfies the universal property
+
+```text
+ hom X (Π A B) ≃ section (X × A) (pr2* B).
+```
+
+Concretely, the directed graph `Π A B` has
+
+- The type of functions `(x : A₀) → B₀ x` as its type of vertices
+- For any two functions `f₀ g₀ : (x : A₀) → B₀ x`, an edge from `f₀` to `g₀` is
+ an element of type
+
+ ```text
+ (x y : A₀) → A₁ x y → B₁ (f₀ x) (g₀ y).
+ ```
+
+The universal property of the dependent product gives that the type of
+[sections](graph-theory.sections-dependent-directed-graphs.md) of `B` is
+[equivalent](foundation-core.equivalences.md) to the type of morphisms from the
+[terminal directed graph](graph-theory.terminal-directed-graphs.md) into
+`Π A B`, which is in turn equivalent to the type of vertices `f₀` of the
+dependent product `Π A B` equipped with a loop `(Π A B)₁ f f`. Indeed, this data
+consists of:
+
+- A map `f₀ : A₀ → B₀`
+- A family of maps `f₁ : (x y : A₀) → A₁ x y → B₁ (f₀ x) (f₀ y)`,
+
+as expected for the type of sections of a dependent directed graph.
+
+## Definitions
+
+### The dependent product of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Directed-Graph l1 l2)
+ (B : Dependent-Directed-Graph l3 l4 A)
+ where
+
+ vertex-Π-Directed-Graph : UU (l1 ⊔ l3)
+ vertex-Π-Directed-Graph =
+ (x : vertex-Directed-Graph A) → vertex-Dependent-Directed-Graph B x
+
+ edge-Π-Directed-Graph :
+ (f g : vertex-Π-Directed-Graph) → UU (l1 ⊔ l2 ⊔ l4)
+ edge-Π-Directed-Graph f g =
+ (x y : vertex-Directed-Graph A) →
+ (e : edge-Directed-Graph A x y) →
+ edge-Dependent-Directed-Graph B {x} {y} e (f x) (g y)
+
+ Π-Directed-Graph : Directed-Graph (l1 ⊔ l3) (l1 ⊔ l2 ⊔ l4)
+ pr1 Π-Directed-Graph = vertex-Π-Directed-Graph
+ pr2 Π-Directed-Graph = edge-Π-Directed-Graph
+```
+
+## Properties
+
+### The dependent product of directed graphs satisfies the universal property of the dependent product
+
+#### The evaluation of a morphism into a dependent product of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Directed-Graph l1 l2) (B : Dependent-Directed-Graph l3 l4 A)
+ (C : Directed-Graph l5 l6)
+ (f : hom-Directed-Graph C (Π-Directed-Graph A B))
+ where
+
+ vertex-ev-section-Π-Directed-Graph :
+ (x : vertex-product-Directed-Graph C A) →
+ vertex-Dependent-Directed-Graph B (pr2 x)
+ vertex-ev-section-Π-Directed-Graph (c , a) =
+ vertex-hom-Directed-Graph C (Π-Directed-Graph A B) f c a
+
+ edge-ev-section-Π-Directed-Graph :
+ {x y : vertex-product-Directed-Graph C A} →
+ (e : edge-product-Directed-Graph C A x y) →
+ edge-Dependent-Directed-Graph B
+ ( edge-pr2-product-Directed-Graph C A e)
+ ( vertex-ev-section-Π-Directed-Graph x)
+ ( vertex-ev-section-Π-Directed-Graph y)
+ edge-ev-section-Π-Directed-Graph (d , e) =
+ edge-hom-Directed-Graph C (Π-Directed-Graph A B) f d _ _ e
+
+ ev-section-Π-Directed-Graph :
+ section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B))
+ pr1 ev-section-Π-Directed-Graph = vertex-ev-section-Π-Directed-Graph
+ pr2 ev-section-Π-Directed-Graph = edge-ev-section-Π-Directed-Graph
+```
+
+#### Uncurrying a morphism from a cartesian product into a directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Directed-Graph l1 l2) (B : Dependent-Directed-Graph l3 l4 A)
+ (C : Directed-Graph l5 l6)
+ (f :
+ section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B)))
+ where
+
+ vertex-uncurry-section-product-Directed-Graph :
+ vertex-Directed-Graph C → vertex-Π-Directed-Graph A B
+ vertex-uncurry-section-product-Directed-Graph c a =
+ vertex-section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B))
+ ( f)
+ ( c , a)
+
+ edge-uncurry-section-product-Directed-Graph :
+ (x y : vertex-Directed-Graph C) →
+ edge-Directed-Graph C x y →
+ edge-Π-Directed-Graph A B
+ ( vertex-uncurry-section-product-Directed-Graph x)
+ ( vertex-uncurry-section-product-Directed-Graph y)
+ edge-uncurry-section-product-Directed-Graph c c' d a a' e =
+ edge-section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B))
+ ( f)
+ ( d , e)
+
+ uncurry-section-product-Directed-Graph :
+ hom-Directed-Graph C (Π-Directed-Graph A B)
+ pr1 uncurry-section-product-Directed-Graph =
+ vertex-uncurry-section-product-Directed-Graph
+ pr2 uncurry-section-product-Directed-Graph =
+ edge-uncurry-section-product-Directed-Graph
+```
+
+#### The equivalence of the adjunction between products and dependent products of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Directed-Graph l1 l2) (B : Dependent-Directed-Graph l3 l4 A)
+ (C : Directed-Graph l5 l6)
+ where
+
+ htpy-is-section-uncurry-section-product-Directed-Graph :
+ ( f :
+ section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B))) →
+ htpy-section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B))
+ ( ev-section-Π-Directed-Graph A B C
+ ( uncurry-section-product-Directed-Graph A B C f))
+ ( f)
+ htpy-is-section-uncurry-section-product-Directed-Graph f =
+ refl-htpy-section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B))
+ ( f)
+
+ is-section-uncurry-section-product-Directed-Graph :
+ is-section
+ ( ev-section-Π-Directed-Graph A B C)
+ ( uncurry-section-product-Directed-Graph A B C)
+ is-section-uncurry-section-product-Directed-Graph f =
+ eq-htpy-section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B))
+ ( ev-section-Π-Directed-Graph A B C
+ ( uncurry-section-product-Directed-Graph A B C f))
+ ( f)
+ ( htpy-is-section-uncurry-section-product-Directed-Graph f)
+
+ htpy-is-retraction-uncurry-section-product-Directed-Graph :
+ (f : hom-Directed-Graph C (Π-Directed-Graph A B)) →
+ htpy-hom-Directed-Graph
+ ( C)
+ ( Π-Directed-Graph A B)
+ ( uncurry-section-product-Directed-Graph A B C
+ ( ev-section-Π-Directed-Graph A B C f))
+ ( f)
+ htpy-is-retraction-uncurry-section-product-Directed-Graph f =
+ refl-htpy-hom-Directed-Graph C (Π-Directed-Graph A B) f
+
+ is-retraction-uncurry-section-product-Directed-Graph :
+ is-retraction
+ ( ev-section-Π-Directed-Graph A B C)
+ ( uncurry-section-product-Directed-Graph A B C)
+ is-retraction-uncurry-section-product-Directed-Graph f =
+ eq-htpy-hom-Directed-Graph
+ ( C)
+ ( Π-Directed-Graph A B)
+ ( uncurry-section-product-Directed-Graph A B C
+ ( ev-section-Π-Directed-Graph A B C f))
+ ( f)
+ ( htpy-is-retraction-uncurry-section-product-Directed-Graph f)
+
+ is-equiv-ev-section-Π-Directed-Graph :
+ is-equiv (ev-section-Π-Directed-Graph A B C)
+ is-equiv-ev-section-Π-Directed-Graph =
+ is-equiv-is-invertible
+ ( uncurry-section-product-Directed-Graph A B C)
+ ( is-section-uncurry-section-product-Directed-Graph)
+ ( is-retraction-uncurry-section-product-Directed-Graph)
+
+ ev-equiv-hom-Π-Directed-Graph :
+ hom-Directed-Graph C (Π-Directed-Graph A B) ≃
+ section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( pr2-product-Directed-Graph C A)
+ ( B))
+ pr1 ev-equiv-hom-Π-Directed-Graph =
+ ev-section-Π-Directed-Graph A B C
+ pr2 ev-equiv-hom-Π-Directed-Graph =
+ is-equiv-ev-section-Π-Directed-Graph
+```
+
+## See also
+
+- [dependent sums of directed graphs](graph-theory.dependent-sums-directed-graphs.md)
diff --git a/src/graph-theory/dependent-products-reflexive-graphs.lagda.md b/src/graph-theory/dependent-products-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..8ff497e2b5
--- /dev/null
+++ b/src/graph-theory/dependent-products-reflexive-graphs.lagda.md
@@ -0,0 +1,605 @@
+# Dependent products of reflexive graphs
+
+```agda
+module graph-theory.dependent-products-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-functions
+open import foundation.binary-dependent-identifications
+open import foundation.binary-transport
+open import foundation.commuting-squares-of-identifications
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.equality-dependent-function-types
+open import foundation.equivalences
+open import foundation.function-extensionality
+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.reflexive-relations
+open import foundation.retractions
+open import foundation.sections
+open import foundation.structure-identity-principle
+open import foundation.torsorial-type-families
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import graph-theory.base-change-dependent-reflexive-graphs
+open import graph-theory.cartesian-products-reflexive-graphs
+open import graph-theory.dependent-products-directed-graphs
+open import graph-theory.dependent-reflexive-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+open import graph-theory.morphisms-reflexive-graphs
+open import graph-theory.reflexive-graphs
+open import graph-theory.sections-dependent-reflexive-graphs
+```
+
+
+
+## Idea
+
+Given a [dependent reflexive graph](graph-theory.dependent-reflexive-graphs.md)
+`B` over a [reflexive graphs](graph-theory.reflexive-graphs.md) `A`, the
+{{#concept "dependent product" Disambiguation="reflexive graph" agda=Π-Reflexive-Graph}}
+`Π A B` is the reflexive graph that satisfies the universal property
+
+```text
+ hom X (Π A B) ≃ section (X × A) (pr2* B).
+```
+
+Concretely, the reflexive graph `Π A B` has
+
+- The type of [sections](graph-theory.sections-dependent-reflexive-graphs.md)
+ `section A B` as its type of vertices.
+- For any two sections `f g : section A B`, an edge from `f` to `g` is an
+ element of type
+
+ ```text
+ (x y : A₀) (e : A₁ x y) → B₁ e (f₀ x) (g₀ y).
+ ```
+
+- For any section `f : section A B`, the reflexivity edge is given by `f₁`.
+
+The universal property of the dependent product gives that the type of
+[sections](graph-theory.sections-dependent-reflexive-graphs.md) of `B` is
+[equivalent](foundation-core.equivalences.md) to the type of morphisms from the
+[terminal reflexive graph](graph-theory.terminal-reflexive-graphs.md) into
+`Π A B`, which is in turn equivalent to the type of vertices `f₀` of the
+dependent product `Π A B`, i.e., the type of sections of `B`.
+
+## Definitions
+
+### The dependent product of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Reflexive-Graph l1 l2)
+ (B : Dependent-Reflexive-Graph l3 l4 A)
+ where
+
+ vertex-Π-Reflexive-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ vertex-Π-Reflexive-Graph =
+ section-Dependent-Reflexive-Graph B
+
+ edge-Π-Reflexive-Graph :
+ (f g : vertex-Π-Reflexive-Graph) → UU (l1 ⊔ l2 ⊔ l4)
+ edge-Π-Reflexive-Graph f g =
+ (x x' : vertex-Reflexive-Graph A) →
+ (e : edge-Reflexive-Graph A x x') →
+ edge-Dependent-Reflexive-Graph B e
+ ( vertex-section-Dependent-Reflexive-Graph B f x)
+ ( vertex-section-Dependent-Reflexive-Graph B g x')
+
+ refl-Π-Reflexive-Graph :
+ (f : vertex-Π-Reflexive-Graph) → edge-Π-Reflexive-Graph f f
+ refl-Π-Reflexive-Graph f _ _ =
+ edge-section-Dependent-Reflexive-Graph B f
+
+ directed-graph-Π-Reflexive-Graph :
+ Directed-Graph (l1 ⊔ l2 ⊔ l3 ⊔ l4) (l1 ⊔ l2 ⊔ l4)
+ pr1 directed-graph-Π-Reflexive-Graph = vertex-Π-Reflexive-Graph
+ pr2 directed-graph-Π-Reflexive-Graph = edge-Π-Reflexive-Graph
+
+ Π-Reflexive-Graph : Reflexive-Graph (l1 ⊔ l2 ⊔ l3 ⊔ l4) (l1 ⊔ l2 ⊔ l4)
+ pr1 Π-Reflexive-Graph = directed-graph-Π-Reflexive-Graph
+ pr2 Π-Reflexive-Graph = refl-Π-Reflexive-Graph
+```
+
+## Properties
+
+### The dependent product of reflexive graphs satisfies the universal property of the dependent product
+
+#### The evaluation of a morphism into a dependent product of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Reflexive-Graph l1 l2) (B : Dependent-Reflexive-Graph l3 l4 A)
+ (C : Reflexive-Graph l5 l6)
+ (f : hom-Reflexive-Graph C (Π-Reflexive-Graph A B))
+ where
+
+ vertex-ev-section-Π-Reflexive-Graph :
+ (x : vertex-product-Reflexive-Graph C A) →
+ vertex-Dependent-Reflexive-Graph B (pr2 x)
+ vertex-ev-section-Π-Reflexive-Graph (c , a) =
+ vertex-section-Dependent-Reflexive-Graph B
+ ( vertex-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f c)
+ ( a)
+
+ edge-ev-section-Π-Reflexive-Graph :
+ {x x' : vertex-product-Reflexive-Graph C A}
+ (e : edge-product-Reflexive-Graph C A x x') →
+ edge-Dependent-Reflexive-Graph B
+ ( pr2 e)
+ ( vertex-ev-section-Π-Reflexive-Graph x)
+ ( vertex-ev-section-Π-Reflexive-Graph x')
+ edge-ev-section-Π-Reflexive-Graph (d , e) =
+ edge-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f d _ _ e
+
+ refl-ev-section-Π-Reflexive-Graph :
+ (x : vertex-product-Reflexive-Graph C A) →
+ edge-ev-section-Π-Reflexive-Graph (refl-product-Reflexive-Graph C A x) =
+ refl-Dependent-Reflexive-Graph B (vertex-ev-section-Π-Reflexive-Graph x)
+ refl-ev-section-Π-Reflexive-Graph (x , y) =
+ ( htpy-eq
+ ( htpy-eq
+ ( htpy-eq (refl-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f x) y)
+ ( y))
+ ( refl-Reflexive-Graph A y)) ∙
+ ( refl-section-Dependent-Reflexive-Graph B
+ ( vertex-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f x)
+ ( y))
+
+ section-dependent-directed-graph-ev-section-Π-Reflexive-Graph :
+ section-dependent-directed-graph-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ pr1 section-dependent-directed-graph-ev-section-Π-Reflexive-Graph =
+ vertex-ev-section-Π-Reflexive-Graph
+ pr2 section-dependent-directed-graph-ev-section-Π-Reflexive-Graph =
+ edge-ev-section-Π-Reflexive-Graph
+
+ ev-section-Π-Reflexive-Graph :
+ section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ pr1 ev-section-Π-Reflexive-Graph =
+ section-dependent-directed-graph-ev-section-Π-Reflexive-Graph
+ pr2 ev-section-Π-Reflexive-Graph =
+ refl-ev-section-Π-Reflexive-Graph
+```
+
+#### Uncurrying a morphism from a cartesian product into a reflexive graph
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Reflexive-Graph l1 l2) (B : Dependent-Reflexive-Graph l3 l4 A)
+ (C : Reflexive-Graph l5 l6)
+ (f :
+ section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B)))
+ where
+
+ module _
+ (x : vertex-Reflexive-Graph C)
+ where
+
+ vertex-vertex-uncurry-section-product-Reflexive-Graph :
+ (y : vertex-Reflexive-Graph A) → vertex-Dependent-Reflexive-Graph B y
+ vertex-vertex-uncurry-section-product-Reflexive-Graph y =
+ vertex-section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ ( f)
+ ( x , y)
+
+ edge-vertex-uncurry-section-product-Reflexive-Graph :
+ {y y' : vertex-Reflexive-Graph A} (e : edge-Reflexive-Graph A y y') →
+ edge-Dependent-Reflexive-Graph B e
+ ( vertex-vertex-uncurry-section-product-Reflexive-Graph y)
+ ( vertex-vertex-uncurry-section-product-Reflexive-Graph y')
+ edge-vertex-uncurry-section-product-Reflexive-Graph e =
+ edge-section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ ( f)
+ ( refl-Reflexive-Graph C x , e)
+
+ refl-vertex-uncurry-section-product-Reflexive-Graph :
+ (y : vertex-Reflexive-Graph A) →
+ edge-vertex-uncurry-section-product-Reflexive-Graph
+ ( refl-Reflexive-Graph A y) =
+ refl-Dependent-Reflexive-Graph B
+ ( vertex-vertex-uncurry-section-product-Reflexive-Graph y)
+ refl-vertex-uncurry-section-product-Reflexive-Graph y =
+ refl-section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ ( f)
+ ( x , y)
+
+ section-dependent-directed-graph-vertex-uncurry-section-product-Reflexive-Graph :
+ section-dependent-directed-graph-Dependent-Reflexive-Graph B
+ pr1
+ section-dependent-directed-graph-vertex-uncurry-section-product-Reflexive-Graph =
+ vertex-vertex-uncurry-section-product-Reflexive-Graph
+ pr2
+ section-dependent-directed-graph-vertex-uncurry-section-product-Reflexive-Graph =
+ edge-vertex-uncurry-section-product-Reflexive-Graph
+
+ vertex-uncurry-section-product-Reflexive-Graph :
+ vertex-Reflexive-Graph C → vertex-Π-Reflexive-Graph A B
+ pr1 (vertex-uncurry-section-product-Reflexive-Graph x) =
+ section-dependent-directed-graph-vertex-uncurry-section-product-Reflexive-Graph
+ x
+ pr2 (vertex-uncurry-section-product-Reflexive-Graph x) =
+ refl-vertex-uncurry-section-product-Reflexive-Graph x
+
+ edge-uncurry-section-product-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph C} (d : edge-Reflexive-Graph C x x') →
+ edge-Π-Reflexive-Graph A B
+ ( vertex-uncurry-section-product-Reflexive-Graph x)
+ ( vertex-uncurry-section-product-Reflexive-Graph x')
+ edge-uncurry-section-product-Reflexive-Graph d y y' e =
+ edge-section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ ( f)
+ ( d , e)
+
+ refl-uncurry-section-product-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph C) →
+ edge-uncurry-section-product-Reflexive-Graph (refl-Reflexive-Graph C x) =
+ refl-Π-Reflexive-Graph A B
+ ( vertex-uncurry-section-product-Reflexive-Graph x)
+ refl-uncurry-section-product-Reflexive-Graph x =
+ refl
+
+ hom-directed-graph-uncurry-section-product-Reflexive-Graph :
+ hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph C)
+ ( directed-graph-Π-Reflexive-Graph A B)
+ pr1 hom-directed-graph-uncurry-section-product-Reflexive-Graph =
+ vertex-uncurry-section-product-Reflexive-Graph
+ pr2 hom-directed-graph-uncurry-section-product-Reflexive-Graph _ _ =
+ edge-uncurry-section-product-Reflexive-Graph
+
+ uncurry-section-product-Reflexive-Graph :
+ hom-Reflexive-Graph C (Π-Reflexive-Graph A B)
+ pr1 uncurry-section-product-Reflexive-Graph =
+ hom-directed-graph-uncurry-section-product-Reflexive-Graph
+ pr2 uncurry-section-product-Reflexive-Graph =
+ refl-uncurry-section-product-Reflexive-Graph
+```
+
+#### The equivalence of the adjunction between products and dependent products of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Reflexive-Graph l1 l2) (B : Dependent-Reflexive-Graph l3 l4 A)
+ (C : Reflexive-Graph l5 l6)
+ where
+
+ htpy-is-section-uncurry-section-product-Reflexive-Graph :
+ ( f :
+ section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))) →
+ htpy-section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ ( ev-section-Π-Reflexive-Graph A B C
+ ( uncurry-section-product-Reflexive-Graph A B C f))
+ ( f)
+ pr1 (pr1 (htpy-is-section-uncurry-section-product-Reflexive-Graph f)) =
+ refl-htpy
+ pr2 (pr1 (htpy-is-section-uncurry-section-product-Reflexive-Graph f)) =
+ refl-htpy
+ pr2 (htpy-is-section-uncurry-section-product-Reflexive-Graph f) x =
+ inv (right-unit ∙ ap-id _)
+
+ is-section-uncurry-section-product-Reflexive-Graph :
+ is-section
+ ( ev-section-Π-Reflexive-Graph A B C)
+ ( uncurry-section-product-Reflexive-Graph A B C)
+ is-section-uncurry-section-product-Reflexive-Graph f =
+ eq-htpy-section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ ( ev-section-Π-Reflexive-Graph A B C
+ ( uncurry-section-product-Reflexive-Graph A B C f))
+ ( f)
+ ( htpy-is-section-uncurry-section-product-Reflexive-Graph f)
+
+ htpy-hom-Π-Reflexive-Graph :
+ (f g : hom-Reflexive-Graph C (Π-Reflexive-Graph A B)) →
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ htpy-hom-Π-Reflexive-Graph f g =
+ Σ ( Σ ( (x : vertex-Reflexive-Graph C) →
+ htpy-section-Dependent-Reflexive-Graph B
+ ( vertex-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f x)
+ ( vertex-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) g x))
+ ( λ h₀ →
+ (x x' : vertex-Reflexive-Graph C)
+ (d : edge-Reflexive-Graph C x x')
+ (y y' : vertex-Reflexive-Graph A)
+ (e : edge-Reflexive-Graph A y y') →
+ binary-tr
+ ( edge-Dependent-Reflexive-Graph B e)
+ ( pr1 (pr1 (h₀ x)) y)
+ ( pr1 (pr1 (h₀ x')) y')
+ ( edge-hom-Reflexive-Graph C
+ ( Π-Reflexive-Graph A B)
+ ( f)
+ ( d)
+ ( y)
+ ( y')
+ ( e)) =
+ edge-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) g d y y' e))
+ ( λ h →
+ (x : vertex-Reflexive-Graph C)
+ (y y' : vertex-Reflexive-Graph A) (e : edge-Reflexive-Graph A y y') →
+ coherence-square-identifications
+ ( ap
+ ( binary-tr
+ ( edge-Dependent-Reflexive-Graph B e)
+ ( pr1 (pr1 (pr1 h x)) y)
+ ( pr1 (pr1 (pr1 h x)) y'))
+ ( htpy-eq
+ ( htpy-eq
+ ( htpy-eq
+ ( refl-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f x)
+ ( y))
+ ( y'))
+ ( e)))
+ ( pr2 h x x (refl-Reflexive-Graph C x) y y' e)
+ ( pr2 (pr1 (pr1 h x)) e)
+ ( htpy-eq
+ ( htpy-eq
+ ( htpy-eq
+ ( refl-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) g x)
+ ( y))
+ ( y'))
+ ( e)))
+
+ refl-htpy-hom-Π-Reflexive-Graph :
+ (f : hom-Reflexive-Graph C (Π-Reflexive-Graph A B)) →
+ htpy-hom-Π-Reflexive-Graph f f
+ pr1 (pr1 (refl-htpy-hom-Π-Reflexive-Graph f)) x =
+ refl-htpy-section-Dependent-Reflexive-Graph B
+ ( vertex-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f x)
+ pr2 (pr1 (refl-htpy-hom-Π-Reflexive-Graph f)) x x' d y y' e = refl
+ pr2 (refl-htpy-hom-Π-Reflexive-Graph f) x y y' e =
+ inv (right-unit ∙ ap-id _)
+
+ abstract
+ is-torsorial-htpy-hom-Π-Reflexive-Graph :
+ (f : hom-Reflexive-Graph C (Π-Reflexive-Graph A B)) →
+ is-torsorial (htpy-hom-Π-Reflexive-Graph f)
+ is-torsorial-htpy-hom-Π-Reflexive-Graph f =
+ is-torsorial-Eq-structure
+ ( is-torsorial-Eq-structure
+ ( is-torsorial-Eq-Π
+ ( λ x →
+ is-torsorial-htpy-section-Dependent-Reflexive-Graph B
+ ( vertex-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f x)))
+ ( ( λ x → vertex-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f x) ,
+ ( λ x → refl-htpy-section-Dependent-Reflexive-Graph B _))
+ ( is-torsorial-Eq-Π
+ ( λ x →
+ is-torsorial-Eq-Π
+ ( λ x' →
+ is-torsorial-Eq-Π
+ ( λ d →
+ is-torsorial-Eq-Π
+ ( λ y →
+ is-torsorial-Eq-Π
+ ( λ y' →
+ is-torsorial-Eq-Π
+ ( λ e →
+ is-torsorial-Id _))))))))
+ ( ( ( λ x → vertex-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f x) ,
+ ( λ x x' d y y' e → _)) ,
+ ( λ x → refl-htpy-section-Dependent-Reflexive-Graph B _) ,
+ ( λ x x' d y y' e → refl))
+ ( is-torsorial-Eq-Π
+ ( λ x →
+ is-contr-equiv
+ ( Σ ( (y y' : vertex-Reflexive-Graph A)
+ (e : edge-Reflexive-Graph A y y') →
+ ( edge-hom-Reflexive-Graph C
+ ( Π-Reflexive-Graph A B)
+ ( f)
+ ( refl-Reflexive-Graph C x)
+ ( y)
+ ( y')
+ ( e)) =
+ ( refl-Π-Reflexive-Graph A B
+ ( vertex-hom-Reflexive-Graph C
+ ( Π-Reflexive-Graph A B)
+ ( f)
+ ( x))
+ ( y)
+ ( y')
+ ( e)))
+ ( λ H →
+ (y y' : vertex-Reflexive-Graph A)
+ (e : edge-Reflexive-Graph A y y') →
+ coherence-square-identifications
+ ( ap
+ ( id)
+ ( htpy-eq
+ ( htpy-eq
+ ( htpy-eq
+ ( refl-hom-Reflexive-Graph C
+ ( Π-Reflexive-Graph A B)
+ ( f)
+ ( x))
+ ( y))
+ ( y'))
+ ( e)))
+ ( refl)
+ ( refl)
+ ( H y y' e)))
+ ( equiv-Σ-equiv-base _
+ ( ( equiv-Π-equiv-family
+ ( λ y →
+ ( equiv-Π-equiv-family (λ y' → equiv-funext)) ∘e
+ ( equiv-funext))) ∘e
+ ( equiv-funext)))
+ ( is-torsorial-Eq-Π
+ ( λ y →
+ is-torsorial-Eq-Π
+ ( λ y' → is-torsorial-Eq-Π (λ e → is-torsorial-Id' _))))))
+
+ htpy-eq-hom-Π-Reflexive-Graph :
+ (f g : hom-Reflexive-Graph C (Π-Reflexive-Graph A B)) →
+ f = g → htpy-hom-Π-Reflexive-Graph f g
+ htpy-eq-hom-Π-Reflexive-Graph f .f refl =
+ refl-htpy-hom-Π-Reflexive-Graph f
+
+ abstract
+ is-equiv-htpy-eq-hom-Π-Reflexive-Graph :
+ (f g : hom-Reflexive-Graph C (Π-Reflexive-Graph A B)) →
+ is-equiv (htpy-eq-hom-Π-Reflexive-Graph f g)
+ is-equiv-htpy-eq-hom-Π-Reflexive-Graph f =
+ fundamental-theorem-id
+ ( is-torsorial-htpy-hom-Π-Reflexive-Graph f)
+ ( htpy-eq-hom-Π-Reflexive-Graph f)
+
+ extensionality-hom-Π-Reflexive-Graph :
+ (f g : hom-Reflexive-Graph C (Π-Reflexive-Graph A B)) →
+ (f = g) ≃ htpy-hom-Π-Reflexive-Graph f g
+ pr1 (extensionality-hom-Π-Reflexive-Graph f g) =
+ htpy-eq-hom-Π-Reflexive-Graph f g
+ pr2 (extensionality-hom-Π-Reflexive-Graph f g) =
+ is-equiv-htpy-eq-hom-Π-Reflexive-Graph f g
+
+ eq-htpy-hom-Π-Reflexive-Graph :
+ (f g : hom-Reflexive-Graph C (Π-Reflexive-Graph A B)) →
+ htpy-hom-Π-Reflexive-Graph f g → f = g
+ eq-htpy-hom-Π-Reflexive-Graph f g =
+ map-inv-equiv (extensionality-hom-Π-Reflexive-Graph f g)
+
+ htpy-is-retraction-uncurry-section-product-Reflexive-Graph :
+ (f : hom-Reflexive-Graph C (Π-Reflexive-Graph A B)) →
+ htpy-hom-Π-Reflexive-Graph
+ ( uncurry-section-product-Reflexive-Graph A B C
+ ( ev-section-Π-Reflexive-Graph A B C f))
+ ( f)
+ pr1
+ ( pr1
+ ( pr1
+ ( pr1
+ ( htpy-is-retraction-uncurry-section-product-Reflexive-Graph f))
+ ( x))) =
+ refl-htpy
+ pr2
+ ( pr1
+ ( pr1
+ ( pr1
+ ( htpy-is-retraction-uncurry-section-product-Reflexive-Graph f))
+ ( x)))
+ { y}
+ { y'}
+ ( e) =
+ htpy-eq
+ ( htpy-eq
+ ( htpy-eq
+ ( refl-hom-Reflexive-Graph C (Π-Reflexive-Graph A B) f _)
+ ( y))
+ ( y'))
+ ( e)
+ pr2
+ ( pr1
+ ( pr1
+ ( htpy-is-retraction-uncurry-section-product-Reflexive-Graph f))
+ ( x))
+ ( y) =
+ inv (right-unit ∙ ap-id _)
+ pr2
+ ( pr1
+ ( htpy-is-retraction-uncurry-section-product-Reflexive-Graph f))
+ ( x)
+ ( x')
+ ( d)
+ ( y)
+ ( y')
+ ( e) =
+ refl
+ pr2
+ ( htpy-is-retraction-uncurry-section-product-Reflexive-Graph f)
+ ( x)
+ ( y)
+ ( y')
+ ( e) =
+ refl
+
+ is-retraction-uncurry-section-product-Reflexive-Graph :
+ is-retraction
+ ( ev-section-Π-Reflexive-Graph A B C)
+ ( uncurry-section-product-Reflexive-Graph A B C)
+ is-retraction-uncurry-section-product-Reflexive-Graph f =
+ eq-htpy-hom-Π-Reflexive-Graph
+ ( uncurry-section-product-Reflexive-Graph A B C
+ ( ev-section-Π-Reflexive-Graph A B C f))
+ ( f)
+ ( htpy-is-retraction-uncurry-section-product-Reflexive-Graph f)
+
+ abstract
+ is-equiv-ev-section-Π-Reflexive-Graph :
+ is-equiv (ev-section-Π-Reflexive-Graph A B C)
+ is-equiv-ev-section-Π-Reflexive-Graph =
+ is-equiv-is-invertible
+ ( uncurry-section-product-Reflexive-Graph A B C)
+ ( is-section-uncurry-section-product-Reflexive-Graph)
+ ( is-retraction-uncurry-section-product-Reflexive-Graph)
+
+ ev-equiv-hom-Π-Reflexive-Graph :
+ hom-Reflexive-Graph C (Π-Reflexive-Graph A B) ≃
+ section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( product-Reflexive-Graph C A)
+ ( pr2-product-Reflexive-Graph C A)
+ ( B))
+ pr1 ev-equiv-hom-Π-Reflexive-Graph =
+ ev-section-Π-Reflexive-Graph A B C
+ pr2 ev-equiv-hom-Π-Reflexive-Graph =
+ is-equiv-ev-section-Π-Reflexive-Graph
+```
+
+## See also
+
+- [dependent sums of reflexive graphs](graph-theory.dependent-sums-reflexive-graphs.md)
diff --git a/src/graph-theory/dependent-reflexive-graphs.lagda.md b/src/graph-theory/dependent-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..76136f1504
--- /dev/null
+++ b/src/graph-theory/dependent-reflexive-graphs.lagda.md
@@ -0,0 +1,175 @@
+# Dependent reflexive graphs
+
+```agda
+module graph-theory.dependent-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+Consider a [reflexive graph](graph-theory.reflexive-graphs.md) `A`. A
+{{#concept "dependent reflexive graph" Agda=Dependent-Reflexive-Graph}} `B` over
+`A` consists of:
+
+- A family `B₀ : A₀ → 𝒰` of types as the type family of vertices
+- A family `B₁ : {x y : A₀} → A₁ x y → B₀ x → B₀ y → 𝒰` of
+ [binary relations](foundation.binary-relations.md) between the types of
+ vertices `B₀`, indexed by the type of edges `A₁` in `A`.
+- A family of elements `refl B : (x : A₀) (y : B₀ x) → B₁ (refl A x) y y`
+ witnessing the reflexivity of `B₁` over the reflexivity `refl A` of `A₁`.
+
+To see that this is a sensible definition of dependent reflexive graphs, observe
+that the type of reflexive graphs itself is
+[equivalent](foundation-core.equivalences.md) to the type of dependent reflexive
+graphs over the
+[terminal reflexive graph](graph-theory.terminal-reflexive-graphs.md).
+Furthermore, [graph homomorphisms](graph-theory.morphisms-reflexive-graphs.md)
+into the [universal reflexive graph](graph-theory.universal-reflexive-graph.md)
+are equivalent to dependent reflexive graphs.
+
+Alternatively, a dependent reflexive graph `B` over `A` can be defined by
+
+- A family `B₀ : A₀ → Reflexive-Graph` of reflexive graphs as the type family of
+ vertices
+- A family `B₁ : {x y : A₀} → A₁ x y → (B₀ x)₀ → (B₀ y)₀ → 𝒰`.
+- A [family of equivalences](foundation.families-of-equivalences.md) `refl B :
+ (x : A₀) (y y' : B₀ x) → B₁ (refl A x) y y' ≃ (B₀ x)₁ y y'.
+
+This definition is more closely related to the concept of morphism into the
+universal reflexive graph.
+
+## Definitions
+
+### Dependent reflexive graphs
+
+```agda
+Dependent-Reflexive-Graph :
+ {l1 l2 : Level} (l3 l4 : Level) → Reflexive-Graph l1 l2 →
+ UU (l1 ⊔ l2 ⊔ lsuc l3 ⊔ lsuc l4)
+Dependent-Reflexive-Graph l3 l4 A =
+ Σ ( Dependent-Directed-Graph l3 l4 (directed-graph-Reflexive-Graph A))
+ ( λ B →
+ (x : vertex-Reflexive-Graph A) (y : vertex-Dependent-Directed-Graph B x) →
+ edge-Dependent-Directed-Graph B (refl-Reflexive-Graph A x) y y)
+
+module _
+ {l1 l2 l3 l4 : Level} {A : Reflexive-Graph l1 l2}
+ (B : Dependent-Reflexive-Graph l3 l4 A)
+ where
+
+ dependent-directed-graph-Dependent-Reflexive-Graph :
+ Dependent-Directed-Graph l3 l4 (directed-graph-Reflexive-Graph A)
+ dependent-directed-graph-Dependent-Reflexive-Graph = pr1 B
+
+ vertex-Dependent-Reflexive-Graph :
+ vertex-Reflexive-Graph A → UU l3
+ vertex-Dependent-Reflexive-Graph =
+ vertex-Dependent-Directed-Graph
+ dependent-directed-graph-Dependent-Reflexive-Graph
+
+ edge-Dependent-Reflexive-Graph :
+ {x y : vertex-Reflexive-Graph A} →
+ edge-Reflexive-Graph A x y →
+ vertex-Dependent-Reflexive-Graph x →
+ vertex-Dependent-Reflexive-Graph y → UU l4
+ edge-Dependent-Reflexive-Graph =
+ edge-Dependent-Directed-Graph
+ dependent-directed-graph-Dependent-Reflexive-Graph
+
+ refl-Dependent-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph A} (y : vertex-Dependent-Reflexive-Graph x) →
+ edge-Dependent-Reflexive-Graph (refl-Reflexive-Graph A x) y y
+ refl-Dependent-Reflexive-Graph = pr2 B _
+```
+
+### An equivalent definition of dependent reflexive graphs
+
+The second definition of dependent reflexive graphs is more closely equivalent
+to the concept of morphisms into the
+[universal reflexive graph](graph-theory.universal-reflexive-graph.md).
+
+```agda
+Dependent-Reflexive-Graph' :
+ {l1 l2 : Level} (l3 l4 : Level) → Reflexive-Graph l1 l2 →
+ UU (l1 ⊔ l2 ⊔ lsuc l3 ⊔ lsuc l4)
+Dependent-Reflexive-Graph' l3 l4 G =
+ Σ ( Σ ( vertex-Reflexive-Graph G → Reflexive-Graph l3 l4)
+ ( λ H →
+ (x y : vertex-Reflexive-Graph G)
+ (e : edge-Reflexive-Graph G x y) →
+ vertex-Reflexive-Graph (H x) → vertex-Reflexive-Graph (H y) → UU l4))
+ ( λ (H₀ , H₁) →
+ (x : vertex-Reflexive-Graph G)
+ (u v : vertex-Reflexive-Graph (H₀ x)) →
+ H₁ x x (refl-Reflexive-Graph G x) u v ≃
+ edge-Reflexive-Graph (H₀ x) u v)
+```
+
+### Constant dependent reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Reflexive-Graph l1 l2) (B : Reflexive-Graph l3 l4)
+ where
+
+ vertex-constant-Dependent-Reflexive-Graph :
+ vertex-Reflexive-Graph A → UU l3
+ vertex-constant-Dependent-Reflexive-Graph x = vertex-Reflexive-Graph B
+
+ edge-constant-Dependent-Reflexive-Graph :
+ {x y : vertex-Reflexive-Graph A} →
+ edge-Reflexive-Graph A x y →
+ vertex-constant-Dependent-Reflexive-Graph x →
+ vertex-constant-Dependent-Reflexive-Graph y → UU l4
+ edge-constant-Dependent-Reflexive-Graph _ =
+ edge-Reflexive-Graph B
+
+ refl-constant-Dependent-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph A)
+ (y : vertex-constant-Dependent-Reflexive-Graph x) →
+ edge-constant-Dependent-Reflexive-Graph (refl-Reflexive-Graph A x) y y
+ refl-constant-Dependent-Reflexive-Graph _ =
+ refl-Reflexive-Graph B
+
+ constant-Dependent-Reflexive-Graph : Dependent-Reflexive-Graph l3 l4 A
+ pr1 (pr1 constant-Dependent-Reflexive-Graph) =
+ vertex-constant-Dependent-Reflexive-Graph
+ pr2 (pr1 constant-Dependent-Reflexive-Graph) _ _ =
+ edge-constant-Dependent-Reflexive-Graph
+ pr2 constant-Dependent-Reflexive-Graph =
+ refl-constant-Dependent-Reflexive-Graph
+```
+
+### Evaluating dependent reflexive graphs at a point
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G) (x : vertex-Reflexive-Graph G)
+ where
+
+ ev-point-Dependent-Reflexive-Graph : Reflexive-Graph l3 l4
+ pr1 (pr1 ev-point-Dependent-Reflexive-Graph) =
+ vertex-Dependent-Reflexive-Graph H x
+ pr2 (pr1 ev-point-Dependent-Reflexive-Graph) =
+ edge-Dependent-Reflexive-Graph H (refl-Reflexive-Graph G x)
+ pr2 ev-point-Dependent-Reflexive-Graph =
+ refl-Dependent-Reflexive-Graph H
+```
+
+## See also
+
+- The [universal reflexive graph](graph-theory.universal-reflexive-graph.md)
+- [base change of dependent reflexive graphs](graph-theory.base-change-dependent-reflexive-graphs.md)
diff --git a/src/graph-theory/dependent-sums-directed-graphs.lagda.md b/src/graph-theory/dependent-sums-directed-graphs.lagda.md
new file mode 100644
index 0000000000..3c0ab314b5
--- /dev/null
+++ b/src/graph-theory/dependent-sums-directed-graphs.lagda.md
@@ -0,0 +1,119 @@
+# Dependent sums directed graphs
+
+```agda
+module graph-theory.dependent-sums-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import graph-theory.base-change-dependent-directed-graphs
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+open import graph-theory.sections-dependent-directed-graphs
+```
+
+
+
+## Idea
+
+Consider a [dependent directed graph](graph-theory.dependent-directed-graphs.md)
+`H` over a [directed graph](graph-theory.directed-graphs.md) `G`. The
+{{#concept "dependent sum" Disambiguation="directed graphs" Agda=Σ-Directed-Graph}}
+`Σ G H` is the directed graph given by
+
+```text
+ (Σ G H)₀ := Σ G₀ H₀
+ (Σ G H)₁ (x , y) (x' , y') := Σ (e : G₁ x x') (H₁ e y y').
+```
+
+## Definitions
+
+### The dependent sum of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ vertex-Σ-Directed-Graph : UU (l1 ⊔ l3)
+ vertex-Σ-Directed-Graph =
+ Σ (vertex-Directed-Graph G) (vertex-Dependent-Directed-Graph H)
+
+ edge-Σ-Directed-Graph :
+ (x y : vertex-Σ-Directed-Graph) → UU (l2 ⊔ l4)
+ edge-Σ-Directed-Graph (x , y) (x' , y') =
+ Σ ( edge-Directed-Graph G x x')
+ ( λ e → edge-Dependent-Directed-Graph H e y y')
+
+ Σ-Directed-Graph : Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4)
+ pr1 Σ-Directed-Graph = vertex-Σ-Directed-Graph
+ pr2 Σ-Directed-Graph = edge-Σ-Directed-Graph
+```
+
+### The first projection of the dependent sums of directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ vertex-pr1-Σ-Directed-Graph :
+ vertex-Σ-Directed-Graph H → vertex-Directed-Graph G
+ vertex-pr1-Σ-Directed-Graph = pr1
+
+ edge-pr1-Σ-Directed-Graph :
+ {x y : vertex-Σ-Directed-Graph H} →
+ edge-Σ-Directed-Graph H x y →
+ edge-Directed-Graph G
+ ( vertex-pr1-Σ-Directed-Graph x)
+ ( vertex-pr1-Σ-Directed-Graph y)
+ edge-pr1-Σ-Directed-Graph = pr1
+
+ pr1-Σ-Directed-Graph :
+ hom-Directed-Graph (Σ-Directed-Graph H) G
+ pr1 pr1-Σ-Directed-Graph = vertex-pr1-Σ-Directed-Graph
+ pr2 pr1-Σ-Directed-Graph _ _ = edge-pr1-Σ-Directed-Graph
+```
+
+### The second projection of the dependent sums of directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ vertex-pr2-Σ-Directed-Graph :
+ (x : vertex-Σ-Directed-Graph H) →
+ vertex-Dependent-Directed-Graph H (vertex-pr1-Σ-Directed-Graph H x)
+ vertex-pr2-Σ-Directed-Graph = pr2
+
+ edge-pr2-Σ-Directed-Graph :
+ {x y : vertex-Σ-Directed-Graph H}
+ (e : edge-Σ-Directed-Graph H x y) →
+ edge-Dependent-Directed-Graph H
+ ( edge-pr1-Σ-Directed-Graph H e)
+ ( vertex-pr2-Σ-Directed-Graph x)
+ ( vertex-pr2-Σ-Directed-Graph y)
+ edge-pr2-Σ-Directed-Graph = pr2
+
+ pr2-Σ-Directed-Graph :
+ section-Dependent-Directed-Graph
+ ( base-change-Dependent-Directed-Graph
+ ( Σ-Directed-Graph H)
+ ( pr1-Σ-Directed-Graph H)
+ ( H))
+ pr1 pr2-Σ-Directed-Graph = vertex-pr2-Σ-Directed-Graph
+ pr2 pr2-Σ-Directed-Graph = edge-pr2-Σ-Directed-Graph
+```
+
+## See also
+
+- [Dependent product directed graphs](graph-theory.dependent-products-directed-graphs.md)
diff --git a/src/graph-theory/dependent-sums-reflexive-graphs.lagda.md b/src/graph-theory/dependent-sums-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..f8b5131441
--- /dev/null
+++ b/src/graph-theory/dependent-sums-reflexive-graphs.lagda.md
@@ -0,0 +1,240 @@
+# Dependent sums reflexive graphs
+
+```agda
+module graph-theory.dependent-sums-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.identity-types
+open import foundation.structure-identity-principle
+open import foundation.type-arithmetic-dependent-pair-types
+open import foundation.universe-levels
+
+open import graph-theory.base-change-dependent-reflexive-graphs
+open import graph-theory.dependent-reflexive-graphs
+open import graph-theory.dependent-sums-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.discrete-dependent-reflexive-graphs
+open import graph-theory.discrete-reflexive-graphs
+open import graph-theory.morphisms-directed-graphs
+open import graph-theory.morphisms-reflexive-graphs
+open import graph-theory.reflexive-graphs
+open import graph-theory.sections-dependent-directed-graphs
+open import graph-theory.sections-dependent-reflexive-graphs
+```
+
+
+
+## Idea
+
+Consider a
+[dependent reflexive graph](graph-theory.dependent-reflexive-graphs.md) `H` over
+a [reflexive graph](graph-theory.reflexive-graphs.md) `G`. The
+{{#concept "dependent sum" Disambiguation="reflexive graphs" Agda=Σ-Reflexive-Graph}}
+`Σ G H` is the reflexive graph given by
+
+```text
+ (Σ G H)₀ := Σ G₀ H₀
+ (Σ G H)₁ (x , y) (x' , y') := Σ (e : G₁ x x') (H₁ e y y')
+ refl (Σ G H) (x , y) := (refl G x , refl H y).
+```
+
+## Definitions
+
+### The dependent sum of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ where
+
+ directed-graph-Σ-Reflexive-Graph :
+ Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4)
+ directed-graph-Σ-Reflexive-Graph =
+ Σ-Directed-Graph (dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ vertex-Σ-Reflexive-Graph : UU (l1 ⊔ l3)
+ vertex-Σ-Reflexive-Graph =
+ vertex-Directed-Graph directed-graph-Σ-Reflexive-Graph
+
+ edge-Σ-Reflexive-Graph :
+ (x y : vertex-Σ-Reflexive-Graph) → UU (l2 ⊔ l4)
+ edge-Σ-Reflexive-Graph =
+ edge-Directed-Graph directed-graph-Σ-Reflexive-Graph
+
+ refl-Σ-Reflexive-Graph :
+ (x : vertex-Σ-Reflexive-Graph) → edge-Σ-Reflexive-Graph x x
+ pr1 (refl-Σ-Reflexive-Graph (x , y)) = refl-Reflexive-Graph G x
+ pr2 (refl-Σ-Reflexive-Graph (x , y)) = refl-Dependent-Reflexive-Graph H y
+
+ Σ-Reflexive-Graph : Reflexive-Graph (l1 ⊔ l3) (l2 ⊔ l4)
+ pr1 Σ-Reflexive-Graph = directed-graph-Σ-Reflexive-Graph
+ pr2 Σ-Reflexive-Graph = refl-Σ-Reflexive-Graph
+```
+
+### The first projection of the dependent sums of reflexive graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ where
+
+ hom-directed-graph-pr1-Σ-Reflexive-Graph :
+ hom-Directed-Graph
+ ( directed-graph-Σ-Reflexive-Graph H)
+ ( directed-graph-Reflexive-Graph G)
+ hom-directed-graph-pr1-Σ-Reflexive-Graph =
+ pr1-Σ-Directed-Graph (dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ vertex-pr1-Σ-Reflexive-Graph :
+ vertex-Σ-Reflexive-Graph H → vertex-Reflexive-Graph G
+ vertex-pr1-Σ-Reflexive-Graph =
+ vertex-hom-Directed-Graph
+ ( directed-graph-Σ-Reflexive-Graph H)
+ ( directed-graph-Reflexive-Graph G)
+ ( hom-directed-graph-pr1-Σ-Reflexive-Graph)
+
+ edge-pr1-Σ-Reflexive-Graph :
+ {x y : vertex-Σ-Reflexive-Graph H} →
+ edge-Σ-Reflexive-Graph H x y →
+ edge-Reflexive-Graph G
+ ( vertex-pr1-Σ-Reflexive-Graph x)
+ ( vertex-pr1-Σ-Reflexive-Graph y)
+ edge-pr1-Σ-Reflexive-Graph =
+ edge-hom-Directed-Graph
+ ( directed-graph-Σ-Reflexive-Graph H)
+ ( directed-graph-Reflexive-Graph G)
+ ( hom-directed-graph-pr1-Σ-Reflexive-Graph)
+
+ refl-pr1-Σ-Reflexive-Graph :
+ (x : vertex-Σ-Reflexive-Graph H) →
+ edge-pr1-Σ-Reflexive-Graph (refl-Σ-Reflexive-Graph H x) =
+ refl-Reflexive-Graph G (vertex-pr1-Σ-Reflexive-Graph x)
+ refl-pr1-Σ-Reflexive-Graph x = refl
+
+ pr1-Σ-Reflexive-Graph : hom-Reflexive-Graph (Σ-Reflexive-Graph H) G
+ pr1 pr1-Σ-Reflexive-Graph = hom-directed-graph-pr1-Σ-Reflexive-Graph
+ pr2 pr1-Σ-Reflexive-Graph = refl-pr1-Σ-Reflexive-Graph
+```
+
+### The second projection of the dependent sums of reflexive graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ where
+
+ section-dependent-directed-graph-pr2-Σ-Reflexive-Graph :
+ section-dependent-directed-graph-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( Σ-Reflexive-Graph H)
+ ( pr1-Σ-Reflexive-Graph H)
+ ( H))
+ section-dependent-directed-graph-pr2-Σ-Reflexive-Graph =
+ pr2-Σ-Directed-Graph (dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ vertex-pr2-Σ-Reflexive-Graph :
+ (x : vertex-Σ-Reflexive-Graph H) →
+ vertex-base-change-Dependent-Reflexive-Graph
+ ( Σ-Reflexive-Graph H)
+ ( pr1-Σ-Reflexive-Graph H)
+ ( H)
+ ( x)
+ vertex-pr2-Σ-Reflexive-Graph =
+ vertex-section-dependent-directed-graph-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( Σ-Reflexive-Graph H)
+ ( pr1-Σ-Reflexive-Graph H)
+ ( H))
+ ( section-dependent-directed-graph-pr2-Σ-Reflexive-Graph)
+
+ edge-pr2-Σ-Reflexive-Graph :
+ {x y : vertex-Σ-Reflexive-Graph H}
+ (e : edge-Σ-Reflexive-Graph H x y) →
+ edge-base-change-Dependent-Reflexive-Graph
+ ( Σ-Reflexive-Graph H)
+ ( pr1-Σ-Reflexive-Graph H)
+ ( H)
+ ( e)
+ ( vertex-pr2-Σ-Reflexive-Graph x)
+ ( vertex-pr2-Σ-Reflexive-Graph y)
+ edge-pr2-Σ-Reflexive-Graph =
+ edge-section-dependent-directed-graph-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( Σ-Reflexive-Graph H)
+ ( pr1-Σ-Reflexive-Graph H)
+ ( H))
+ ( section-dependent-directed-graph-pr2-Σ-Reflexive-Graph)
+
+ refl-pr2-Σ-Reflexive-Graph :
+ (x : vertex-Σ-Reflexive-Graph H) →
+ edge-pr2-Σ-Reflexive-Graph (refl-Σ-Reflexive-Graph H x) =
+ refl-Dependent-Reflexive-Graph H (vertex-pr2-Σ-Reflexive-Graph x)
+ refl-pr2-Σ-Reflexive-Graph x = refl
+
+ pr2-Σ-Reflexive-Graph :
+ section-Dependent-Reflexive-Graph
+ ( base-change-Dependent-Reflexive-Graph
+ ( Σ-Reflexive-Graph H)
+ ( pr1-Σ-Reflexive-Graph H)
+ ( H))
+ pr1 pr2-Σ-Reflexive-Graph =
+ section-dependent-directed-graph-pr2-Σ-Reflexive-Graph
+ pr2 pr2-Σ-Reflexive-Graph =
+ refl-pr2-Σ-Reflexive-Graph
+```
+
+## Properties
+
+### Discreteness of dependent sum reflexive graphs
+
+If `G` is a discrete reflexive graph and `H` is a dependent reflexive graph over
+`G`, then `H` is discrete if and only if the
+[dependent sum graph](graph-theory.dependent-sums-reflexive-graphs.md) `Σ G H`
+is a discrete reflexive graph.
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ where
+
+ abstract
+ is-discrete-Σ-is-discrete-Dependent-Reflexive-Graph :
+ is-discrete-Reflexive-Graph G →
+ is-discrete-Dependent-Reflexive-Graph H →
+ is-discrete-Reflexive-Graph (Σ-Reflexive-Graph H)
+ is-discrete-Σ-is-discrete-Dependent-Reflexive-Graph d c (x , y) =
+ is-torsorial-Eq-structure
+ ( d x)
+ ( x , refl-Reflexive-Graph G x)
+ ( c x y)
+
+ abstract
+ is-discrete-is-discrete-Σ-Reflexive-Graph :
+ is-discrete-Reflexive-Graph G →
+ is-discrete-Reflexive-Graph (Σ-Reflexive-Graph H) →
+ is-discrete-Dependent-Reflexive-Graph H
+ is-discrete-is-discrete-Σ-Reflexive-Graph d c x y =
+ is-contr-equiv'
+ ( Σ ( Σ ( vertex-Reflexive-Graph G)
+ ( vertex-Dependent-Reflexive-Graph H))
+ ( λ (x' , y') →
+ Σ ( edge-Reflexive-Graph G x x')
+ ( λ e → edge-Dependent-Reflexive-Graph H e y y')))
+ ( left-unit-law-Σ-is-contr (d x) (x , refl-Reflexive-Graph G x) ∘e
+ interchange-Σ-Σ (λ x' y' e → edge-Dependent-Reflexive-Graph H e y y'))
+ ( c (x , y))
+```
+
+## See also
+
+- [Dependent product reflexive graphs](graph-theory.dependent-products-reflexive-graphs.md)
diff --git a/src/graph-theory/directed-graph-duality.lagda.md b/src/graph-theory/directed-graph-duality.lagda.md
new file mode 100644
index 0000000000..26a89c50fc
--- /dev/null
+++ b/src/graph-theory/directed-graph-duality.lagda.md
@@ -0,0 +1,206 @@
+# Directed graph duality
+
+```agda
+module graph-theory.directed-graph-duality where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.fundamental-theorem-of-identity-types
+open import foundation.identity-types
+open import foundation.retractions
+open import foundation.sections
+open import foundation.structure-identity-principle
+open import foundation.torsorial-type-families
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.dependent-sums-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.equivalences-dependent-directed-graphs
+open import graph-theory.equivalences-directed-graphs
+open import graph-theory.fibers-morphisms-directed-graphs
+open import graph-theory.morphisms-directed-graphs
+```
+
+
+
+## Idea
+
+{{#concept "Directed graph duality" Agda=duality-Directed-Graph}} is an
+[equivalence](foundation-core.equivalences.md) between
+[dependent directed graphs](graph-theory.dependent-directed-graphs.md) over a
+[directed graph](graph-theory.directed-graphs.md) `G` and
+[morphisms of directed graphs](graph-theory.morphisms-directed-graphs.md) into
+`G`. This result is analogous to [type duality](foundation.type-duality.md),
+which asserts that type families over a type `A` are equivalently described as
+maps into `A`.
+
+## Definitions
+
+### The underlying map of the duality theorem for directed graphs
+
+```agda
+module _
+ {l1 l2 : Level} (G : Directed-Graph l1 l2)
+ where
+
+ map-duality-Directed-Graph :
+ {l3 l4 : Level} →
+ Σ (Directed-Graph l3 l4) (λ H → hom-Directed-Graph H G) →
+ Dependent-Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4) G
+ map-duality-Directed-Graph (H , f) = fiber-hom-Directed-Graph H G f
+```
+
+### The inverse map of the duality theorem for directed graphs
+
+```agda
+module _
+ {l1 l2 : Level} (G : Directed-Graph l1 l2)
+ where
+
+ map-inv-duality-Directed-Graph :
+ {l3 l4 : Level} →
+ Dependent-Directed-Graph l3 l4 G →
+ Σ ( Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4)) (λ H → hom-Directed-Graph H G)
+ pr1 (map-inv-duality-Directed-Graph H) = Σ-Directed-Graph H
+ pr2 (map-inv-duality-Directed-Graph H) = pr1-Σ-Directed-Graph H
+```
+
+## Properties
+
+### The directed graph duality theorem
+
+#### Characterization of the identity type of the total space of morphisms into a directed graph
+
+```agda
+module _
+ {l1 l2 : Level} (G : Directed-Graph l1 l2)
+ where
+
+ equiv-total-hom-Directed-Graph :
+ {l3 l4 l5 l6 : Level} →
+ (f : Σ (Directed-Graph l3 l4) (λ H → hom-Directed-Graph H G))
+ (g : Σ (Directed-Graph l5 l6) (λ H → hom-Directed-Graph H G)) →
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ equiv-total-hom-Directed-Graph (H , f) (K , g) =
+ Σ ( equiv-Directed-Graph H K)
+ ( λ e →
+ htpy-hom-Directed-Graph H G
+ ( f)
+ ( comp-hom-Directed-Graph H K G g (hom-equiv-Directed-Graph H K e)))
+
+ id-equiv-total-hom-Directed-Graph :
+ {l3 l4 : Level}
+ (f : Σ (Directed-Graph l3 l4) (λ H → hom-Directed-Graph H G)) →
+ equiv-total-hom-Directed-Graph f f
+ pr1 (id-equiv-total-hom-Directed-Graph (H , f)) = id-equiv-Directed-Graph H
+ pr2 (id-equiv-total-hom-Directed-Graph (H , f)) =
+ right-unit-law-comp-hom-Directed-Graph H G f
+
+ is-torsorial-equiv-total-hom-Directed-Graph :
+ {l3 l4 : Level}
+ (f : Σ (Directed-Graph l3 l4) (λ H → hom-Directed-Graph H G)) →
+ is-torsorial (equiv-total-hom-Directed-Graph {l5 = l3} {l6 = l4} f)
+ is-torsorial-equiv-total-hom-Directed-Graph (H , f) =
+ is-torsorial-Eq-structure
+ ( is-torsorial-equiv-Directed-Graph H)
+ ( H , id-equiv-Directed-Graph H)
+ ( is-torsorial-htpy-hom-Directed-Graph H G f)
+
+ equiv-eq-total-hom-Directed-Graph :
+ {l3 l4 : Level}
+ (f g : Σ (Directed-Graph l3 l4) (λ H → hom-Directed-Graph H G)) →
+ (f = g) → equiv-total-hom-Directed-Graph f g
+ equiv-eq-total-hom-Directed-Graph f .f refl =
+ id-equiv-total-hom-Directed-Graph f
+
+ is-equiv-equiv-eq-total-hom-Directed-Graph :
+ {l3 l4 : Level}
+ (f g : Σ (Directed-Graph l3 l4) (λ H → hom-Directed-Graph H G)) →
+ is-equiv (equiv-eq-total-hom-Directed-Graph f g)
+ is-equiv-equiv-eq-total-hom-Directed-Graph f =
+ fundamental-theorem-id
+ ( is-torsorial-equiv-total-hom-Directed-Graph f)
+ ( equiv-eq-total-hom-Directed-Graph f)
+
+ extensionality-total-hom-Directed-Graph :
+ {l3 l4 : Level}
+ (f g : Σ (Directed-Graph l3 l4) (λ H → hom-Directed-Graph H G)) →
+ (f = g) ≃ equiv-total-hom-Directed-Graph f g
+ pr1 (extensionality-total-hom-Directed-Graph f g) =
+ equiv-eq-total-hom-Directed-Graph f g
+ pr2 (extensionality-total-hom-Directed-Graph f g) =
+ is-equiv-equiv-eq-total-hom-Directed-Graph f g
+
+ eq-equiv-total-hom-Directed-Graph :
+ {l3 l4 : Level}
+ (f g : Σ (Directed-Graph l3 l4) (λ H → hom-Directed-Graph H G)) →
+ equiv-total-hom-Directed-Graph f g → f = g
+ eq-equiv-total-hom-Directed-Graph f g =
+ map-inv-equiv (extensionality-total-hom-Directed-Graph f g)
+```
+
+#### The inverse map of the duality theorem is a retraction
+
+```agda
+module _
+ {l1 l2 : Level} (l3 l4 : Level) (G : Directed-Graph l1 l2)
+ where
+
+ is-retraction-map-inv-duality-Directed-Graph :
+ is-retraction
+ ( map-duality-Directed-Graph G {l1 ⊔ l3} {l2 ⊔ l4})
+ ( map-inv-duality-Directed-Graph G {l1 ⊔ l3} {l2 ⊔ l4})
+ is-retraction-map-inv-duality-Directed-Graph (H , f) =
+ inv
+ ( eq-equiv-total-hom-Directed-Graph G
+ ( H , f)
+ ( map-inv-duality-Directed-Graph G
+ ( map-duality-Directed-Graph G (H , f)))
+ ( ( compute-Σ-fiber-hom-Directed-Graph H G f) ,
+ ( htpy-compute-Σ-fiber-hom-Directed-Graph H G f)))
+```
+
+#### The inverse map of the duality theorem is a section
+
+```agda
+module _
+ {l1 l2 : Level} (l3 l4 : Level) (G : Directed-Graph l1 l2)
+ where
+
+ is-section-map-inv-duality-Directed-Graph :
+ is-section
+ ( map-duality-Directed-Graph G {l1 ⊔ l3} {l2 ⊔ l4})
+ ( map-inv-duality-Directed-Graph G {l1 ⊔ l3} {l2 ⊔ l4})
+ is-section-map-inv-duality-Directed-Graph H =
+ eq-equiv-Dependent-Directed-Graph
+ ( fiber-pr1-Σ-Directed-Graph H)
+ ( H)
+ ( compute-fiber-pr1-Σ-Directed-Graph H)
+```
+
+#### The conclusion of the duality theorem
+
+```agda
+module _
+ {l1 l2 : Level} (l3 l4 : Level) (G : Directed-Graph l1 l2)
+ where
+
+ is-equiv-map-duality-Directed-Graph :
+ is-equiv (map-duality-Directed-Graph G {l1 ⊔ l3} {l2 ⊔ l4})
+ is-equiv-map-duality-Directed-Graph =
+ is-equiv-is-invertible
+ ( map-inv-duality-Directed-Graph G)
+ ( is-section-map-inv-duality-Directed-Graph l3 l4 G)
+ ( is-retraction-map-inv-duality-Directed-Graph l3 l4 G)
+
+ duality-Directed-Graph :
+ Σ (Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4)) (λ H → hom-Directed-Graph H G) ≃
+ Dependent-Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4) G
+ pr1 duality-Directed-Graph = map-duality-Directed-Graph G
+ pr2 duality-Directed-Graph = is-equiv-map-duality-Directed-Graph
+```
diff --git a/src/graph-theory/directed-graph-structures-on-standard-finite-sets.lagda.md b/src/graph-theory/directed-graph-structures-on-standard-finite-sets.lagda.md
index 7bfd1a8c28..79f8ee66f1 100644
--- a/src/graph-theory/directed-graph-structures-on-standard-finite-sets.lagda.md
+++ b/src/graph-theory/directed-graph-structures-on-standard-finite-sets.lagda.md
@@ -22,7 +22,7 @@ open import univalent-combinatorics.standard-finite-types
A
{{#concept "directed graph structure" WD="directed graph" WDID=Q1137726 Agda=structure-directed-graph-Fin}}
on a [standard finite set](univalent-combinatorics.standard-finite-types.md)
-`Fin n` is a [binary type-valued relation](foundation.binary-relations.md)
+`Fin n` is a [binary type valued relation](foundation.binary-relations.md)
```text
Fin n → Fin n → 𝒰.
diff --git a/src/graph-theory/directed-graphs.lagda.md b/src/graph-theory/directed-graphs.lagda.md
index 64a2ceffa7..798b5afeb6 100644
--- a/src/graph-theory/directed-graphs.lagda.md
+++ b/src/graph-theory/directed-graphs.lagda.md
@@ -133,6 +133,10 @@ module equiv {l1 l2 : Level} where
Σ E (λ e → (Id (st e) x) × (Id (tg e) y))
```
+## See also
+
+- [The universal directed graph](graph-theory.universal-directed-graph.md)
+
## External links
- [Digraph](https://ncatlab.org/nlab/show/digraph) at $n$Lab
diff --git a/src/graph-theory/discrete-dependent-reflexive-graphs.lagda.md b/src/graph-theory/discrete-dependent-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..9d43af0730
--- /dev/null
+++ b/src/graph-theory/discrete-dependent-reflexive-graphs.lagda.md
@@ -0,0 +1,75 @@
+# Discrete dependent reflexive graphs
+
+```agda
+module graph-theory.discrete-dependent-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.propositions
+open import foundation.universe-levels
+
+open import graph-theory.dependent-reflexive-graphs
+open import graph-theory.discrete-reflexive-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+A [dependent reflexive graph](graph-theory.dependent-reflexive-graphs.md) `H`
+over a [reflexive graph](graph-theory.reflexive-graphs.md) is said to be
+{{#concept "discrete" Disambiguation="dependent reflexive graph" Agda=is-discrete-Dependent-Reflexive-Graph}}
+if the dependent edge relation
+
+```text
+ H₁ (refl G x) y : H₀ x → Type
+```
+
+is [torsorial](foundation-core.torsorial-type-families.md) for every element
+`y : H₀ x`. That is, the dependent reflexive graph `H` is discrete precisely
+when the reflexive graph
+
+```text
+ ev-point H x
+```
+
+is [discrete](graph-theory.discrete-reflexive-graphs.md) for every vertex
+`x : G₀`. Furthermore, a dependent reflexive graph is discrete precisely when
+the dependent edge relation
+
+```text
+ H₁ e y : H₀ x' → Type
+```
+
+is torsorial for every edge `e : G₁ x x'` and every element `y : H₀ x`.
+
+## Definitions
+
+### The predicate of being a discrete dependent reflexive graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ where
+
+ is-discrete-prop-Dependent-Reflexive-Graph : Prop (l1 ⊔ l3 ⊔ l4)
+ is-discrete-prop-Dependent-Reflexive-Graph =
+ Π-Prop
+ ( vertex-Reflexive-Graph G)
+ ( λ x →
+ is-discrete-prop-Reflexive-Graph
+ ( ev-point-Dependent-Reflexive-Graph H x))
+
+ is-discrete-Dependent-Reflexive-Graph : UU (l1 ⊔ l3 ⊔ l4)
+ is-discrete-Dependent-Reflexive-Graph =
+ type-Prop is-discrete-prop-Dependent-Reflexive-Graph
+
+ is-prop-is-discrete-Dependent-Reflexive-Graph :
+ is-prop is-discrete-Dependent-Reflexive-Graph
+ is-prop-is-discrete-Dependent-Reflexive-Graph =
+ is-prop-type-Prop is-discrete-prop-Dependent-Reflexive-Graph
+```
diff --git a/src/graph-theory/discrete-directed-graphs.lagda.md b/src/graph-theory/discrete-directed-graphs.lagda.md
new file mode 100644
index 0000000000..c3ff8a436b
--- /dev/null
+++ b/src/graph-theory/discrete-directed-graphs.lagda.md
@@ -0,0 +1,171 @@
+# Discrete directed graphs
+
+```agda
+module graph-theory.discrete-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.discrete-binary-relations
+open import foundation.empty-types
+open import foundation.equivalences
+open import foundation.homotopies
+open import foundation.retractions
+open import foundation.sections
+open import foundation.universe-levels
+
+open import foundation-core.identity-types
+open import foundation-core.propositions
+open import foundation-core.torsorial-type-families
+
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+A [directed graph](graph-theory.directed-graphs.md) `G ≐ (V , E)` is said to be
+{{#concept "discrete" Disambiguation="directed graph" Agda=is-discrete-Directed-Graph}}
+if it has no edges. In other words, a directed graph is discrete if it is of the
+form `Δ A`, where `Δ` is the left adjoint to the forgetful functor `(V , E) ↦ V`
+from directed graphs to types.
+
+Recall that [reflexive graphs](graph-theory.reflexive-graphs.md) are said to be
+discrete if the edge relation is
+[torsorial](foundation-core.torsorial-type-families.md). The condition that a
+directed graph is discrete compares to the condition that a reflexive graph is
+discrete in the sense that in both cases discreteness implies initiality of the
+edge relation: The empty relation is the initial relation, while the identity
+relation is the initial reflexive relation.
+
+One may wonder if the torsoriality condition of discreteness shouldn't directly
+carry over to the discreteness condition on directed graphs. Indeed, an earlier
+implementation of discreteness in agda-unimath had this faulty definition.
+However, this leads to examples that are not typically considered discrete.
+Consider, for example, the directed graph with `V := ℕ` the
+[natural numbers](elementary-number-theory.natural-numbers.md) and
+`E m n := (m + 1 = n)` as in
+
+```text
+ 0 ---> 1 ---> 2 ---> ⋯.
+```
+
+This directed graph satisfies the condition that the type family `E m` is
+torsorial for every `m : ℕ`, simply because `E` is a
+[functional correspondence](foundation.functional-correspondences.md). However,
+this graph is not considered discrete since it relates distinct vertices.
+
+## Definitions
+
+### The predicate on graphs of being discrete
+
+```agda
+module _
+ {l1 l2 : Level} (G : Directed-Graph l1 l2)
+ where
+
+ is-discrete-prop-Directed-Graph : Prop (l1 ⊔ l2)
+ is-discrete-prop-Directed-Graph =
+ is-discrete-prop-Relation (edge-Directed-Graph G)
+
+ is-discrete-Directed-Graph : UU (l1 ⊔ l2)
+ is-discrete-Directed-Graph =
+ is-discrete-Relation (edge-Directed-Graph G)
+
+ is-prop-is-discrete-Directed-Graph :
+ is-prop is-discrete-Directed-Graph
+ is-prop-is-discrete-Directed-Graph =
+ is-prop-is-discrete-Relation (edge-Directed-Graph G)
+```
+
+### The standard discrete directed graph
+
+```agda
+module _
+ {l : Level} (A : UU l)
+ where
+
+ discrete-Directed-Graph : Directed-Graph l lzero
+ pr1 discrete-Directed-Graph = A
+ pr2 discrete-Directed-Graph x y = empty
+```
+
+## Properties
+
+### Morphisms from a standard discrete directed graph are maps into vertices
+
+```agda
+module _
+ {l1 l2 l3 : Level} {A : UU l1} (G : Directed-Graph l1 l2)
+ where
+
+ ev-hom-discrete-Directed-Graph :
+ hom-Directed-Graph (discrete-Directed-Graph A) G →
+ A → vertex-Directed-Graph G
+ ev-hom-discrete-Directed-Graph =
+ vertex-hom-Directed-Graph (discrete-Directed-Graph _) G
+
+ map-inv-ev-hom-discrete-Directed-Graph :
+ (A → vertex-Directed-Graph G) →
+ hom-Directed-Graph (discrete-Directed-Graph A) G
+ pr1 (map-inv-ev-hom-discrete-Directed-Graph f) = f
+ pr2 (map-inv-ev-hom-discrete-Directed-Graph f) x y ()
+
+ is-section-map-inv-ev-hom-discrete-Directed-Graph :
+ is-section
+ ( ev-hom-discrete-Directed-Graph)
+ ( map-inv-ev-hom-discrete-Directed-Graph)
+ is-section-map-inv-ev-hom-discrete-Directed-Graph f = refl
+
+ htpy-is-retraction-map-inv-ev-hom-discrete-Directed-Graph :
+ (f : hom-Directed-Graph (discrete-Directed-Graph A) G) →
+ htpy-hom-Directed-Graph
+ ( discrete-Directed-Graph A)
+ ( G)
+ ( map-inv-ev-hom-discrete-Directed-Graph
+ ( ev-hom-discrete-Directed-Graph f))
+ ( f)
+ pr1 (htpy-is-retraction-map-inv-ev-hom-discrete-Directed-Graph f) =
+ refl-htpy
+ pr2 (htpy-is-retraction-map-inv-ev-hom-discrete-Directed-Graph f) x y ()
+
+ is-retraction-map-inv-ev-hom-discrete-Directed-Graph :
+ is-retraction
+ ( ev-hom-discrete-Directed-Graph)
+ ( map-inv-ev-hom-discrete-Directed-Graph)
+ is-retraction-map-inv-ev-hom-discrete-Directed-Graph f =
+ eq-htpy-hom-Directed-Graph
+ ( discrete-Directed-Graph A)
+ ( G)
+ ( map-inv-ev-hom-discrete-Directed-Graph
+ ( ev-hom-discrete-Directed-Graph f))
+ ( f)
+ ( htpy-is-retraction-map-inv-ev-hom-discrete-Directed-Graph f)
+
+ abstract
+ is-equiv-ev-hom-discrete-Directed-Graph :
+ is-equiv ev-hom-discrete-Directed-Graph
+ is-equiv-ev-hom-discrete-Directed-Graph =
+ is-equiv-is-invertible
+ map-inv-ev-hom-discrete-Directed-Graph
+ is-section-map-inv-ev-hom-discrete-Directed-Graph
+ is-retraction-map-inv-ev-hom-discrete-Directed-Graph
+
+ ev-equiv-hom-discrete-Directed-Graph :
+ hom-Directed-Graph (discrete-Directed-Graph A) G ≃
+ (A → vertex-Directed-Graph G)
+ pr1 ev-equiv-hom-discrete-Directed-Graph =
+ ev-hom-discrete-Directed-Graph
+ pr2 ev-equiv-hom-discrete-Directed-Graph =
+ is-equiv-ev-hom-discrete-Directed-Graph
+```
+
+## See also
+
+- [Discrete reflexive graphs](graph-theory.discrete-reflexive-graphs.md)
diff --git a/src/graph-theory/discrete-graphs.lagda.md b/src/graph-theory/discrete-reflexive-graphs.lagda.md
similarity index 52%
rename from src/graph-theory/discrete-graphs.lagda.md
rename to src/graph-theory/discrete-reflexive-graphs.lagda.md
index 4e5a0b8a2a..fc4e4bbffe 100644
--- a/src/graph-theory/discrete-graphs.lagda.md
+++ b/src/graph-theory/discrete-reflexive-graphs.lagda.md
@@ -1,7 +1,7 @@
-# Discrete graphs
+# Discrete reflexive graphs
```agda
-module graph-theory.discrete-graphs where
+module graph-theory.discrete-reflexive-graphs where
```
Imports
@@ -9,7 +9,7 @@ module graph-theory.discrete-graphs where
```agda
open import foundation.contractible-types
open import foundation.dependent-pair-types
-open import foundation.discrete-relations
+open import foundation.discrete-reflexive-relations
open import foundation.universe-levels
open import foundation-core.identity-types
@@ -24,14 +24,15 @@ open import graph-theory.reflexive-graphs
## Idea
-A [directed graph](graph-theory.directed-graphs.md) `G ≐ (V , E)` is said to be
-{{#concept "discrete" Disambiguation="graph" Agda=is-discrete-Graph}} if, for
-every vertex `x : V`, the type family of edges with source `x`, `E x`, is
-[torsorial](foundation-core.torsorial-type-families.md). In other words, if the
-[dependent sum](foundation.dependent-pair-types.md) `Σ (y : V), (E x y)` is
+A [reflexive graph](graph-theory.reflexive-graphs.md) `G ≐ (V , E , r)` is said
+to be
+{{#concept "discrete" Disambiguation="reflexive graph" Agda=is-discrete-Reflexive-Graph}}
+if, for every vertex `x : V`, the type family of edges with source `x`, `E x`,
+is [torsorial](foundation-core.torsorial-type-families.md). In other words, if
+the [dependent sum](foundation.dependent-pair-types.md) `Σ (y : V), (E x y)` is
[contractible](foundation-core.contractible-types.md) for every `x`. The
-{{#concept "standard discrete graph"}} associated to a type `X` is the graph
-whose vertices are elements of `X`, and edges are
+{{#concept "standard discrete graph"}} associated to a type `X` is the reflexive
+graph whose vertices are elements of `X`, and edges are
[identifications](foundation-core.identity-types.md),
```text
@@ -40,23 +41,6 @@ whose vertices are elements of `X`, and edges are
## Definitions
-### The predicate on graphs of being discrete
-
-```agda
-module _
- {l1 l2 : Level} (G : Directed-Graph l1 l2)
- where
-
- is-discrete-prop-Graph : Prop (l1 ⊔ l2)
- is-discrete-prop-Graph = is-discrete-prop-Relation (edge-Directed-Graph G)
-
- is-discrete-Graph : UU (l1 ⊔ l2)
- is-discrete-Graph = type-Prop is-discrete-prop-Graph
-
- is-prop-is-discrete-Graph : is-prop is-discrete-Graph
- is-prop-is-discrete-Graph = is-prop-type-Prop is-discrete-prop-Graph
-```
-
### The predicate on reflexive graphs of being discrete
```agda
@@ -66,7 +50,8 @@ module _
is-discrete-prop-Reflexive-Graph : Prop (l1 ⊔ l2)
is-discrete-prop-Reflexive-Graph =
- is-discrete-prop-Graph (graph-Reflexive-Graph G)
+ is-discrete-prop-Reflexive-Relation
+ ( edge-reflexive-relation-Reflexive-Graph G)
is-discrete-Reflexive-Graph : UU (l1 ⊔ l2)
is-discrete-Reflexive-Graph =
@@ -76,3 +61,8 @@ module _
is-prop-is-discrete-Reflexive-Graph =
is-prop-type-Prop is-discrete-prop-Reflexive-Graph
```
+
+## See also
+
+- [Discrete directed graphs](graph-theory.discrete-directed-graphs.md)
+- [Discrete dependent reflexive graphs](graph-theory.discrete-dependent-reflexive-graphs.md)
diff --git a/src/graph-theory/displayed-large-reflexive-graphs.lagda.md b/src/graph-theory/displayed-large-reflexive-graphs.lagda.md
index 6dbfaa4390..7040f628b1 100644
--- a/src/graph-theory/displayed-large-reflexive-graphs.lagda.md
+++ b/src/graph-theory/displayed-large-reflexive-graphs.lagda.md
@@ -135,10 +135,10 @@ module _
fiber-vertex-reflexive-graph-Displayed-Large-Reflexive-Graph :
Reflexive-Graph (α2 l) (β2 l l)
- pr1 fiber-vertex-reflexive-graph-Displayed-Large-Reflexive-Graph =
+ pr1 (pr1 fiber-vertex-reflexive-graph-Displayed-Large-Reflexive-Graph) =
vertex-Displayed-Large-Reflexive-Graph H x
- pr1 (pr2 fiber-vertex-reflexive-graph-Displayed-Large-Reflexive-Graph) =
+ pr2 (pr1 fiber-vertex-reflexive-graph-Displayed-Large-Reflexive-Graph) =
edge-Displayed-Large-Reflexive-Graph H (refl-Large-Reflexive-Graph G x)
- pr2 (pr2 fiber-vertex-reflexive-graph-Displayed-Large-Reflexive-Graph) =
+ pr2 fiber-vertex-reflexive-graph-Displayed-Large-Reflexive-Graph =
refl-Displayed-Large-Reflexive-Graph H
```
diff --git a/src/graph-theory/equivalences-dependent-directed-graphs.lagda.md b/src/graph-theory/equivalences-dependent-directed-graphs.lagda.md
new file mode 100644
index 0000000000..2876ea23fa
--- /dev/null
+++ b/src/graph-theory/equivalences-dependent-directed-graphs.lagda.md
@@ -0,0 +1,212 @@
+# Equivalences of dependent directed graphs
+
+```agda
+module graph-theory.equivalences-dependent-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equality-dependent-function-types
+open import foundation.equivalences
+open import foundation.families-of-equivalences
+open import foundation.function-types
+open import foundation.fundamental-theorem-of-identity-types
+open import foundation.identity-types
+open import foundation.structure-identity-principle
+open import foundation.torsorial-type-families
+open import foundation.univalence
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.directed-graphs
+```
+
+
+
+## Idea
+
+Consider two
+[dependent directed graphs](graph-theory.dependent-directed-graphs.md) `H` and
+`K` over a [directed graph](graph-theory.directed-graphs.md) `G`. An
+{{#concept "equivalence of dependent directed graphs" Agda=equiv-Dependent-Directed-Graph}}
+from `H` to `K` consists of a
+[family of equivalences](foundation.families-of-equivalences.md)
+
+```text
+ e₀ : {x : G₀} → H₀ x ≃ K₀ x
+```
+
+of vertices, and a family of [equivalences](foundation-core.equivalences.md)
+
+```text
+ e₁ : {x y : G₀} (a : G₁ x y) {y : H₀ x} {y' : H₀ x'} → H₁ a y y' ≃ K₁ a (e₀ y) (e₀ y')
+```
+
+of edges.
+
+## Definitions
+
+### Equivalences of dependent directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ (K : Dependent-Directed-Graph l5 l6 G)
+ where
+
+ equiv-Dependent-Directed-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ equiv-Dependent-Directed-Graph =
+ Σ ( fam-equiv
+ ( vertex-Dependent-Directed-Graph H)
+ ( vertex-Dependent-Directed-Graph K))
+ ( λ e →
+ (x x' : vertex-Directed-Graph G) →
+ (a : edge-Directed-Graph G x x') →
+ (y : vertex-Dependent-Directed-Graph H x)
+ (y' : vertex-Dependent-Directed-Graph H x') →
+ edge-Dependent-Directed-Graph H a y y' ≃
+ edge-Dependent-Directed-Graph K a
+ ( map-equiv (e x) y)
+ ( map-equiv (e x') y'))
+
+ vertex-equiv-equiv-Dependent-Directed-Graph :
+ equiv-Dependent-Directed-Graph →
+ fam-equiv
+ ( vertex-Dependent-Directed-Graph H)
+ ( vertex-Dependent-Directed-Graph K)
+ vertex-equiv-equiv-Dependent-Directed-Graph = pr1
+
+ vertex-equiv-Dependent-Directed-Graph :
+ equiv-Dependent-Directed-Graph →
+ {x : vertex-Directed-Graph G} →
+ vertex-Dependent-Directed-Graph H x →
+ vertex-Dependent-Directed-Graph K x
+ vertex-equiv-Dependent-Directed-Graph e {x} =
+ map-equiv (vertex-equiv-equiv-Dependent-Directed-Graph e x)
+
+ edge-equiv-equiv-Dependent-Directed-Graph :
+ (e : equiv-Dependent-Directed-Graph) →
+ {x x' : vertex-Directed-Graph G}
+ (a : edge-Directed-Graph G x x')
+ (y : vertex-Dependent-Directed-Graph H x)
+ (y' : vertex-Dependent-Directed-Graph H x') →
+ edge-Dependent-Directed-Graph H a y y' ≃
+ edge-Dependent-Directed-Graph K a
+ ( vertex-equiv-Dependent-Directed-Graph e y)
+ ( vertex-equiv-Dependent-Directed-Graph e y')
+ edge-equiv-equiv-Dependent-Directed-Graph e a =
+ pr2 e _ _ a
+
+ edge-equiv-Dependent-Directed-Graph :
+ (e : equiv-Dependent-Directed-Graph) →
+ {x x' : vertex-Directed-Graph G}
+ {a : edge-Directed-Graph G x x'}
+ {y : vertex-Dependent-Directed-Graph H x}
+ {y' : vertex-Dependent-Directed-Graph H x'} →
+ edge-Dependent-Directed-Graph H a y y' →
+ edge-Dependent-Directed-Graph K a
+ ( vertex-equiv-Dependent-Directed-Graph e y)
+ ( vertex-equiv-Dependent-Directed-Graph e y')
+ edge-equiv-Dependent-Directed-Graph e =
+ map-equiv (edge-equiv-equiv-Dependent-Directed-Graph e _ _ _)
+```
+
+### The identity equivalence of a dependent directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ vertex-equiv-id-equiv-Dependent-Directed-Graph :
+ fam-equiv
+ ( vertex-Dependent-Directed-Graph H)
+ ( vertex-Dependent-Directed-Graph H)
+ vertex-equiv-id-equiv-Dependent-Directed-Graph x = id-equiv
+
+ vertex-id-equiv-Dependent-Directed-Graph :
+ {x : vertex-Directed-Graph G} →
+ vertex-Dependent-Directed-Graph H x →
+ vertex-Dependent-Directed-Graph H x
+ vertex-id-equiv-Dependent-Directed-Graph = id
+
+ edge-equiv-id-equiv-Dependent-Directed-Graph :
+ {x x' : vertex-Directed-Graph G}
+ (a : edge-Directed-Graph G x x')
+ (y : vertex-Dependent-Directed-Graph H x)
+ (y' : vertex-Dependent-Directed-Graph H x') →
+ edge-Dependent-Directed-Graph H a y y' ≃
+ edge-Dependent-Directed-Graph H a
+ ( vertex-id-equiv-Dependent-Directed-Graph y)
+ ( vertex-id-equiv-Dependent-Directed-Graph y')
+ edge-equiv-id-equiv-Dependent-Directed-Graph a y y' = id-equiv
+
+ id-equiv-Dependent-Directed-Graph :
+ equiv-Dependent-Directed-Graph H H
+ pr1 id-equiv-Dependent-Directed-Graph =
+ vertex-equiv-id-equiv-Dependent-Directed-Graph
+ pr2 id-equiv-Dependent-Directed-Graph _ _ =
+ edge-equiv-id-equiv-Dependent-Directed-Graph
+```
+
+## Properties
+
+### Equivalences characterize identifications of dependent directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ abstract
+ is-torsorial-equiv-Dependent-Directed-Graph :
+ is-torsorial (equiv-Dependent-Directed-Graph {l5 = l3} {l6 = l4} H)
+ is-torsorial-equiv-Dependent-Directed-Graph =
+ is-torsorial-Eq-structure
+ ( is-torsorial-equiv-fam (vertex-Dependent-Directed-Graph H))
+ ( vertex-Dependent-Directed-Graph H , id-equiv-fam _)
+ ( is-torsorial-Eq-Π
+ ( λ x →
+ is-torsorial-Eq-Π
+ ( λ x' →
+ is-torsorial-Eq-Π
+ ( λ a →
+ is-torsorial-Eq-Π
+ ( λ y →
+ is-torsorial-Eq-Π
+ ( λ y' → is-torsorial-equiv _))))))
+
+ equiv-eq-Dependent-Directed-Graph :
+ (K : Dependent-Directed-Graph l3 l4 G) →
+ H = K → equiv-Dependent-Directed-Graph H K
+ equiv-eq-Dependent-Directed-Graph K refl =
+ id-equiv-Dependent-Directed-Graph H
+
+ abstract
+ is-equiv-equiv-eq-Dependent-Directed-Graph :
+ (K : Dependent-Directed-Graph l3 l4 G) →
+ is-equiv (equiv-eq-Dependent-Directed-Graph K)
+ is-equiv-equiv-eq-Dependent-Directed-Graph =
+ fundamental-theorem-id
+ is-torsorial-equiv-Dependent-Directed-Graph
+ equiv-eq-Dependent-Directed-Graph
+
+ extensionality-Dependent-Directed-Graph :
+ (K : Dependent-Directed-Graph l3 l4 G) →
+ (H = K) ≃ equiv-Dependent-Directed-Graph H K
+ pr1 (extensionality-Dependent-Directed-Graph K) =
+ equiv-eq-Dependent-Directed-Graph K
+ pr2 (extensionality-Dependent-Directed-Graph K) =
+ is-equiv-equiv-eq-Dependent-Directed-Graph K
+
+ eq-equiv-Dependent-Directed-Graph :
+ (K : Dependent-Directed-Graph l3 l4 G) →
+ equiv-Dependent-Directed-Graph H K → H = K
+ eq-equiv-Dependent-Directed-Graph K =
+ map-inv-equiv (extensionality-Dependent-Directed-Graph K)
+```
diff --git a/src/graph-theory/equivalences-dependent-reflexive-graphs.lagda.md b/src/graph-theory/equivalences-dependent-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..4197698468
--- /dev/null
+++ b/src/graph-theory/equivalences-dependent-reflexive-graphs.lagda.md
@@ -0,0 +1,335 @@
+# Equivalences of dependent reflexive graphs
+
+```agda
+module graph-theory.equivalences-dependent-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-identifications
+open import foundation.dependent-pair-types
+open import foundation.equality-dependent-function-types
+open import foundation.equivalences
+open import foundation.families-of-equivalences
+open import foundation.fundamental-theorem-of-identity-types
+open import foundation.homotopy-induction
+open import foundation.identity-types
+open import foundation.structure-identity-principle
+open import foundation.torsorial-type-families
+open import foundation.universe-levels
+
+open import graph-theory.dependent-reflexive-graphs
+open import graph-theory.equivalences-dependent-directed-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+Consider two
+[dependent reflexive graphs](graph-theory.dependent-reflexive-graphs.md) `H` and
+`K` over a [reflexive graph](graph-theory.reflexive-graphs.md) `G`. An
+{{#concept "equivalence of dependent reflexive graphs" Agda=equiv-Dependent-Reflexive-Graph}}
+from `H` to `K` is an
+[equivalence of dependent directed graphs](graph-theory.equivalences-dependent-directed-graphs.md)
+from `H` to `K` preserving reflexivity. More specifically, an equivalence `α`
+from `H` to `K` consists of
+
+```text
+ α₀ : (x : G₀) → H₀ x ≃ K₀ x
+ α₁ : (x x' : G₀) (e : G₁ x x') (y : H₀ x) (y' : H₀ x') → H₁ e y y' ≃ K₁ e (α₀ y) (α₀ y')
+ refl α : (x : G₀) (y : H₀ x) → α₁ (refl G x) (refl H y) = refl K x (α₀ y).
+```
+
+## Definitions
+
+### Equivalences of dependent directed graphs between dependent reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ (K : Dependent-Reflexive-Graph l5 l6 G)
+ where
+
+ equiv-dependent-directed-graph-Dependent-Reflexive-Graph :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ equiv-dependent-directed-graph-Dependent-Reflexive-Graph =
+ equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ (K : Dependent-Reflexive-Graph l5 l6 G)
+ (α : equiv-dependent-directed-graph-Dependent-Reflexive-Graph H K)
+ where
+
+ vertex-equiv-equiv-dependent-directed-graph-Dependent-Reflexive-Graph :
+ fam-equiv
+ ( vertex-Dependent-Reflexive-Graph H)
+ ( vertex-Dependent-Reflexive-Graph K)
+ vertex-equiv-equiv-dependent-directed-graph-Dependent-Reflexive-Graph =
+ vertex-equiv-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+ ( α)
+
+ vertex-equiv-dependent-directed-graph-Dependent-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G} →
+ vertex-Dependent-Reflexive-Graph H x →
+ vertex-Dependent-Reflexive-Graph K x
+ vertex-equiv-dependent-directed-graph-Dependent-Reflexive-Graph =
+ vertex-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+ ( α)
+
+ edge-equiv-equiv-dependent-directed-graph-Dependent-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G}
+ (e : edge-Reflexive-Graph G x x')
+ (y : vertex-Dependent-Reflexive-Graph H x)
+ (y' : vertex-Dependent-Reflexive-Graph H x') →
+ edge-Dependent-Reflexive-Graph H e y y' ≃
+ edge-Dependent-Reflexive-Graph K e
+ ( vertex-equiv-dependent-directed-graph-Dependent-Reflexive-Graph y)
+ ( vertex-equiv-dependent-directed-graph-Dependent-Reflexive-Graph y')
+ edge-equiv-equiv-dependent-directed-graph-Dependent-Reflexive-Graph =
+ edge-equiv-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+ ( α)
+
+ edge-equiv-dependent-directed-graph-Dependent-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G}
+ {e : edge-Reflexive-Graph G x x'}
+ {y : vertex-Dependent-Reflexive-Graph H x}
+ {y' : vertex-Dependent-Reflexive-Graph H x'} →
+ edge-Dependent-Reflexive-Graph H e y y' →
+ edge-Dependent-Reflexive-Graph K e
+ ( vertex-equiv-dependent-directed-graph-Dependent-Reflexive-Graph y)
+ ( vertex-equiv-dependent-directed-graph-Dependent-Reflexive-Graph y')
+ edge-equiv-dependent-directed-graph-Dependent-Reflexive-Graph =
+ edge-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+ ( α)
+```
+
+### Equivalences of dependent reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ (K : Dependent-Reflexive-Graph l5 l6 G)
+ where
+
+ equiv-Dependent-Reflexive-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ equiv-Dependent-Reflexive-Graph =
+ Σ ( equiv-dependent-directed-graph-Dependent-Reflexive-Graph H K)
+ ( λ (α₀ , α₁) →
+ (x : vertex-Reflexive-Graph G)
+ (y : vertex-Dependent-Reflexive-Graph H x) →
+ map-equiv
+ ( α₁ x x (refl-Reflexive-Graph G x) y y)
+ ( refl-Dependent-Reflexive-Graph H y) =
+ refl-Dependent-Reflexive-Graph K (map-equiv (α₀ x) y))
+
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ (K : Dependent-Reflexive-Graph l5 l6 G)
+ (α : equiv-Dependent-Reflexive-Graph H K)
+ where
+
+ equiv-dependent-directed-graph-equiv-Dependent-Reflexive-Graph :
+ equiv-dependent-directed-graph-Dependent-Reflexive-Graph H K
+ equiv-dependent-directed-graph-equiv-Dependent-Reflexive-Graph = pr1 α
+
+ vertex-equiv-equiv-Dependent-Reflexive-Graph :
+ fam-equiv
+ ( vertex-Dependent-Reflexive-Graph H)
+ ( vertex-Dependent-Reflexive-Graph K)
+ vertex-equiv-equiv-Dependent-Reflexive-Graph =
+ vertex-equiv-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+ ( equiv-dependent-directed-graph-equiv-Dependent-Reflexive-Graph)
+
+ vertex-equiv-Dependent-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G} →
+ vertex-Dependent-Reflexive-Graph H x →
+ vertex-Dependent-Reflexive-Graph K x
+ vertex-equiv-Dependent-Reflexive-Graph =
+ vertex-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+ ( equiv-dependent-directed-graph-equiv-Dependent-Reflexive-Graph)
+
+ edge-equiv-equiv-Dependent-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G}
+ (a : edge-Reflexive-Graph G x x')
+ (y : vertex-Dependent-Reflexive-Graph H x)
+ (y' : vertex-Dependent-Reflexive-Graph H x') →
+ edge-Dependent-Reflexive-Graph H a y y' ≃
+ edge-Dependent-Reflexive-Graph K a
+ ( vertex-equiv-Dependent-Reflexive-Graph y)
+ ( vertex-equiv-Dependent-Reflexive-Graph y')
+ edge-equiv-equiv-Dependent-Reflexive-Graph =
+ edge-equiv-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+ ( equiv-dependent-directed-graph-equiv-Dependent-Reflexive-Graph)
+
+ edge-equiv-Dependent-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G}
+ {a : edge-Reflexive-Graph G x x'}
+ {y : vertex-Dependent-Reflexive-Graph H x}
+ {y' : vertex-Dependent-Reflexive-Graph H x'} →
+ edge-Dependent-Reflexive-Graph H a y y' →
+ edge-Dependent-Reflexive-Graph K a
+ ( vertex-equiv-Dependent-Reflexive-Graph y)
+ ( vertex-equiv-Dependent-Reflexive-Graph y')
+ edge-equiv-Dependent-Reflexive-Graph =
+ edge-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph K)
+ ( equiv-dependent-directed-graph-equiv-Dependent-Reflexive-Graph)
+
+ refl-equiv-Dependent-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G}
+ (y : vertex-Dependent-Reflexive-Graph H x) →
+ edge-equiv-Dependent-Reflexive-Graph (refl-Dependent-Reflexive-Graph H y) =
+ refl-Dependent-Reflexive-Graph K (vertex-equiv-Dependent-Reflexive-Graph y)
+ refl-equiv-Dependent-Reflexive-Graph = pr2 α _
+```
+
+### The identity equivalence of a dependent reflexive graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ where
+
+ equiv-dependent-directed-graph-id-equiv-Dependent-Reflexive-Graph :
+ equiv-dependent-directed-graph-Dependent-Reflexive-Graph H H
+ equiv-dependent-directed-graph-id-equiv-Dependent-Reflexive-Graph =
+ id-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ vertex-equiv-id-equiv-Dependent-Reflexive-Graph :
+ fam-equiv
+ ( vertex-Dependent-Reflexive-Graph H)
+ ( vertex-Dependent-Reflexive-Graph H)
+ vertex-equiv-id-equiv-Dependent-Reflexive-Graph =
+ vertex-equiv-equiv-dependent-directed-graph-Dependent-Reflexive-Graph
+ ( H)
+ ( H)
+ ( equiv-dependent-directed-graph-id-equiv-Dependent-Reflexive-Graph)
+
+ vertex-id-equiv-Dependent-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G} →
+ vertex-Dependent-Reflexive-Graph H x → vertex-Dependent-Reflexive-Graph H x
+ vertex-id-equiv-Dependent-Reflexive-Graph =
+ vertex-equiv-dependent-directed-graph-Dependent-Reflexive-Graph
+ ( H)
+ ( H)
+ ( equiv-dependent-directed-graph-id-equiv-Dependent-Reflexive-Graph)
+
+ edge-equiv-id-equiv-Dependent-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G}
+ (e : edge-Reflexive-Graph G x x')
+ (y : vertex-Dependent-Reflexive-Graph H x)
+ (y' : vertex-Dependent-Reflexive-Graph H x') →
+ edge-Dependent-Reflexive-Graph H e y y' ≃
+ edge-Dependent-Reflexive-Graph H e y y'
+ edge-equiv-id-equiv-Dependent-Reflexive-Graph =
+ edge-equiv-equiv-dependent-directed-graph-Dependent-Reflexive-Graph
+ ( H)
+ ( H)
+ ( equiv-dependent-directed-graph-id-equiv-Dependent-Reflexive-Graph)
+
+ edge-id-equiv-Dependent-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G}
+ {e : edge-Reflexive-Graph G x x'}
+ {y : vertex-Dependent-Reflexive-Graph H x}
+ {y' : vertex-Dependent-Reflexive-Graph H x'} →
+ edge-Dependent-Reflexive-Graph H e y y' →
+ edge-Dependent-Reflexive-Graph H e y y'
+ edge-id-equiv-Dependent-Reflexive-Graph =
+ edge-equiv-dependent-directed-graph-Dependent-Reflexive-Graph
+ ( H)
+ ( H)
+ ( equiv-dependent-directed-graph-id-equiv-Dependent-Reflexive-Graph)
+
+ refl-id-equiv-Dependent-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G}
+ (y : vertex-Dependent-Reflexive-Graph H x) →
+ edge-id-equiv-Dependent-Reflexive-Graph
+ ( refl-Dependent-Reflexive-Graph H y) =
+ refl-Dependent-Reflexive-Graph H y
+ refl-id-equiv-Dependent-Reflexive-Graph y = refl
+
+ id-equiv-Dependent-Reflexive-Graph :
+ equiv-Dependent-Reflexive-Graph H H
+ pr1 id-equiv-Dependent-Reflexive-Graph =
+ equiv-dependent-directed-graph-id-equiv-Dependent-Reflexive-Graph
+ pr2 id-equiv-Dependent-Reflexive-Graph _ =
+ refl-id-equiv-Dependent-Reflexive-Graph
+```
+
+## Properties
+
+### Equivalences characterize identifications of dependent reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ where
+
+ abstract
+ is-torsorial-equiv-Dependent-Reflexive-Graph :
+ is-torsorial (equiv-Dependent-Reflexive-Graph {l5 = l3} {l6 = l4} H)
+ is-torsorial-equiv-Dependent-Reflexive-Graph =
+ is-torsorial-Eq-structure
+ ( is-torsorial-equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H))
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H ,
+ equiv-dependent-directed-graph-id-equiv-Dependent-Reflexive-Graph H)
+ ( is-torsorial-Eq-Π (λ x → is-torsorial-htpy _))
+
+ equiv-eq-Dependent-Reflexive-Graph :
+ (K : Dependent-Reflexive-Graph l3 l4 G) →
+ H = K → equiv-Dependent-Reflexive-Graph H K
+ equiv-eq-Dependent-Reflexive-Graph K refl =
+ id-equiv-Dependent-Reflexive-Graph H
+
+ abstract
+ is-equiv-equiv-eq-Dependent-Reflexive-Graph :
+ (K : Dependent-Reflexive-Graph l3 l4 G) →
+ is-equiv (equiv-eq-Dependent-Reflexive-Graph K)
+ is-equiv-equiv-eq-Dependent-Reflexive-Graph =
+ fundamental-theorem-id
+ is-torsorial-equiv-Dependent-Reflexive-Graph
+ equiv-eq-Dependent-Reflexive-Graph
+
+ extensionality-Dependent-Reflexive-Graph :
+ (K : Dependent-Reflexive-Graph l3 l4 G) →
+ (H = K) ≃ equiv-Dependent-Reflexive-Graph H K
+ pr1 (extensionality-Dependent-Reflexive-Graph K) =
+ equiv-eq-Dependent-Reflexive-Graph K
+ pr2 (extensionality-Dependent-Reflexive-Graph K) =
+ is-equiv-equiv-eq-Dependent-Reflexive-Graph K
+
+ eq-equiv-Dependent-Reflexive-Graph :
+ (K : Dependent-Reflexive-Graph l3 l4 G) →
+ equiv-Dependent-Reflexive-Graph H K → H = K
+ eq-equiv-Dependent-Reflexive-Graph K =
+ map-inv-equiv (extensionality-Dependent-Reflexive-Graph K)
+```
diff --git a/src/graph-theory/equivalences-directed-graphs.lagda.md b/src/graph-theory/equivalences-directed-graphs.lagda.md
index ac054fd589..a95e1ea270 100644
--- a/src/graph-theory/equivalences-directed-graphs.lagda.md
+++ b/src/graph-theory/equivalences-directed-graphs.lagda.md
@@ -38,8 +38,8 @@ open import graph-theory.morphisms-directed-graphs
## Idea
-An **equivalence of directed graphs** from a
-[directed graph](graph-theory.directed-graphs.md) `(V,E)` to a directed graph
+An {{#concept "equivalence of directed graphs" Agda=equiv-Directed-Graph}} from
+a [directed graph](graph-theory.directed-graphs.md) `(V,E)` to a directed graph
`(V',E')` consists of an [equivalence](foundation-core.equivalences.md)
`e : V ≃ V'` of vertices, and a family of equivalences `E x y ≃ E' (e x) (e y)`
of edges indexed by `x y : V`.
@@ -64,55 +64,56 @@ module _
(e : equiv-Directed-Graph G H)
where
- equiv-vertex-equiv-Directed-Graph :
+ vertex-equiv-equiv-Directed-Graph :
vertex-Directed-Graph G ≃ vertex-Directed-Graph H
- equiv-vertex-equiv-Directed-Graph = pr1 e
+ vertex-equiv-equiv-Directed-Graph = pr1 e
vertex-equiv-Directed-Graph :
vertex-Directed-Graph G → vertex-Directed-Graph H
- vertex-equiv-Directed-Graph = map-equiv equiv-vertex-equiv-Directed-Graph
+ vertex-equiv-Directed-Graph = map-equiv vertex-equiv-equiv-Directed-Graph
- is-equiv-vertex-equiv-Directed-Graph :
+ is-vertex-equiv-equiv-Directed-Graph :
is-equiv vertex-equiv-Directed-Graph
- is-equiv-vertex-equiv-Directed-Graph =
- is-equiv-map-equiv equiv-vertex-equiv-Directed-Graph
+ is-vertex-equiv-equiv-Directed-Graph =
+ is-equiv-map-equiv vertex-equiv-equiv-Directed-Graph
inv-vertex-equiv-Directed-Graph :
vertex-Directed-Graph H → vertex-Directed-Graph G
inv-vertex-equiv-Directed-Graph =
- map-inv-equiv equiv-vertex-equiv-Directed-Graph
+ map-inv-equiv vertex-equiv-equiv-Directed-Graph
is-section-inv-vertex-equiv-Directed-Graph :
( vertex-equiv-Directed-Graph ∘ inv-vertex-equiv-Directed-Graph) ~ id
is-section-inv-vertex-equiv-Directed-Graph =
- is-section-map-inv-equiv equiv-vertex-equiv-Directed-Graph
+ is-section-map-inv-equiv vertex-equiv-equiv-Directed-Graph
is-retraction-inv-vertex-equiv-Directed-Graph :
( inv-vertex-equiv-Directed-Graph ∘ vertex-equiv-Directed-Graph) ~ id
is-retraction-inv-vertex-equiv-Directed-Graph =
- is-retraction-map-inv-equiv equiv-vertex-equiv-Directed-Graph
+ is-retraction-map-inv-equiv vertex-equiv-equiv-Directed-Graph
- equiv-edge-equiv-Directed-Graph :
+ edge-equiv-equiv-Directed-Graph :
(x y : vertex-Directed-Graph G) →
edge-Directed-Graph G x y ≃
edge-Directed-Graph H
( vertex-equiv-Directed-Graph x)
( vertex-equiv-Directed-Graph y)
- equiv-edge-equiv-Directed-Graph = pr2 e
+ edge-equiv-equiv-Directed-Graph = pr2 e
edge-equiv-Directed-Graph :
- (x y : vertex-Directed-Graph G) →
+ {x y : vertex-Directed-Graph G} →
edge-Directed-Graph G x y →
edge-Directed-Graph H
( vertex-equiv-Directed-Graph x)
( vertex-equiv-Directed-Graph y)
- edge-equiv-Directed-Graph x y =
- map-equiv (equiv-edge-equiv-Directed-Graph x y)
+ edge-equiv-Directed-Graph =
+ map-equiv (edge-equiv-equiv-Directed-Graph _ _)
- is-equiv-edge-equiv-Directed-Graph :
- (x y : vertex-Directed-Graph G) → is-equiv (edge-equiv-Directed-Graph x y)
- is-equiv-edge-equiv-Directed-Graph x y =
- is-equiv-map-equiv (equiv-edge-equiv-Directed-Graph x y)
+ is-edge-equiv-equiv-Directed-Graph :
+ (x y : vertex-Directed-Graph G) →
+ is-equiv (edge-equiv-Directed-Graph {x} {y})
+ is-edge-equiv-equiv-Directed-Graph x y =
+ is-equiv-map-equiv (edge-equiv-equiv-Directed-Graph x y)
```
### The condition on a morphism of directed graphs to be an equivalence
@@ -155,7 +156,8 @@ module _
compute-hom-equiv-Directed-Graph :
(e : equiv-Directed-Graph G H) →
hom-equiv-Directed-Graph e =
- ( vertex-equiv-Directed-Graph G H e , edge-equiv-Directed-Graph G H e)
+ ( vertex-equiv-Directed-Graph G H e ,
+ λ _ _ → edge-equiv-Directed-Graph G H e)
compute-hom-equiv-Directed-Graph e = refl
is-equiv-equiv-Directed-Graph :
@@ -184,28 +186,28 @@ module _
(g : equiv-Directed-Graph H K) (f : equiv-Directed-Graph G H)
where
- equiv-vertex-comp-equiv-Directed-Graph :
+ vertex-equiv-comp-equiv-Directed-Graph :
vertex-Directed-Graph G ≃ vertex-Directed-Graph K
- equiv-vertex-comp-equiv-Directed-Graph =
- ( equiv-vertex-equiv-Directed-Graph H K g) ∘e
- ( equiv-vertex-equiv-Directed-Graph G H f)
+ vertex-equiv-comp-equiv-Directed-Graph =
+ ( vertex-equiv-equiv-Directed-Graph H K g) ∘e
+ ( vertex-equiv-equiv-Directed-Graph G H f)
vertex-comp-equiv-Directed-Graph :
vertex-Directed-Graph G → vertex-Directed-Graph K
vertex-comp-equiv-Directed-Graph =
- map-equiv equiv-vertex-comp-equiv-Directed-Graph
+ map-equiv vertex-equiv-comp-equiv-Directed-Graph
- equiv-edge-comp-equiv-Directed-Graph :
+ edge-equiv-comp-equiv-Directed-Graph :
(x y : vertex-Directed-Graph G) →
edge-Directed-Graph G x y ≃
edge-Directed-Graph K
( vertex-comp-equiv-Directed-Graph x)
( vertex-comp-equiv-Directed-Graph y)
- equiv-edge-comp-equiv-Directed-Graph x y =
- ( equiv-edge-equiv-Directed-Graph H K g
+ edge-equiv-comp-equiv-Directed-Graph x y =
+ ( edge-equiv-equiv-Directed-Graph H K g
( vertex-equiv-Directed-Graph G H f x)
( vertex-equiv-Directed-Graph G H f y)) ∘e
- ( equiv-edge-equiv-Directed-Graph G H f x y)
+ ( edge-equiv-equiv-Directed-Graph G H f x y)
edge-comp-equiv-Directed-Graph :
(x y : vertex-Directed-Graph G) →
@@ -214,14 +216,14 @@ module _
( vertex-comp-equiv-Directed-Graph x)
( vertex-comp-equiv-Directed-Graph y)
edge-comp-equiv-Directed-Graph x y =
- map-equiv (equiv-edge-comp-equiv-Directed-Graph x y)
+ map-equiv (edge-equiv-comp-equiv-Directed-Graph x y)
comp-equiv-Directed-Graph :
equiv-Directed-Graph G K
pr1 comp-equiv-Directed-Graph =
- equiv-vertex-comp-equiv-Directed-Graph
+ vertex-equiv-comp-equiv-Directed-Graph
pr2 comp-equiv-Directed-Graph =
- equiv-edge-comp-equiv-Directed-Graph
+ edge-equiv-comp-equiv-Directed-Graph
```
### Homotopies of equivalences of directed graphs
@@ -260,14 +262,14 @@ module _
is-torsorial (htpy-equiv-Directed-Graph G H e)
is-torsorial-htpy-equiv-Directed-Graph =
is-torsorial-Eq-structure
- ( is-torsorial-htpy-equiv (equiv-vertex-equiv-Directed-Graph G H e))
- ( equiv-vertex-equiv-Directed-Graph G H e , refl-htpy)
+ ( is-torsorial-htpy-equiv (vertex-equiv-equiv-Directed-Graph G H e))
+ ( vertex-equiv-equiv-Directed-Graph G H e , refl-htpy)
( is-torsorial-Eq-Π
( λ x →
is-torsorial-Eq-Π
( λ y →
is-torsorial-htpy-equiv
- ( equiv-edge-equiv-Directed-Graph G H e x y))))
+ ( edge-equiv-equiv-Directed-Graph G H e x y))))
htpy-eq-equiv-Directed-Graph :
(f : equiv-Directed-Graph G H) → e = f → htpy-equiv-Directed-Graph G H e f
@@ -347,42 +349,42 @@ module _
(f : equiv-Directed-Graph G H)
where
- equiv-vertex-inv-equiv-Directed-Graph :
+ vertex-equiv-inv-equiv-Directed-Graph :
vertex-Directed-Graph H ≃ vertex-Directed-Graph G
- equiv-vertex-inv-equiv-Directed-Graph =
- inv-equiv (equiv-vertex-equiv-Directed-Graph G H f)
+ vertex-equiv-inv-equiv-Directed-Graph =
+ inv-equiv (vertex-equiv-equiv-Directed-Graph G H f)
vertex-inv-equiv-Directed-Graph :
vertex-Directed-Graph H → vertex-Directed-Graph G
vertex-inv-equiv-Directed-Graph =
- map-inv-equiv (equiv-vertex-equiv-Directed-Graph G H f)
+ map-inv-equiv (vertex-equiv-equiv-Directed-Graph G H f)
is-section-vertex-inv-equiv-Directed-Graph :
( vertex-equiv-Directed-Graph G H f ∘
vertex-inv-equiv-Directed-Graph) ~ id
is-section-vertex-inv-equiv-Directed-Graph =
- is-section-map-inv-equiv (equiv-vertex-equiv-Directed-Graph G H f)
+ is-section-map-inv-equiv (vertex-equiv-equiv-Directed-Graph G H f)
is-retraction-vertex-inv-equiv-Directed-Graph :
( vertex-inv-equiv-Directed-Graph ∘
vertex-equiv-Directed-Graph G H f) ~ id
is-retraction-vertex-inv-equiv-Directed-Graph =
- is-retraction-map-inv-equiv (equiv-vertex-equiv-Directed-Graph G H f)
+ is-retraction-map-inv-equiv (vertex-equiv-equiv-Directed-Graph G H f)
- is-equiv-vertex-inv-equiv-Directed-Graph :
+ is-vertex-equiv-inv-equiv-Directed-Graph :
is-equiv vertex-inv-equiv-Directed-Graph
- is-equiv-vertex-inv-equiv-Directed-Graph =
- is-equiv-map-inv-equiv (equiv-vertex-equiv-Directed-Graph G H f)
+ is-vertex-equiv-inv-equiv-Directed-Graph =
+ is-equiv-map-inv-equiv (vertex-equiv-equiv-Directed-Graph G H f)
- equiv-edge-inv-equiv-Directed-Graph :
+ edge-equiv-inv-equiv-Directed-Graph :
(x y : vertex-Directed-Graph H) →
edge-Directed-Graph H x y ≃
edge-Directed-Graph G
( vertex-inv-equiv-Directed-Graph x)
( vertex-inv-equiv-Directed-Graph y)
- equiv-edge-inv-equiv-Directed-Graph x y =
+ edge-equiv-inv-equiv-Directed-Graph x y =
( inv-equiv
- ( equiv-edge-equiv-Directed-Graph G H f
+ ( edge-equiv-equiv-Directed-Graph G H f
( vertex-inv-equiv-Directed-Graph x)
( vertex-inv-equiv-Directed-Graph y))) ∘e
( equiv-binary-tr
@@ -391,21 +393,21 @@ module _
( inv (is-section-vertex-inv-equiv-Directed-Graph y)))
edge-inv-equiv-Directed-Graph :
- (x y : vertex-Directed-Graph H) →
+ {x y : vertex-Directed-Graph H} →
edge-Directed-Graph H x y →
edge-Directed-Graph G
( vertex-inv-equiv-Directed-Graph x)
( vertex-inv-equiv-Directed-Graph y)
- edge-inv-equiv-Directed-Graph x y =
- map-equiv (equiv-edge-inv-equiv-Directed-Graph x y)
+ edge-inv-equiv-Directed-Graph =
+ map-equiv (edge-equiv-inv-equiv-Directed-Graph _ _)
hom-inv-equiv-Directed-Graph : hom-Directed-Graph H G
pr1 hom-inv-equiv-Directed-Graph = vertex-inv-equiv-Directed-Graph
- pr2 hom-inv-equiv-Directed-Graph = edge-inv-equiv-Directed-Graph
+ pr2 hom-inv-equiv-Directed-Graph _ _ = edge-inv-equiv-Directed-Graph
inv-equiv-Directed-Graph : equiv-Directed-Graph H G
- pr1 inv-equiv-Directed-Graph = equiv-vertex-inv-equiv-Directed-Graph
- pr2 inv-equiv-Directed-Graph = equiv-edge-inv-equiv-Directed-Graph
+ pr1 inv-equiv-Directed-Graph = vertex-equiv-inv-equiv-Directed-Graph
+ pr2 inv-equiv-Directed-Graph = edge-equiv-inv-equiv-Directed-Graph
vertex-is-section-inv-equiv-Directed-Graph :
( vertex-equiv-Directed-Graph G H f ∘ vertex-inv-equiv-Directed-Graph) ~ id
@@ -419,9 +421,7 @@ module _
( vertex-is-section-inv-equiv-Directed-Graph x)
( vertex-is-section-inv-equiv-Directed-Graph y)
( edge-equiv-Directed-Graph G H f
- ( vertex-inv-equiv-Directed-Graph x)
- ( vertex-inv-equiv-Directed-Graph y)
- ( edge-inv-equiv-Directed-Graph x y e)) = e
+ ( edge-inv-equiv-Directed-Graph e)) = e
edge-is-section-inv-equiv-Directed-Graph x y e =
( ap
( binary-tr
@@ -429,7 +429,7 @@ module _
( vertex-is-section-inv-equiv-Directed-Graph x)
( vertex-is-section-inv-equiv-Directed-Graph y))
( is-section-map-inv-equiv
- ( equiv-edge-equiv-Directed-Graph G H f
+ ( edge-equiv-equiv-Directed-Graph G H f
( vertex-inv-equiv-Directed-Graph x)
( vertex-inv-equiv-Directed-Graph y))
( binary-tr
@@ -470,17 +470,14 @@ module _
( edge-Directed-Graph G)
( vertex-is-retraction-inv-equiv-Directed-Graph x)
( vertex-is-retraction-inv-equiv-Directed-Graph y)
- ( edge-inv-equiv-Directed-Graph
- ( vertex-equiv-Directed-Graph G H f x)
- ( vertex-equiv-Directed-Graph G H f y)
- ( edge-equiv-Directed-Graph G H f x y e)) = e
+ ( edge-inv-equiv-Directed-Graph (edge-equiv-Directed-Graph G H f e)) = e
edge-is-retraction-inv-equiv-Directed-Graph x y e =
transpose-binary-path-over'
( edge-Directed-Graph G)
( vertex-is-retraction-inv-equiv-Directed-Graph x)
( vertex-is-retraction-inv-equiv-Directed-Graph y)
( map-eq-transpose-equiv-inv
- ( equiv-edge-equiv-Directed-Graph G H f
+ ( edge-equiv-equiv-Directed-Graph G H f
( vertex-inv-equiv-Directed-Graph
( vertex-equiv-Directed-Graph G H f x))
( vertex-inv-equiv-Directed-Graph
@@ -491,11 +488,11 @@ module _
( edge-Directed-Graph H)
( u)
( v)
- ( edge-equiv-Directed-Graph G H f x y e))
+ ( edge-equiv-Directed-Graph G H f e))
( ( ap
( inv)
( coherence-map-inv-equiv
- ( equiv-vertex-equiv-Directed-Graph G H f)
+ ( vertex-equiv-equiv-Directed-Graph G H f)
( x))) ∙
( inv
( ap-inv
@@ -504,7 +501,7 @@ module _
( ( ap
( inv)
( coherence-map-inv-equiv
- ( equiv-vertex-equiv-Directed-Graph G H f)
+ ( vertex-equiv-equiv-Directed-Graph G H f)
( y))) ∙
( inv
( ap-inv
@@ -512,7 +509,7 @@ module _
( vertex-is-retraction-inv-equiv-Directed-Graph y))))) ∙
( binary-tr-ap
( edge-Directed-Graph H)
- ( edge-equiv-Directed-Graph G H f)
+ ( λ _ _ → edge-equiv-Directed-Graph G H f)
( inv (vertex-is-retraction-inv-equiv-Directed-Graph x))
( inv (vertex-is-retraction-inv-equiv-Directed-Graph y))
( refl))))
diff --git a/src/graph-theory/equivalences-enriched-undirected-graphs.lagda.md b/src/graph-theory/equivalences-enriched-undirected-graphs.lagda.md
index 0c9b255d3a..5655fafc9d 100644
--- a/src/graph-theory/equivalences-enriched-undirected-graphs.lagda.md
+++ b/src/graph-theory/equivalences-enriched-undirected-graphs.lagda.md
@@ -92,11 +92,11 @@ module _
( undirected-graph-Enriched-Undirected-Graph A B H)
equiv-undirected-graph-equiv-Enriched-Undirected-Graph = pr1 e
- equiv-vertex-equiv-Enriched-Undirected-Graph :
+ vertex-equiv-equiv-Enriched-Undirected-Graph :
vertex-Enriched-Undirected-Graph A B G ≃
vertex-Enriched-Undirected-Graph A B H
- equiv-vertex-equiv-Enriched-Undirected-Graph =
- equiv-vertex-equiv-Undirected-Graph
+ vertex-equiv-equiv-Enriched-Undirected-Graph =
+ vertex-equiv-equiv-Undirected-Graph
( undirected-graph-Enriched-Undirected-Graph A B G)
( undirected-graph-Enriched-Undirected-Graph A B H)
( equiv-undirected-graph-equiv-Enriched-Undirected-Graph)
@@ -128,13 +128,13 @@ module _
( undirected-graph-Enriched-Undirected-Graph A B H)
( equiv-undirected-graph-equiv-Enriched-Undirected-Graph)
- equiv-edge-equiv-Enriched-Undirected-Graph :
+ edge-equiv-equiv-Enriched-Undirected-Graph :
( p : unordered-pair-vertices-Enriched-Undirected-Graph A B G) →
edge-Enriched-Undirected-Graph A B G p ≃
edge-Enriched-Undirected-Graph A B H
( unordered-pair-vertices-equiv-Enriched-Undirected-Graph p)
- equiv-edge-equiv-Enriched-Undirected-Graph =
- equiv-edge-equiv-Undirected-Graph
+ edge-equiv-equiv-Enriched-Undirected-Graph =
+ edge-equiv-equiv-Undirected-Graph
( undirected-graph-Enriched-Undirected-Graph A B G)
( undirected-graph-Enriched-Undirected-Graph A B H)
( equiv-undirected-graph-equiv-Enriched-Undirected-Graph)
diff --git a/src/graph-theory/equivalences-reflexive-graphs.lagda.md b/src/graph-theory/equivalences-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..ae2ff0ebab
--- /dev/null
+++ b/src/graph-theory/equivalences-reflexive-graphs.lagda.md
@@ -0,0 +1,175 @@
+# Equivalences of reflexive graphs
+
+```agda
+module graph-theory.equivalences-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import graph-theory.equivalences-directed-graphs
+open import graph-theory.morphisms-reflexive-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+An {{#concept "equivalence of reflexive graphs" Agda=equiv-Reflexive-Graph}}
+from a [reflexive graph](graph-theory.reflexive-graphs.md) `(V,E,r)` to a
+reflexive graph `(V',E',r')` consists of an
+[equivalence](graph-theory.equivalences-directed-graphs.md) `(e₀, e₁)` of
+directed graphs from `(V,E)` to `(V',E')` equipped with an identification
+
+```text
+ e₁ (r x) = r' (e₀ x)
+```
+
+for each `x : V`. More specifically, an equivalence of reflexive graphs consists
+of an [equivalence](foundation-core.equivalences.md) `e₀ : V ≃ V'` of vertices,
+a family of equivalences `e₁ : E x y ≃ E' (e x) (e y)` of edges indexed by
+`x y : V`, and a family of identifications
+
+```text
+ e₁ (r x) = r' (e₀ x)
+```
+
+indexed by `x : V`.
+
+## Definitions
+
+### Equivalences of directed graphs between reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ where
+
+ equiv-directed-graph-Reflexive-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ equiv-directed-graph-Reflexive-Graph =
+ equiv-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+
+module _
+ {l1 l2 l3 l4 : Level} (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ (e : equiv-directed-graph-Reflexive-Graph G H)
+ where
+
+ vertex-equiv-equiv-directed-graph-Reflexive-Graph :
+ vertex-Reflexive-Graph G ≃ vertex-Reflexive-Graph H
+ vertex-equiv-equiv-directed-graph-Reflexive-Graph =
+ vertex-equiv-equiv-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( e)
+
+ vertex-equiv-directed-graph-Reflexive-Graph :
+ vertex-Reflexive-Graph G → vertex-Reflexive-Graph H
+ vertex-equiv-directed-graph-Reflexive-Graph =
+ vertex-equiv-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( e)
+
+ edge-equiv-equiv-directed-graph-Reflexive-Graph :
+ (x x' : vertex-Reflexive-Graph G) →
+ edge-Reflexive-Graph G x x' ≃
+ edge-Reflexive-Graph H
+ ( vertex-equiv-directed-graph-Reflexive-Graph x)
+ ( vertex-equiv-directed-graph-Reflexive-Graph x')
+ edge-equiv-equiv-directed-graph-Reflexive-Graph =
+ edge-equiv-equiv-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( e)
+
+ edge-equiv-directed-graph-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G} →
+ edge-Reflexive-Graph G x x' →
+ edge-Reflexive-Graph H
+ ( vertex-equiv-directed-graph-Reflexive-Graph x)
+ ( vertex-equiv-directed-graph-Reflexive-Graph x')
+ edge-equiv-directed-graph-Reflexive-Graph =
+ edge-equiv-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( e)
+```
+
+### Equivalences of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ where
+
+ equiv-Reflexive-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ equiv-Reflexive-Graph =
+ Σ ( equiv-directed-graph-Reflexive-Graph G H)
+ ( λ e →
+ (x : vertex-Reflexive-Graph G) →
+ edge-equiv-directed-graph-Reflexive-Graph G H e
+ ( refl-Reflexive-Graph G x) =
+ refl-Reflexive-Graph H
+ (vertex-equiv-directed-graph-Reflexive-Graph G H e x))
+
+module _
+ {l1 l2 l3 l4 : Level} (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ (e : equiv-Reflexive-Graph G H)
+ where
+
+ equiv-directed-graph-equiv-Reflexive-Graph :
+ equiv-directed-graph-Reflexive-Graph G H
+ equiv-directed-graph-equiv-Reflexive-Graph = pr1 e
+
+ vertex-equiv-equiv-Reflexive-Graph :
+ vertex-Reflexive-Graph G ≃ vertex-Reflexive-Graph H
+ vertex-equiv-equiv-Reflexive-Graph =
+ vertex-equiv-equiv-directed-graph-Reflexive-Graph G H
+ equiv-directed-graph-equiv-Reflexive-Graph
+
+ vertex-equiv-Reflexive-Graph :
+ vertex-Reflexive-Graph G → vertex-Reflexive-Graph H
+ vertex-equiv-Reflexive-Graph =
+ vertex-equiv-directed-graph-Reflexive-Graph G H
+ equiv-directed-graph-equiv-Reflexive-Graph
+
+ edge-equiv-equiv-Reflexive-Graph :
+ (x x' : vertex-Reflexive-Graph G) →
+ edge-Reflexive-Graph G x x' ≃
+ edge-Reflexive-Graph H
+ ( vertex-equiv-Reflexive-Graph x)
+ ( vertex-equiv-Reflexive-Graph x')
+ edge-equiv-equiv-Reflexive-Graph =
+ edge-equiv-equiv-directed-graph-Reflexive-Graph G H
+ equiv-directed-graph-equiv-Reflexive-Graph
+
+ edge-equiv-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G} →
+ edge-Reflexive-Graph G x x' →
+ edge-Reflexive-Graph H
+ ( vertex-equiv-Reflexive-Graph x)
+ ( vertex-equiv-Reflexive-Graph x')
+ edge-equiv-Reflexive-Graph =
+ edge-equiv-directed-graph-Reflexive-Graph G H
+ equiv-directed-graph-equiv-Reflexive-Graph
+
+ refl-equiv-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph G) →
+ edge-equiv-Reflexive-Graph (refl-Reflexive-Graph G x) =
+ refl-Reflexive-Graph H (vertex-equiv-Reflexive-Graph x)
+ refl-equiv-Reflexive-Graph = pr2 e
+
+ hom-equiv-Reflexive-Graph :
+ hom-Reflexive-Graph G H
+ pr1 (pr1 hom-equiv-Reflexive-Graph) = vertex-equiv-Reflexive-Graph
+ pr2 (pr1 hom-equiv-Reflexive-Graph) _ _ = edge-equiv-Reflexive-Graph
+ pr2 hom-equiv-Reflexive-Graph = refl-equiv-Reflexive-Graph
+```
diff --git a/src/graph-theory/equivalences-undirected-graphs.lagda.md b/src/graph-theory/equivalences-undirected-graphs.lagda.md
index 23b1135233..4b98ef0d5e 100644
--- a/src/graph-theory/equivalences-undirected-graphs.lagda.md
+++ b/src/graph-theory/equivalences-undirected-graphs.lagda.md
@@ -58,30 +58,30 @@ module _
edge-Undirected-Graph G p ≃
edge-Undirected-Graph H (map-equiv-unordered-pair f p))
- equiv-vertex-equiv-Undirected-Graph :
+ vertex-equiv-equiv-Undirected-Graph :
equiv-Undirected-Graph →
vertex-Undirected-Graph G ≃ vertex-Undirected-Graph H
- equiv-vertex-equiv-Undirected-Graph f = pr1 f
+ vertex-equiv-equiv-Undirected-Graph f = pr1 f
vertex-equiv-Undirected-Graph :
equiv-Undirected-Graph →
vertex-Undirected-Graph G → vertex-Undirected-Graph H
vertex-equiv-Undirected-Graph f =
- map-equiv (equiv-vertex-equiv-Undirected-Graph f)
+ map-equiv (vertex-equiv-equiv-Undirected-Graph f)
equiv-unordered-pair-vertices-equiv-Undirected-Graph :
equiv-Undirected-Graph →
unordered-pair-vertices-Undirected-Graph G ≃
unordered-pair-vertices-Undirected-Graph H
equiv-unordered-pair-vertices-equiv-Undirected-Graph f =
- equiv-unordered-pair (equiv-vertex-equiv-Undirected-Graph f)
+ equiv-unordered-pair (vertex-equiv-equiv-Undirected-Graph f)
unordered-pair-vertices-equiv-Undirected-Graph :
equiv-Undirected-Graph →
unordered-pair-vertices-Undirected-Graph G →
unordered-pair-vertices-Undirected-Graph H
unordered-pair-vertices-equiv-Undirected-Graph f =
- map-equiv-unordered-pair (equiv-vertex-equiv-Undirected-Graph f)
+ map-equiv-unordered-pair (vertex-equiv-equiv-Undirected-Graph f)
standard-unordered-pair-vertices-equiv-Undirected-Graph :
(e : equiv-Undirected-Graph) (x y : vertex-Undirected-Graph G) →
@@ -92,15 +92,15 @@ module _
( vertex-equiv-Undirected-Graph e x)
( vertex-equiv-Undirected-Graph e y)
standard-unordered-pair-vertices-equiv-Undirected-Graph e =
- equiv-standard-unordered-pair (equiv-vertex-equiv-Undirected-Graph e)
+ equiv-standard-unordered-pair (vertex-equiv-equiv-Undirected-Graph e)
- equiv-edge-equiv-Undirected-Graph :
+ edge-equiv-equiv-Undirected-Graph :
(f : equiv-Undirected-Graph)
(p : unordered-pair-vertices-Undirected-Graph G) →
edge-Undirected-Graph G p ≃
edge-Undirected-Graph H
( unordered-pair-vertices-equiv-Undirected-Graph f p)
- equiv-edge-equiv-Undirected-Graph f = pr2 f
+ edge-equiv-equiv-Undirected-Graph f = pr2 f
edge-equiv-Undirected-Graph :
(f : equiv-Undirected-Graph)
@@ -109,20 +109,20 @@ module _
edge-Undirected-Graph H
( unordered-pair-vertices-equiv-Undirected-Graph f p)
edge-equiv-Undirected-Graph f p =
- map-equiv (equiv-edge-equiv-Undirected-Graph f p)
+ map-equiv (edge-equiv-equiv-Undirected-Graph f p)
- equiv-edge-standard-unordered-pair-vertices-equiv-Undirected-Graph :
+ edge-equiv-standard-unordered-pair-vertices-equiv-Undirected-Graph :
(e : equiv-Undirected-Graph) (x y : vertex-Undirected-Graph G) →
edge-Undirected-Graph G (standard-unordered-pair x y) ≃
edge-Undirected-Graph H
( standard-unordered-pair
( vertex-equiv-Undirected-Graph e x)
( vertex-equiv-Undirected-Graph e y))
- equiv-edge-standard-unordered-pair-vertices-equiv-Undirected-Graph e x y =
+ edge-equiv-standard-unordered-pair-vertices-equiv-Undirected-Graph e x y =
( equiv-tr
( edge-Undirected-Graph H)
( standard-unordered-pair-vertices-equiv-Undirected-Graph e x y)) ∘e
- ( equiv-edge-equiv-Undirected-Graph e (standard-unordered-pair x y))
+ ( edge-equiv-equiv-Undirected-Graph e (standard-unordered-pair x y))
edge-standard-unordered-pair-vertices-equiv-Undirected-Graph :
(e : equiv-Undirected-Graph) (x y : vertex-Undirected-Graph G) →
@@ -133,7 +133,7 @@ module _
( vertex-equiv-Undirected-Graph e y))
edge-standard-unordered-pair-vertices-equiv-Undirected-Graph e x y =
map-equiv
- ( equiv-edge-standard-unordered-pair-vertices-equiv-Undirected-Graph
+ ( edge-equiv-standard-unordered-pair-vertices-equiv-Undirected-Graph
e x y)
hom-equiv-Undirected-Graph :
@@ -196,8 +196,8 @@ module _
is-torsorial (htpy-equiv-Undirected-Graph f)
is-torsorial-htpy-equiv-Undirected-Graph f =
is-torsorial-Eq-structure
- ( is-torsorial-htpy-equiv (equiv-vertex-equiv-Undirected-Graph G H f))
- ( pair (equiv-vertex-equiv-Undirected-Graph G H f) refl-htpy)
+ ( is-torsorial-htpy-equiv (vertex-equiv-equiv-Undirected-Graph G H f))
+ ( pair (vertex-equiv-equiv-Undirected-Graph G H f) refl-htpy)
( is-contr-equiv'
( Σ ( (p : unordered-pair-vertices-Undirected-Graph G) →
edge-Undirected-Graph G p ≃
@@ -219,7 +219,7 @@ module _
( is-torsorial-Eq-Π
( λ p →
is-torsorial-htpy-equiv
- ( equiv-edge-equiv-Undirected-Graph G H f p))))
+ ( edge-equiv-equiv-Undirected-Graph G H f p))))
is-equiv-htpy-eq-equiv-Undirected-Graph :
(f g : equiv-Undirected-Graph G H) →
diff --git a/src/graph-theory/fibers-directed-graphs.lagda.md b/src/graph-theory/fibers-directed-graphs.lagda.md
index c4ce42deb8..ed82be7273 100644
--- a/src/graph-theory/fibers-directed-graphs.lagda.md
+++ b/src/graph-theory/fibers-directed-graphs.lagda.md
@@ -31,12 +31,21 @@ open import trees.directed-trees
## Idea
Consider a vertex `x` in a [directed graph](graph-theory.directed-graphs.md)
-`G`. The **fiber** of `G` at `x` is a [directed tree](trees.directed-trees.md)
-of which the type of nodes consists of vertices `y` equipped with a
+`G`. The
+{{#concept "fiber" Disambiguation="directed graph" Agda=fiber-Directed-Graph}}
+of `G` at `x` is a [directed tree](trees.directed-trees.md) of which the type of
+nodes consists of vertices `y` equipped with a
[walk](graph-theory.walks-directed-graphs.md) `w` from `y` to `x`, and the type
of edges from `(y , w)` to `(z , v)` consist of an edge `e : y → z` such that
`w = cons e v`.
+**Note:** The fiber of a directed graph should not be confused with the
+[fiber of a morphism of directed graphs](graph-theory.fibers-morphisms-directed-graphs.md),
+which is the
+[dependent directed graph](graph-theory.dependent-directed-graphs.md) consisting
+of the [fibers](foundation-core.fibers-of-maps.md) of the actions on vertices
+and edges.
+
## Definitions
### The underlying graph of the fiber of `G` at `x`
diff --git a/src/graph-theory/fibers-morphisms-directed-graphs.lagda.md b/src/graph-theory/fibers-morphisms-directed-graphs.lagda.md
new file mode 100644
index 0000000000..c6e11c4da1
--- /dev/null
+++ b/src/graph-theory/fibers-morphisms-directed-graphs.lagda.md
@@ -0,0 +1,214 @@
+# Fibers of morphisms into directed graphs
+
+```agda
+module graph-theory.fibers-morphisms-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.families-of-equivalences
+open import foundation.fibers-of-maps
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.dependent-sums-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.equivalences-dependent-directed-graphs
+open import graph-theory.equivalences-directed-graphs
+open import graph-theory.morphisms-directed-graphs
+```
+
+
+
+## Idea
+
+Consider a [morphism](graph-theory.morphisms-directed-graphs.md) `f : H → G` of
+[directed graphs](graph-theory.directed-graphs.md). The
+{{#concept "fiber" Disambiguation="morphisms of directed graphs"}} of `f` is the
+[dependent directed graph](graph-theory.dependent-directed-graphs.md) `fib_f`
+over `G` given by
+
+```text
+ (fib_f)₀ x := fib f₀
+ (fib_f)₁ e (y , refl) (y' , refl) := fib f₁ e.
+```
+
+**Note:** The fiber of a morphism of directed graphs should not be confused with
+the
+[fiber of a directed graph at a vertex](graph-theory.fibers-directed-graphs.md),
+which are the [directed trees](trees.directed-trees.md) of which the type of
+nodes consists of vertices `y` equipped with a
+[walk](graph-theory.walks-directed-graphs.md) `w` from `y` to `x`, and the type
+of edges from `(y , w)` to `(z , v)` consist of an edge `e : y → z` such that
+`w = cons e v`.
+
+## Definitions
+
+### The fiber of a morphism of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (H : Directed-Graph l1 l2) (G : Directed-Graph l3 l4)
+ (f : hom-Directed-Graph H G)
+ where
+
+ vertex-fiber-hom-Directed-Graph :
+ vertex-Directed-Graph G → UU (l1 ⊔ l3)
+ vertex-fiber-hom-Directed-Graph = fiber (vertex-hom-Directed-Graph H G f)
+
+ edge-fiber-hom-Directed-Graph :
+ {x x' : vertex-Directed-Graph G} →
+ edge-Directed-Graph G x x' →
+ vertex-fiber-hom-Directed-Graph x →
+ vertex-fiber-hom-Directed-Graph x' → UU (l2 ⊔ l4)
+ edge-fiber-hom-Directed-Graph e (y , refl) (y' , refl) =
+ fiber (edge-hom-Directed-Graph H G f) e
+
+ fiber-hom-Directed-Graph : Dependent-Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4) G
+ pr1 fiber-hom-Directed-Graph = vertex-fiber-hom-Directed-Graph
+ pr2 fiber-hom-Directed-Graph _ _ = edge-fiber-hom-Directed-Graph
+```
+
+## Properties
+
+### The coproduct of the fibers of a morphism of directed graphs is the equivalent to the codomain
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (H : Directed-Graph l1 l2) (G : Directed-Graph l3 l4)
+ (f : hom-Directed-Graph H G)
+ where
+
+ vertex-compute-Σ-fiber-hom-Directed-Graph :
+ vertex-Directed-Graph H ≃
+ vertex-Σ-Directed-Graph (fiber-hom-Directed-Graph H G f)
+ vertex-compute-Σ-fiber-hom-Directed-Graph =
+ inv-equiv-total-fiber (vertex-hom-Directed-Graph H G f)
+
+ map-vertex-compute-Σ-fiber-hom-Directed-Graph :
+ vertex-Directed-Graph H →
+ vertex-Σ-Directed-Graph (fiber-hom-Directed-Graph H G f)
+ map-vertex-compute-Σ-fiber-hom-Directed-Graph =
+ map-equiv vertex-compute-Σ-fiber-hom-Directed-Graph
+
+ edge-compute-Σ-fiber-hom-Directed-Graph :
+ {x y : vertex-Directed-Graph H} →
+ edge-Directed-Graph H x y ≃
+ edge-Σ-Directed-Graph
+ ( fiber-hom-Directed-Graph H G f)
+ ( map-vertex-compute-Σ-fiber-hom-Directed-Graph x)
+ ( map-vertex-compute-Σ-fiber-hom-Directed-Graph y)
+ edge-compute-Σ-fiber-hom-Directed-Graph =
+ inv-equiv-total-fiber (edge-hom-Directed-Graph H G f)
+
+ compute-Σ-fiber-hom-Directed-Graph :
+ equiv-Directed-Graph H (Σ-Directed-Graph (fiber-hom-Directed-Graph H G f))
+ pr1 compute-Σ-fiber-hom-Directed-Graph =
+ vertex-compute-Σ-fiber-hom-Directed-Graph
+ pr2 compute-Σ-fiber-hom-Directed-Graph _ _ =
+ edge-compute-Σ-fiber-hom-Directed-Graph
+
+ hom-compute-Σ-fiber-hom-Directed-Graph :
+ hom-Directed-Graph H (Σ-Directed-Graph (fiber-hom-Directed-Graph H G f))
+ hom-compute-Σ-fiber-hom-Directed-Graph =
+ hom-equiv-Directed-Graph H
+ ( Σ-Directed-Graph (fiber-hom-Directed-Graph H G f))
+ ( compute-Σ-fiber-hom-Directed-Graph)
+```
+
+### The equivalence of the domain and the total graph of the fibers of a morphism of graphs fits in a commuting triangle
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (H : Directed-Graph l1 l2) (G : Directed-Graph l3 l4)
+ (f : hom-Directed-Graph H G)
+ where
+
+ htpy-compute-Σ-fiber-hom-Directed-Graph :
+ htpy-hom-Directed-Graph H G f
+ ( comp-hom-Directed-Graph H
+ ( Σ-Directed-Graph (fiber-hom-Directed-Graph H G f))
+ ( G)
+ ( pr1-Σ-Directed-Graph (fiber-hom-Directed-Graph H G f))
+ ( hom-compute-Σ-fiber-hom-Directed-Graph H G f))
+ htpy-compute-Σ-fiber-hom-Directed-Graph =
+ refl-htpy-hom-Directed-Graph H G f
+```
+
+### The fibers of the first projection of a dependent sums of directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ fiber-pr1-Σ-Directed-Graph : Dependent-Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4) G
+ fiber-pr1-Σ-Directed-Graph =
+ fiber-hom-Directed-Graph
+ ( Σ-Directed-Graph H)
+ ( G)
+ ( pr1-Σ-Directed-Graph H)
+
+ vertex-fiber-pr1-Σ-Directed-Graph :
+ (x : vertex-Directed-Graph G) → UU (l1 ⊔ l3)
+ vertex-fiber-pr1-Σ-Directed-Graph =
+ vertex-Dependent-Directed-Graph fiber-pr1-Σ-Directed-Graph
+
+ edge-fiber-pr1-Σ-Directed-Graph :
+ {x x' : vertex-Directed-Graph G} →
+ edge-Directed-Graph G x x' →
+ vertex-fiber-pr1-Σ-Directed-Graph x →
+ vertex-fiber-pr1-Σ-Directed-Graph x' → UU (l2 ⊔ l4)
+ edge-fiber-pr1-Σ-Directed-Graph =
+ edge-Dependent-Directed-Graph fiber-pr1-Σ-Directed-Graph
+
+ vertex-equiv-compute-fiber-pr1-Σ-Directed-Graph :
+ fam-equiv
+ ( vertex-fiber-pr1-Σ-Directed-Graph)
+ ( vertex-Dependent-Directed-Graph H)
+ vertex-equiv-compute-fiber-pr1-Σ-Directed-Graph =
+ equiv-fiber-pr1 _
+
+ vertex-compute-fiber-pr1-Σ-Directed-Graph :
+ {x : vertex-Directed-Graph G} →
+ vertex-fiber-pr1-Σ-Directed-Graph x →
+ vertex-Dependent-Directed-Graph H x
+ vertex-compute-fiber-pr1-Σ-Directed-Graph =
+ map-fiber-pr1 _ _
+
+ edge-equiv-compute-fiber-pr1-Σ-Directed-Graph :
+ {x x' : vertex-Directed-Graph G}
+ (a : edge-Directed-Graph G x x') →
+ (y : vertex-fiber-pr1-Σ-Directed-Graph x) →
+ (y' : vertex-fiber-pr1-Σ-Directed-Graph x') →
+ edge-fiber-pr1-Σ-Directed-Graph a y y' ≃
+ edge-Dependent-Directed-Graph H a
+ ( vertex-compute-fiber-pr1-Σ-Directed-Graph y)
+ ( vertex-compute-fiber-pr1-Σ-Directed-Graph y')
+ edge-equiv-compute-fiber-pr1-Σ-Directed-Graph a (y , refl) (y' , refl) =
+ equiv-fiber-pr1 _ _
+
+ edge-compute-fiber-pr1-Σ-Directed-Graph :
+ {x x' : vertex-Directed-Graph G}
+ {a : edge-Directed-Graph G x x'} →
+ {y : vertex-fiber-pr1-Σ-Directed-Graph x} →
+ {y' : vertex-fiber-pr1-Σ-Directed-Graph x'} →
+ edge-fiber-pr1-Σ-Directed-Graph a y y' →
+ edge-Dependent-Directed-Graph H a
+ ( vertex-compute-fiber-pr1-Σ-Directed-Graph y)
+ ( vertex-compute-fiber-pr1-Σ-Directed-Graph y')
+ edge-compute-fiber-pr1-Σ-Directed-Graph =
+ map-equiv (edge-equiv-compute-fiber-pr1-Σ-Directed-Graph _ _ _)
+
+ compute-fiber-pr1-Σ-Directed-Graph :
+ equiv-Dependent-Directed-Graph fiber-pr1-Σ-Directed-Graph H
+ pr1 compute-fiber-pr1-Σ-Directed-Graph =
+ vertex-equiv-compute-fiber-pr1-Σ-Directed-Graph
+ pr2 compute-fiber-pr1-Σ-Directed-Graph _ _ =
+ edge-equiv-compute-fiber-pr1-Σ-Directed-Graph
+```
diff --git a/src/graph-theory/fibers-morphisms-reflexive-graphs.lagda.md b/src/graph-theory/fibers-morphisms-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..8ffde96bc4
--- /dev/null
+++ b/src/graph-theory/fibers-morphisms-reflexive-graphs.lagda.md
@@ -0,0 +1,314 @@
+# Fibers of morphisms into reflexive graphs
+
+```agda
+module graph-theory.fibers-morphisms-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-functions
+open import foundation.binary-transport
+open import foundation.commuting-squares-of-identifications
+open import foundation.dependent-identifications
+open import foundation.dependent-pair-types
+open import foundation.equality-dependent-pair-types
+open import foundation.equivalences
+open import foundation.families-of-equivalences
+open import foundation.fibers-of-maps
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.dependent-reflexive-graphs
+open import graph-theory.dependent-sums-reflexive-graphs
+open import graph-theory.equivalences-dependent-directed-graphs
+open import graph-theory.equivalences-dependent-reflexive-graphs
+open import graph-theory.equivalences-reflexive-graphs
+open import graph-theory.fibers-morphisms-directed-graphs
+open import graph-theory.morphisms-reflexive-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+Consider a [morphism](graph-theory.morphisms-reflexive-graphs.md) `f : H → G` of
+[reflexive graphs](graph-theory.reflexive-graphs.md). The
+{{#concept "fiber" Disambiguation="morphisms of reflexive graphs"}} of `f` is
+the [dependent reflexive graph](graph-theory.dependent-reflexive-graphs.md)
+`fib_f` over `G` given by
+
+```text
+ (fib_f)₀ x := fib f₀
+ (fib_f)₁ e (y , refl) (y' , refl) := fib f₁ e
+ refl (fib_f) (y , refl) := (refl H x , preserves-refl f x).
+```
+
+## Definitions
+
+### The fiber of a morphism of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (H : Reflexive-Graph l1 l2) (G : Reflexive-Graph l3 l4)
+ (f : hom-Reflexive-Graph H G)
+ where
+
+ dependent-directed-graph-fiber-hom-Reflexive-Graph :
+ Dependent-Directed-Graph
+ ( l1 ⊔ l3)
+ ( l2 ⊔ l4)
+ ( directed-graph-Reflexive-Graph G)
+ dependent-directed-graph-fiber-hom-Reflexive-Graph =
+ fiber-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph H)
+ ( directed-graph-Reflexive-Graph G)
+ ( hom-directed-graph-hom-Reflexive-Graph H G f)
+
+ vertex-fiber-hom-Reflexive-Graph :
+ vertex-Reflexive-Graph G → UU (l1 ⊔ l3)
+ vertex-fiber-hom-Reflexive-Graph =
+ vertex-Dependent-Directed-Graph
+ dependent-directed-graph-fiber-hom-Reflexive-Graph
+
+ edge-fiber-hom-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G} (e : edge-Reflexive-Graph G x x') →
+ vertex-fiber-hom-Reflexive-Graph x →
+ vertex-fiber-hom-Reflexive-Graph x' → UU (l2 ⊔ l4)
+ edge-fiber-hom-Reflexive-Graph =
+ edge-Dependent-Directed-Graph
+ dependent-directed-graph-fiber-hom-Reflexive-Graph
+
+ refl-fiber-hom-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G}
+ (y : vertex-fiber-hom-Reflexive-Graph x) →
+ edge-fiber-hom-Reflexive-Graph (refl-Reflexive-Graph G x) y y
+ pr1 (refl-fiber-hom-Reflexive-Graph (y , refl)) =
+ refl-Reflexive-Graph H y
+ pr2 (refl-fiber-hom-Reflexive-Graph (y , refl)) =
+ refl-hom-Reflexive-Graph H G f y
+
+ fiber-hom-Reflexive-Graph :
+ Dependent-Reflexive-Graph (l1 ⊔ l3) (l2 ⊔ l4) G
+ pr1 fiber-hom-Reflexive-Graph =
+ dependent-directed-graph-fiber-hom-Reflexive-Graph
+ pr2 fiber-hom-Reflexive-Graph _ =
+ refl-fiber-hom-Reflexive-Graph
+```
+
+## Properties
+
+### The coproduct of the fibers of a morphism of reflexive graphs is the equivalent to the codomain
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (H : Reflexive-Graph l1 l2) (G : Reflexive-Graph l3 l4)
+ (f : hom-Reflexive-Graph H G)
+ where
+
+ equiv-directed-graph-compute-Σ-fiber-hom-Reflexive-Graph :
+ equiv-directed-graph-Reflexive-Graph
+ ( H)
+ ( Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f))
+ equiv-directed-graph-compute-Σ-fiber-hom-Reflexive-Graph =
+ compute-Σ-fiber-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph H)
+ ( directed-graph-Reflexive-Graph G)
+ ( hom-directed-graph-hom-Reflexive-Graph H G f)
+
+ vertex-compute-Σ-fiber-hom-Reflexive-Graph :
+ vertex-Reflexive-Graph H →
+ vertex-Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f)
+ vertex-compute-Σ-fiber-hom-Reflexive-Graph =
+ vertex-equiv-directed-graph-Reflexive-Graph H
+ ( Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f))
+ ( equiv-directed-graph-compute-Σ-fiber-hom-Reflexive-Graph)
+
+ edge-compute-Σ-fiber-hom-Reflexive-graph :
+ {x x' : vertex-Reflexive-Graph H} →
+ edge-Reflexive-Graph H x x' →
+ edge-Σ-Reflexive-Graph
+ ( fiber-hom-Reflexive-Graph H G f)
+ ( vertex-compute-Σ-fiber-hom-Reflexive-Graph x)
+ ( vertex-compute-Σ-fiber-hom-Reflexive-Graph x')
+ edge-compute-Σ-fiber-hom-Reflexive-graph =
+ edge-equiv-directed-graph-Reflexive-Graph H
+ ( Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f))
+ ( equiv-directed-graph-compute-Σ-fiber-hom-Reflexive-Graph)
+
+ refl-compute-Σ-fiber-hom-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph H) →
+ edge-compute-Σ-fiber-hom-Reflexive-graph (refl-Reflexive-Graph H x) =
+ refl-Σ-Reflexive-Graph
+ ( fiber-hom-Reflexive-Graph H G f)
+ ( vertex-compute-Σ-fiber-hom-Reflexive-Graph x)
+ refl-compute-Σ-fiber-hom-Reflexive-Graph x =
+ eq-pair-Σ
+ ( refl-hom-Reflexive-Graph H G f x)
+ ( ( inv
+ ( compute-tr-fiber
+ ( edge-hom-Reflexive-Graph H G f)
+ ( refl-hom-Reflexive-Graph H G f x)
+ ( _))) ∙
+ ( refl))
+
+ compute-Σ-fiber-hom-Reflexive-Graph :
+ equiv-Reflexive-Graph
+ ( H)
+ ( Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f))
+ pr1 compute-Σ-fiber-hom-Reflexive-Graph =
+ equiv-directed-graph-compute-Σ-fiber-hom-Reflexive-Graph
+ pr2 compute-Σ-fiber-hom-Reflexive-Graph =
+ refl-compute-Σ-fiber-hom-Reflexive-Graph
+
+ hom-compute-Σ-fiber-hom-Reflexive-Graph :
+ hom-Reflexive-Graph
+ ( H)
+ ( Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f))
+ hom-compute-Σ-fiber-hom-Reflexive-Graph =
+ hom-equiv-Reflexive-Graph H
+ ( Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f))
+ ( compute-Σ-fiber-hom-Reflexive-Graph)
+```
+
+### The equivalence of the domain and the total graph of the fibers of a morphism of graphs fits in a commuting triangle
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (H : Reflexive-Graph l1 l2) (G : Reflexive-Graph l3 l4)
+ (f : hom-Reflexive-Graph H G)
+ where
+
+ htpy-compute-Σ-fiber-hom-Reflexive-Graph :
+ htpy-hom-Reflexive-Graph H G f
+ ( comp-hom-Reflexive-Graph H
+ ( Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f))
+ ( G)
+ ( pr1-Σ-Reflexive-Graph (fiber-hom-Reflexive-Graph H G f))
+ ( hom-compute-Σ-fiber-hom-Reflexive-Graph H G f))
+ pr1 htpy-compute-Σ-fiber-hom-Reflexive-Graph =
+ htpy-compute-Σ-fiber-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph H)
+ ( directed-graph-Reflexive-Graph G)
+ ( hom-directed-graph-hom-Reflexive-Graph H G f)
+ pr2 htpy-compute-Σ-fiber-hom-Reflexive-Graph x =
+ ap
+ ( _∙ refl)
+ ( ( ap-pr1-eq-pair-Σ
+ ( refl-hom-Reflexive-Graph H G f x)
+ ( _)) ∙
+ ( inv (ap-id (refl-hom-Reflexive-Graph H G f x))))
+```
+
+### The fibers of the first projection of a dependent sums of reflexive graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Graph l1 l2}
+ (H : Dependent-Reflexive-Graph l3 l4 G)
+ where
+
+ fiber-pr1-Σ-Reflexive-Graph : Dependent-Reflexive-Graph (l1 ⊔ l3) (l2 ⊔ l4) G
+ fiber-pr1-Σ-Reflexive-Graph =
+ fiber-hom-Reflexive-Graph
+ ( Σ-Reflexive-Graph H)
+ ( G)
+ ( pr1-Σ-Reflexive-Graph H)
+
+ dependent-directed-graph-fiber-pr1-Σ-Reflexive-Graph :
+ Dependent-Directed-Graph
+ ( l1 ⊔ l3)
+ ( l2 ⊔ l4)
+ ( directed-graph-Reflexive-Graph G)
+ dependent-directed-graph-fiber-pr1-Σ-Reflexive-Graph =
+ dependent-directed-graph-Dependent-Reflexive-Graph
+ fiber-pr1-Σ-Reflexive-Graph
+
+ vertex-fiber-pr1-Σ-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph G) → UU (l1 ⊔ l3)
+ vertex-fiber-pr1-Σ-Reflexive-Graph =
+ vertex-Dependent-Reflexive-Graph fiber-pr1-Σ-Reflexive-Graph
+
+ edge-fiber-pr1-Σ-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G} →
+ edge-Reflexive-Graph G x x' →
+ vertex-fiber-pr1-Σ-Reflexive-Graph x →
+ vertex-fiber-pr1-Σ-Reflexive-Graph x' → UU (l2 ⊔ l4)
+ edge-fiber-pr1-Σ-Reflexive-Graph =
+ edge-Dependent-Reflexive-Graph fiber-pr1-Σ-Reflexive-Graph
+
+ refl-fiber-pr1-Σ-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G} (y : vertex-fiber-pr1-Σ-Reflexive-Graph x) →
+ edge-fiber-pr1-Σ-Reflexive-Graph (refl-Reflexive-Graph G x) y y
+ refl-fiber-pr1-Σ-Reflexive-Graph =
+ refl-Dependent-Reflexive-Graph fiber-pr1-Σ-Reflexive-Graph
+
+ equiv-dependent-directed-graph-compute-fiber-pr1-Σ-Reflexive-Graph :
+ equiv-Dependent-Directed-Graph
+ ( dependent-directed-graph-fiber-pr1-Σ-Reflexive-Graph)
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+ equiv-dependent-directed-graph-compute-fiber-pr1-Σ-Reflexive-Graph =
+ compute-fiber-pr1-Σ-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ vertex-equiv-compute-fiber-pr1-Σ-Reflexive-Graph :
+ fam-equiv
+ ( vertex-fiber-pr1-Σ-Reflexive-Graph)
+ ( vertex-Dependent-Reflexive-Graph H)
+ vertex-equiv-compute-fiber-pr1-Σ-Reflexive-Graph =
+ vertex-equiv-compute-fiber-pr1-Σ-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ vertex-compute-fiber-pr1-Σ-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G} →
+ vertex-fiber-pr1-Σ-Reflexive-Graph x →
+ vertex-Dependent-Reflexive-Graph H x
+ vertex-compute-fiber-pr1-Σ-Reflexive-Graph =
+ vertex-compute-fiber-pr1-Σ-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ edge-equiv-compute-fiber-pr1-Σ-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G}
+ (a : edge-Reflexive-Graph G x x') →
+ (y : vertex-fiber-pr1-Σ-Reflexive-Graph x) →
+ (y' : vertex-fiber-pr1-Σ-Reflexive-Graph x') →
+ edge-fiber-pr1-Σ-Reflexive-Graph a y y' ≃
+ edge-Dependent-Reflexive-Graph H a
+ ( vertex-compute-fiber-pr1-Σ-Reflexive-Graph y)
+ ( vertex-compute-fiber-pr1-Σ-Reflexive-Graph y')
+ edge-equiv-compute-fiber-pr1-Σ-Reflexive-Graph =
+ edge-equiv-compute-fiber-pr1-Σ-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ edge-compute-fiber-pr1-Σ-Reflexive-Graph :
+ {x x' : vertex-Reflexive-Graph G}
+ {a : edge-Reflexive-Graph G x x'} →
+ {y : vertex-fiber-pr1-Σ-Reflexive-Graph x} →
+ {y' : vertex-fiber-pr1-Σ-Reflexive-Graph x'} →
+ edge-fiber-pr1-Σ-Reflexive-Graph a y y' →
+ edge-Dependent-Reflexive-Graph H a
+ ( vertex-compute-fiber-pr1-Σ-Reflexive-Graph y)
+ ( vertex-compute-fiber-pr1-Σ-Reflexive-Graph y')
+ edge-compute-fiber-pr1-Σ-Reflexive-Graph =
+ edge-compute-fiber-pr1-Σ-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph H)
+
+ refl-compute-fiber-pr1-Σ-Reflexive-Graph :
+ {x : vertex-Reflexive-Graph G}
+ (y : vertex-fiber-pr1-Σ-Reflexive-Graph x) →
+ edge-compute-fiber-pr1-Σ-Reflexive-Graph
+ ( refl-fiber-pr1-Σ-Reflexive-Graph y) =
+ refl-Dependent-Reflexive-Graph H
+ ( vertex-compute-fiber-pr1-Σ-Reflexive-Graph y)
+ refl-compute-fiber-pr1-Σ-Reflexive-Graph ((x , y) , refl) =
+ refl
+
+ compute-fiber-pr1-Σ-Reflexive-Graph :
+ equiv-Dependent-Reflexive-Graph fiber-pr1-Σ-Reflexive-Graph H
+ pr1 compute-fiber-pr1-Σ-Reflexive-Graph =
+ equiv-dependent-directed-graph-compute-fiber-pr1-Σ-Reflexive-Graph
+ pr2 compute-fiber-pr1-Σ-Reflexive-Graph _ =
+ refl-compute-fiber-pr1-Σ-Reflexive-Graph
+```
diff --git a/src/graph-theory/internal-hom-directed-graphs.lagda.md b/src/graph-theory/internal-hom-directed-graphs.lagda.md
new file mode 100644
index 0000000000..c4625f214c
--- /dev/null
+++ b/src/graph-theory/internal-hom-directed-graphs.lagda.md
@@ -0,0 +1,220 @@
+# Internal homs of directed graphs
+
+```agda
+module graph-theory.internal-hom-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.homotopies
+open import foundation.retractions
+open import foundation.sections
+open import foundation.universe-levels
+
+open import graph-theory.cartesian-products-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+```
+
+
+
+## Idea
+
+Given two [directed graphs](graph-theory.directed-graphs.md) `A` and `B`, the
+{{#concept "internal hom" Disambiguation="directed graph" agda=internal-hom-Directed-Graph}}
+`B^A` is the directed graph that satisfies the universal property
+
+```text
+ hom X B^A ≃ hom (X × A) B.
+```
+
+Concretely, the directed graph `B^A` has
+
+- The type of functions `A₀ → B₀` as its type of vertices
+- For any two functions `f₀ g₀ : A₀ → B₀`, an edge from `f₀` to `g₀` is an
+ element of type
+
+ ```text
+ (x y : A₀) → A₁ x y → B₁ (f₀ x) (g₀ y).
+ ```
+
+The universal property of the internal hom gives that the type of
+[graph homomorphisms](graph-theory.morphisms-directed-graphs.md) `hom A B` is
+[equivalent](foundation-core.equivalences.md) to the type of morphisms from the
+[terminal directed graph](graph-theory.terminal-directed-graphs.md) into `B^A`,
+which is in turn equivalent to the type of vertices `f₀` of the internal hom
+`B^A` equipped with a loop `(B^A)₁ f f`. Indeed, this data consists of:
+
+- A map `f₀ : A₀ → B₀`
+- A family of maps `f₁ : (x y : A₀) → A₁ x y → B₁ (f₀ x) (f₀ y)`,
+
+as expected for the type of morphisms of directed graphs.
+
+## Definitions
+
+### The internal hom of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : Directed-Graph l1 l2) (B : Directed-Graph l3 l4)
+ where
+
+ vertex-internal-hom-Directed-Graph : UU (l1 ⊔ l3)
+ vertex-internal-hom-Directed-Graph =
+ vertex-Directed-Graph A → vertex-Directed-Graph B
+
+ edge-internal-hom-Directed-Graph :
+ (f g : vertex-internal-hom-Directed-Graph) → UU (l1 ⊔ l2 ⊔ l4)
+ edge-internal-hom-Directed-Graph f g =
+ (x y : vertex-Directed-Graph A) →
+ edge-Directed-Graph A x y → edge-Directed-Graph B (f x) (g y)
+
+ internal-hom-Directed-Graph : Directed-Graph (l1 ⊔ l3) (l1 ⊔ l2 ⊔ l4)
+ pr1 internal-hom-Directed-Graph = vertex-internal-hom-Directed-Graph
+ pr2 internal-hom-Directed-Graph = edge-internal-hom-Directed-Graph
+```
+
+## Properties
+
+### The internal hom directed graph satisfies the universal property of the internal hom
+
+#### The evaluation of a morphism into an internal hom of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Directed-Graph l1 l2) (B : Directed-Graph l3 l4)
+ (C : Directed-Graph l5 l6)
+ (f : hom-Directed-Graph C (internal-hom-Directed-Graph A B))
+ where
+
+ vertex-ev-hom-internal-hom-Directed-Graph :
+ vertex-product-Directed-Graph C A → vertex-Directed-Graph B
+ vertex-ev-hom-internal-hom-Directed-Graph (c , a) =
+ vertex-hom-Directed-Graph C (internal-hom-Directed-Graph A B) f c a
+
+ edge-ev-hom-internal-hom-Directed-Graph :
+ (x y : vertex-product-Directed-Graph C A) →
+ edge-product-Directed-Graph C A x y →
+ edge-Directed-Graph B
+ ( vertex-ev-hom-internal-hom-Directed-Graph x)
+ ( vertex-ev-hom-internal-hom-Directed-Graph y)
+ edge-ev-hom-internal-hom-Directed-Graph _ _ (d , e) =
+ edge-hom-Directed-Graph C (internal-hom-Directed-Graph A B) f d _ _ e
+
+ ev-hom-internal-hom-Directed-Graph :
+ hom-Directed-Graph (product-Directed-Graph C A) B
+ pr1 ev-hom-internal-hom-Directed-Graph =
+ vertex-ev-hom-internal-hom-Directed-Graph
+ pr2 ev-hom-internal-hom-Directed-Graph =
+ edge-ev-hom-internal-hom-Directed-Graph
+```
+
+#### Uncurrying a morphism from a cartesian product into a directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Directed-Graph l1 l2) (B : Directed-Graph l3 l4)
+ (C : Directed-Graph l5 l6)
+ (f : hom-Directed-Graph (product-Directed-Graph C A) B)
+ where
+
+ vertex-uncurry-hom-product-Directed-Graph :
+ vertex-Directed-Graph C → vertex-internal-hom-Directed-Graph A B
+ vertex-uncurry-hom-product-Directed-Graph c a =
+ vertex-hom-Directed-Graph (product-Directed-Graph C A) B f (c , a)
+
+ edge-uncurry-hom-product-Directed-Graph :
+ (x y : vertex-Directed-Graph C) →
+ edge-Directed-Graph C x y →
+ edge-internal-hom-Directed-Graph A B
+ ( vertex-uncurry-hom-product-Directed-Graph x)
+ ( vertex-uncurry-hom-product-Directed-Graph y)
+ edge-uncurry-hom-product-Directed-Graph c c' d a a' e =
+ edge-hom-Directed-Graph (product-Directed-Graph C A) B f (d , e)
+
+ uncurry-hom-product-Directed-Graph :
+ hom-Directed-Graph C (internal-hom-Directed-Graph A B)
+ pr1 uncurry-hom-product-Directed-Graph =
+ vertex-uncurry-hom-product-Directed-Graph
+ pr2 uncurry-hom-product-Directed-Graph =
+ edge-uncurry-hom-product-Directed-Graph
+```
+
+#### The equivalence of the adjunction between products and internal homs of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (A : Directed-Graph l1 l2) (B : Directed-Graph l3 l4)
+ (C : Directed-Graph l5 l6)
+ where
+
+ htpy-is-section-uncurry-hom-product-Directed-Graph :
+ (f : hom-Directed-Graph (product-Directed-Graph C A) B) →
+ htpy-hom-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( B)
+ ( ev-hom-internal-hom-Directed-Graph A B C
+ ( uncurry-hom-product-Directed-Graph A B C f))
+ ( f)
+ pr1 (htpy-is-section-uncurry-hom-product-Directed-Graph f) = refl-htpy
+ pr2 (htpy-is-section-uncurry-hom-product-Directed-Graph f) x y = refl-htpy
+
+ is-section-uncurry-hom-product-Directed-Graph :
+ is-section
+ ( ev-hom-internal-hom-Directed-Graph A B C)
+ ( uncurry-hom-product-Directed-Graph A B C)
+ is-section-uncurry-hom-product-Directed-Graph f =
+ eq-htpy-hom-Directed-Graph
+ ( product-Directed-Graph C A)
+ ( B)
+ ( ev-hom-internal-hom-Directed-Graph A B C
+ ( uncurry-hom-product-Directed-Graph A B C f))
+ ( f)
+ ( htpy-is-section-uncurry-hom-product-Directed-Graph f)
+
+ htpy-is-retraction-uncurry-hom-product-Directed-Graph :
+ (f : hom-Directed-Graph C (internal-hom-Directed-Graph A B)) →
+ htpy-hom-Directed-Graph
+ ( C)
+ ( internal-hom-Directed-Graph A B)
+ ( uncurry-hom-product-Directed-Graph A B C
+ ( ev-hom-internal-hom-Directed-Graph A B C f))
+ ( f)
+ pr1 (htpy-is-retraction-uncurry-hom-product-Directed-Graph f) = refl-htpy
+ pr2 (htpy-is-retraction-uncurry-hom-product-Directed-Graph f) x y = refl-htpy
+
+ is-retraction-uncurry-hom-product-Directed-Graph :
+ is-retraction
+ ( ev-hom-internal-hom-Directed-Graph A B C)
+ ( uncurry-hom-product-Directed-Graph A B C)
+ is-retraction-uncurry-hom-product-Directed-Graph f =
+ eq-htpy-hom-Directed-Graph
+ ( C)
+ ( internal-hom-Directed-Graph A B)
+ ( uncurry-hom-product-Directed-Graph A B C
+ ( ev-hom-internal-hom-Directed-Graph A B C f))
+ ( f)
+ ( htpy-is-retraction-uncurry-hom-product-Directed-Graph f)
+
+ is-equiv-ev-hom-internal-hom-Directed-Graph :
+ is-equiv (ev-hom-internal-hom-Directed-Graph A B C)
+ is-equiv-ev-hom-internal-hom-Directed-Graph =
+ is-equiv-is-invertible
+ ( uncurry-hom-product-Directed-Graph A B C)
+ ( is-section-uncurry-hom-product-Directed-Graph)
+ ( is-retraction-uncurry-hom-product-Directed-Graph)
+
+ ev-equiv-hom-internal-hom-Directed-Graph :
+ hom-Directed-Graph C (internal-hom-Directed-Graph A B) ≃
+ hom-Directed-Graph (product-Directed-Graph C A) B
+ pr1 ev-equiv-hom-internal-hom-Directed-Graph =
+ ev-hom-internal-hom-Directed-Graph A B C
+ pr2 ev-equiv-hom-internal-hom-Directed-Graph =
+ is-equiv-ev-hom-internal-hom-Directed-Graph
+```
diff --git a/src/graph-theory/morphisms-dependent-directed-graphs.lagda.md b/src/graph-theory/morphisms-dependent-directed-graphs.lagda.md
new file mode 100644
index 0000000000..ef0c365ed0
--- /dev/null
+++ b/src/graph-theory/morphisms-dependent-directed-graphs.lagda.md
@@ -0,0 +1,116 @@
+# Morphisms of dependent directed graphs
+
+```agda
+module graph-theory.morphisms-dependent-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.function-types
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.directed-graphs
+```
+
+
+
+## Idea
+
+Consider two
+[dependent directed graphs](graph-theory.dependent-directed-graphs.md) `H` and
+`K` over a [directed graph](graph-theory.directed-graphs.md) `G`. A
+{{#concept "morphism of dependent directed graphs" Agda=hom-Dependent-Directed-Graph}}
+from `H` to `K` consists of a family of maps
+
+```text
+ f₀ : {x : G₀} → H₀ x → K₀ x
+```
+
+of vertices, and a family of maps
+
+```text
+ f₁ : {x y : G₀} (a : G₁ x y) {y : H₀ x} {y' : H₀ x'} → H₁ a y y' → K₁ a (f₀ y) (f₀ y')
+```
+
+of edges.
+
+## Definitions
+
+### Morphisms of dependent directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ (K : Dependent-Directed-Graph l5 l6 G)
+ where
+
+ hom-Dependent-Directed-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ hom-Dependent-Directed-Graph =
+ Σ ( (x : vertex-Directed-Graph G) →
+ vertex-Dependent-Directed-Graph H x →
+ vertex-Dependent-Directed-Graph K x)
+ ( λ f →
+ (x x' : vertex-Directed-Graph G) →
+ (a : edge-Directed-Graph G x x') →
+ (y : vertex-Dependent-Directed-Graph H x)
+ (y' : vertex-Dependent-Directed-Graph H x') →
+ edge-Dependent-Directed-Graph H a y y' →
+ edge-Dependent-Directed-Graph K a (f x y) (f x' y'))
+
+ vertex-hom-Dependent-Directed-Graph :
+ hom-Dependent-Directed-Graph →
+ {x : vertex-Directed-Graph G} →
+ vertex-Dependent-Directed-Graph H x →
+ vertex-Dependent-Directed-Graph K x
+ vertex-hom-Dependent-Directed-Graph f = pr1 f _
+
+ edge-hom-Dependent-Directed-Graph :
+ (f : hom-Dependent-Directed-Graph) →
+ {x x' : vertex-Directed-Graph G}
+ (a : edge-Directed-Graph G x x')
+ {y : vertex-Dependent-Directed-Graph H x}
+ {y' : vertex-Dependent-Directed-Graph H x'} →
+ edge-Dependent-Directed-Graph H a y y' →
+ edge-Dependent-Directed-Graph K a
+ ( vertex-hom-Dependent-Directed-Graph f y)
+ ( vertex-hom-Dependent-Directed-Graph f y')
+ edge-hom-Dependent-Directed-Graph f a =
+ pr2 f _ _ a _ _
+```
+
+### The identity morphism of a dependent directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Directed-Graph l1 l2}
+ (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ vertex-id-hom-Dependent-Directed-Graph :
+ {x : vertex-Directed-Graph G} →
+ vertex-Dependent-Directed-Graph H x →
+ vertex-Dependent-Directed-Graph H x
+ vertex-id-hom-Dependent-Directed-Graph = id
+
+ edge-id-hom-Dependent-Directed-Graph :
+ {x x' : vertex-Directed-Graph G}
+ (a : edge-Directed-Graph G x x')
+ (y : vertex-Dependent-Directed-Graph H x)
+ (y' : vertex-Dependent-Directed-Graph H x') →
+ edge-Dependent-Directed-Graph H a y y' →
+ edge-Dependent-Directed-Graph H a
+ ( vertex-id-hom-Dependent-Directed-Graph y)
+ ( vertex-id-hom-Dependent-Directed-Graph y')
+ edge-id-hom-Dependent-Directed-Graph a y y' = id
+
+ id-hom-Dependent-Directed-Graph :
+ hom-Dependent-Directed-Graph H H
+ pr1 id-hom-Dependent-Directed-Graph _ =
+ vertex-id-hom-Dependent-Directed-Graph
+ pr2 id-hom-Dependent-Directed-Graph _ _ =
+ edge-id-hom-Dependent-Directed-Graph
+```
diff --git a/src/graph-theory/morphisms-directed-graphs.lagda.md b/src/graph-theory/morphisms-directed-graphs.lagda.md
index fbff43076f..9c85662c76 100644
--- a/src/graph-theory/morphisms-directed-graphs.lagda.md
+++ b/src/graph-theory/morphisms-directed-graphs.lagda.md
@@ -7,6 +7,7 @@ module graph-theory.morphisms-directed-graphs where
Imports
```agda
+open import foundation.binary-dependent-identifications
open import foundation.binary-transport
open import foundation.dependent-pair-types
open import foundation.equality-dependent-function-types
@@ -85,7 +86,7 @@ module _
( λ y → edge-hom-Directed-Graph)
```
-### Composition of morphisms graphs
+### Composition of morphisms of directed graphs
```agda
module _
@@ -117,7 +118,7 @@ module _
pr2 (comp-hom-Directed-Graph g f) = edge-comp-hom-Directed-Graph g f
```
-### Identity morphisms graphs
+### Identity morphisms of directed graphs
```agda
module _
@@ -144,12 +145,12 @@ module _
Σ ( vertex-hom-Directed-Graph G H f ~ vertex-hom-Directed-Graph G H g)
( λ α →
( x y : vertex-Directed-Graph G) (e : edge-Directed-Graph G x y) →
- binary-tr
+ binary-dependent-identification
( edge-Directed-Graph H)
( α x)
( α y)
- ( edge-hom-Directed-Graph G H f e) =
- edge-hom-Directed-Graph G H g e)
+ ( edge-hom-Directed-Graph G H f e)
+ ( edge-hom-Directed-Graph G H g e))
module _
(f g : hom-Directed-Graph G H) (α : htpy-hom-Directed-Graph f g)
@@ -161,12 +162,12 @@ module _
edge-htpy-hom-Directed-Graph :
(x y : vertex-Directed-Graph G) (e : edge-Directed-Graph G x y) →
- binary-tr
+ binary-dependent-identification
( edge-Directed-Graph H)
( vertex-htpy-hom-Directed-Graph x)
( vertex-htpy-hom-Directed-Graph y)
- ( edge-hom-Directed-Graph G H f e) =
- edge-hom-Directed-Graph G H g e
+ ( edge-hom-Directed-Graph G H f e)
+ ( edge-hom-Directed-Graph G H g e)
edge-htpy-hom-Directed-Graph = pr2 α
refl-htpy-hom-Directed-Graph :
@@ -211,6 +212,84 @@ module _
map-inv-equiv (extensionality-hom-Directed-Graph f g)
```
+### The left unit law of composition of morphisms of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (G : Directed-Graph l1 l2) (H : Directed-Graph l3 l4)
+ (f : hom-Directed-Graph G H)
+ where
+
+ vertex-left-unit-law-comp-hom-Directed-Graph :
+ vertex-comp-hom-Directed-Graph G H H (id-hom-Directed-Graph H) f ~
+ vertex-hom-Directed-Graph G H f
+ vertex-left-unit-law-comp-hom-Directed-Graph = refl-htpy
+
+ edge-left-unit-law-comp-hom-Directed-Graph :
+ {x y : vertex-Directed-Graph G} →
+ edge-comp-hom-Directed-Graph G H H (id-hom-Directed-Graph H) f x y ~
+ edge-hom-Directed-Graph G H f
+ edge-left-unit-law-comp-hom-Directed-Graph = refl-htpy
+
+ left-unit-law-comp-hom-Directed-Graph :
+ htpy-hom-Directed-Graph G H
+ ( comp-hom-Directed-Graph G H H (id-hom-Directed-Graph H) f)
+ ( f)
+ pr1 left-unit-law-comp-hom-Directed-Graph =
+ vertex-left-unit-law-comp-hom-Directed-Graph
+ pr2 left-unit-law-comp-hom-Directed-Graph _ _ =
+ edge-left-unit-law-comp-hom-Directed-Graph
+```
+
+### The right unit law of composition of morphisms of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (G : Directed-Graph l1 l2) (H : Directed-Graph l3 l4)
+ (f : hom-Directed-Graph G H)
+ where
+
+ vertex-right-unit-law-comp-hom-Directed-Graph :
+ vertex-comp-hom-Directed-Graph G G H f (id-hom-Directed-Graph G) ~
+ vertex-hom-Directed-Graph G H f
+ vertex-right-unit-law-comp-hom-Directed-Graph = refl-htpy
+
+ edge-right-unit-law-comp-hom-Directed-Graph :
+ {x y : vertex-Directed-Graph G} →
+ edge-comp-hom-Directed-Graph G G H f (id-hom-Directed-Graph G) x y ~
+ edge-hom-Directed-Graph G H f
+ edge-right-unit-law-comp-hom-Directed-Graph = refl-htpy
+
+ right-unit-law-comp-hom-Directed-Graph :
+ htpy-hom-Directed-Graph G H
+ ( comp-hom-Directed-Graph G G H f (id-hom-Directed-Graph G))
+ ( f)
+ pr1 right-unit-law-comp-hom-Directed-Graph =
+ vertex-right-unit-law-comp-hom-Directed-Graph
+ pr2 right-unit-law-comp-hom-Directed-Graph _ _ =
+ edge-right-unit-law-comp-hom-Directed-Graph
+```
+
+### Associativity of composition of morphisms of directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 l7 l8 : Level}
+ (G : Directed-Graph l1 l2) (H : Directed-Graph l3 l4)
+ (K : Directed-Graph l5 l6) (L : Directed-Graph l7 l8)
+ (h : hom-Directed-Graph K L)
+ (g : hom-Directed-Graph H K)
+ (f : hom-Directed-Graph G H)
+ where
+
+ associative-comp-hom-Directed-Graph :
+ htpy-hom-Directed-Graph G L
+ ( comp-hom-Directed-Graph G H L (comp-hom-Directed-Graph H K L h g) f)
+ ( comp-hom-Directed-Graph G K L h (comp-hom-Directed-Graph G H K g f))
+ associative-comp-hom-Directed-Graph =
+ refl-htpy-hom-Directed-Graph G L _
+```
+
## External links
- [Graph homomorphism](https://www.wikidata.org/entity/Q3385162) on Wikidata
diff --git a/src/graph-theory/morphisms-reflexive-graphs.lagda.md b/src/graph-theory/morphisms-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..855700002e
--- /dev/null
+++ b/src/graph-theory/morphisms-reflexive-graphs.lagda.md
@@ -0,0 +1,258 @@
+# Morphisms of reflexive graphs
+
+```agda
+module graph-theory.morphisms-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-binary-dependent-functions
+open import foundation.action-on-identifications-functions
+open import foundation.binary-transport
+open import foundation.commuting-squares-of-identifications
+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-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.structure-identity-principle
+open import foundation.torsorial-type-families
+open import foundation.universe-levels
+
+open import graph-theory.morphisms-directed-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+A {{#concept "morphism of reflexive graphs" Agda=hom-Reflexive-Graph}} from `G`
+to `H` consists of a map `f₀ : G₀ → H₀` from the vertices of `G` to the vertices
+of `H`, a family of maps `f₁` from the edges `G₁ x y` in `G` to the edges
+`H₁ (f₀ x) (f₀ y)` in `H`, equipped with an
+[identification](foundation-core.identity-types.md)
+
+```text
+ preserves-refl f : f₁ (refl G x) = refl H (f₀ x)
+```
+
+from the image of the reflexivity edge `refl G x` to the reflexivity edge at
+`f₀ x` in `H`.
+
+## Definitions
+
+### Morphisms of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ where
+
+ hom-Reflexive-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ hom-Reflexive-Graph =
+ Σ ( hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H))
+ ( λ (f₀ , f₁) →
+ (x : vertex-Reflexive-Graph G) →
+ f₁ x x (refl-Reflexive-Graph G x) = refl-Reflexive-Graph H (f₀ x))
+
+ module _
+ (f : hom-Reflexive-Graph)
+ where
+
+ hom-directed-graph-hom-Reflexive-Graph :
+ hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ hom-directed-graph-hom-Reflexive-Graph = pr1 f
+
+ vertex-hom-Reflexive-Graph :
+ vertex-Reflexive-Graph G → vertex-Reflexive-Graph H
+ vertex-hom-Reflexive-Graph =
+ vertex-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( hom-directed-graph-hom-Reflexive-Graph)
+
+ edge-hom-Reflexive-Graph :
+ {x y : vertex-Reflexive-Graph G} (e : edge-Reflexive-Graph G x y) →
+ edge-Reflexive-Graph H
+ ( vertex-hom-Reflexive-Graph x)
+ ( vertex-hom-Reflexive-Graph y)
+ edge-hom-Reflexive-Graph =
+ edge-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( hom-directed-graph-hom-Reflexive-Graph)
+
+ refl-hom-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph G) →
+ edge-hom-Reflexive-Graph (refl-Reflexive-Graph G x) =
+ refl-Reflexive-Graph H (vertex-hom-Reflexive-Graph x)
+ refl-hom-Reflexive-Graph = pr2 f
+```
+
+### Composition of morphisms of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ (K : Reflexive-Graph l5 l6)
+ (g : hom-Reflexive-Graph H K) (f : hom-Reflexive-Graph G H)
+ where
+
+ vertex-comp-hom-Reflexive-Graph :
+ vertex-Reflexive-Graph G → vertex-Reflexive-Graph K
+ vertex-comp-hom-Reflexive-Graph =
+ (vertex-hom-Reflexive-Graph H K g) ∘ (vertex-hom-Reflexive-Graph G H f)
+
+ edge-comp-hom-Reflexive-Graph :
+ {x y : vertex-Reflexive-Graph G} →
+ edge-Reflexive-Graph G x y →
+ edge-Reflexive-Graph K
+ ( vertex-comp-hom-Reflexive-Graph x)
+ ( vertex-comp-hom-Reflexive-Graph y)
+ edge-comp-hom-Reflexive-Graph e =
+ edge-hom-Reflexive-Graph H K g (edge-hom-Reflexive-Graph G H f e)
+
+ hom-directed-graph-comp-hom-Reflexive-Graph :
+ hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph K)
+ pr1 hom-directed-graph-comp-hom-Reflexive-Graph =
+ vertex-comp-hom-Reflexive-Graph
+ pr2 hom-directed-graph-comp-hom-Reflexive-Graph _ _ =
+ edge-comp-hom-Reflexive-Graph
+
+ refl-comp-hom-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph G) →
+ edge-comp-hom-Reflexive-Graph (refl-Reflexive-Graph G x) =
+ refl-Reflexive-Graph K (vertex-comp-hom-Reflexive-Graph x)
+ refl-comp-hom-Reflexive-Graph x =
+ ( ap (edge-hom-Reflexive-Graph H K g) (refl-hom-Reflexive-Graph G H f _)) ∙
+ ( refl-hom-Reflexive-Graph H K g _)
+
+ comp-hom-Reflexive-Graph :
+ hom-Reflexive-Graph G K
+ pr1 comp-hom-Reflexive-Graph = hom-directed-graph-comp-hom-Reflexive-Graph
+ pr2 comp-hom-Reflexive-Graph = refl-comp-hom-Reflexive-Graph
+```
+
+### Identity morphisms of reflexive graphs
+
+```agda
+module _
+ {l1 l2 : Level} (G : Reflexive-Graph l1 l2)
+ where
+
+ id-hom-Reflexive-Graph : hom-Reflexive-Graph G G
+ pr1 id-hom-Reflexive-Graph = id-hom-Directed-Graph _
+ pr2 id-hom-Reflexive-Graph _ = refl
+```
+
+### Homotopies of morphisms of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ (f g : hom-Reflexive-Graph G H)
+ where
+
+ htpy-hom-Reflexive-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ htpy-hom-Reflexive-Graph =
+ Σ ( htpy-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( hom-directed-graph-hom-Reflexive-Graph G H f)
+ ( hom-directed-graph-hom-Reflexive-Graph G H g))
+ ( λ (h₀ , h₁) →
+ (x : vertex-Reflexive-Graph G) →
+ coherence-square-identifications
+ ( ap
+ ( binary-tr (edge-Reflexive-Graph H) (h₀ x) (h₀ x))
+ ( refl-hom-Reflexive-Graph G H f x))
+ ( h₁ x x (refl-Reflexive-Graph G x))
+ ( binary-dependent-identification-refl-Reflexive-Graph H (h₀ x))
+ ( refl-hom-Reflexive-Graph G H g x))
+```
+
+### The reflexive homotopy of morphisms of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ (f : hom-Reflexive-Graph G H)
+ where
+
+ refl-htpy-hom-Reflexive-Graph : htpy-hom-Reflexive-Graph G H f f
+ pr1 refl-htpy-hom-Reflexive-Graph =
+ refl-htpy-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( hom-directed-graph-hom-Reflexive-Graph G H f)
+ pr2 refl-htpy-hom-Reflexive-Graph x =
+ inv (right-unit ∙ ap-id _)
+```
+
+## Properties
+
+### Extensionality of morphisms of reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (G : Reflexive-Graph l1 l2) (H : Reflexive-Graph l3 l4)
+ (f : hom-Reflexive-Graph G H)
+ where
+
+ is-torsorial-htpy-hom-Reflexive-Graph :
+ is-torsorial (htpy-hom-Reflexive-Graph G H f)
+ is-torsorial-htpy-hom-Reflexive-Graph =
+ is-torsorial-Eq-structure
+ ( is-torsorial-htpy-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( hom-directed-graph-hom-Reflexive-Graph G H f))
+ ( hom-directed-graph-hom-Reflexive-Graph G H f ,
+ refl-htpy-hom-Directed-Graph
+ ( directed-graph-Reflexive-Graph G)
+ ( directed-graph-Reflexive-Graph H)
+ ( hom-directed-graph-hom-Reflexive-Graph G H f))
+ ( is-torsorial-htpy' _)
+
+ htpy-eq-hom-Reflexive-Graph :
+ (g : hom-Reflexive-Graph G H) →
+ f = g → htpy-hom-Reflexive-Graph G H f g
+ htpy-eq-hom-Reflexive-Graph g refl =
+ refl-htpy-hom-Reflexive-Graph G H f
+
+ is-equiv-htpy-eq-hom-Reflexive-Graph :
+ (g : hom-Reflexive-Graph G H) →
+ is-equiv (htpy-eq-hom-Reflexive-Graph g)
+ is-equiv-htpy-eq-hom-Reflexive-Graph =
+ fundamental-theorem-id
+ is-torsorial-htpy-hom-Reflexive-Graph
+ htpy-eq-hom-Reflexive-Graph
+
+ extensionality-hom-Reflexive-Graph :
+ (g : hom-Reflexive-Graph G H) →
+ (f = g) ≃ htpy-hom-Reflexive-Graph G H f g
+ pr1 (extensionality-hom-Reflexive-Graph g) =
+ htpy-eq-hom-Reflexive-Graph g
+ pr2 (extensionality-hom-Reflexive-Graph g) =
+ is-equiv-htpy-eq-hom-Reflexive-Graph g
+
+ eq-htpy-hom-Reflexive-Graph :
+ (g : hom-Reflexive-Graph G H) →
+ htpy-hom-Reflexive-Graph G H f g → f = g
+ eq-htpy-hom-Reflexive-Graph g =
+ map-inv-equiv (extensionality-hom-Reflexive-Graph g)
+```
diff --git a/src/graph-theory/neighbors-undirected-graphs.lagda.md b/src/graph-theory/neighbors-undirected-graphs.lagda.md
index 4e88fc790e..9b6fba97e3 100644
--- a/src/graph-theory/neighbors-undirected-graphs.lagda.md
+++ b/src/graph-theory/neighbors-undirected-graphs.lagda.md
@@ -60,8 +60,8 @@ module _
( λ y →
edge-Undirected-Graph H
( standard-unordered-pair (vertex-equiv-Undirected-Graph G H e x) y))
- ( equiv-vertex-equiv-Undirected-Graph G H e)
- ( equiv-edge-standard-unordered-pair-vertices-equiv-Undirected-Graph
+ ( vertex-equiv-equiv-Undirected-Graph G H e)
+ ( edge-equiv-standard-unordered-pair-vertices-equiv-Undirected-Graph
G H e x)
neighbor-equiv-Undirected-Graph :
diff --git a/src/graph-theory/polygons.lagda.md b/src/graph-theory/polygons.lagda.md
index e77e88aefd..68f0117f77 100644
--- a/src/graph-theory/polygons.lagda.md
+++ b/src/graph-theory/polygons.lagda.md
@@ -97,26 +97,26 @@ module _
edge-Polygon : unordered-pair-vertices-Polygon → UU lzero
edge-Polygon = edge-Undirected-Graph undirected-graph-Polygon
- mere-equiv-vertex-Polygon : mere-equiv (ℤ-Mod k) vertex-Polygon
- mere-equiv-vertex-Polygon =
+ vertex-mere-equiv-Polygon : mere-equiv (ℤ-Mod k) vertex-Polygon
+ vertex-mere-equiv-Polygon =
map-trunc-Prop
- ( equiv-vertex-equiv-Undirected-Graph
+ ( vertex-equiv-equiv-Undirected-Graph
( standard-polygon-Undirected-Graph k)
( undirected-graph-Polygon))
( mere-equiv-Polygon)
is-finite-vertex-Polygon : is-nonzero-ℕ k → is-finite vertex-Polygon
is-finite-vertex-Polygon H =
- is-finite-mere-equiv mere-equiv-vertex-Polygon (is-finite-ℤ-Mod H)
+ is-finite-mere-equiv vertex-mere-equiv-Polygon (is-finite-ℤ-Mod H)
is-set-vertex-Polygon : is-set vertex-Polygon
is-set-vertex-Polygon =
- is-set-mere-equiv' mere-equiv-vertex-Polygon (is-set-ℤ-Mod k)
+ is-set-mere-equiv' vertex-mere-equiv-Polygon (is-set-ℤ-Mod k)
has-decidable-equality-vertex-Polygon : has-decidable-equality vertex-Polygon
has-decidable-equality-vertex-Polygon =
has-decidable-equality-mere-equiv'
- ( mere-equiv-vertex-Polygon)
+ ( vertex-mere-equiv-Polygon)
( has-decidable-equality-ℤ-Mod k)
```
diff --git a/src/graph-theory/raising-universe-levels-directed-graphs.lagda.md b/src/graph-theory/raising-universe-levels-directed-graphs.lagda.md
index 356c1b05be..ff763cffc0 100644
--- a/src/graph-theory/raising-universe-levels-directed-graphs.lagda.md
+++ b/src/graph-theory/raising-universe-levels-directed-graphs.lagda.md
@@ -36,28 +36,28 @@ module _
vertex-raise-Directed-Graph : UU (l1 ⊔ l3)
vertex-raise-Directed-Graph = raise l3 (vertex-Directed-Graph G)
- equiv-vertex-compute-raise-Directed-Graph :
+ vertex-equiv-compute-raise-Directed-Graph :
vertex-Directed-Graph G ≃ vertex-raise-Directed-Graph
- equiv-vertex-compute-raise-Directed-Graph =
+ vertex-equiv-compute-raise-Directed-Graph =
compute-raise l3 (vertex-Directed-Graph G)
vertex-compute-raise-Directed-Graph :
vertex-Directed-Graph G → vertex-raise-Directed-Graph
vertex-compute-raise-Directed-Graph =
- map-equiv equiv-vertex-compute-raise-Directed-Graph
+ map-equiv vertex-equiv-compute-raise-Directed-Graph
edge-raise-Directed-Graph :
(x y : vertex-raise-Directed-Graph) → UU (l2 ⊔ l4)
edge-raise-Directed-Graph (map-raise x) (map-raise y) =
raise l4 (edge-Directed-Graph G x y)
- equiv-edge-compute-raise-Directed-Graph :
+ edge-equiv-compute-raise-Directed-Graph :
(x y : vertex-Directed-Graph G) →
edge-Directed-Graph G x y ≃
edge-raise-Directed-Graph
( vertex-compute-raise-Directed-Graph x)
( vertex-compute-raise-Directed-Graph y)
- equiv-edge-compute-raise-Directed-Graph x y =
+ edge-equiv-compute-raise-Directed-Graph x y =
compute-raise l4 (edge-Directed-Graph G x y)
edge-compute-raise-Directed-Graph :
@@ -67,7 +67,7 @@ module _
( vertex-compute-raise-Directed-Graph x)
( vertex-compute-raise-Directed-Graph y)
edge-compute-raise-Directed-Graph x y =
- map-equiv (equiv-edge-compute-raise-Directed-Graph x y)
+ map-equiv (edge-equiv-compute-raise-Directed-Graph x y)
raise-Directed-Graph : Directed-Graph (l1 ⊔ l3) (l2 ⊔ l4)
pr1 raise-Directed-Graph = vertex-raise-Directed-Graph
@@ -75,8 +75,8 @@ module _
compute-raise-Directed-Graph :
equiv-Directed-Graph G raise-Directed-Graph
- pr1 compute-raise-Directed-Graph = equiv-vertex-compute-raise-Directed-Graph
- pr2 compute-raise-Directed-Graph = equiv-edge-compute-raise-Directed-Graph
+ pr1 compute-raise-Directed-Graph = vertex-equiv-compute-raise-Directed-Graph
+ pr2 compute-raise-Directed-Graph = edge-equiv-compute-raise-Directed-Graph
walk-raise-Directed-Graph :
(x y : vertex-raise-Directed-Graph) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
diff --git a/src/graph-theory/reflexive-graphs.lagda.md b/src/graph-theory/reflexive-graphs.lagda.md
index 76f15912ae..1ab53e86e5 100644
--- a/src/graph-theory/reflexive-graphs.lagda.md
+++ b/src/graph-theory/reflexive-graphs.lagda.md
@@ -7,7 +7,10 @@ module graph-theory.reflexive-graphs where
Imports
```agda
+open import foundation.binary-dependent-identifications
open import foundation.dependent-pair-types
+open import foundation.identity-types
+open import foundation.reflexive-relations
open import foundation.universe-levels
open import graph-theory.directed-graphs
@@ -26,28 +29,44 @@ A {{#concept "reflexive graph" Agda=Reflexive-Graph}} is a
```agda
Reflexive-Graph : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
Reflexive-Graph l1 l2 =
- Σ (UU l1) (λ V → Σ (V → V → UU l2) (λ E → (v : V) → E v v))
+ Σ ( Directed-Graph l1 l2)
+ ( λ G → (x : vertex-Directed-Graph G) → edge-Directed-Graph G x x)
module _
{l1 l2 : Level} (G : Reflexive-Graph l1 l2)
where
+ directed-graph-Reflexive-Graph : Directed-Graph l1 l2
+ directed-graph-Reflexive-Graph = pr1 G
+
vertex-Reflexive-Graph : UU l1
- vertex-Reflexive-Graph = pr1 G
+ vertex-Reflexive-Graph = vertex-Directed-Graph directed-graph-Reflexive-Graph
edge-Reflexive-Graph : vertex-Reflexive-Graph → vertex-Reflexive-Graph → UU l2
- edge-Reflexive-Graph = pr1 (pr2 G)
+ edge-Reflexive-Graph = edge-Directed-Graph directed-graph-Reflexive-Graph
refl-Reflexive-Graph : (x : vertex-Reflexive-Graph) → edge-Reflexive-Graph x x
- refl-Reflexive-Graph = pr2 (pr2 G)
-
- graph-Reflexive-Graph : Directed-Graph l1 l2
- graph-Reflexive-Graph = vertex-Reflexive-Graph , edge-Reflexive-Graph
+ refl-Reflexive-Graph = pr2 G
+
+ edge-reflexive-relation-Reflexive-Graph :
+ Reflexive-Relation l2 vertex-Reflexive-Graph
+ pr1 edge-reflexive-relation-Reflexive-Graph = edge-Reflexive-Graph
+ pr2 edge-reflexive-relation-Reflexive-Graph = refl-Reflexive-Graph
+
+ binary-dependent-identification-refl-Reflexive-Graph :
+ {x y : vertex-Reflexive-Graph} (p : x = y) →
+ binary-dependent-identification edge-Reflexive-Graph p p
+ ( refl-Reflexive-Graph x)
+ ( refl-Reflexive-Graph y)
+ binary-dependent-identification-refl-Reflexive-Graph =
+ binary-dependent-identification-refl-Reflexive-Relation
+ edge-reflexive-relation-Reflexive-Graph
```
## See also
- [Large reflexive graphs](graph-theory.large-reflexive-graphs.md)
+- [The universal reflexive graph](graph-theory.universal-reflexive-graph.md)
## External links
diff --git a/src/graph-theory/sections-dependent-directed-graphs.lagda.md b/src/graph-theory/sections-dependent-directed-graphs.lagda.md
new file mode 100644
index 0000000000..c8ca8c42d4
--- /dev/null
+++ b/src/graph-theory/sections-dependent-directed-graphs.lagda.md
@@ -0,0 +1,170 @@
+# Sections of dependent directed graphs
+
+```agda
+module graph-theory.sections-dependent-directed-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equality-dependent-function-types
+open import foundation.equivalences
+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.structure-identity-principle
+open import foundation.torsorial-type-families
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.directed-graphs
+```
+
+
+
+## Idea
+
+Consider a [dependent directed graph](graph-theory.dependent-directed-graphs.md)
+`B` over a [directed graph](graph-theory.directed-graphs.md) `A`. A
+{{#concept "section" Disambiguation="dependent directed graph" Agda=section-Dependent-Directed-Graph}}
+`f` of `B` consists of
+
+- A dependent function `f₀ : (x : A₀) → B₀ x`
+- A family of dependent functions
+
+ ```text
+ f₁ : (e : A₁ x y) → B₁ e (f₀ x) (f₀ y)
+ ```
+
+ indexed by `x y : A₀`.
+
+Note that [graph homomorphisms](graph-theory.morphisms-directed-graphs.md) from
+`A` to `B` are sections of the constant dependent directed graph at `B` over
+`A`.
+
+## Definitions
+
+### Sections of dependent directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {A : Directed-Graph l1 l2}
+ (B : Dependent-Directed-Graph l3 l4 A)
+ where
+
+ section-Dependent-Directed-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ section-Dependent-Directed-Graph =
+ Σ ( (x : vertex-Directed-Graph A) → vertex-Dependent-Directed-Graph B x)
+ ( λ f₀ →
+ {x y : vertex-Directed-Graph A} (e : edge-Directed-Graph A x y) →
+ edge-Dependent-Directed-Graph B e (f₀ x) (f₀ y))
+
+module _
+ {l1 l2 l3 l4 : Level} {A : Directed-Graph l1 l2}
+ (B : Dependent-Directed-Graph l3 l4 A)
+ (f : section-Dependent-Directed-Graph B)
+ where
+
+ vertex-section-Dependent-Directed-Graph :
+ (x : vertex-Directed-Graph A) → vertex-Dependent-Directed-Graph B x
+ vertex-section-Dependent-Directed-Graph =
+ pr1 f
+
+ edge-section-Dependent-Directed-Graph :
+ {x y : vertex-Directed-Graph A} →
+ (e : edge-Directed-Graph A x y) →
+ edge-Dependent-Directed-Graph B e
+ ( vertex-section-Dependent-Directed-Graph x)
+ ( vertex-section-Dependent-Directed-Graph y)
+ edge-section-Dependent-Directed-Graph =
+ pr2 f
+```
+
+### Homotopies of sections of dependent directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {A : Directed-Graph l1 l2}
+ (B : Dependent-Directed-Graph l3 l4 A)
+ (f : section-Dependent-Directed-Graph B)
+ where
+
+ htpy-section-Dependent-Directed-Graph :
+ section-Dependent-Directed-Graph B → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ htpy-section-Dependent-Directed-Graph g =
+ Σ ( vertex-section-Dependent-Directed-Graph B f ~
+ vertex-section-Dependent-Directed-Graph B g)
+ ( λ H₀ →
+ {x y : vertex-Directed-Graph A} (e : edge-Directed-Graph A x y) →
+ tr
+ ( edge-Dependent-Directed-Graph B e _)
+ ( H₀ y)
+ ( tr
+ ( λ u → edge-Dependent-Directed-Graph B e u _)
+ ( H₀ x)
+ ( edge-section-Dependent-Directed-Graph B f e)) =
+ edge-section-Dependent-Directed-Graph B g e)
+
+ refl-htpy-section-Dependent-Directed-Graph :
+ htpy-section-Dependent-Directed-Graph f
+ pr1 refl-htpy-section-Dependent-Directed-Graph = refl-htpy
+ pr2 refl-htpy-section-Dependent-Directed-Graph = refl-htpy
+```
+
+## Properties
+
+### Extensionality of sections of dependent directed graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {A : Directed-Graph l1 l2}
+ (B : Dependent-Directed-Graph l3 l4 A)
+ (f : section-Dependent-Directed-Graph B)
+ where
+
+ abstract
+ is-torsorial-htpy-section-Dependent-Directed-Graph :
+ is-torsorial (htpy-section-Dependent-Directed-Graph B f)
+ is-torsorial-htpy-section-Dependent-Directed-Graph =
+ is-torsorial-Eq-structure
+ ( is-torsorial-htpy (vertex-section-Dependent-Directed-Graph B f))
+ ( vertex-section-Dependent-Directed-Graph B f , refl-htpy)
+ ( is-torsorial-Eq-implicit-Π
+ ( λ x →
+ is-torsorial-Eq-implicit-Π
+ ( λ y →
+ is-torsorial-htpy
+ ( edge-section-Dependent-Directed-Graph B f))))
+
+ htpy-eq-section-Dependent-Directed-Graph :
+ (g : section-Dependent-Directed-Graph B) →
+ f = g → htpy-section-Dependent-Directed-Graph B f g
+ htpy-eq-section-Dependent-Directed-Graph g refl =
+ refl-htpy-section-Dependent-Directed-Graph B f
+
+ abstract
+ is-equiv-htpy-eq-section-Dependent-Directed-Graph :
+ (g : section-Dependent-Directed-Graph B) →
+ is-equiv (htpy-eq-section-Dependent-Directed-Graph g)
+ is-equiv-htpy-eq-section-Dependent-Directed-Graph =
+ fundamental-theorem-id
+ is-torsorial-htpy-section-Dependent-Directed-Graph
+ htpy-eq-section-Dependent-Directed-Graph
+
+ extensionality-section-Dependent-Directed-Graph :
+ (g : section-Dependent-Directed-Graph B) →
+ (f = g) ≃ htpy-section-Dependent-Directed-Graph B f g
+ pr1 (extensionality-section-Dependent-Directed-Graph g) =
+ htpy-eq-section-Dependent-Directed-Graph g
+ pr2 (extensionality-section-Dependent-Directed-Graph g) =
+ is-equiv-htpy-eq-section-Dependent-Directed-Graph g
+
+ eq-htpy-section-Dependent-Directed-Graph :
+ (g : section-Dependent-Directed-Graph B) →
+ htpy-section-Dependent-Directed-Graph B f g → f = g
+ eq-htpy-section-Dependent-Directed-Graph g =
+ map-inv-equiv (extensionality-section-Dependent-Directed-Graph g)
+```
diff --git a/src/graph-theory/sections-dependent-reflexive-graphs.lagda.md b/src/graph-theory/sections-dependent-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..792b3557f8
--- /dev/null
+++ b/src/graph-theory/sections-dependent-reflexive-graphs.lagda.md
@@ -0,0 +1,257 @@
+# Sections of dependent reflexive graphs
+
+```agda
+module graph-theory.sections-dependent-reflexive-graphs where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-binary-dependent-functions
+open import foundation.action-on-identifications-dependent-functions
+open import foundation.action-on-identifications-functions
+open import foundation.binary-transport
+open import foundation.commuting-squares-of-identifications
+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.fundamental-theorem-of-identity-types
+open import foundation.homotopies
+open import foundation.homotopy-induction
+open import foundation.identity-types
+open import foundation.reflexive-relations
+open import foundation.structure-identity-principle
+open import foundation.torsorial-type-families
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import graph-theory.dependent-reflexive-graphs
+open import graph-theory.reflexive-graphs
+open import graph-theory.sections-dependent-directed-graphs
+```
+
+
+
+## Idea
+
+Consider a
+[dependent reflexive graph](graph-theory.dependent-reflexive-graphs.md) `B` over
+a [reflexive graph](graph-theory.reflexive-graphs.md) `A`. A
+{{#concept "section" Disambiguation="dependent reflexive graph" Agda=section-Dependent-Reflexive-Graph}}
+`f` of `B` consists of
+
+- A dependent function `f₀ : (x : A₀) → B₀ x`
+- A family of dependent functions
+
+ ```text
+ f₁ : (e : A₁ x y) → B₁ e (f₀ x) (f₀ y)
+ ```
+
+ indexed by `x y : A₀`.
+
+Note that [graph homomorphisms](graph-theory.morphisms-reflexive-graphs.md) from
+`A` to `B` are sections of the constant dependent reflexive graph at `B` over
+`A`.
+
+## Definitions
+
+### The type of sections of dependent directed graphs of a dependent reflexive graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {A : Reflexive-Graph l1 l2}
+ (B : Dependent-Reflexive-Graph l3 l4 A)
+ where
+
+ section-dependent-directed-graph-Dependent-Reflexive-Graph :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ section-dependent-directed-graph-Dependent-Reflexive-Graph =
+ section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+
+ vertex-section-dependent-directed-graph-Dependent-Reflexive-Graph :
+ section-dependent-directed-graph-Dependent-Reflexive-Graph →
+ (x : vertex-Reflexive-Graph A) →
+ vertex-Dependent-Reflexive-Graph B x
+ vertex-section-dependent-directed-graph-Dependent-Reflexive-Graph =
+ vertex-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+
+ edge-section-dependent-directed-graph-Dependent-Reflexive-Graph :
+ (f : section-dependent-directed-graph-Dependent-Reflexive-Graph) →
+ {x y : vertex-Reflexive-Graph A}
+ (e : edge-Reflexive-Graph A x y) →
+ edge-Dependent-Reflexive-Graph B e
+ ( vertex-section-dependent-directed-graph-Dependent-Reflexive-Graph f x)
+ ( vertex-section-dependent-directed-graph-Dependent-Reflexive-Graph f y)
+ edge-section-dependent-directed-graph-Dependent-Reflexive-Graph =
+ edge-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+```
+
+### Sections of dependent reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {A : Reflexive-Graph l1 l2}
+ (B : Dependent-Reflexive-Graph l3 l4 A)
+ where
+
+ section-Dependent-Reflexive-Graph : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ section-Dependent-Reflexive-Graph =
+ Σ ( section-dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( λ f →
+ ( x : vertex-Reflexive-Graph A) →
+ edge-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( f)
+ ( refl-Reflexive-Graph A x) =
+ refl-Dependent-Reflexive-Graph B
+ ( vertex-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( f)
+ ( x)))
+module _
+ {l1 l2 l3 l4 : Level} {A : Reflexive-Graph l1 l2}
+ (B : Dependent-Reflexive-Graph l3 l4 A)
+ (f : section-Dependent-Reflexive-Graph B)
+ where
+
+ section-dependent-directed-graph-section-Dependent-Reflexive-Graph :
+ section-dependent-directed-graph-Dependent-Reflexive-Graph B
+ section-dependent-directed-graph-section-Dependent-Reflexive-Graph =
+ pr1 f
+
+ vertex-section-Dependent-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph A) →
+ vertex-Dependent-Reflexive-Graph B x
+ vertex-section-Dependent-Reflexive-Graph =
+ vertex-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( section-dependent-directed-graph-section-Dependent-Reflexive-Graph)
+
+ edge-section-Dependent-Reflexive-Graph :
+ {x y : vertex-Reflexive-Graph A} →
+ (e : edge-Reflexive-Graph A x y) →
+ edge-Dependent-Reflexive-Graph B e
+ ( vertex-section-Dependent-Reflexive-Graph x)
+ ( vertex-section-Dependent-Reflexive-Graph y)
+ edge-section-Dependent-Reflexive-Graph =
+ edge-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( section-dependent-directed-graph-section-Dependent-Reflexive-Graph)
+
+ refl-section-Dependent-Reflexive-Graph :
+ (x : vertex-Reflexive-Graph A) →
+ edge-section-Dependent-Reflexive-Graph
+ ( refl-Reflexive-Graph A x) =
+ refl-Dependent-Reflexive-Graph B
+ ( vertex-section-Dependent-Reflexive-Graph x)
+ refl-section-Dependent-Reflexive-Graph = pr2 f
+```
+
+### Homotopies of sections of dependent reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {A : Reflexive-Graph l1 l2}
+ (B : Dependent-Reflexive-Graph l3 l4 A)
+ (f : section-Dependent-Reflexive-Graph B)
+ where
+
+ htpy-section-Dependent-Reflexive-Graph :
+ section-Dependent-Reflexive-Graph B → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ htpy-section-Dependent-Reflexive-Graph g =
+ Σ ( htpy-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( section-dependent-directed-graph-section-Dependent-Reflexive-Graph
+ B f)
+ ( section-dependent-directed-graph-section-Dependent-Reflexive-Graph
+ B g))
+ ( λ (H₀ , H₁) →
+ (x : vertex-Reflexive-Graph A) →
+ coherence-square-identifications
+ ( ap
+ ( binary-tr
+ ( edge-Dependent-Reflexive-Graph B (refl-Reflexive-Graph A x))
+ ( H₀ x)
+ ( H₀ x))
+ ( refl-section-Dependent-Reflexive-Graph B f x))
+ ( H₁ (refl-Reflexive-Graph A x))
+ ( binary-dependent-identification-refl-Reflexive-Relation
+ ( edge-Dependent-Reflexive-Graph B (refl-Reflexive-Graph A x) ,
+ refl-Dependent-Reflexive-Graph B)
+ ( H₀ x))
+ ( refl-section-Dependent-Reflexive-Graph B g x))
+
+ refl-htpy-section-Dependent-Reflexive-Graph :
+ htpy-section-Dependent-Reflexive-Graph f
+ pr1 refl-htpy-section-Dependent-Reflexive-Graph =
+ refl-htpy-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( section-dependent-directed-graph-section-Dependent-Reflexive-Graph B f)
+ pr2 refl-htpy-section-Dependent-Reflexive-Graph x =
+ inv (right-unit ∙ ap-id _)
+```
+
+## Properties
+
+### Extensionality of sections of dependent reflexive graphs
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {A : Reflexive-Graph l1 l2}
+ (B : Dependent-Reflexive-Graph l3 l4 A)
+ (f : section-Dependent-Reflexive-Graph B)
+ where
+
+ abstract
+ is-torsorial-htpy-section-Dependent-Reflexive-Graph :
+ is-torsorial (htpy-section-Dependent-Reflexive-Graph B f)
+ is-torsorial-htpy-section-Dependent-Reflexive-Graph =
+ is-torsorial-Eq-structure
+ ( is-torsorial-htpy-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( section-dependent-directed-graph-section-Dependent-Reflexive-Graph
+ ( B)
+ ( f)))
+ ( ( section-dependent-directed-graph-section-Dependent-Reflexive-Graph
+ ( B)
+ ( f)) ,
+ ( refl-htpy-section-Dependent-Directed-Graph
+ ( dependent-directed-graph-Dependent-Reflexive-Graph B)
+ ( section-dependent-directed-graph-section-Dependent-Reflexive-Graph
+ ( B)
+ ( f))))
+ ( is-torsorial-htpy' _)
+
+ htpy-eq-section-Dependent-Reflexive-Graph :
+ (g : section-Dependent-Reflexive-Graph B) →
+ f = g → htpy-section-Dependent-Reflexive-Graph B f g
+ htpy-eq-section-Dependent-Reflexive-Graph g refl =
+ refl-htpy-section-Dependent-Reflexive-Graph B f
+
+ abstract
+ is-equiv-htpy-eq-section-Dependent-Reflexive-Graph :
+ (g : section-Dependent-Reflexive-Graph B) →
+ is-equiv (htpy-eq-section-Dependent-Reflexive-Graph g)
+ is-equiv-htpy-eq-section-Dependent-Reflexive-Graph =
+ fundamental-theorem-id
+ is-torsorial-htpy-section-Dependent-Reflexive-Graph
+ htpy-eq-section-Dependent-Reflexive-Graph
+
+ extensionality-section-Dependent-Reflexive-Graph :
+ (g : section-Dependent-Reflexive-Graph B) →
+ (f = g) ≃ htpy-section-Dependent-Reflexive-Graph B f g
+ pr1 (extensionality-section-Dependent-Reflexive-Graph g) =
+ htpy-eq-section-Dependent-Reflexive-Graph g
+ pr2 (extensionality-section-Dependent-Reflexive-Graph g) =
+ is-equiv-htpy-eq-section-Dependent-Reflexive-Graph g
+
+ eq-htpy-section-Dependent-Reflexive-Graph :
+ (g : section-Dependent-Reflexive-Graph B) →
+ htpy-section-Dependent-Reflexive-Graph B f g → f = g
+ eq-htpy-section-Dependent-Reflexive-Graph g =
+ map-inv-equiv (extensionality-section-Dependent-Reflexive-Graph g)
+```
diff --git a/src/graph-theory/terminal-directed-graphs.lagda.md b/src/graph-theory/terminal-directed-graphs.lagda.md
new file mode 100644
index 0000000000..d49804435a
--- /dev/null
+++ b/src/graph-theory/terminal-directed-graphs.lagda.md
@@ -0,0 +1,95 @@
+# Terminal directed graphs
+
+```agda
+module graph-theory.terminal-directed-graphs where
+```
+
+Idea
+
+```agda
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.propositions
+open import foundation.unit-type
+open import foundation.universe-levels
+
+open import graph-theory.directed-graphs
+open import graph-theory.morphisms-directed-graphs
+```
+
+
+
+## Idea
+
+The {{#concept "terminal directed graph"}} is a
+[directed graph](graph-theory.directed-graphs.md) `1` such that the type of
+[graph homomorphisms](graph-theory.morphisms-directed-graphs.md) `hom A 1` is
+[contractible](foundation-core.contractible-types.md) for any directed graph
+`A`.
+
+Concretely, the terminal directed graph `1` is defined by
+
+```text
+ 1₀ := 1
+ 1₁ x y := 1.
+```
+
+## Definitions
+
+### The predicate of being a terminal directed graph
+
+The (small) predicate of being a terminal directed graph asserts that the type
+of vertices and all types of edges are contractible.
+
+```agda
+module _
+ {l1 l2 : Level} (A : Directed-Graph l1 l2)
+ where
+
+ is-terminal-prop-Directed-Graph : Prop (l1 ⊔ l2)
+ is-terminal-prop-Directed-Graph =
+ product-Prop
+ ( is-contr-Prop (vertex-Directed-Graph A))
+ ( Π-Prop
+ ( vertex-Directed-Graph A)
+ ( λ x →
+ Π-Prop
+ ( vertex-Directed-Graph A)
+ ( λ y → is-contr-Prop (edge-Directed-Graph A x y))))
+
+ is-terminal-Directed-Graph : UU (l1 ⊔ l2)
+ is-terminal-Directed-Graph = type-Prop is-terminal-prop-Directed-Graph
+
+ is-prop-is-terminal-Directed-Graph :
+ is-prop is-terminal-Directed-Graph
+ is-prop-is-terminal-Directed-Graph =
+ is-prop-type-Prop is-terminal-prop-Directed-Graph
+```
+
+### The universal property of being a terminal directed graph
+
+```agda
+module _
+ {l1 l2 : Level} (A : Directed-Graph l1 l2)
+ where
+
+ universal-property-terminal-Directed-Graph : UUω
+ universal-property-terminal-Directed-Graph =
+ {l3 l4 : Level} (X : Directed-Graph l3 l4) →
+ is-contr (hom-Directed-Graph X A)
+```
+
+### The terminal directed graph
+
+```agda
+vertex-terminal-Directed-Graph : UU lzero
+vertex-terminal-Directed-Graph = unit
+
+edge-terminal-Directed-Graph :
+ (x y : vertex-terminal-Directed-Graph) → UU lzero
+edge-terminal-Directed-Graph x y = unit
+
+terminal-Directed-Graph : Directed-Graph lzero lzero
+pr1 terminal-Directed-Graph = vertex-terminal-Directed-Graph
+pr2 terminal-Directed-Graph = edge-terminal-Directed-Graph
+```
diff --git a/src/graph-theory/terminal-reflexive-graphs.lagda.md b/src/graph-theory/terminal-reflexive-graphs.lagda.md
new file mode 100644
index 0000000000..31ff8ae60a
--- /dev/null
+++ b/src/graph-theory/terminal-reflexive-graphs.lagda.md
@@ -0,0 +1,102 @@
+# Terminal reflexive graphs
+
+```agda
+module graph-theory.terminal-reflexive-graphs where
+```
+
+Idea
+
+```agda
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.propositions
+open import foundation.unit-type
+open import foundation.universe-levels
+
+open import graph-theory.directed-graphs
+open import graph-theory.reflexive-graphs
+open import graph-theory.morphisms-reflexive-graphs
+open import graph-theory.terminal-directed-graphs
+```
+
+
+
+## Idea
+
+The {{#concept "terminal reflexive graph"}} is a
+[reflexive graph](graph-theory.reflexive-graphs.md) `1` such that the type of
+[graph homomorphisms](graph-theory.morphisms-reflexive-graphs.md) `hom A 1` is
+[contractible](foundation-core.contractible-types.md) for any reflexive graph
+`A`.
+
+Concretely, the terminal reflexive graph `1` is defined by
+
+```text
+ 1₀ := 1
+ 1₁ x y := 1.
+```
+
+## Definitions
+
+### The predicate of being a terminal reflexive graph
+
+The (small) predicate of being a terminal reflexive graph asserts that the type
+of vertices and all types of edges are contractible.
+
+```agda
+module _
+ {l1 l2 : Level} (A : Reflexive-Graph l1 l2)
+ where
+
+ is-terminal-prop-Reflexive-Graph : Prop (l1 ⊔ l2)
+ is-terminal-prop-Reflexive-Graph =
+ product-Prop
+ ( is-contr-Prop (vertex-Reflexive-Graph A))
+ ( Π-Prop
+ ( vertex-Reflexive-Graph A)
+ ( λ x →
+ Π-Prop
+ ( vertex-Reflexive-Graph A)
+ ( λ y → is-contr-Prop (edge-Reflexive-Graph A x y))))
+
+ is-terminal-Reflexive-Graph : UU (l1 ⊔ l2)
+ is-terminal-Reflexive-Graph = type-Prop is-terminal-prop-Reflexive-Graph
+
+ is-prop-is-terminal-Reflexive-Graph :
+ is-prop is-terminal-Reflexive-Graph
+ is-prop-is-terminal-Reflexive-Graph =
+ is-prop-type-Prop is-terminal-prop-Reflexive-Graph
+```
+
+### The universal property of being a terminal reflexive graph
+
+```agda
+module _
+ {l1 l2 : Level} (A : Reflexive-Graph l1 l2)
+ where
+
+ universal-property-terminal-Reflexive-Graph : UUω
+ universal-property-terminal-Reflexive-Graph =
+ {l3 l4 : Level} (X : Reflexive-Graph l3 l4) →
+ is-contr (hom-Reflexive-Graph X A)
+```
+
+### The terminal reflexive graph
+
+```agda
+directed-graph-terminal-Reflexive-Graph : Directed-Graph lzero lzero
+directed-graph-terminal-Reflexive-Graph = terminal-Directed-Graph
+
+vertex-terminal-Reflexive-Graph : UU lzero
+vertex-terminal-Reflexive-Graph =
+ vertex-Directed-Graph directed-graph-terminal-Reflexive-Graph
+
+edge-terminal-Reflexive-Graph :
+ (x y : vertex-terminal-Reflexive-Graph) → UU lzero
+edge-terminal-Reflexive-Graph =
+ edge-Directed-Graph directed-graph-terminal-Reflexive-Graph
+
+terminal-Reflexive-Graph : Reflexive-Graph lzero lzero
+pr1 terminal-Reflexive-Graph = terminal-Directed-Graph
+pr2 terminal-Reflexive-Graph _ = star
+```
diff --git a/src/graph-theory/universal-directed-graph.lagda.md b/src/graph-theory/universal-directed-graph.lagda.md
new file mode 100644
index 0000000000..d7242623d2
--- /dev/null
+++ b/src/graph-theory/universal-directed-graph.lagda.md
@@ -0,0 +1,181 @@
+# The universal directed graph
+
+```agda
+module graph-theory.universal-directed-graph where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import graph-theory.base-change-dependent-directed-graphs
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.equivalences-dependent-directed-graphs
+open import graph-theory.morphisms-directed-graphs
+```
+
+
+
+## Idea
+
+The {{#concept "universal directed graph" Agda=universal-Directed-Graph}} `𝒢 l`
+at [universe level](foundation.universe-levels.md) `l` is the
+[directed graph](graph-theory.directed-graphs.md) that has the universe `UU l`
+as its type of vertices, and spans between types as its edges.
+
+Specifically, the universal directed graph is a translation from category theory
+into type theory of the Hofmann–Streicher universe {{#cite Awodey22}} of
+presheaves on the representing pair of arrows
+
+```text
+ s
+ ----->
+ 0 -----> 1
+ t
+```
+
+The Hofmann–Streicher universe of presheaves on a category `𝒞` is the presheaf
+
+```text
+ 𝒰_𝒞 I := Presheaf 𝒞/I
+ El_𝒞 I A := A *,
+```
+
+where `*` is the terminal object of `𝒞/I`, i.e., the identity morphism on `I`.
+
+We compute the instances of the slice category `⇉/I`:
+
+- The slice category `⇉/0` is the terminal category.
+- The slice category `⇉/1` is the representing cospan
+
+ ```text
+ s t
+ s -----> 1 <----- t
+ ```
+
+ The functors `s t : ⇉/0 → ⇉/1` are given by `* ↦ s` and `* ↦ t`, respectively.
+
+This means that:
+
+- The type of vertices of the universal directed graph is the universe of types
+ `UU l`.
+- The type of edges from `X` to `Y` of the universal directed graph is the type
+ of spans from `X` to `Y`.
+
+There is a
+[directed graph duality theorem](graph-theory.directed-graph-duality.md), which
+asserts that for any directed graph `G`, the type of
+[morphisms](graph-theory.morphisms-directed-graphs.md) `hom G 𝒰` from `G` into
+the universal directed graph is [equivalent](foundation-core.equivalences.md) to
+the type of pairs `(H , f)` consisting of a directed graph `H` and a morphism
+`f : hom H G` from `H` into `G`.
+
+## Definitions
+
+### The universal directed graph
+
+```agda
+module _
+ (l1 l2 : Level)
+ where
+
+ vertex-universal-Directed-Graph : UU (lsuc l1)
+ vertex-universal-Directed-Graph = UU l1
+
+ edge-universal-Directed-Graph :
+ (X Y : vertex-universal-Directed-Graph) → UU (l1 ⊔ lsuc l2)
+ edge-universal-Directed-Graph X Y = X → Y → UU l2
+
+ universal-Directed-Graph : Directed-Graph (lsuc l1) (l1 ⊔ lsuc l2)
+ pr1 universal-Directed-Graph = vertex-universal-Directed-Graph
+ pr2 universal-Directed-Graph = edge-universal-Directed-Graph
+```
+
+### The universal dependent directed graph
+
+```agda
+module _
+ (l1 l2 : Level)
+ where
+
+ vertex-universal-Dependent-Directed-Graph :
+ vertex-universal-Directed-Graph l1 l2 → UU l1
+ vertex-universal-Dependent-Directed-Graph X = X
+
+ edge-universal-Dependent-Directed-Graph :
+ {X Y : vertex-universal-Directed-Graph l1 l2}
+ (R : edge-universal-Directed-Graph l1 l2 X Y) →
+ vertex-universal-Dependent-Directed-Graph X →
+ vertex-universal-Dependent-Directed-Graph Y → UU l2
+ edge-universal-Dependent-Directed-Graph R x y = R x y
+
+ universal-Dependent-Directed-Graph :
+ Dependent-Directed-Graph l1 l2 (universal-Directed-Graph l1 l2)
+ pr1 universal-Dependent-Directed-Graph =
+ vertex-universal-Dependent-Directed-Graph
+ pr2 universal-Dependent-Directed-Graph _ _ =
+ edge-universal-Dependent-Directed-Graph
+```
+
+## Properties
+
+### Every dependent directed graph is a base change of the universal dependent directed graph
+
+#### The characteristic morphism of a dependent directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ {G : Directed-Graph l1 l2} (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ vertex-characteristic-hom-Dependent-Directed-Graph :
+ vertex-Directed-Graph G → UU l3
+ vertex-characteristic-hom-Dependent-Directed-Graph =
+ vertex-Dependent-Directed-Graph H
+
+ edge-characteristic-hom-Dependent-Directed-Graph :
+ {x y : vertex-Directed-Graph G} (e : edge-Directed-Graph G x y) →
+ vertex-characteristic-hom-Dependent-Directed-Graph x →
+ vertex-characteristic-hom-Dependent-Directed-Graph y →
+ UU l4
+ edge-characteristic-hom-Dependent-Directed-Graph =
+ edge-Dependent-Directed-Graph H
+
+ characteristic-hom-Dependent-Directed-Graph :
+ hom-Directed-Graph G (universal-Directed-Graph l3 l4)
+ pr1 characteristic-hom-Dependent-Directed-Graph =
+ vertex-characteristic-hom-Dependent-Directed-Graph
+ pr2 characteristic-hom-Dependent-Directed-Graph _ _ =
+ edge-characteristic-hom-Dependent-Directed-Graph
+```
+
+#### Base change of the universal dependent directed graph along the characteristic morphism of a dependent directed graph
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ {G : Directed-Graph l1 l2} (H : Dependent-Directed-Graph l3 l4 G)
+ where
+
+ base-change-universal-graph-characteristic-hom-Dependent-Directed-Graph :
+ Dependent-Directed-Graph l3 l4 G
+ base-change-universal-graph-characteristic-hom-Dependent-Directed-Graph =
+ base-change-Dependent-Directed-Graph G
+ ( characteristic-hom-Dependent-Directed-Graph H)
+ ( universal-Dependent-Directed-Graph l3 l4)
+
+ compute-base-change-universal-graph-characteristic-hom-Dependent-Directed-Graph :
+ equiv-Dependent-Directed-Graph H
+ base-change-universal-graph-characteristic-hom-Dependent-Directed-Graph
+ compute-base-change-universal-graph-characteristic-hom-Dependent-Directed-Graph =
+ id-equiv-Dependent-Directed-Graph H
+```
+
+## See also
+
+- [The universal reflexive graph](graph-theory.universal-reflexive-graph.md)
+- [Directed graph duality](graph-theory.directed-graph-duality.md)
diff --git a/src/graph-theory/universal-reflexive-graph.lagda.md b/src/graph-theory/universal-reflexive-graph.lagda.md
new file mode 100644
index 0000000000..3b3fd8042f
--- /dev/null
+++ b/src/graph-theory/universal-reflexive-graph.lagda.md
@@ -0,0 +1,183 @@
+# The universal reflexive graph
+
+```agda
+module graph-theory.universal-reflexive-graph where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import graph-theory.dependent-directed-graphs
+open import graph-theory.dependent-reflexive-graphs
+open import graph-theory.directed-graphs
+open import graph-theory.reflexive-graphs
+```
+
+
+
+## Idea
+
+The {{#concept "universal reflexive graph" Agda=universal-Reflexive-Graph}}
+`𝒢 l` at [universe level](foundation.universe-levels.md) is a translation from
+category theory into type theory of the Hofmann–Streicher universe
+{{#cite Awodey22}} of presheaves on the reflexive graph category `Γʳ`
+
+```text
+ s
+ ----->
+ 0 <-r--- 1,
+ ----->
+ t
+```
+
+in which we have `rs = id` and `rt = id`. The Hofmann–Streicher universe of
+presheaves on a category `𝒞` is the presheaf
+
+```text
+ 𝒰_𝒞 I := Presheaf 𝒞/I
+ El_𝒞 I A := A 0,
+```
+
+where `0` is the terminal object of `𝒞/I`, i.e., the identity morphism on `I`.
+
+We compute a few instances of the slice category `Γʳ/I`:
+
+- The category Γʳ/0 is the category
+
+ ```text
+ s
+ ----->
+ 1 <-r--- r
+ ----->
+ t
+ ```
+
+ in which we have `rs = id` and `rt = id`. In other words, we have an
+ isomorphism of categories `Γʳ/0 ≅ Γʳ`.
+
+- The category Γʳ/1 is the category
+
+ ```text
+ s s
+ <----- ----->
+ rs --r--> s -----> 1 <----- t <-r--- rt
+ <----- ----->
+ t t
+ ```
+
+ in which we have `rs = id` and `rt = id`.
+
+This means that the universal reflexive graph `𝒰` can be defined type
+theoretically as follows:
+
+- The type of vertices of `𝒰` is the type of
+ [reflexive graphs](graph-theory.reflexive-graphs.md).
+- The type of edges from `G` to `H` is the type
+
+ ```text
+ G₀ → H₀ → Type
+ ```
+
+ of binary relations from the type `G₀` of vertices of `G` to the type `H₀` of
+ vertices of `H`.
+
+- The proof of reflexivity of a reflexive graph `G` is the relation
+
+ ```text
+ G₁ : G₀ → G₀ → Type
+ ```
+
+ of edges of `G`.
+
+## Definitions
+
+### The universal reflexive graph
+
+```agda
+module _
+ (l1 l2 : Level)
+ where
+
+ vertex-universal-Reflexive-Graph : UU (lsuc l1 ⊔ lsuc l2)
+ vertex-universal-Reflexive-Graph = Reflexive-Graph l1 l2
+
+ edge-universal-Reflexvie-Graph :
+ (G H : vertex-universal-Reflexive-Graph) → UU (l1 ⊔ lsuc l2)
+ edge-universal-Reflexvie-Graph G H =
+ vertex-Reflexive-Graph G → vertex-Reflexive-Graph H → UU l2
+
+ refl-universal-Reflexive-Graph :
+ (G : vertex-universal-Reflexive-Graph) →
+ edge-universal-Reflexvie-Graph G G
+ refl-universal-Reflexive-Graph G =
+ edge-Reflexive-Graph G
+
+ directed-graph-universal-Reflexive-Graph :
+ Directed-Graph (lsuc l1 ⊔ lsuc l2) (l1 ⊔ lsuc l2)
+ pr1 directed-graph-universal-Reflexive-Graph =
+ vertex-universal-Reflexive-Graph
+ pr2 directed-graph-universal-Reflexive-Graph =
+ edge-universal-Reflexvie-Graph
+
+ universal-Reflexive-Graph :
+ Reflexive-Graph (lsuc l1 ⊔ lsuc l2) (l1 ⊔ lsuc l2)
+ pr1 universal-Reflexive-Graph = directed-graph-universal-Reflexive-Graph
+ pr2 universal-Reflexive-Graph = refl-universal-Reflexive-Graph
+```
+
+### The universal dependent directed graph
+
+```agda
+module _
+ {l1 l2 : Level}
+ where
+
+ vertex-universal-Dependent-Reflexive-Graph :
+ (G : vertex-universal-Reflexive-Graph l1 l2) → UU l1
+ vertex-universal-Dependent-Reflexive-Graph G =
+ vertex-Reflexive-Graph G
+
+ edge-universal-Dependent-Reflexive-Graph :
+ (G H : vertex-universal-Reflexive-Graph l1 l2)
+ (R : edge-universal-Reflexvie-Graph l1 l2 G H) →
+ vertex-universal-Dependent-Reflexive-Graph G →
+ vertex-universal-Dependent-Reflexive-Graph H → UU l2
+ edge-universal-Dependent-Reflexive-Graph G H R x y = R x y
+
+ refl-universal-Dependent-Reflexive-Graph :
+ (G : vertex-universal-Reflexive-Graph l1 l2)
+ (x : vertex-universal-Dependent-Reflexive-Graph G) →
+ edge-universal-Dependent-Reflexive-Graph G G
+ ( refl-universal-Reflexive-Graph l1 l2 G) x x
+ refl-universal-Dependent-Reflexive-Graph G x = refl-Reflexive-Graph G x
+
+ dependent-directed-graph-universal-Dependent-Reflexive-Graph :
+ Dependent-Directed-Graph l1 l2
+ ( directed-graph-universal-Reflexive-Graph l1 l2)
+ pr1 dependent-directed-graph-universal-Dependent-Reflexive-Graph =
+ vertex-universal-Dependent-Reflexive-Graph
+ pr2 dependent-directed-graph-universal-Dependent-Reflexive-Graph =
+ edge-universal-Dependent-Reflexive-Graph
+
+ universal-Dependent-Reflexive-Graph :
+ Dependent-Reflexive-Graph l1 l2 (universal-Reflexive-Graph l1 l2)
+ pr1 universal-Dependent-Reflexive-Graph =
+ dependent-directed-graph-universal-Dependent-Reflexive-Graph
+ pr2 universal-Dependent-Reflexive-Graph =
+ refl-universal-Dependent-Reflexive-Graph
+```
+
+## Formalization target
+
+There is a _reflexive graph duality theorem_, which asserts that for any
+reflexive graph `G`, the type of morphisms `hom G 𝒰` from `G` into the universal
+reflexive graph is equivalent to the type of pairs `(H , f)` consisting of a
+reflexive graph `H` and a morphism `f : hom H G` from `H` into `G`. Such a
+result should be formalized in a new file called `reflexive-graph-duality`.
+
+## See also
+
+- [The universal directed graph](graph-theory.universal-directed-graph.md)
diff --git a/src/graph-theory/walks-directed-graphs.lagda.md b/src/graph-theory/walks-directed-graphs.lagda.md
index 22af690b4f..b7e9537b73 100644
--- a/src/graph-theory/walks-directed-graphs.lagda.md
+++ b/src/graph-theory/walks-directed-graphs.lagda.md
@@ -602,17 +602,17 @@ equiv-walk-of-length-equiv-Directed-Graph :
( vertex-equiv-Directed-Graph G H f y)
equiv-walk-of-length-equiv-Directed-Graph G H f zero-ℕ =
equiv-raise _ _
- ( equiv-ap (equiv-vertex-equiv-Directed-Graph G H f) _ _)
+ ( equiv-ap (vertex-equiv-equiv-Directed-Graph G H f) _ _)
equiv-walk-of-length-equiv-Directed-Graph G H f (succ-ℕ n) =
equiv-Σ
( λ z →
( edge-Directed-Graph H (vertex-equiv-Directed-Graph G H f _) z) ×
( walk-of-length-Directed-Graph H n z
( vertex-equiv-Directed-Graph G H f _)))
- ( equiv-vertex-equiv-Directed-Graph G H f)
+ ( vertex-equiv-equiv-Directed-Graph G H f)
( λ z →
equiv-product
- ( equiv-edge-equiv-Directed-Graph G H f _ _)
+ ( edge-equiv-equiv-Directed-Graph G H f _ _)
( equiv-walk-of-length-equiv-Directed-Graph G H f n))
```
@@ -650,7 +650,7 @@ module _
square-compute-total-walk-of-length-equiv-Directed-Graph
x y (succ-ℕ n , z , f , w) =
ap
- ( cons-walk-Directed-Graph (edge-equiv-Directed-Graph G H e x z f))
+ ( cons-walk-Directed-Graph (edge-equiv-Directed-Graph G H e f))
( square-compute-total-walk-of-length-equiv-Directed-Graph z y (n , w))
is-equiv-walk-equiv-Directed-Graph :
diff --git a/src/graph-theory/wide-displayed-large-reflexive-graphs.lagda.md b/src/graph-theory/wide-displayed-large-reflexive-graphs.lagda.md
index 89f3933328..4392870452 100644
--- a/src/graph-theory/wide-displayed-large-reflexive-graphs.lagda.md
+++ b/src/graph-theory/wide-displayed-large-reflexive-graphs.lagda.md
@@ -120,11 +120,11 @@ module _
fiber-vertex-reflexive-graph-Wide-Displayed-Large-Reflexive-Graph :
Reflexive-Graph lzero (β2 l l)
- pr1 fiber-vertex-reflexive-graph-Wide-Displayed-Large-Reflexive-Graph = unit
- pr1 (pr2 fiber-vertex-reflexive-graph-Wide-Displayed-Large-Reflexive-Graph)
+ pr1 (pr1 fiber-vertex-reflexive-graph-Wide-Displayed-Large-Reflexive-Graph) =
+ unit
+ pr2 (pr1 fiber-vertex-reflexive-graph-Wide-Displayed-Large-Reflexive-Graph)
_ _ =
edge-Wide-Displayed-Large-Reflexive-Graph H (refl-Large-Reflexive-Graph G x)
- pr2 (pr2 fiber-vertex-reflexive-graph-Wide-Displayed-Large-Reflexive-Graph)
- _ =
+ pr2 fiber-vertex-reflexive-graph-Wide-Displayed-Large-Reflexive-Graph _ =
refl-Wide-Displayed-Large-Reflexive-Graph H x
```
diff --git a/src/structured-types.lagda.md b/src/structured-types.lagda.md
index 967885e085..504868159c 100644
--- a/src/structured-types.lagda.md
+++ b/src/structured-types.lagda.md
@@ -9,12 +9,21 @@
```agda
module structured-types where
+open import structured-types.base-change-dependent-globular-types public
+open import structured-types.base-change-dependent-reflexive-globular-types public
+open import structured-types.binary-dependent-globular-types public
+open import structured-types.binary-dependent-reflexive-globular-types public
+open import structured-types.binary-globular-maps public
open import structured-types.cartesian-products-types-equipped-with-endomorphisms public
open import structured-types.central-h-spaces public
+open import structured-types.colax-reflexive-globular-maps public
+open import structured-types.colax-transitive-globular-maps public
open import structured-types.commuting-squares-of-pointed-homotopies public
open import structured-types.commuting-squares-of-pointed-maps public
open import structured-types.commuting-triangles-of-pointed-maps public
+open import structured-types.composition-structure-globular-types public
open import structured-types.conjugation-pointed-types public
+open import structured-types.constant-globular-types public
open import structured-types.constant-pointed-maps public
open import structured-types.contractible-pointed-types public
open import structured-types.cyclic-types public
@@ -23,19 +32,28 @@ open import structured-types.dependent-products-h-spaces public
open import structured-types.dependent-products-pointed-types public
open import structured-types.dependent-products-wild-monoids public
open import structured-types.dependent-reflexive-globular-types public
+open import structured-types.dependent-sums-globular-types public
open import structured-types.dependent-types-equipped-with-automorphisms public
+open import structured-types.discrete-dependent-reflexive-globular-types public
+open import structured-types.discrete-globular-types public
+open import structured-types.discrete-reflexive-globular-types public
+open import structured-types.empty-globular-types public
open import structured-types.equality-globular-types public
-open import structured-types.equivalences-globular-types public
open import structured-types.equivalences-h-spaces public
open import structured-types.equivalences-pointed-arrows public
open import structured-types.equivalences-types-equipped-with-automorphisms public
open import structured-types.equivalences-types-equipped-with-endomorphisms public
+open import structured-types.exponentials-globular-types public
open import structured-types.faithful-pointed-maps public
+open import structured-types.fibers-globular-maps public
open import structured-types.fibers-of-pointed-maps public
open import structured-types.finite-multiplication-magmas public
open import structured-types.function-h-spaces public
open import structured-types.function-magmas public
open import structured-types.function-wild-monoids public
+open import structured-types.globular-equivalences public
+open import structured-types.globular-homotopies public
+open import structured-types.globular-maps public
open import structured-types.globular-types public
open import structured-types.h-spaces public
open import structured-types.initial-pointed-type-equipped-with-automorphism public
@@ -43,13 +61,20 @@ open import structured-types.involutive-type-of-h-space-structures public
open import structured-types.involutive-types public
open import structured-types.iterated-cartesian-products-types-equipped-with-endomorphisms public
open import structured-types.iterated-pointed-cartesian-product-types public
+open import structured-types.large-colax-reflexive-globular-maps public
+open import structured-types.large-colax-transitive-globular-maps public
+open import structured-types.large-globular-maps public
open import structured-types.large-globular-types public
+open import structured-types.large-lax-reflexive-globular-maps public
+open import structured-types.large-lax-transitive-globular-maps public
+open import structured-types.large-reflexive-globular-maps public
open import structured-types.large-reflexive-globular-types public
open import structured-types.large-symmetric-globular-types public
+open import structured-types.large-transitive-globular-maps public
open import structured-types.large-transitive-globular-types public
+open import structured-types.lax-reflexive-globular-maps public
+open import structured-types.lax-transitive-globular-maps public
open import structured-types.magmas public
-open import structured-types.maps-globular-types public
-open import structured-types.maps-large-globular-types public
open import structured-types.mere-equivalences-types-equipped-with-endomorphisms public
open import structured-types.morphisms-h-spaces public
open import structured-types.morphisms-magmas public
@@ -77,20 +102,37 @@ open import structured-types.pointed-types public
open import structured-types.pointed-types-equipped-with-automorphisms public
open import structured-types.pointed-unit-type public
open import structured-types.pointed-universal-property-contractible-types public
+open import structured-types.points-globular-types public
+open import structured-types.points-reflexive-globular-types public
+open import structured-types.pointwise-extensions-binary-families-globular-types public
+open import structured-types.pointwise-extensions-binary-families-reflexive-globular-types public
+open import structured-types.pointwise-extensions-families-globular-types public
+open import structured-types.pointwise-extensions-families-reflexive-globular-types public
open import structured-types.postcomposition-pointed-maps public
open import structured-types.precomposition-pointed-maps public
+open import structured-types.products-families-of-globular-types public
+open import structured-types.reflexive-globular-equivalences public
+open import structured-types.reflexive-globular-maps public
open import structured-types.reflexive-globular-types public
+open import structured-types.sections-dependent-globular-types public
open import structured-types.sets-equipped-with-automorphisms public
open import structured-types.small-pointed-types public
+open import structured-types.superglobular-types public
open import structured-types.symmetric-elements-involutive-types public
open import structured-types.symmetric-globular-types public
open import structured-types.symmetric-h-spaces public
+open import structured-types.terminal-globular-types public
+open import structured-types.transitive-globular-maps public
open import structured-types.transitive-globular-types public
open import structured-types.transposition-pointed-span-diagrams public
open import structured-types.types-equipped-with-automorphisms public
open import structured-types.types-equipped-with-endomorphisms public
open import structured-types.uniform-pointed-homotopies public
+open import structured-types.unit-globular-type public
+open import structured-types.unit-reflexive-globular-type public
+open import structured-types.universal-globular-type public
open import structured-types.universal-property-pointed-equivalences public
+open import structured-types.universal-reflexive-globular-type public
open import structured-types.unpointed-maps public
open import structured-types.whiskering-pointed-2-homotopies-concatenation public
open import structured-types.whiskering-pointed-homotopies-composition public
diff --git a/src/structured-types/base-change-dependent-globular-types.lagda.md b/src/structured-types/base-change-dependent-globular-types.lagda.md
new file mode 100644
index 0000000000..98fa652c0b
--- /dev/null
+++ b/src/structured-types/base-change-dependent-globular-types.lagda.md
@@ -0,0 +1,81 @@
+# Base change of dependent globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.base-change-dependent-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.dependent-globular-types
+open import structured-types.globular-maps
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+Consider a
+[dependent globular type](structured-types.dependent-globular-types.md) `H` over
+`G`, and consider a [globular map](structured-types.globular-maps.md)
+`f : K → G`. The
+{{#concept "base change" Disambiguation="dependent globular types" agda=base-change-Dependent-Globular-Type}}
+of `H` along `f` is the dependent globular type `f*H` given by
+
+```text
+ (f*H)₀ x := H₀ (f₀ x)
+ (f*H)₁ y y' := H₁.
+```
+
+## Definitions
+
+```agda
+base-change-Dependent-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Globular-Type l1 l2} {K : Globular-Type l3 l4}
+ (f : globular-map K G) →
+ Dependent-Globular-Type l5 l6 G → Dependent-Globular-Type l5 l6 K
+0-cell-Dependent-Globular-Type
+ ( base-change-Dependent-Globular-Type f H)
+ ( x) =
+ 0-cell-Dependent-Globular-Type H (0-cell-globular-map f x)
+1-cell-dependent-globular-type-Dependent-Globular-Type
+ ( base-change-Dependent-Globular-Type f H) y y' =
+ base-change-Dependent-Globular-Type
+ ( 1-cell-globular-map-globular-map f)
+ ( 1-cell-dependent-globular-type-Dependent-Globular-Type H y y')
+
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Globular-Type l1 l2} {K : Globular-Type l3 l4}
+ (f : globular-map K G) (H : Dependent-Globular-Type l5 l6 G)
+ where
+
+ 0-cell-base-change-Dependent-Globular-Type :
+ 0-cell-Globular-Type K → UU l5
+ 0-cell-base-change-Dependent-Globular-Type =
+ 0-cell-Dependent-Globular-Type (base-change-Dependent-Globular-Type f H)
+
+ 1-cell-dependent-globular-type-base-change-Dependent-Globular-Type :
+ {x x' : 0-cell-Globular-Type K}
+ (y : 0-cell-base-change-Dependent-Globular-Type x)
+ (y' : 0-cell-base-change-Dependent-Globular-Type x') →
+ Dependent-Globular-Type l6 l6
+ ( 1-cell-globular-type-Globular-Type K x x')
+ 1-cell-dependent-globular-type-base-change-Dependent-Globular-Type =
+ 1-cell-dependent-globular-type-Dependent-Globular-Type
+ ( base-change-Dependent-Globular-Type f H)
+
+ 1-cell-base-change-Dependent-Globular-Type :
+ {x x' : 0-cell-Globular-Type K}
+ (y : 0-cell-base-change-Dependent-Globular-Type x)
+ (y' : 0-cell-base-change-Dependent-Globular-Type x') →
+ 1-cell-Globular-Type K x x' → UU l6
+ 1-cell-base-change-Dependent-Globular-Type =
+ 1-cell-Dependent-Globular-Type (base-change-Dependent-Globular-Type f H)
+```
diff --git a/src/structured-types/base-change-dependent-reflexive-globular-types.lagda.md b/src/structured-types/base-change-dependent-reflexive-globular-types.lagda.md
new file mode 100644
index 0000000000..b000f5407e
--- /dev/null
+++ b/src/structured-types/base-change-dependent-reflexive-globular-types.lagda.md
@@ -0,0 +1,119 @@
+# Base change of dependent reflexive globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.base-change-dependent-reflexive-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.identity-types
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import structured-types.base-change-dependent-globular-types
+open import structured-types.dependent-globular-types
+open import structured-types.dependent-reflexive-globular-types
+open import structured-types.globular-types
+open import structured-types.reflexive-globular-maps
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+Consider a [reflexive globular map](structured-types.reflexive-globular-maps.md)
+`f : G → H` between
+[reflexive globular types](structured-types.reflexive-globular-types.md) `G` and
+`H`, and consider a
+[dependent reflexive globular type](structured-types.dependent-reflexive-globular-types.md)
+`K` over `H`. The
+{{#concept "base change" Disambiguation="dependent reflexive globular types" Agda=base-change-Dependent-Reflexive-Globular-Type}}
+`f*K` is the dependent reflexive globular type over `G` given by
+
+```text
+ (f*K)₀ x := K₀ (f₀ x)
+ (f*K)' e := K' (f₁ e)
+```
+
+where the reflexivity structure of `f*K` is defined separately.
+
+## Definitions
+
+### Base change of dependent reflexive globular types
+
+```agda
+dependent-globular-type-base-change-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Reflexive-Globular-Type l1 l2} {H : Reflexive-Globular-Type l3 l4}
+ (f : reflexive-globular-map G H) →
+ Dependent-Reflexive-Globular-Type l5 l6 H →
+ Dependent-Globular-Type l5 l6 (globular-type-Reflexive-Globular-Type G)
+dependent-globular-type-base-change-Dependent-Reflexive-Globular-Type f K =
+ base-change-Dependent-Globular-Type
+ ( globular-map-reflexive-globular-map f)
+ ( dependent-globular-type-Dependent-Reflexive-Globular-Type K)
+
+0-cell-base-change-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Reflexive-Globular-Type l1 l2} {H : Reflexive-Globular-Type l3 l4}
+ (f : reflexive-globular-map G H) →
+ Dependent-Reflexive-Globular-Type l5 l6 H →
+ 0-cell-Reflexive-Globular-Type G → UU l5
+0-cell-base-change-Dependent-Reflexive-Globular-Type f K =
+ 0-cell-Dependent-Globular-Type
+ ( dependent-globular-type-base-change-Dependent-Reflexive-Globular-Type f K)
+
+1-cell-dependent-globular-type-base-change-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Reflexive-Globular-Type l1 l2} {H : Reflexive-Globular-Type l3 l4}
+ (f : reflexive-globular-map G H) →
+ (K : Dependent-Reflexive-Globular-Type l5 l6 H) →
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ 0-cell-base-change-Dependent-Reflexive-Globular-Type f K x →
+ 0-cell-base-change-Dependent-Reflexive-Globular-Type f K y →
+ Dependent-Globular-Type l6 l6
+ ( 1-cell-globular-type-Reflexive-Globular-Type G x y)
+1-cell-dependent-globular-type-base-change-Dependent-Reflexive-Globular-Type
+ f K =
+ 1-cell-dependent-globular-type-Dependent-Globular-Type
+ ( dependent-globular-type-base-change-Dependent-Reflexive-Globular-Type f K)
+
+is-reflexive-base-change-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Reflexive-Globular-Type l1 l2} {H : Reflexive-Globular-Type l3 l4}
+ (f : reflexive-globular-map G H) →
+ (K : Dependent-Reflexive-Globular-Type l5 l6 H) →
+ is-reflexive-Dependent-Globular-Type G
+ ( dependent-globular-type-base-change-Dependent-Reflexive-Globular-Type f K)
+refl-1-cell-is-reflexive-Dependent-Globular-Type
+ ( is-reflexive-base-change-Dependent-Reflexive-Globular-Type f K) y =
+ tr
+ ( 1-cell-Dependent-Reflexive-Globular-Type K y y)
+ ( inv ( preserves-refl-1-cell-reflexive-globular-map f _))
+ ( refl-1-cell-Dependent-Reflexive-Globular-Type K y)
+is-reflexive-1-cell-dependent-globular-type-Dependent-Globular-Type
+ ( is-reflexive-base-change-Dependent-Reflexive-Globular-Type f K)
+ ( y)
+ ( y') =
+ is-reflexive-base-change-Dependent-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-map-reflexive-globular-map f)
+ ( 1-cell-dependent-reflexive-globular-type-Dependent-Reflexive-Globular-Type
+ K y y')
+
+base-change-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Reflexive-Globular-Type l1 l2} {H : Reflexive-Globular-Type l3 l4}
+ (f : reflexive-globular-map G H) →
+ Dependent-Reflexive-Globular-Type l5 l6 H →
+ Dependent-Reflexive-Globular-Type l5 l6 G
+dependent-globular-type-Dependent-Reflexive-Globular-Type
+ ( base-change-Dependent-Reflexive-Globular-Type f K) =
+ dependent-globular-type-base-change-Dependent-Reflexive-Globular-Type f K
+refl-Dependent-Reflexive-Globular-Type
+ ( base-change-Dependent-Reflexive-Globular-Type f K) =
+ is-reflexive-base-change-Dependent-Reflexive-Globular-Type f K
+```
diff --git a/src/structured-types/binary-dependent-globular-types.lagda.md b/src/structured-types/binary-dependent-globular-types.lagda.md
new file mode 100644
index 0000000000..58e8922cce
--- /dev/null
+++ b/src/structured-types/binary-dependent-globular-types.lagda.md
@@ -0,0 +1,98 @@
+# Binary dependent globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.binary-dependent-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.globular-types
+open import structured-types.points-globular-types
+```
+
+
+
+## Idea
+
+Consider two [globular types](structured-types.globular-types.md) `G` and `H`. A
+{{#concept "binary dependent globular type" Agda=Binary-Dependent-Globular-Type}}
+`K` over `G` and `H` consists of
+
+```text
+ K₀ : G₀ → H₀ → Type
+ K' : (x x' : G₀) (y y' : H₀) →
+ K₀ x y → K₀ y y' → Binary-Dependent-Globular-Type (G' x x') (H' y y').
+```
+
+## Definitions
+
+### Binary dependent globular types
+
+```agda
+record
+ Binary-Dependent-Globular-Type
+ {l1 l2 l3 l4 : Level} (l5 l6 : Level)
+ (G : Globular-Type l1 l2) (H : Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ lsuc l5 ⊔ lsuc l6)
+ where
+ coinductive
+
+ field
+ 0-cell-Binary-Dependent-Globular-Type :
+ 0-cell-Globular-Type G → 0-cell-Globular-Type H → UU l5
+
+ field
+ 1-cell-binary-dependent-globular-type-Binary-Dependent-Globular-Type :
+ {x x' : 0-cell-Globular-Type G} {y y' : 0-cell-Globular-Type H} →
+ 0-cell-Binary-Dependent-Globular-Type x y →
+ 0-cell-Binary-Dependent-Globular-Type x' y' →
+ Binary-Dependent-Globular-Type l6 l6
+ ( 1-cell-globular-type-Globular-Type G x x')
+ ( 1-cell-globular-type-Globular-Type H y y')
+
+open Binary-Dependent-Globular-Type public
+
+module _
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Globular-Type l1 l2} {H : Globular-Type l3 l4}
+ (K : Binary-Dependent-Globular-Type l5 l6 G H)
+ where
+
+ 1-cell-Binary-Dependent-Globular-Type :
+ {x x' : 0-cell-Globular-Type G} {y y' : 0-cell-Globular-Type H} →
+ 0-cell-Binary-Dependent-Globular-Type K x y →
+ 0-cell-Binary-Dependent-Globular-Type K x' y' →
+ 1-cell-Globular-Type G x x' →
+ 1-cell-Globular-Type H y y' → UU l6
+ 1-cell-Binary-Dependent-Globular-Type u v =
+ 0-cell-Binary-Dependent-Globular-Type
+ ( 1-cell-binary-dependent-globular-type-Binary-Dependent-Globular-Type K
+ u v)
+```
+
+### Evaluating binary dependent globular types at a pair of points
+
+```agda
+ev-point-Binary-Dependent-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Globular-Type l1 l2} {H : Globular-Type l3 l4}
+ (K : Binary-Dependent-Globular-Type l5 l6 G H)
+ (x : point-Globular-Type G) (y : point-Globular-Type H) →
+ Globular-Type l5 l6
+0-cell-Globular-Type (ev-point-Binary-Dependent-Globular-Type K x y) =
+ 0-cell-Binary-Dependent-Globular-Type K
+ ( 0-cell-point-Globular-Type x)
+ ( 0-cell-point-Globular-Type y)
+1-cell-globular-type-Globular-Type
+ ( ev-point-Binary-Dependent-Globular-Type K x y) u v =
+ ev-point-Binary-Dependent-Globular-Type
+ ( 1-cell-binary-dependent-globular-type-Binary-Dependent-Globular-Type
+ K u v)
+ ( 1-cell-point-point-Globular-Type x)
+ ( 1-cell-point-point-Globular-Type y)
+```
diff --git a/src/structured-types/binary-dependent-reflexive-globular-types.lagda.md b/src/structured-types/binary-dependent-reflexive-globular-types.lagda.md
new file mode 100644
index 0000000000..22a85d20b1
--- /dev/null
+++ b/src/structured-types/binary-dependent-reflexive-globular-types.lagda.md
@@ -0,0 +1,247 @@
+# Binary dependent reflexive globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.binary-dependent-reflexive-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.binary-dependent-globular-types
+open import structured-types.globular-types
+open import structured-types.points-reflexive-globular-types
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+Consider two
+[reflexive globular types](structured-types.reflexive-globular-types.md) `G` and
+`H`. A
+{{#concept "binary dependent reflexive globular type" Agda=Binary-Dependent-Reflexive-Globular-Type}}
+`K` over `G` and `H` consists of a
+[binary dependent globular type](structured-types.binary-dependent-globular-types.md)
+`K` over `G` and `H` equipped with reflexivity structure `refl K`.
+
+A binary dependent globular type `K` over reflexive globular types `G` and `H`
+is said to be
+{{#concept "reflexive" Disambiguation="binary dependent globular type"}} if it
+comes equipped with
+
+```text
+ refl K : {x : G₀} {y : H₀} (u : K₀ x y) → K₁ (refl G x) (refl G y) u u,
+```
+
+such that the binary dependent globular type `K' s t u v` over `G' x x'` and
+`H' y y'` comes equipped with reflexivity structure for every `s : G₁ x x'` and
+`t : H₁ y y'`.
+
+## Definitions
+
+### The predicate of being a reflexive binary dependent globular type
+
+```agda
+record
+ is-reflexive-Binary-Dependent-Globular-Type
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4)
+ (K :
+ Binary-Dependent-Globular-Type l5 l6
+ ( globular-type-Reflexive-Globular-Type G)
+ ( globular-type-Reflexive-Globular-Type H)) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ where
+ coinductive
+
+ field
+ refl-1-cell-is-reflexive-Binary-Dependent-Globular-Type :
+ {x : 0-cell-Reflexive-Globular-Type G}
+ {y : 0-cell-Reflexive-Globular-Type H} →
+ (u : 0-cell-Binary-Dependent-Globular-Type K x y) →
+ 1-cell-Binary-Dependent-Globular-Type K u u
+ ( refl-1-cell-Reflexive-Globular-Type G)
+ ( refl-1-cell-Reflexive-Globular-Type H)
+
+ field
+ refl-1-cell-binary-dependent-reflexive-globular-type-is-reflexive-Binary-Dependent-Globular-Type :
+ {x x' : 0-cell-Reflexive-Globular-Type G}
+ {y y' : 0-cell-Reflexive-Globular-Type H}
+ (u : 0-cell-Binary-Dependent-Globular-Type K x y)
+ (u' : 0-cell-Binary-Dependent-Globular-Type K x' y') →
+ is-reflexive-Binary-Dependent-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x x')
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H y y')
+ ( 1-cell-binary-dependent-globular-type-Binary-Dependent-Globular-Type
+ K u u')
+
+open is-reflexive-Binary-Dependent-Globular-Type public
+```
+
+### Binary dependent reflexive globular types
+
+```agda
+record
+ Binary-Dependent-Reflexive-Globular-Type
+ {l1 l2 l3 l4 : Level} (l5 l6 : Level)
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ lsuc l5 ⊔ lsuc l6)
+ where
+
+ field
+ binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type :
+ Binary-Dependent-Globular-Type l5 l6
+ ( globular-type-Reflexive-Globular-Type G)
+ ( globular-type-Reflexive-Globular-Type H)
+
+ 0-cell-Binary-Dependent-Reflexive-Globular-Type :
+ (x : 0-cell-Reflexive-Globular-Type G)
+ (y : 0-cell-Reflexive-Globular-Type H) →
+ UU l5
+ 0-cell-Binary-Dependent-Reflexive-Globular-Type =
+ 0-cell-Binary-Dependent-Globular-Type
+ binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type
+
+ 1-cell-Binary-Dependent-Reflexive-Globular-Type :
+ {x x' : 0-cell-Reflexive-Globular-Type G}
+ {y y' : 0-cell-Reflexive-Globular-Type H} →
+ 0-cell-Binary-Dependent-Reflexive-Globular-Type x y →
+ 0-cell-Binary-Dependent-Reflexive-Globular-Type x' y' →
+ 1-cell-Reflexive-Globular-Type G x x' →
+ 1-cell-Reflexive-Globular-Type H y y' → UU l6
+ 1-cell-Binary-Dependent-Reflexive-Globular-Type =
+ 1-cell-Binary-Dependent-Globular-Type
+ binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type
+
+ 1-cell-binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type :
+ {x x' : 0-cell-Reflexive-Globular-Type G}
+ {y y' : 0-cell-Reflexive-Globular-Type H} →
+ 0-cell-Binary-Dependent-Reflexive-Globular-Type x y →
+ 0-cell-Binary-Dependent-Reflexive-Globular-Type x' y' →
+ Binary-Dependent-Globular-Type l6 l6
+ ( 1-cell-globular-type-Reflexive-Globular-Type G x x')
+ ( 1-cell-globular-type-Reflexive-Globular-Type H y y')
+ 1-cell-binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type =
+ 1-cell-binary-dependent-globular-type-Binary-Dependent-Globular-Type
+ binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type
+
+ field
+ refl-Binary-Dependent-Reflexive-Globular-Type :
+ is-reflexive-Binary-Dependent-Globular-Type G H
+ binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type
+
+ refl-1-cell-Binary-Dependent-Reflexive-Globular-Type :
+ {x : 0-cell-Reflexive-Globular-Type G}
+ {y : 0-cell-Reflexive-Globular-Type H}
+ (s : 0-cell-Binary-Dependent-Reflexive-Globular-Type x y) →
+ 1-cell-Binary-Dependent-Reflexive-Globular-Type s s
+ ( refl-1-cell-Reflexive-Globular-Type G)
+ ( refl-1-cell-Reflexive-Globular-Type H)
+ refl-1-cell-Binary-Dependent-Reflexive-Globular-Type =
+ refl-1-cell-is-reflexive-Binary-Dependent-Globular-Type
+ refl-Binary-Dependent-Reflexive-Globular-Type
+
+ refl-1-cell-binary-dependent-reflexive-globular-type-Binary-Dependent-Reflexive-Globular-Type :
+ {x x' : 0-cell-Reflexive-Globular-Type G}
+ {y y' : 0-cell-Reflexive-Globular-Type H} →
+ (s : 0-cell-Binary-Dependent-Reflexive-Globular-Type x y) →
+ (t : 0-cell-Binary-Dependent-Reflexive-Globular-Type x' y') →
+ is-reflexive-Binary-Dependent-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x x')
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H y y')
+ ( 1-cell-binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type
+ ( s)
+ ( t))
+ refl-1-cell-binary-dependent-reflexive-globular-type-Binary-Dependent-Reflexive-Globular-Type =
+ refl-1-cell-binary-dependent-reflexive-globular-type-is-reflexive-Binary-Dependent-Globular-Type
+ refl-Binary-Dependent-Reflexive-Globular-Type
+
+ 1-cell-binary-dependent-reflexive-globular-type-Binary-Dependent-Reflexive-Globular-Type :
+ {x x' : 0-cell-Reflexive-Globular-Type G}
+ {y y' : 0-cell-Reflexive-Globular-Type H} →
+ (s : 0-cell-Binary-Dependent-Reflexive-Globular-Type x y) →
+ (t : 0-cell-Binary-Dependent-Reflexive-Globular-Type x' y') →
+ Binary-Dependent-Reflexive-Globular-Type l6 l6
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x x')
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H y y')
+ binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type
+ ( 1-cell-binary-dependent-reflexive-globular-type-Binary-Dependent-Reflexive-Globular-Type
+ ( s)
+ ( t)) =
+ 1-cell-binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type
+ ( s)
+ ( t)
+ refl-Binary-Dependent-Reflexive-Globular-Type
+ ( 1-cell-binary-dependent-reflexive-globular-type-Binary-Dependent-Reflexive-Globular-Type
+ ( s)
+ ( t)) =
+ refl-1-cell-binary-dependent-reflexive-globular-type-Binary-Dependent-Reflexive-Globular-Type
+ ( s)
+ ( t)
+
+open Binary-Dependent-Reflexive-Globular-Type public
+```
+
+### Evaluating binary dependent reflexive globular types at points
+
+```agda
+globular-type-ev-point-Binary-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4)
+ (K : Binary-Dependent-Reflexive-Globular-Type l5 l6 G H)
+ (x : point-Reflexive-Globular-Type G)
+ (y : point-Reflexive-Globular-Type H) →
+ Globular-Type l5 l6
+globular-type-ev-point-Binary-Dependent-Reflexive-Globular-Type G H K x y =
+ ev-point-Binary-Dependent-Globular-Type
+ ( binary-dependent-globular-type-Binary-Dependent-Reflexive-Globular-Type K)
+ ( point-globular-type-point-Reflexive-Globular-Type G x)
+ ( point-globular-type-point-Reflexive-Globular-Type H y)
+
+refl-ev-point-Binary-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4)
+ (K : Binary-Dependent-Reflexive-Globular-Type l5 l6 G H)
+ (x : point-Reflexive-Globular-Type G)
+ (y : point-Reflexive-Globular-Type H) →
+ is-reflexive-Globular-Type
+ ( globular-type-ev-point-Binary-Dependent-Reflexive-Globular-Type G H K x y)
+is-reflexive-1-cell-is-reflexive-Globular-Type
+ ( refl-ev-point-Binary-Dependent-Reflexive-Globular-Type G H K x y) =
+ refl-1-cell-Binary-Dependent-Reflexive-Globular-Type K
+is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ ( refl-ev-point-Binary-Dependent-Reflexive-Globular-Type G H K x y) =
+ refl-ev-point-Binary-Dependent-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G _ _)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H _ _)
+ ( 1-cell-binary-dependent-reflexive-globular-type-Binary-Dependent-Reflexive-Globular-Type
+ ( K)
+ ( _)
+ ( _))
+ ( refl-1-cell-Reflexive-Globular-Type G)
+ ( refl-1-cell-Reflexive-Globular-Type H)
+
+ev-point-Binary-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4)
+ (K : Binary-Dependent-Reflexive-Globular-Type l5 l6 G H)
+ (x : point-Reflexive-Globular-Type G)
+ (y : point-Reflexive-Globular-Type H) →
+ Reflexive-Globular-Type l5 l6
+globular-type-Reflexive-Globular-Type
+ ( ev-point-Binary-Dependent-Reflexive-Globular-Type G H K x y) =
+ globular-type-ev-point-Binary-Dependent-Reflexive-Globular-Type _ _ K x y
+refl-Reflexive-Globular-Type
+ ( ev-point-Binary-Dependent-Reflexive-Globular-Type G H K x y) =
+ refl-ev-point-Binary-Dependent-Reflexive-Globular-Type _ _ K x y
+```
diff --git a/src/structured-types/binary-globular-maps.lagda.md b/src/structured-types/binary-globular-maps.lagda.md
new file mode 100644
index 0000000000..6c7e436885
--- /dev/null
+++ b/src/structured-types/binary-globular-maps.lagda.md
@@ -0,0 +1,63 @@
+# Binary globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.binary-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+Consider three [globular types](structured-types.globular-types.md) `G`, `H`,
+and `K`. A {{#concept "binary globular map" Agda=binary-globular-map}}
+`f : G → H → K` consists of a binary map
+
+```text
+ f₀ : G₀ → H₀ → K₀
+```
+
+and for every `x x' : G₀`, `y y' : H₀` a binary globular map
+
+```text
+ f' : G' x x' → H' y y' → K (f x y) (f x' y')
+```
+
+on the `1`-cells of `G` and `H`.
+
+## Definitions
+
+### Binary globular maps
+
+```agda
+record
+ binary-globular-map
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Globular-Type l1 l2) (H : Globular-Type l3 l4)
+ (K : Globular-Type l5 l6) : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ where
+ coinductive
+ field
+ 0-cell-binary-globular-map :
+ 0-cell-Globular-Type G → 0-cell-Globular-Type H →
+ 0-cell-Globular-Type K
+ 1-cell-binary-globular-map-binary-globular-map :
+ {x x' : 0-cell-Globular-Type G}
+ {y y' : 0-cell-Globular-Type H} →
+ binary-globular-map
+ ( 1-cell-globular-type-Globular-Type G x x')
+ ( 1-cell-globular-type-Globular-Type H y y')
+ ( 1-cell-globular-type-Globular-Type K
+ ( 0-cell-binary-globular-map x y)
+ ( 0-cell-binary-globular-map x' y'))
+```
diff --git a/src/structured-types/colax-reflexive-globular-maps.lagda.md b/src/structured-types/colax-reflexive-globular-maps.lagda.md
new file mode 100644
index 0000000000..e6089ba913
--- /dev/null
+++ b/src/structured-types/colax-reflexive-globular-maps.lagda.md
@@ -0,0 +1,216 @@
+# Colax reflexive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.colax-reflexive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "colax reflexive globular map" Agda=colax-reflexive-globular-map}}
+between two
+[reflexive globular types](structured-types.reflexive-globular-types.md) `G` and
+`H` is a [globular map](structured-types.globular-maps.md) `f : G → H` equipped
+with a family of 2-cells
+
+```text
+ (x : G₀) → H₂ (f₁ (refl G x)) (refl H (f₀ x))
+```
+
+from the image of the reflexivity cell at `x` in `G` to the reflexivity cell at
+`f₀ x`, such that the globular map `f' : G' x y → H' (f₀ x) (f₀ y)` is again
+colax reflexive.
+
+### Lack of composition for colax reflexive globular maps
+
+Note that the colax reflexive globular maps lack composition. For the
+composition of `g` and `f` to exist, there should be a `2`-cell from
+`g (f (refl G x))` to `refl K (g (f x))`, we need to compose the 2-cell that `g`
+preserves reflexivity with the action of `g` on the 2-cell that `f` preserves
+reflexivity. However, since the reflexive globular type `G` is not assumed to be
+[transitive](structured-types.transitive-globular-types.md), it might lack such
+instances of the compositions.
+
+### Colax reflexive globular maps versus the morphisms of presheaves on the reflexive globe category
+
+When reflexive globular types are viewed as type valued presheaves over the
+reflexive globe category, the resulting notion of morphism is that of
+[reflexive globular maps](structured-types.reflexive-globular-maps.md), which is
+stricter than the notion of colax reflexive globular maps.
+
+### Lax versus colax
+
+The notion of
+[lax reflexive globular map](structured-types.lax-reflexive-globular-maps.md) is
+almost the same, except with the direction of the 2-cell reversed. In general,
+the direction of lax coherence cells is determined by applying the morphism
+componentwise first, and then the operations, while the direction of colax
+coherence cells is determined by first applying the operations and then the
+morphism.
+
+## Definitions
+
+### The predicate of colaxly preserving reflexivity
+
+```agda
+record
+ is-colax-reflexive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2) (H : Reflexive-Globular-Type l3 l4)
+ (f : globular-map-Reflexive-Globular-Type G H) :
+ UU (l1 ⊔ l2 ⊔ l4)
+ where
+ coinductive
+
+ field
+ preserves-refl-1-cell-is-colax-reflexive-globular-map :
+ (x : 0-cell-Reflexive-Globular-Type G) →
+ 2-cell-Reflexive-Globular-Type H
+ ( 1-cell-globular-map f (refl-1-cell-Reflexive-Globular-Type G {x}))
+ ( refl-1-cell-Reflexive-Globular-Type H)
+
+ field
+ is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ is-colax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H _ _)
+ ( 1-cell-globular-map-globular-map-Reflexive-Globular-Type G H f)
+
+open is-colax-reflexive-globular-map public
+```
+
+### Colax reflexive globular maps
+
+```agda
+record
+ colax-reflexive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+
+ constructor
+ make-colax-reflexive-globular-map
+
+ field
+ globular-map-colax-reflexive-globular-map :
+ globular-map-Reflexive-Globular-Type G H
+
+ 0-cell-colax-reflexive-globular-map :
+ 0-cell-Reflexive-Globular-Type G → 0-cell-Reflexive-Globular-Type H
+ 0-cell-colax-reflexive-globular-map =
+ 0-cell-globular-map globular-map-colax-reflexive-globular-map
+
+ 1-cell-colax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ 1-cell-Reflexive-Globular-Type G x y →
+ 1-cell-Reflexive-Globular-Type H
+ ( 0-cell-colax-reflexive-globular-map x)
+ ( 0-cell-colax-reflexive-globular-map y)
+ 1-cell-colax-reflexive-globular-map =
+ 1-cell-globular-map globular-map-colax-reflexive-globular-map
+
+ 1-cell-globular-map-colax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ globular-map-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-colax-reflexive-globular-map x)
+ ( 0-cell-colax-reflexive-globular-map y))
+ 1-cell-globular-map-colax-reflexive-globular-map =
+ 1-cell-globular-map-globular-map globular-map-colax-reflexive-globular-map
+
+ field
+ is-colax-reflexive-colax-reflexive-globular-map :
+ is-colax-reflexive-globular-map G H
+ globular-map-colax-reflexive-globular-map
+
+ preserves-refl-1-cell-colax-reflexive-globular-map :
+ ( x : 0-cell-Reflexive-Globular-Type G) →
+ 2-cell-Reflexive-Globular-Type H
+ ( 1-cell-colax-reflexive-globular-map
+ ( refl-1-cell-Reflexive-Globular-Type G {x}))
+ ( refl-1-cell-Reflexive-Globular-Type H)
+ preserves-refl-1-cell-colax-reflexive-globular-map =
+ preserves-refl-1-cell-is-colax-reflexive-globular-map
+ is-colax-reflexive-colax-reflexive-globular-map
+
+ is-colax-reflexive-2-cell-globular-map-is-colax-reflexive-globular-map :
+ { x y : 0-cell-Reflexive-Globular-Type G} →
+ is-colax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-colax-reflexive-globular-map x)
+ ( 0-cell-colax-reflexive-globular-map y))
+ ( 1-cell-globular-map-colax-reflexive-globular-map)
+ is-colax-reflexive-2-cell-globular-map-is-colax-reflexive-globular-map =
+ is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-globular-map
+ is-colax-reflexive-colax-reflexive-globular-map
+
+ 1-cell-colax-reflexive-globular-map-colax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ colax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-colax-reflexive-globular-map x)
+ ( 0-cell-colax-reflexive-globular-map y))
+ globular-map-colax-reflexive-globular-map
+ 1-cell-colax-reflexive-globular-map-colax-reflexive-globular-map =
+ 1-cell-globular-map-colax-reflexive-globular-map
+ is-colax-reflexive-colax-reflexive-globular-map
+ 1-cell-colax-reflexive-globular-map-colax-reflexive-globular-map =
+ is-colax-reflexive-2-cell-globular-map-is-colax-reflexive-globular-map
+
+open colax-reflexive-globular-map public
+```
+
+### The identity colax reflexive globular map
+
+```agda
+map-id-colax-reflexive-globular-map :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ globular-map-Reflexive-Globular-Type G G
+map-id-colax-reflexive-globular-map G = id-globular-map _
+
+is-colax-reflexive-id-colax-reflexive-globular-map :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ is-colax-reflexive-globular-map G G
+ ( map-id-colax-reflexive-globular-map G)
+preserves-refl-1-cell-is-colax-reflexive-globular-map
+ ( is-colax-reflexive-id-colax-reflexive-globular-map G)
+ x =
+ refl-2-cell-Reflexive-Globular-Type G
+is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-globular-map
+ ( is-colax-reflexive-id-colax-reflexive-globular-map G) =
+ is-colax-reflexive-id-colax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G _ _)
+
+id-colax-reflexive-globular-map :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ colax-reflexive-globular-map G G
+globular-map-colax-reflexive-globular-map
+ ( id-colax-reflexive-globular-map G) =
+ map-id-colax-reflexive-globular-map G
+is-colax-reflexive-colax-reflexive-globular-map
+ ( id-colax-reflexive-globular-map G) =
+ ( is-colax-reflexive-id-colax-reflexive-globular-map G)
+```
+
+## See also
+
+- [Lax reflexive globular maps](structured-types.lax-reflexive-globular-maps.md)
+- [Reflexive globular maps](structured-types.reflexive-globular-maps.md)
diff --git a/src/structured-types/colax-transitive-globular-maps.lagda.md b/src/structured-types/colax-transitive-globular-maps.lagda.md
new file mode 100644
index 0000000000..888dadb666
--- /dev/null
+++ b/src/structured-types/colax-transitive-globular-maps.lagda.md
@@ -0,0 +1,237 @@
+# Colax transitive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.colax-transitive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+A
+{{#concept "colax transitive globular map" Agda=colax-transitive-globular-map}}
+between two
+[transitive globular types](structured-types.transitive-globular-types.md) `G`
+and `H` is a [globular map](structured-types.globular-maps.md) `f : G → H`
+equipped with a family of 2-cells
+
+```text
+ H₂ (f₁ (q ∘G p)) (f₁ q ∘H f₁ p)
+```
+
+from the image of the composite of two 1-cells `q` and `p` in `G` to the
+composite of `f₁ q` and `f₁ p` in `H`, such that the globular map
+`f' : G' x y → H' (f₀ x) (f₀ y)` is again colax transitive.
+
+### Lack of identity colax transitive globular maps
+
+Note that the colax transitive globular maps lack an identity morphism. For an
+identity morphism to exist on a transitive globular type `G`, there should be a
+`2`-cell from `q ∘G p` to `q ∘G p` for every composable pair of `1`-cells `q`
+and `p`. However, since the transitive globular type `G` is not assumed to be
+[reflexive](structured-types.reflexive-globular-types.md), it might lack such
+instances of the reflexivity cells.
+
+## Definitions
+
+### The predicate of colaxly preserving transitivity
+
+```agda
+record
+ is-colax-transitive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Transitive-Globular-Type l1 l2) (H : Transitive-Globular-Type l3 l4)
+ (f : globular-map-Transitive-Globular-Type G H) :
+ UU (l1 ⊔ l2 ⊔ l4)
+ where
+
+ coinductive
+
+ field
+ preserves-comp-1-cell-is-colax-transitive-globular-map :
+ {x y z : 0-cell-Transitive-Globular-Type G} →
+ (q : 1-cell-Transitive-Globular-Type G y z)
+ (p : 1-cell-Transitive-Globular-Type G x y) →
+ 2-cell-Transitive-Globular-Type H
+ ( 1-cell-globular-map f
+ ( comp-1-cell-Transitive-Globular-Type G q p))
+ ( comp-1-cell-Transitive-Globular-Type H
+ ( 1-cell-globular-map f q)
+ ( 1-cell-globular-map f p))
+
+ field
+ is-colax-transitive-1-cell-globular-map-is-colax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ is-colax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H _ _)
+ ( 1-cell-globular-map-globular-map f)
+
+open is-colax-transitive-globular-map public
+```
+
+### Colax transitive globular maps
+
+```agda
+record
+ colax-transitive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+
+ constructor
+ make-colax-transitive-globular-map
+
+ field
+ globular-map-colax-transitive-globular-map :
+ globular-map-Transitive-Globular-Type G H
+
+ 0-cell-colax-transitive-globular-map :
+ 0-cell-Transitive-Globular-Type G → 0-cell-Transitive-Globular-Type H
+ 0-cell-colax-transitive-globular-map =
+ 0-cell-globular-map globular-map-colax-transitive-globular-map
+
+ 1-cell-colax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ 1-cell-Transitive-Globular-Type G x y →
+ 1-cell-Transitive-Globular-Type H
+ ( 0-cell-colax-transitive-globular-map x)
+ ( 0-cell-colax-transitive-globular-map y)
+ 1-cell-colax-transitive-globular-map =
+ 1-cell-globular-map globular-map-colax-transitive-globular-map
+
+ 1-cell-globular-map-colax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ globular-map-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-colax-transitive-globular-map x)
+ ( 0-cell-colax-transitive-globular-map y))
+ 1-cell-globular-map-colax-transitive-globular-map =
+ 1-cell-globular-map-globular-map
+ globular-map-colax-transitive-globular-map
+
+ 2-cell-colax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G}
+ {f g : 1-cell-Transitive-Globular-Type G x y} →
+ 2-cell-Transitive-Globular-Type G f g →
+ 2-cell-Transitive-Globular-Type H
+ ( 1-cell-colax-transitive-globular-map f)
+ ( 1-cell-colax-transitive-globular-map g)
+ 2-cell-colax-transitive-globular-map =
+ 2-cell-globular-map globular-map-colax-transitive-globular-map
+
+ 2-cell-globular-map-colax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G}
+ {f g : 1-cell-Transitive-Globular-Type G x y} →
+ globular-map-Transitive-Globular-Type
+ ( 2-cell-transitive-globular-type-Transitive-Globular-Type G f g)
+ ( 2-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 1-cell-colax-transitive-globular-map f)
+ ( 1-cell-colax-transitive-globular-map g))
+ 2-cell-globular-map-colax-transitive-globular-map =
+ 2-cell-globular-map-globular-map
+ ( globular-map-colax-transitive-globular-map)
+ ( _)
+ ( _)
+
+ field
+ is-colax-transitive-colax-transitive-globular-map :
+ is-colax-transitive-globular-map G H
+ globular-map-colax-transitive-globular-map
+
+ preserves-comp-1-cell-colax-transitive-globular-map :
+ {x y z : 0-cell-Transitive-Globular-Type G}
+ (q : 1-cell-Transitive-Globular-Type G y z)
+ (p : 1-cell-Transitive-Globular-Type G x y) →
+ 2-cell-Transitive-Globular-Type H
+ ( 1-cell-colax-transitive-globular-map
+ ( comp-1-cell-Transitive-Globular-Type G q p))
+ ( comp-1-cell-Transitive-Globular-Type H
+ ( 1-cell-colax-transitive-globular-map q)
+ ( 1-cell-colax-transitive-globular-map p))
+ preserves-comp-1-cell-colax-transitive-globular-map =
+ preserves-comp-1-cell-is-colax-transitive-globular-map
+ is-colax-transitive-colax-transitive-globular-map
+
+ is-colax-transitive-1-cell-globular-map-colax-transitive-globular-map :
+ { x y : 0-cell-Transitive-Globular-Type G} →
+ is-colax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-colax-transitive-globular-map x)
+ ( 0-cell-colax-transitive-globular-map y))
+ ( 1-cell-globular-map-colax-transitive-globular-map)
+ is-colax-transitive-1-cell-globular-map-colax-transitive-globular-map =
+ is-colax-transitive-1-cell-globular-map-is-colax-transitive-globular-map
+ is-colax-transitive-colax-transitive-globular-map
+
+ 1-cell-colax-transitive-globular-map-colax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ colax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-colax-transitive-globular-map x)
+ ( 0-cell-colax-transitive-globular-map y))
+ globular-map-colax-transitive-globular-map
+ 1-cell-colax-transitive-globular-map-colax-transitive-globular-map =
+ 1-cell-globular-map-colax-transitive-globular-map
+ is-colax-transitive-colax-transitive-globular-map
+ 1-cell-colax-transitive-globular-map-colax-transitive-globular-map =
+ is-colax-transitive-1-cell-globular-map-colax-transitive-globular-map
+
+open colax-transitive-globular-map public
+```
+
+### Composition of colax transitive maps
+
+```agda
+map-comp-colax-transitive-globular-map :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4)
+ (K : Transitive-Globular-Type l5 l6) →
+ colax-transitive-globular-map H K → colax-transitive-globular-map G H →
+ globular-map-Transitive-Globular-Type G K
+map-comp-colax-transitive-globular-map G H K g f =
+ comp-globular-map
+ ( globular-map-colax-transitive-globular-map g)
+ ( globular-map-colax-transitive-globular-map f)
+
+is-colax-transitive-comp-colax-transitive-globular-map :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4)
+ (K : Transitive-Globular-Type l5 l6) →
+ (g : colax-transitive-globular-map H K)
+ (f : colax-transitive-globular-map G H) →
+ is-colax-transitive-globular-map G K
+ ( map-comp-colax-transitive-globular-map G H K g f)
+preserves-comp-1-cell-is-colax-transitive-globular-map
+ ( is-colax-transitive-comp-colax-transitive-globular-map G H K g f) q p =
+ comp-2-cell-Transitive-Globular-Type K
+ ( preserves-comp-1-cell-colax-transitive-globular-map g _ _)
+ ( 2-cell-colax-transitive-globular-map g
+ ( preserves-comp-1-cell-colax-transitive-globular-map f q p))
+is-colax-transitive-1-cell-globular-map-is-colax-transitive-globular-map
+ ( is-colax-transitive-comp-colax-transitive-globular-map G H K g f) =
+ is-colax-transitive-comp-colax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G _ _)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H _ _)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type K _ _)
+ ( 1-cell-colax-transitive-globular-map-colax-transitive-globular-map g)
+ ( 1-cell-colax-transitive-globular-map-colax-transitive-globular-map f)
+```
diff --git a/src/structured-types/composition-structure-globular-types.lagda.md b/src/structured-types/composition-structure-globular-types.lagda.md
new file mode 100644
index 0000000000..7029d9376c
--- /dev/null
+++ b/src/structured-types/composition-structure-globular-types.lagda.md
@@ -0,0 +1,67 @@
+# Composition structure on globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.composition-structure-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.binary-globular-maps
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+A
+{{#concept "composition structure" Disambiguation="globular type" Agda=composition-Globular-Type}}
+on a [globular type](structured-types.globular-types.md) `G` consists of a
+[binary globular map](structured-types.binary-globular-maps.md)
+
+```text
+ - ∘ - : G' y z → G' x y → G' x z,
+```
+
+and for any two `0`-cells `x y : G₀` a composition structure on the globular
+type `G' x y` of `1`-cells of `G`. More explicitly, a composition structure
+consists of binary operations
+
+```text
+ - ∘ - : (𝑛+1)-Cell G y z → (𝑛+1)-Cell G x y → (𝑛+1)-Cell G x z,
+```
+
+each of which preserve all higher cells of the globular type `G`. Globular
+composition structure is therefore a strengthening of the
+[transitivity structure](structured-types.transitive-globular-types.md) on
+globular types.
+
+## Definitions
+
+### Globular composition structure
+
+```agda
+record
+ composition-Globular-Type
+ {l1 l2 : Level} (G : Globular-Type l1 l2) : UU (l1 ⊔ l2)
+ where
+ coinductive
+ field
+ comp-binary-globular-map-composition-Globular-Type :
+ {x y z : 0-cell-Globular-Type G} →
+ binary-globular-map
+ ( 1-cell-globular-type-Globular-Type G y z)
+ ( 1-cell-globular-type-Globular-Type G x y)
+ ( 1-cell-globular-type-Globular-Type G x z)
+ composition-1-cell-globular-type-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ composition-Globular-Type
+ ( 1-cell-globular-type-Globular-Type G x y)
+
+open composition-Globular-Type public
+```
diff --git a/src/structured-types/constant-globular-types.lagda.md b/src/structured-types/constant-globular-types.lagda.md
new file mode 100644
index 0000000000..3a0623644e
--- /dev/null
+++ b/src/structured-types/constant-globular-types.lagda.md
@@ -0,0 +1,44 @@
+# Constant globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.constant-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+Consider a type `A`. The
+{{#concept "constant globular type" Agda=constant-Globular-Type}} at `A` is the
+[globular type](structured-types.globular-types.md) `𝐀` given by
+
+```text
+ 𝐀₀ := A
+ 𝐀₁ x y := 𝐀.
+```
+
+## Definitions
+
+### The constant globular type at a type
+
+```agda
+module _
+ {l : Level} (A : UU l)
+ where
+
+ constant-Globular-Type : Globular-Type l l
+ 0-cell-Globular-Type constant-Globular-Type =
+ A
+ 1-cell-globular-type-Globular-Type constant-Globular-Type x y =
+ constant-Globular-Type
+```
diff --git a/src/structured-types/dependent-globular-types.lagda.md b/src/structured-types/dependent-globular-types.lagda.md
index ca590cd22c..2f0e09f1af 100644
--- a/src/structured-types/dependent-globular-types.lagda.md
+++ b/src/structured-types/dependent-globular-types.lagda.md
@@ -13,6 +13,7 @@ open import foundation.dependent-pair-types
open import foundation.universe-levels
open import structured-types.globular-types
+open import structured-types.points-globular-types
```
@@ -65,6 +66,21 @@ module _
( 1-cell-dependent-globular-type-Dependent-Globular-Type H y y')
```
+### Evaluating dependent globular types at points
+
+```agda
+ev-point-Dependent-Globular-Type :
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G) (x : point-Globular-Type G) →
+ Globular-Type l3 l4
+0-cell-Globular-Type (ev-point-Dependent-Globular-Type H x) =
+ 0-cell-Dependent-Globular-Type H (0-cell-point-Globular-Type x)
+1-cell-globular-type-Globular-Type (ev-point-Dependent-Globular-Type H x) y y' =
+ ev-point-Dependent-Globular-Type
+ ( 1-cell-dependent-globular-type-Dependent-Globular-Type H y y')
+ ( 1-cell-point-point-Globular-Type x)
+```
+
## See also
- [Dependent reflexive globular types](structured-types.dependent-reflexive-globular-types.md)
diff --git a/src/structured-types/dependent-reflexive-globular-types.lagda.md b/src/structured-types/dependent-reflexive-globular-types.lagda.md
index 3f7100064f..e94b48b18b 100644
--- a/src/structured-types/dependent-reflexive-globular-types.lagda.md
+++ b/src/structured-types/dependent-reflexive-globular-types.lagda.md
@@ -14,6 +14,7 @@ open import foundation.universe-levels
open import structured-types.dependent-globular-types
open import structured-types.globular-types
+open import structured-types.points-reflexive-globular-types
open import structured-types.reflexive-globular-types
```
@@ -49,11 +50,11 @@ record
where
coinductive
field
- refl-0-cell-is-reflexive-Dependent-Globular-Type :
+ refl-1-cell-is-reflexive-Dependent-Globular-Type :
{x : 0-cell-Reflexive-Globular-Type G}
(y : 0-cell-Dependent-Globular-Type H x) →
1-cell-Dependent-Globular-Type H y y
- ( refl-0-cell-Reflexive-Globular-Type G)
+ ( refl-1-cell-Reflexive-Globular-Type G)
is-reflexive-1-cell-dependent-globular-type-Dependent-Globular-Type :
{x x' : 0-cell-Reflexive-Globular-Type G}
@@ -109,13 +110,13 @@ record
is-reflexive-Dependent-Globular-Type G
( dependent-globular-type-Dependent-Reflexive-Globular-Type)
- refl-0-cell-Dependent-Reflexive-Globular-Type :
+ refl-1-cell-Dependent-Reflexive-Globular-Type :
{x : 0-cell-Reflexive-Globular-Type G}
(y : 0-cell-Dependent-Reflexive-Globular-Type x) →
1-cell-Dependent-Reflexive-Globular-Type y y
- ( refl-0-cell-Reflexive-Globular-Type G)
- refl-0-cell-Dependent-Reflexive-Globular-Type =
- refl-0-cell-is-reflexive-Dependent-Globular-Type
+ ( refl-1-cell-Reflexive-Globular-Type G)
+ refl-1-cell-Dependent-Reflexive-Globular-Type =
+ refl-1-cell-is-reflexive-Dependent-Globular-Type
( refl-Dependent-Reflexive-Globular-Type)
is-reflexive-1-cell-dependent-globular-type-Dependent-Reflexive-Globular-Type :
@@ -156,42 +157,19 @@ construction makes essential use of the reflexivity elements of the base
reflexive globular type.
```agda
-globular-structure-family-globular-types-Dependent-Reflexive-Globular-Type :
- {l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
- (H : Dependent-Reflexive-Globular-Type l3 l4 G)
- (x : 0-cell-Reflexive-Globular-Type G) →
- globular-structure l4 (0-cell-Dependent-Reflexive-Globular-Type H x)
-1-cell-globular-structure
- ( globular-structure-family-globular-types-Dependent-Reflexive-Globular-Type
- { G = G}
- ( H)
- ( x))
- ( u)
- ( v) =
- 1-cell-Dependent-Reflexive-Globular-Type H u v
- ( refl-0-cell-Reflexive-Globular-Type G)
-globular-structure-1-cell-globular-structure
- ( globular-structure-family-globular-types-Dependent-Reflexive-Globular-Type
- { G = G}
- ( H)
- ( x))
- ( u)
- ( v) =
- globular-structure-family-globular-types-Dependent-Reflexive-Globular-Type
- ( 1-cell-dependent-reflexive-globular-type-Dependent-Reflexive-Globular-Type
- H u v)
- ( refl-0-cell-Reflexive-Globular-Type G)
-
family-globular-types-Dependent-Reflexive-Globular-Type :
{l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
(H : Dependent-Reflexive-Globular-Type l3 l4 G) →
0-cell-Reflexive-Globular-Type G → Globular-Type l3 l4
-pr1 (family-globular-types-Dependent-Reflexive-Globular-Type H x) =
+0-cell-Globular-Type
+ ( family-globular-types-Dependent-Reflexive-Globular-Type H x) =
0-cell-Dependent-Reflexive-Globular-Type H x
-pr2 (family-globular-types-Dependent-Reflexive-Globular-Type H x) =
- globular-structure-family-globular-types-Dependent-Reflexive-Globular-Type
- ( H)
- ( x)
+1-cell-globular-type-Globular-Type
+ ( family-globular-types-Dependent-Reflexive-Globular-Type {G = G} H x) y z =
+ family-globular-types-Dependent-Reflexive-Globular-Type
+ ( 1-cell-dependent-reflexive-globular-type-Dependent-Reflexive-Globular-Type
+ H y z)
+ ( refl-1-cell-Reflexive-Globular-Type G)
is-reflexive-family-globular-types-Dependent-Reflexive-Globular-Type :
{l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
@@ -199,18 +177,16 @@ is-reflexive-family-globular-types-Dependent-Reflexive-Globular-Type :
(x : 0-cell-Reflexive-Globular-Type G) →
is-reflexive-Globular-Type
( family-globular-types-Dependent-Reflexive-Globular-Type H x)
-is-reflexive-1-cell-is-reflexive-globular-structure
+is-reflexive-1-cell-is-reflexive-Globular-Type
( is-reflexive-family-globular-types-Dependent-Reflexive-Globular-Type H x) =
- refl-0-cell-Dependent-Reflexive-Globular-Type H
-is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
+ refl-1-cell-Dependent-Reflexive-Globular-Type H
+is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
( is-reflexive-family-globular-types-Dependent-Reflexive-Globular-Type
- { G = G} H x)
- ( u)
- ( v) =
+ {G = G} H x) =
is-reflexive-family-globular-types-Dependent-Reflexive-Globular-Type
( 1-cell-dependent-reflexive-globular-type-Dependent-Reflexive-Globular-Type
- H u v)
- ( refl-0-cell-Reflexive-Globular-Type G)
+ H _ _)
+ ( refl-1-cell-Reflexive-Globular-Type G)
module _
{l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
@@ -226,3 +202,49 @@ module _
( family-reflexive-globular-types-Dependent-Reflexive-Globular-Type x) =
is-reflexive-family-globular-types-Dependent-Reflexive-Globular-Type H x
```
+
+### Evaluating dependent reflexive globular types at points
+
+```agda
+globular-type-ev-point-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
+ (H : Dependent-Reflexive-Globular-Type l3 l4 G)
+ (x : point-Reflexive-Globular-Type G) →
+ Globular-Type l3 l4
+0-cell-Globular-Type
+ ( globular-type-ev-point-Dependent-Reflexive-Globular-Type H x) =
+ 0-cell-Dependent-Reflexive-Globular-Type H x
+1-cell-globular-type-Globular-Type
+ ( globular-type-ev-point-Dependent-Reflexive-Globular-Type {G = G} H x) y y' =
+ globular-type-ev-point-Dependent-Reflexive-Globular-Type
+ ( 1-cell-dependent-reflexive-globular-type-Dependent-Reflexive-Globular-Type
+ H y y')
+ ( refl-1-cell-Reflexive-Globular-Type G)
+
+refl-ev-point-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
+ (H : Dependent-Reflexive-Globular-Type l3 l4 G)
+ (x : point-Reflexive-Globular-Type G) →
+ is-reflexive-Globular-Type
+ ( globular-type-ev-point-Dependent-Reflexive-Globular-Type H x)
+is-reflexive-1-cell-is-reflexive-Globular-Type
+ ( refl-ev-point-Dependent-Reflexive-Globular-Type H x) =
+ refl-1-cell-Dependent-Reflexive-Globular-Type H
+is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ ( refl-ev-point-Dependent-Reflexive-Globular-Type {G = G} H x) =
+ refl-ev-point-Dependent-Reflexive-Globular-Type
+ ( 1-cell-dependent-reflexive-globular-type-Dependent-Reflexive-Globular-Type
+ H _ _)
+ ( refl-1-cell-Reflexive-Globular-Type G)
+
+ev-point-Dependent-Reflexive-Globular-Type :
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
+ (H : Dependent-Reflexive-Globular-Type l3 l4 G)
+ (x : point-Reflexive-Globular-Type G) →
+ Reflexive-Globular-Type l3 l4
+globular-type-Reflexive-Globular-Type
+ ( ev-point-Dependent-Reflexive-Globular-Type H x) =
+ globular-type-ev-point-Dependent-Reflexive-Globular-Type H x
+refl-Reflexive-Globular-Type (ev-point-Dependent-Reflexive-Globular-Type H x) =
+ refl-ev-point-Dependent-Reflexive-Globular-Type H x
+```
diff --git a/src/structured-types/dependent-sums-globular-types.lagda.md b/src/structured-types/dependent-sums-globular-types.lagda.md
new file mode 100644
index 0000000000..48e6e98aca
--- /dev/null
+++ b/src/structured-types/dependent-sums-globular-types.lagda.md
@@ -0,0 +1,173 @@
+# Dependent sums of globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.dependent-sums-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.base-change-dependent-globular-types
+open import structured-types.dependent-globular-types
+open import structured-types.globular-maps
+open import structured-types.globular-types
+open import structured-types.sections-dependent-globular-types
+```
+
+
+
+## Idea
+
+Consider a
+[dependent globular type](structured-types.dependent-globular-types.md) `H` over
+a [globular type](structured-types.globular-types.md) `G`. The
+{{#concept "dependent sum" Disambiguation="globular types" Agda=Σ-Globular-Type}}
+`Σ G H` of `H` is the globular type given by
+
+```text
+ (Σ G H)₀ := Σ G₀ H₀
+ (Σ G H)' (x , y) (x' , y') := Σ (G' x x') (H' y y').
+```
+
+## Definitions
+
+### Dependent sums of dependent globular types
+
+```agda
+Σ-Globular-Type :
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G) → Globular-Type (l1 ⊔ l3) (l2 ⊔ l4)
+0-cell-Globular-Type (Σ-Globular-Type H) =
+ Σ _ (0-cell-Dependent-Globular-Type H)
+1-cell-globular-type-Globular-Type (Σ-Globular-Type H) (x , y) (x' , y') =
+ Σ-Globular-Type
+ ( 1-cell-dependent-globular-type-Dependent-Globular-Type H y y')
+
+module _
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G)
+ where
+
+ 0-cell-Σ-Globular-Type : UU (l1 ⊔ l3)
+ 0-cell-Σ-Globular-Type =
+ 0-cell-Globular-Type (Σ-Globular-Type H)
+
+ 1-cell-globular-type-Σ-Globular-Type :
+ (x y : 0-cell-Σ-Globular-Type) → Globular-Type (l2 ⊔ l4) (l2 ⊔ l4)
+ 1-cell-globular-type-Σ-Globular-Type =
+ 1-cell-globular-type-Globular-Type (Σ-Globular-Type H)
+
+ 1-cell-Σ-Globular-Type :
+ (x y : 0-cell-Globular-Type (Σ-Globular-Type H)) → UU (l2 ⊔ l4)
+ 1-cell-Σ-Globular-Type =
+ 1-cell-Globular-Type (Σ-Globular-Type H)
+
+ 2-cell-globular-type-Σ-Globular-Type :
+ {x y : 0-cell-Σ-Globular-Type}
+ (f g : 1-cell-Σ-Globular-Type x y) → Globular-Type (l2 ⊔ l4) (l2 ⊔ l4)
+ 2-cell-globular-type-Σ-Globular-Type =
+ 2-cell-globular-type-Globular-Type (Σ-Globular-Type H)
+
+ 2-cell-Σ-Globular-Type :
+ {x y : 0-cell-Σ-Globular-Type} →
+ (f g : 1-cell-Σ-Globular-Type x y) → UU (l2 ⊔ l4)
+ 2-cell-Σ-Globular-Type =
+ 2-cell-Globular-Type (Σ-Globular-Type H)
+```
+
+### The first projection out of the dependent sum of a dependent globular type
+
+```agda
+pr1-Σ-Globular-Type :
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G) →
+ globular-map (Σ-Globular-Type H) G
+0-cell-globular-map (pr1-Σ-Globular-Type H) = pr1
+1-cell-globular-map-globular-map (pr1-Σ-Globular-Type H) =
+ pr1-Σ-Globular-Type
+ ( 1-cell-dependent-globular-type-Dependent-Globular-Type H _ _)
+
+module _
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G)
+ where
+
+ 0-cell-pr1-Σ-Globular-Type :
+ 0-cell-Σ-Globular-Type H → 0-cell-Globular-Type G
+ 0-cell-pr1-Σ-Globular-Type =
+ 0-cell-globular-map (pr1-Σ-Globular-Type H)
+
+ 1-cell-globular-map-pr1-Σ-Globular-Type :
+ (x y : 0-cell-Σ-Globular-Type H) →
+ globular-map
+ ( 1-cell-globular-type-Σ-Globular-Type H x y)
+ ( 1-cell-globular-type-Globular-Type G
+ ( 0-cell-pr1-Σ-Globular-Type x)
+ ( 0-cell-pr1-Σ-Globular-Type y))
+ 1-cell-globular-map-pr1-Σ-Globular-Type x y =
+ 1-cell-globular-map-globular-map (pr1-Σ-Globular-Type H)
+
+ 1-cell-pr1-Σ-Globular-Type :
+ {x y : 0-cell-Σ-Globular-Type H} →
+ 1-cell-Σ-Globular-Type H x y →
+ 1-cell-Globular-Type G
+ ( 0-cell-pr1-Σ-Globular-Type x)
+ ( 0-cell-pr1-Σ-Globular-Type y)
+ 1-cell-pr1-Σ-Globular-Type =
+ 1-cell-globular-map (pr1-Σ-Globular-Type H)
+```
+
+### The second projection of a dependent sum of globular types
+
+```agda
+pr2-Σ-Globular-Type :
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G) →
+ section-Dependent-Globular-Type
+ ( base-change-Dependent-Globular-Type (pr1-Σ-Globular-Type H) H)
+0-cell-section-Dependent-Globular-Type (pr2-Σ-Globular-Type H) = pr2
+1-cell-section-section-Dependent-Globular-Type (pr2-Σ-Globular-Type H) =
+ pr2-Σ-Globular-Type
+ ( 1-cell-dependent-globular-type-Dependent-Globular-Type H _ _)
+
+module _
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G)
+ where
+
+ 0-cell-pr2-Σ-Globular-Type :
+ (x : 0-cell-Σ-Globular-Type H) →
+ 0-cell-base-change-Dependent-Globular-Type (pr1-Σ-Globular-Type H) H x
+ 0-cell-pr2-Σ-Globular-Type =
+ 0-cell-section-Dependent-Globular-Type (pr2-Σ-Globular-Type H)
+
+ 1-cell-section-pr2-Σ-Globular-Type :
+ {x x' : 0-cell-Σ-Globular-Type H} →
+ section-Dependent-Globular-Type
+ ( 1-cell-dependent-globular-type-base-change-Dependent-Globular-Type
+ ( pr1-Σ-Globular-Type H)
+ ( H)
+ ( 0-cell-pr2-Σ-Globular-Type x)
+ ( 0-cell-pr2-Σ-Globular-Type x'))
+ 1-cell-section-pr2-Σ-Globular-Type =
+ 1-cell-section-section-Dependent-Globular-Type (pr2-Σ-Globular-Type H)
+
+ 1-cell-pr2-Σ-Globular-Type :
+ {x x' : 0-cell-Σ-Globular-Type H}
+ (f : 1-cell-Σ-Globular-Type H x x') →
+ 1-cell-base-change-Dependent-Globular-Type
+ ( pr1-Σ-Globular-Type H)
+ ( H)
+ ( 0-cell-pr2-Σ-Globular-Type x)
+ ( 0-cell-pr2-Σ-Globular-Type x')
+ ( f)
+ 1-cell-pr2-Σ-Globular-Type =
+ 1-cell-section-Dependent-Globular-Type
+ ( base-change-Dependent-Globular-Type (pr1-Σ-Globular-Type H) H)
+ ( pr2-Σ-Globular-Type H)
+```
diff --git a/src/structured-types/discrete-dependent-reflexive-globular-types.lagda.md b/src/structured-types/discrete-dependent-reflexive-globular-types.lagda.md
new file mode 100644
index 0000000000..7596c06e64
--- /dev/null
+++ b/src/structured-types/discrete-dependent-reflexive-globular-types.lagda.md
@@ -0,0 +1,54 @@
+# Discrete dependent reflexive globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.discrete-dependent-reflexive-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.dependent-reflexive-globular-types
+open import structured-types.discrete-reflexive-globular-types
+open import structured-types.points-reflexive-globular-types
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+A
+[dependent reflexive globular type](structured-types.dependent-reflexive-globular-types.md)
+`H` over a
+[reflexive globular type](structured-types.reflexive-globular-types.md) `G` is
+said to be
+{{#concept "discrete" Disambiguation="dependent reflexive globular type" Agda=is-discrete-Dependent-Reflexive-Globular-Type}}
+if the reflexive globular type
+
+```text
+ ev-point H x
+```
+
+is [discrete](structured-types.discrete-reflexive-globular-types.md) for every
+[point](structured-types.points-reflexive-globular-types.md) of `G`.
+
+## Definitions
+
+### The predicate of being a discrete dependent reflexive globular type
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
+ (H : Dependent-Reflexive-Globular-Type l3 l4 G)
+ where
+
+ is-discrete-Dependent-Reflexive-Globular-Type : UU (l1 ⊔ l3 ⊔ l4)
+ is-discrete-Dependent-Reflexive-Globular-Type =
+ (x : point-Reflexive-Globular-Type G) →
+ is-discrete-Reflexive-Globular-Type
+ ( ev-point-Dependent-Reflexive-Globular-Type H x)
+```
diff --git a/src/structured-types/discrete-globular-types.lagda.md b/src/structured-types/discrete-globular-types.lagda.md
new file mode 100644
index 0000000000..59d762e232
--- /dev/null
+++ b/src/structured-types/discrete-globular-types.lagda.md
@@ -0,0 +1,85 @@
+# Discrete globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.discrete-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.discrete-binary-relations
+open import foundation.propositions
+open import foundation.universe-levels
+
+open import structured-types.empty-globular-types
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+A [globular type](structured-types.globular-types.md) `G` is said to be
+{{#concept "discrete" Disambiguation="globular type" Agda=is-discrete-Globular-Type}}
+if it has no 1-cells, i.e., if the type `G₁ x y` of 1-cells from `x` to `y` in
+`G` is [empty](foundation.empty-types.md) for any two 0-cells `x y : G₀`. In
+other words, a globular type is discrete if its
+[binary relation](foundation.binary-relations.md) is
+[discrete](foundation.discrete-binary-relations.md).
+
+The forgetful functor from globular types to types given by `G ↦ G₀` has a left
+adjoint, mapping a type `A` to the globular type with the type `A` as its
+0-cells and no edges. The image of this left adjoint is precisely the type of
+discrete globular types.
+
+Note that the globular type obtained from a type and its iterated
+[identity types](foundation-core.identity-types.md) is the
+[standard discrete reflexive globular type](structured-types.discrete-reflexive-globular-types.md).
+
+## Definitions
+
+### The predicate on globular types of being discrete
+
+```agda
+module _
+ {l1 l2 : Level} (G : Globular-Type l1 l2)
+ where
+
+ is-discrete-prop-Globular-Type : Prop (l1 ⊔ l2)
+ is-discrete-prop-Globular-Type =
+ is-discrete-prop-Relation (1-cell-Globular-Type G)
+
+ is-discrete-Globular-Type : UU (l1 ⊔ l2)
+ is-discrete-Globular-Type = is-discrete-Relation (1-cell-Globular-Type G)
+
+ is-prop-is-discrete-Globular-Type : is-prop is-discrete-Globular-Type
+ is-prop-is-discrete-Globular-Type =
+ is-prop-is-discrete-Relation (1-cell-Globular-Type G)
+```
+
+### Discrete globular types
+
+```agda
+Discrete-Globular-Type : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
+Discrete-Globular-Type l1 l2 =
+ Σ (Globular-Type l1 l2) is-discrete-Globular-Type
+```
+
+### The standard discrete globular types
+
+```agda
+discrete-Globular-Type :
+ {l : Level} (A : UU l) → Globular-Type l lzero
+0-cell-Globular-Type (discrete-Globular-Type A) =
+ A
+1-cell-globular-type-Globular-Type (discrete-Globular-Type A) x y =
+ empty-Globular-Type
+```
+
+## See also
+
+- [Discrete directed graphs](graph-theory.discrete-directed-graphs.md)
+- [Discrete reflexive globular types](structured-types.discrete-reflexive-globular-types.md)
diff --git a/src/structured-types/discrete-reflexive-globular-types.lagda.md b/src/structured-types/discrete-reflexive-globular-types.lagda.md
new file mode 100644
index 0000000000..e6b2034fb5
--- /dev/null
+++ b/src/structured-types/discrete-reflexive-globular-types.lagda.md
@@ -0,0 +1,185 @@
+# Discrete reflexive globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.discrete-reflexive-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.identity-types
+open import foundation.torsorial-type-families
+open import foundation.universe-levels
+
+open import structured-types.globular-types
+open import structured-types.reflexive-globular-types
+open import structured-types.symmetric-globular-types
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+A [reflexive globular type](structured-types.reflexive-globular-types.md) is
+said to be
+{{#concept "discrete" Disambiguation="reflexive globular type" Agda=is-discrete-Reflexive-Globular-Type}}
+if:
+
+- For every 0-cell `x` the type family `G₁ x` of 1-cells out of `x` is
+ [torsorial](foundation-core.torsorial-type-families.md), and
+- For every two 0-cells `x` and `y` the reflexive globular type `G' x y` is
+ discrete.
+
+The {{#concept "standard discrete globular type"}} at a type `A` is the
+[globular type](structured-types.globular-types.md) obtained from the iterated
+[identity types](foundation-core.identity-types.md) on `A`. This globular type
+is [reflexive](structured-types.reflexive-globular-types.md),
+[transitive](structured-types.transitive-globular-types.md), and indeed
+[discrete](structured-types.discrete-reflexive-globular-types.md).
+
+## Definitions
+
+### The predicate of being a discrete reflexive globular type
+
+```agda
+record
+ is-discrete-Reflexive-Globular-Type
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) : UU (l1 ⊔ l2)
+ where
+ coinductive
+
+ field
+ is-torsorial-1-cell-is-discrete-Reflexive-Globular-Type :
+ (x : 0-cell-Reflexive-Globular-Type G) →
+ is-torsorial (1-cell-Reflexive-Globular-Type G x)
+
+ field
+ is-discrete-1-cell-reflexive-globular-type-is-discrete-Reflexive-Globular-Type :
+ (x y : 0-cell-Reflexive-Globular-Type G) →
+ is-discrete-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+
+open is-discrete-Reflexive-Globular-Type public
+```
+
+### Discrete reflexive globular types
+
+```agda
+record
+ Discrete-Reflexive-Globular-Type
+ (l1 l2 : Level) : UU (lsuc l1 ⊔ lsuc l2)
+ where
+
+ field
+ reflexive-globular-type-Discrete-Reflexive-Globular-Type :
+ Reflexive-Globular-Type l1 l2
+
+ field
+ is-discrete-Discrete-Reflexive-Globular-Type :
+ is-discrete-Reflexive-Globular-Type
+ reflexive-globular-type-Discrete-Reflexive-Globular-Type
+
+open Discrete-Reflexive-Globular-Type public
+```
+
+### The standard discrete reflexive globular types
+
+```agda
+module _
+ {l : Level}
+ where
+
+ globular-type-discrete-Reflexive-Globular-Type : UU l → Globular-Type l l
+ 0-cell-Globular-Type (globular-type-discrete-Reflexive-Globular-Type A) =
+ A
+ 1-cell-globular-type-Globular-Type
+ ( globular-type-discrete-Reflexive-Globular-Type A)
+ ( x)
+ ( y) =
+ globular-type-discrete-Reflexive-Globular-Type (x = y)
+
+ refl-discrete-Reflexive-Globular-Type :
+ {A : UU l} →
+ is-reflexive-Globular-Type
+ ( globular-type-discrete-Reflexive-Globular-Type A)
+ is-reflexive-1-cell-is-reflexive-Globular-Type
+ refl-discrete-Reflexive-Globular-Type
+ x =
+ refl
+ is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ refl-discrete-Reflexive-Globular-Type =
+ refl-discrete-Reflexive-Globular-Type
+
+ discrete-Reflexive-Globular-Type :
+ (A : UU l) → Reflexive-Globular-Type l l
+ globular-type-Reflexive-Globular-Type (discrete-Reflexive-Globular-Type A) =
+ globular-type-discrete-Reflexive-Globular-Type A
+ refl-Reflexive-Globular-Type (discrete-Reflexive-Globular-Type A) =
+ refl-discrete-Reflexive-Globular-Type
+
+ is-discrete-standard-Discrete-Reflexive-Globular-Type :
+ {A : UU l} →
+ is-discrete-Reflexive-Globular-Type (discrete-Reflexive-Globular-Type A)
+ is-torsorial-1-cell-is-discrete-Reflexive-Globular-Type
+ is-discrete-standard-Discrete-Reflexive-Globular-Type
+ x =
+ is-torsorial-Id x
+ is-discrete-1-cell-reflexive-globular-type-is-discrete-Reflexive-Globular-Type
+ is-discrete-standard-Discrete-Reflexive-Globular-Type x y =
+ is-discrete-standard-Discrete-Reflexive-Globular-Type
+
+ standard-Discrete-Reflexive-Globular-Type :
+ UU l → Discrete-Reflexive-Globular-Type l l
+ reflexive-globular-type-Discrete-Reflexive-Globular-Type
+ ( standard-Discrete-Reflexive-Globular-Type A) =
+ discrete-Reflexive-Globular-Type A
+ is-discrete-Discrete-Reflexive-Globular-Type
+ ( standard-Discrete-Reflexive-Globular-Type A) =
+ is-discrete-standard-Discrete-Reflexive-Globular-Type
+```
+
+## Properties
+
+### The standard discrete reflexive globular types are transitive
+
+```agda
+is-transitive-discrete-Reflexive-Globular-Type :
+ {l : Level} {A : UU l} →
+ is-transitive-Globular-Type (globular-type-discrete-Reflexive-Globular-Type A)
+comp-1-cell-is-transitive-Globular-Type
+ is-transitive-discrete-Reflexive-Globular-Type q p =
+ p ∙ q
+is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ is-transitive-discrete-Reflexive-Globular-Type =
+ is-transitive-discrete-Reflexive-Globular-Type
+
+discrete-Transitive-Globular-Type :
+ {l : Level} (A : UU l) → Transitive-Globular-Type l l
+globular-type-Transitive-Globular-Type (discrete-Transitive-Globular-Type A) =
+ globular-type-discrete-Reflexive-Globular-Type A
+is-transitive-Transitive-Globular-Type (discrete-Transitive-Globular-Type A) =
+ is-transitive-discrete-Reflexive-Globular-Type
+```
+
+### The standard discrete reflexive globular types are symmetric
+
+```agda
+is-symmetric-discrete-Reflexive-Globular-Type :
+ {l : Level} {A : UU l} →
+ is-symmetric-Globular-Type (globular-type-discrete-Reflexive-Globular-Type A)
+is-symmetric-1-cell-is-symmetric-Globular-Type
+ is-symmetric-discrete-Reflexive-Globular-Type a b =
+ inv
+is-symmetric-1-cell-globular-type-is-symmetric-Globular-Type
+ is-symmetric-discrete-Reflexive-Globular-Type x y =
+ is-symmetric-discrete-Reflexive-Globular-Type
+```
+
+## See also
+
+- [Discrete dependent reflexive globular types](structured-types.discrete-dependent-reflexive-globular-types.md)
+- [Discrete globular types](structured-types.discrete-globular-types.md)
+- [Discrete reflexive graphs](graph-theory.discrete-reflexive-graphs.md)
diff --git a/src/structured-types/empty-globular-types.lagda.md b/src/structured-types/empty-globular-types.lagda.md
new file mode 100644
index 0000000000..425294903f
--- /dev/null
+++ b/src/structured-types/empty-globular-types.lagda.md
@@ -0,0 +1,56 @@
+# Empty globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.empty-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.empty-types
+open import foundation.universe-levels
+
+open import structured-types.constant-globular-types
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+A [globular type](structured-types.globular-types.md) is said to be
+{{#concept "empty" Disambiguation="globular type"}} if its type of 0-cells is
+[empty](foundation.empty-types.md).
+
+The {{#concept "standard empty globular type" Agda=empty-Globular-Type}} is
+defined to be the
+[constant globular type](structured-types.constant-globular-types.md) at the
+empty type. That is, the standard empty globular type is the globular type `𝟎`
+given by
+
+```text
+ 𝟎₀ := ∅
+ 𝟎' x y := 𝟎.
+```
+
+## Definitions
+
+### The predicate of being an empty globular type
+
+```agda
+module _
+ {l1 l2 : Level} (G : Globular-Type l1 l2)
+ where
+
+ is-empty-Globular-Type : UU l1
+ is-empty-Globular-Type = is-empty (0-cell-Globular-Type G)
+```
+
+### The standard empty globular type
+
+```agda
+empty-Globular-Type : Globular-Type lzero lzero
+empty-Globular-Type = constant-Globular-Type empty
+```
diff --git a/src/structured-types/equivalences-globular-types.lagda.md b/src/structured-types/equivalences-globular-types.lagda.md
deleted file mode 100644
index a588dfa7c5..0000000000
--- a/src/structured-types/equivalences-globular-types.lagda.md
+++ /dev/null
@@ -1,165 +0,0 @@
-# Equivalences between globular types
-
-```agda
-{-# OPTIONS --guardedness #-}
-
-module structured-types.equivalences-globular-types where
-```
-
-Imports
-
-```agda
-open import foundation.dependent-pair-types
-open import foundation.equivalences
-open import foundation.function-types
-open import foundation.identity-types
-open import foundation.universe-levels
-
-open import structured-types.globular-types
-```
-
-
-
-## Idea
-
-An
-{{#concept "equivalence" Disambiguation="globular types" Agda=equiv-Globular-Type}}
-`f` between [globular types](structured-types.globular-types.md) `A` and `B` is
-an equivalence `F₀` of $0$-cells, and for every pair of $n$-cells `x` and `y`,
-an equivalence of $(n+1)$-cells
-
-```text
- Fₙ₊₁ : (𝑛+1)-Cell A x y ≃ (𝑛+1)-Cell B (Fₙ x) (Fₙ y).
-```
-
-## Definitions
-
-### Equivalences between globular types
-
-```agda
-record
- equiv-Globular-Type
- {l1 l2 l3 l4 : Level} (A : Globular-Type l1 l2) (B : Globular-Type l3 l4)
- : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
- where
- coinductive
- field
- equiv-0-cell-equiv-Globular-Type :
- 0-cell-Globular-Type A ≃ 0-cell-Globular-Type B
-
- map-0-cell-equiv-Globular-Type :
- 0-cell-Globular-Type A → 0-cell-Globular-Type B
- map-0-cell-equiv-Globular-Type = map-equiv equiv-0-cell-equiv-Globular-Type
-
- field
- globular-type-1-cell-equiv-Globular-Type :
- {x y : 0-cell-Globular-Type A} →
- equiv-Globular-Type
- ( 1-cell-globular-type-Globular-Type A x y)
- ( 1-cell-globular-type-Globular-Type B
- ( map-0-cell-equiv-Globular-Type x)
- ( map-0-cell-equiv-Globular-Type y))
-
-open equiv-Globular-Type public
-
-module _
- {l1 l2 l3 l4 : Level}
- {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
- (F : equiv-Globular-Type A B)
- where
-
- equiv-1-cell-equiv-Globular-Type :
- {x y : 0-cell-Globular-Type A} →
- 1-cell-Globular-Type A x y ≃
- 1-cell-Globular-Type B
- ( map-0-cell-equiv-Globular-Type F x)
- ( map-0-cell-equiv-Globular-Type F y)
- equiv-1-cell-equiv-Globular-Type =
- equiv-0-cell-equiv-Globular-Type
- ( globular-type-1-cell-equiv-Globular-Type F)
-
- map-1-cell-equiv-Globular-Type :
- {x y : 0-cell-Globular-Type A} →
- 1-cell-Globular-Type A x y →
- 1-cell-Globular-Type B
- ( map-0-cell-equiv-Globular-Type F x)
- ( map-0-cell-equiv-Globular-Type F y)
- map-1-cell-equiv-Globular-Type =
- map-0-cell-equiv-Globular-Type (globular-type-1-cell-equiv-Globular-Type F)
-
-module _
- {l1 l2 l3 l4 : Level}
- {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
- (F : equiv-Globular-Type A B)
- where
-
- equiv-2-cell-equiv-Globular-Type :
- {x y : 0-cell-Globular-Type A}
- {f g : 1-cell-Globular-Type A x y} →
- 2-cell-Globular-Type A f g ≃
- 2-cell-Globular-Type B
- ( map-1-cell-equiv-Globular-Type F f)
- ( map-1-cell-equiv-Globular-Type F g)
- equiv-2-cell-equiv-Globular-Type =
- equiv-1-cell-equiv-Globular-Type
- ( globular-type-1-cell-equiv-Globular-Type F)
-
- map-2-cell-equiv-Globular-Type :
- {x y : 0-cell-Globular-Type A}
- {f g : 1-cell-Globular-Type A x y} →
- 2-cell-Globular-Type A f g →
- 2-cell-Globular-Type B
- ( map-1-cell-equiv-Globular-Type F f)
- ( map-1-cell-equiv-Globular-Type F g)
- map-2-cell-equiv-Globular-Type =
- map-1-cell-equiv-Globular-Type (globular-type-1-cell-equiv-Globular-Type F)
-
-module _
- {l1 l2 l3 l4 : Level}
- {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
- (F : equiv-Globular-Type A B)
- where
-
- equiv-3-cell-equiv-Globular-Type :
- {x y : 0-cell-Globular-Type A}
- {f g : 1-cell-Globular-Type A x y} →
- {H K : 2-cell-Globular-Type A f g} →
- 3-cell-Globular-Type A H K ≃
- 3-cell-Globular-Type B
- ( map-2-cell-equiv-Globular-Type F H)
- ( map-2-cell-equiv-Globular-Type F K)
- equiv-3-cell-equiv-Globular-Type =
- equiv-2-cell-equiv-Globular-Type
- ( globular-type-1-cell-equiv-Globular-Type F)
-```
-
-### The identity equiv on a globular type
-
-```agda
-id-equiv-Globular-Type :
- {l1 l2 : Level} (A : Globular-Type l1 l2) → equiv-Globular-Type A A
-id-equiv-Globular-Type A =
- λ where
- .equiv-0-cell-equiv-Globular-Type → id-equiv
- .globular-type-1-cell-equiv-Globular-Type {x} {y} →
- id-equiv-Globular-Type (1-cell-globular-type-Globular-Type A x y)
-```
-
-### Composition of equivalences of globular types
-
-```agda
-comp-equiv-Globular-Type :
- {l1 l2 l3 l4 l5 l6 : Level}
- {A : Globular-Type l1 l2}
- {B : Globular-Type l3 l4}
- {C : Globular-Type l5 l6} →
- equiv-Globular-Type B C → equiv-Globular-Type A B → equiv-Globular-Type A C
-comp-equiv-Globular-Type g f =
- λ where
- .equiv-0-cell-equiv-Globular-Type →
- equiv-0-cell-equiv-Globular-Type g ∘e equiv-0-cell-equiv-Globular-Type f
- .globular-type-1-cell-equiv-Globular-Type →
- comp-equiv-Globular-Type
- ( globular-type-1-cell-equiv-Globular-Type g)
- ( globular-type-1-cell-equiv-Globular-Type f)
-```
diff --git a/src/structured-types/exponentials-globular-types.lagda.md b/src/structured-types/exponentials-globular-types.lagda.md
new file mode 100644
index 0000000000..6d98c40a99
--- /dev/null
+++ b/src/structured-types/exponentials-globular-types.lagda.md
@@ -0,0 +1,90 @@
+# Exponentials of globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.exponentials-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.globular-types
+open import structured-types.products-families-of-globular-types
+```
+
+
+
+## Idea
+
+Consider a family `G : I → Globular-Type` of
+[globular types](structured-types.globular-types.md) indexed by a type `I`. We
+construct a globular type `Π_I G`.
+
+## Definitions
+
+### Exponentials of globular types
+
+```agda
+module _
+ {l1 l2 l3 : Level} (A : UU l1) (G : Globular-Type l2 l3)
+ where
+
+ 0-cell-exponential-Globular-Type : UU (l1 ⊔ l2)
+ 0-cell-exponential-Globular-Type =
+ 0-cell-indexed-product-Globular-Type (λ (x : A) → G)
+
+ 1-cell-exponential-Globular-Type :
+ (x y : 0-cell-exponential-Globular-Type) → UU (l1 ⊔ l3)
+ 1-cell-exponential-Globular-Type =
+ 1-cell-indexed-product-Globular-Type (λ (x : A) → G)
+
+ exponential-Globular-Type : Globular-Type (l1 ⊔ l2) (l1 ⊔ l3)
+ exponential-Globular-Type = indexed-product-Globular-Type (λ (x : A) → G)
+```
+
+### Double exponentials of globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (A : UU l1) (B : UU l2) (G : Globular-Type l3 l4)
+ where
+
+ 0-cell-double-exponential-Globular-Type : UU (l1 ⊔ l2 ⊔ l3)
+ 0-cell-double-exponential-Globular-Type =
+ 0-cell-double-indexed-product-Globular-Type (λ (x : A) (y : B) → G)
+
+ 1-cell-double-exponential-Globular-Type :
+ (x y : 0-cell-double-exponential-Globular-Type) → UU (l1 ⊔ l2 ⊔ l4)
+ 1-cell-double-exponential-Globular-Type =
+ 1-cell-double-indexed-product-Globular-Type (λ (x : A) (y : B) → G)
+
+ double-exponential-Globular-Type : Globular-Type (l1 ⊔ l2 ⊔ l3) (l1 ⊔ l2 ⊔ l4)
+ double-exponential-Globular-Type =
+ double-indexed-product-Globular-Type (λ (x : A) (y : B) → G)
+```
+
+### Evaluating globular maps into exponentials of globular types
+
+```agda
+ev-hom-exponential-Globular-Type :
+ {l1 l2 l3 l4 l5 : Level} {I : UU l1}
+ {G : Globular-Type l2 l3} {H : Globular-Type l4 l5}
+ (f : globular-map G (exponential-Globular-Type I H)) →
+ I → globular-map G H
+ev-hom-exponential-Globular-Type = ev-hom-indexed-product-Globular-Type
+```
+
+### Binding families of globular maps
+
+```agda
+bind-family-globular-maps :
+ {l1 l2 l3 l4 l5 : Level} {I : UU l1}
+ {G : Globular-Type l2 l3} {H : Globular-Type l4 l5}
+ (f : I → globular-map G H) → globular-map G (exponential-Globular-Type I H)
+bind-family-globular-maps = bind-indexed-family-globular-maps
+```
diff --git a/src/structured-types/fibers-globular-maps.lagda.md b/src/structured-types/fibers-globular-maps.lagda.md
new file mode 100644
index 0000000000..993b1cd72f
--- /dev/null
+++ b/src/structured-types/fibers-globular-maps.lagda.md
@@ -0,0 +1,56 @@
+# Fibers of globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.fibers-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.fibers-of-maps
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.dependent-globular-types
+open import structured-types.globular-maps
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+Consider a [globular map](structured-types.globular-maps.md) `f : H → G` between
+two [globular types](structured-types.globular-types.md) `H` and `G`. The
+{{#concept "fiber" Disambiguation="globular map" Agda=fiber-globular-map}} of
+`f` is a [dependent globular type](structured-types.dependent-globular-types.md)
+`fib_f` given by
+
+```text
+ (fib_f)₀ x := fib f₀ x
+ (fib_f)' (y , refl) (y' , refl) := fib_f'.
+```
+
+## Definitions
+
+### The fiber of a globular map
+
+```agda
+fiber-globular-map :
+ {l1 l2 l3 l4 : Level}
+ (H : Globular-Type l1 l2) (G : Globular-Type l3 l4)
+ (f : globular-map H G) →
+ Dependent-Globular-Type (l1 ⊔ l3) (l2 ⊔ l4) G
+0-cell-Dependent-Globular-Type
+ ( fiber-globular-map H G f) =
+ fiber (0-cell-globular-map f)
+1-cell-dependent-globular-type-Dependent-Globular-Type
+ ( fiber-globular-map H G f) {x} {x'} (y , refl) (y' , refl) =
+ fiber-globular-map
+ ( 1-cell-globular-type-Globular-Type H y y')
+ ( 1-cell-globular-type-Globular-Type G _ _)
+ ( 1-cell-globular-map-globular-map f)
+```
diff --git a/src/structured-types/globular-equivalences.lagda.md b/src/structured-types/globular-equivalences.lagda.md
new file mode 100644
index 0000000000..aa3cef214f
--- /dev/null
+++ b/src/structured-types/globular-equivalences.lagda.md
@@ -0,0 +1,174 @@
+# Equivalences between globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.globular-equivalences where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "globular equivalence" Agda=globular-equiv}} `e` between
+[globular types](structured-types.globular-types.md) `A` and `B` consists of an
+[equivalence](foundation-core.equivalences.md) `e₀` of $0$-cells, and for every
+pair of $n$-cells `x` and `y`, an equivalence of $(n+1)$-cells
+
+```text
+ eₙ₊₁ : (𝑛+1)-Cell A x y ≃ (𝑛+1)-Cell B (eₙ x) (eₙ y).
+```
+
+## Definitions
+
+### Equivalences between globular types
+
+```agda
+record
+ globular-equiv
+ {l1 l2 l3 l4 : Level} (A : Globular-Type l1 l2) (B : Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+ coinductive
+
+ field
+ 0-cell-equiv-globular-equiv :
+ 0-cell-Globular-Type A ≃ 0-cell-Globular-Type B
+
+ 0-cell-globular-equiv : 0-cell-Globular-Type A → 0-cell-Globular-Type B
+ 0-cell-globular-equiv = map-equiv 0-cell-equiv-globular-equiv
+
+ field
+ 1-cell-globular-equiv-globular-equiv :
+ {x y : 0-cell-Globular-Type A} →
+ globular-equiv
+ ( 1-cell-globular-type-Globular-Type A x y)
+ ( 1-cell-globular-type-Globular-Type B
+ ( 0-cell-globular-equiv x)
+ ( 0-cell-globular-equiv y))
+
+open globular-equiv public
+
+globular-map-globular-equiv :
+ {l1 l2 l3 l4 : Level}
+ {A : Globular-Type l1 l2} {B : Globular-Type l3 l4} →
+ globular-equiv A B → globular-map A B
+0-cell-globular-map (globular-map-globular-equiv e) =
+ map-equiv (0-cell-equiv-globular-equiv e)
+1-cell-globular-map-globular-map (globular-map-globular-equiv e) =
+ globular-map-globular-equiv (1-cell-globular-equiv-globular-equiv e)
+
+module _
+ {l1 l2 l3 l4 : Level}
+ {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
+ (e : globular-equiv A B)
+ where
+
+ 1-cell-equiv-globular-equiv :
+ {x y : 0-cell-Globular-Type A} →
+ 1-cell-Globular-Type A x y ≃
+ 1-cell-Globular-Type B
+ ( 0-cell-globular-equiv e x)
+ ( 0-cell-globular-equiv e y)
+ 1-cell-equiv-globular-equiv =
+ 0-cell-equiv-globular-equiv
+ ( 1-cell-globular-equiv-globular-equiv e)
+
+ 1-cell-globular-equiv :
+ {x y : 0-cell-Globular-Type A} →
+ 1-cell-Globular-Type A x y →
+ 1-cell-Globular-Type B
+ ( 0-cell-globular-equiv e x)
+ ( 0-cell-globular-equiv e y)
+ 1-cell-globular-equiv =
+ 0-cell-globular-equiv (1-cell-globular-equiv-globular-equiv e)
+
+module _
+ {l1 l2 l3 l4 : Level}
+ {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
+ (e : globular-equiv A B)
+ where
+
+ 2-cell-equiv-globular-equiv :
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y} →
+ 2-cell-Globular-Type A f g ≃
+ 2-cell-Globular-Type B
+ ( 1-cell-globular-equiv e f)
+ ( 1-cell-globular-equiv e g)
+ 2-cell-equiv-globular-equiv =
+ 1-cell-equiv-globular-equiv
+ ( 1-cell-globular-equiv-globular-equiv e)
+
+ 2-cell-globular-equiv :
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y} →
+ 2-cell-Globular-Type A f g →
+ 2-cell-Globular-Type B
+ ( 1-cell-globular-equiv e f)
+ ( 1-cell-globular-equiv e g)
+ 2-cell-globular-equiv =
+ 1-cell-globular-equiv (1-cell-globular-equiv-globular-equiv e)
+
+module _
+ {l1 l2 l3 l4 : Level}
+ {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
+ (e : globular-equiv A B)
+ where
+
+ 3-cell-equiv-globular-equiv :
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y} →
+ {H K : 2-cell-Globular-Type A f g} →
+ 3-cell-Globular-Type A H K ≃
+ 3-cell-Globular-Type B
+ ( 2-cell-globular-equiv e H)
+ ( 2-cell-globular-equiv e K)
+ 3-cell-equiv-globular-equiv =
+ 2-cell-equiv-globular-equiv
+ ( 1-cell-globular-equiv-globular-equiv e)
+```
+
+### The identity equivalence on a globular type
+
+```agda
+id-globular-equiv :
+ {l1 l2 : Level} (A : Globular-Type l1 l2) → globular-equiv A A
+id-globular-equiv A =
+ λ where
+ .0-cell-equiv-globular-equiv → id-equiv
+ .1-cell-globular-equiv-globular-equiv {x} {y} →
+ id-globular-equiv (1-cell-globular-type-Globular-Type A x y)
+```
+
+### Composition of equivalences of globular types
+
+```agda
+comp-globular-equiv :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {A : Globular-Type l1 l2}
+ {B : Globular-Type l3 l4}
+ {C : Globular-Type l5 l6} →
+ globular-equiv B C → globular-equiv A B → globular-equiv A C
+comp-globular-equiv g f =
+ λ where
+ .0-cell-equiv-globular-equiv →
+ 0-cell-equiv-globular-equiv g ∘e 0-cell-equiv-globular-equiv f
+ .1-cell-globular-equiv-globular-equiv →
+ comp-globular-equiv
+ ( 1-cell-globular-equiv-globular-equiv g)
+ ( 1-cell-globular-equiv-globular-equiv f)
+```
diff --git a/src/structured-types/globular-homotopies.lagda.md b/src/structured-types/globular-homotopies.lagda.md
new file mode 100644
index 0000000000..d0b1d16fcb
--- /dev/null
+++ b/src/structured-types/globular-homotopies.lagda.md
@@ -0,0 +1,36 @@
+# Globular homotopies
+
+```agda
+module structured-types.globular-homotopies where
+```
+
+Imports
+
+```agda
+
+```
+
+
+
+## Idea
+
+Consider two [globular maps](structured-types.globular-maps.md) `f g : G → H`
+into a [transitive globular type](structured-types.transitive-globular-types.md)
+`H`. There are two notions of globular homotopy between them, which aren't
+equivalent even though both generalize the notion of ordinary
+[homotopy](foundation-core.homotopies.md) in the case of viewing types as
+[globular types](structured-types.md) via the
+[identity type](foundation-core.identity-types.md).
+
+### Standard globular homotopies
+
+A {{#concept "standard globular homotopy"}} between `H : f ~ g` consists of
+
+```text
+ h₀ : {x y : G₀} → G' x y → H' (f₀ x) (g₀ y)
+ h' : {x y : G₀} → h₀ x y ∘ f' x y ~ g' x y
+```
+
+where `f'` and `g'` are the globular maps between the
+[globular types](structured-types.globular-types.md) `G' x y` and
+`H' (f₀ x) (f₀ y)`
diff --git a/src/structured-types/globular-maps.lagda.md b/src/structured-types/globular-maps.lagda.md
new file mode 100644
index 0000000000..b65166089e
--- /dev/null
+++ b/src/structured-types/globular-maps.lagda.md
@@ -0,0 +1,159 @@
+# Maps between globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "map" Disambiguation="globular types" Agda=globular-map}} `f`
+between [globular types](structured-types.globular-types.md) `A` and `B` is a
+map `F₀` of $0$-cells, and for every pair of $n$-cells `x` and `y`, a map of
+$(n+1)$-cells
+
+```text
+ F_{𝑛+1} : (𝑛+1)-Cell A x y → (𝑛+1)-Cell B (F_𝑛 x) (F_𝑛 y).
+```
+
+## Definitions
+
+### Maps between globular types
+
+```agda
+record
+ globular-map
+ {l1 l2 l3 l4 : Level} (A : Globular-Type l1 l2) (B : Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+ coinductive
+ field
+ 0-cell-globular-map :
+ 0-cell-Globular-Type A → 0-cell-Globular-Type B
+
+ 1-cell-globular-map-globular-map :
+ {x y : 0-cell-Globular-Type A} →
+ globular-map
+ ( 1-cell-globular-type-Globular-Type A x y)
+ ( 1-cell-globular-type-Globular-Type B
+ ( 0-cell-globular-map x)
+ ( 0-cell-globular-map y))
+
+open globular-map public
+
+module _
+ {l1 l2 l3 l4 : Level}
+ {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
+ (F : globular-map A B)
+ where
+
+ 1-cell-globular-map :
+ {x y : 0-cell-Globular-Type A} →
+ 1-cell-Globular-Type A x y →
+ 1-cell-Globular-Type B
+ ( 0-cell-globular-map F x)
+ ( 0-cell-globular-map F y)
+ 1-cell-globular-map =
+ 0-cell-globular-map (1-cell-globular-map-globular-map F)
+
+module _
+ {l1 l2 l3 l4 : Level}
+ {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
+ (F : globular-map A B)
+ where
+
+ 2-cell-globular-map-globular-map :
+ {x y : 0-cell-Globular-Type A}
+ (f g : 1-cell-Globular-Type A x y) →
+ globular-map
+ ( 2-cell-globular-type-Globular-Type A f g)
+ ( 2-cell-globular-type-Globular-Type B
+ ( 1-cell-globular-map F f)
+ ( 1-cell-globular-map F g))
+ 2-cell-globular-map-globular-map f g =
+ 1-cell-globular-map-globular-map
+ ( 1-cell-globular-map-globular-map F)
+
+ 2-cell-globular-map :
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y} →
+ 2-cell-Globular-Type A f g →
+ 2-cell-Globular-Type B
+ ( 1-cell-globular-map F f)
+ ( 1-cell-globular-map F g)
+ 2-cell-globular-map =
+ 1-cell-globular-map (1-cell-globular-map-globular-map F)
+
+module _
+ {l1 l2 l3 l4 : Level}
+ {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
+ (F : globular-map A B)
+ where
+
+ 3-cell-globular-map-globular-map :
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ (s t : 2-cell-Globular-Type A f g) →
+ globular-map
+ ( 3-cell-globular-type-Globular-Type A s t)
+ ( 3-cell-globular-type-Globular-Type B
+ ( 2-cell-globular-map F s)
+ ( 2-cell-globular-map F t))
+ 3-cell-globular-map-globular-map =
+ 2-cell-globular-map-globular-map
+ ( 1-cell-globular-map-globular-map F)
+
+ 3-cell-globular-map :
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y} →
+ {H K : 2-cell-Globular-Type A f g} →
+ 3-cell-Globular-Type A H K →
+ 3-cell-Globular-Type B
+ ( 2-cell-globular-map F H)
+ ( 2-cell-globular-map F K)
+ 3-cell-globular-map =
+ 2-cell-globular-map (1-cell-globular-map-globular-map F)
+```
+
+### The identity map on a globular type
+
+```agda
+id-globular-map :
+ {l1 l2 : Level} (A : Globular-Type l1 l2) → globular-map A A
+0-cell-globular-map (id-globular-map A) = id
+1-cell-globular-map-globular-map (id-globular-map A) =
+ id-globular-map (1-cell-globular-type-Globular-Type A _ _)
+```
+
+### Composition of maps of globular types
+
+```agda
+comp-globular-map :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {A : Globular-Type l1 l2}
+ {B : Globular-Type l3 l4}
+ {C : Globular-Type l5 l6} →
+ globular-map B C → globular-map A B → globular-map A C
+comp-globular-map g f =
+ λ where
+ .0-cell-globular-map →
+ 0-cell-globular-map g ∘ 0-cell-globular-map f
+ .1-cell-globular-map-globular-map →
+ comp-globular-map
+ ( 1-cell-globular-map-globular-map g)
+ ( 1-cell-globular-map-globular-map f)
+```
diff --git a/src/structured-types/globular-types.lagda.md b/src/structured-types/globular-types.lagda.md
index 64ffb4d0cb..7c35cab06a 100644
--- a/src/structured-types/globular-types.lagda.md
+++ b/src/structured-types/globular-types.lagda.md
@@ -51,6 +51,12 @@ equivalently have started by defining globular types, and then define globular
structures on a type as binary families of globular types on it, but this is a
special property of globular types.
+Every type has the structure of a globular type, where the globular structure is
+obtained from the [identity type](foundation-core.identity-types.md). The
+globular type obtained from a type `A` and its iterated identity types is called
+the
+[standard discrete reflexive globular type](structured-types.discrete-reflexive-globular-types.md).
+
## Definitions
### The structure of a globular type
@@ -74,7 +80,7 @@ record
open globular-structure public
```
-#### Iterated projections for globular structures
+#### Infrastructure for globular structures
```agda
module _
@@ -132,83 +138,182 @@ module _
### The type of globular types
```agda
-Globular-Type : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
-Globular-Type l1 l2 = Σ (UU l1) (globular-structure l2)
-
-module _
- {l1 l2 : Level} (A : Globular-Type l1 l2)
+record
+ Globular-Type
+ (l1 l2 : Level) : UU (lsuc l1 ⊔ lsuc l2)
where
+ coinductive
+ field
+ 0-cell-Globular-Type : UU l1
+ 1-cell-globular-type-Globular-Type :
+ (x y : 0-cell-Globular-Type) → Globular-Type l2 l2
+
+open Globular-Type public
+
+make-Globular-Type :
+ {l1 l2 : Level} {A : UU l1} →
+ globular-structure l2 A → Globular-Type l1 l2
+0-cell-Globular-Type
+ ( make-Globular-Type {A = A} B) = A
+1-cell-globular-type-Globular-Type
+ ( make-Globular-Type B)
+ x y =
+ make-Globular-Type
+ ( globular-structure-1-cell-globular-structure B x y)
+
+globular-type-1-cell-globular-structure :
+ {l1 l2 : Level} {A : UU l1} (B : globular-structure l2 A) →
+ (x y : A) → Globular-Type l2 l2
+globular-type-1-cell-globular-structure B x y =
+ make-Globular-Type
+ ( globular-structure-1-cell-globular-structure B x y)
+
+globular-type-2-cell-globular-structure :
+ {l1 l2 : Level} {A : UU l1} (B : globular-structure l2 A) →
+ {x y : A} (f g : 1-cell-globular-structure B x y) → Globular-Type l2 l2
+globular-type-2-cell-globular-structure B f g =
+ make-Globular-Type
+ ( globular-structure-2-cell-globular-structure B f g)
+
+1-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ (x y : 0-cell-Globular-Type A) → UU l2
+1-cell-Globular-Type A x y =
+ 0-cell-Globular-Type (1-cell-globular-type-Globular-Type A x y)
- 0-cell-Globular-Type : UU l1
- 0-cell-Globular-Type = pr1 A
-
- globular-structure-0-cell-Globular-Type :
- globular-structure l2 0-cell-Globular-Type
- globular-structure-0-cell-Globular-Type = pr2 A
-
- 1-cell-Globular-Type : (x y : 0-cell-Globular-Type) → UU l2
- 1-cell-Globular-Type =
- 1-cell-globular-structure globular-structure-0-cell-Globular-Type
+2-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ (f g : 1-cell-Globular-Type A x y) → UU l2
+2-cell-Globular-Type A =
+ 1-cell-Globular-Type (1-cell-globular-type-Globular-Type A _ _)
- globular-structure-1-cell-Globular-Type :
- (x y : 0-cell-Globular-Type) →
- globular-structure l2 (1-cell-Globular-Type x y)
- globular-structure-1-cell-Globular-Type =
- globular-structure-1-cell-globular-structure
- ( globular-structure-0-cell-Globular-Type)
-
- 1-cell-globular-type-Globular-Type :
- (x y : 0-cell-Globular-Type) → Globular-Type l2 l2
- 1-cell-globular-type-Globular-Type x y =
- ( 1-cell-Globular-Type x y , globular-structure-1-cell-Globular-Type x y)
-
- 2-cell-Globular-Type :
- {x y : 0-cell-Globular-Type} (f g : 1-cell-Globular-Type x y) → UU l2
- 2-cell-Globular-Type =
- 2-cell-globular-structure globular-structure-0-cell-Globular-Type
-
- globular-structure-2-cell-Globular-Type :
- {x y : 0-cell-Globular-Type} (f g : 1-cell-Globular-Type x y) →
- globular-structure l2 (2-cell-Globular-Type f g)
- globular-structure-2-cell-Globular-Type =
- globular-structure-2-cell-globular-structure
- ( globular-structure-0-cell-Globular-Type)
-
- 2-cell-globular-type-Globular-Type :
- {x y : 0-cell-Globular-Type} (f g : 1-cell-Globular-Type x y) →
- Globular-Type l2 l2
- 2-cell-globular-type-Globular-Type f g =
- ( 2-cell-Globular-Type f g , globular-structure-2-cell-Globular-Type f g)
-
- 3-cell-Globular-Type :
- {x y : 0-cell-Globular-Type} {f g : 1-cell-Globular-Type x y}
- (H K : 2-cell-Globular-Type f g) → UU l2
- 3-cell-Globular-Type =
- 3-cell-globular-structure globular-structure-0-cell-Globular-Type
-
- 4-cell-Globular-Type :
- {x y : 0-cell-Globular-Type} {f g : 1-cell-Globular-Type x y}
- {H K : 2-cell-Globular-Type f g} (α β : 3-cell-Globular-Type H K) → UU l2
- 4-cell-Globular-Type =
- 4-cell-globular-structure globular-structure-0-cell-Globular-Type
-```
+3-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ (s t : 2-cell-Globular-Type A f g) → UU l2
+3-cell-Globular-Type A =
+ 2-cell-Globular-Type (1-cell-globular-type-Globular-Type A _ _)
-## Examples
+4-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ {s t : 2-cell-Globular-Type A f g}
+ (u v : 3-cell-Globular-Type A s t) → UU l2
+4-cell-Globular-Type A =
+ 3-cell-Globular-Type (1-cell-globular-type-Globular-Type A _ _)
+
+5-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ {s t : 2-cell-Globular-Type A f g}
+ {u v : 3-cell-Globular-Type A s t}
+ (α β : 4-cell-Globular-Type A u v) → UU l2
+5-cell-Globular-Type A =
+ 4-cell-Globular-Type (1-cell-globular-type-Globular-Type A _ _)
+
+2-cell-globular-type-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ (f g : 1-cell-Globular-Type A x y) → Globular-Type l2 l2
+2-cell-globular-type-Globular-Type A =
+ 1-cell-globular-type-Globular-Type (1-cell-globular-type-Globular-Type A _ _)
-### The globular structure on a type given by its identity types
+3-cell-globular-type-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ (s t : 2-cell-Globular-Type A f g) → Globular-Type l2 l2
+3-cell-globular-type-Globular-Type A =
+ 1-cell-globular-type-Globular-Type (2-cell-globular-type-Globular-Type A _ _)
-```agda
-globular-structure-Id : {l : Level} (A : UU l) → globular-structure l A
-globular-structure-Id A =
- λ where
- .1-cell-globular-structure x y →
- x = y
- .globular-structure-1-cell-globular-structure x y →
- globular-structure-Id (x = y)
+4-cell-globular-type-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ {s t : 2-cell-Globular-Type A f g}
+ (u v : 3-cell-Globular-Type A s t) → Globular-Type l2 l2
+4-cell-globular-type-Globular-Type A =
+ 1-cell-globular-type-Globular-Type (3-cell-globular-type-Globular-Type A _ _)
+
+5-cell-globular-type-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ {s t : 2-cell-Globular-Type A f g}
+ {u v : 3-cell-Globular-Type A s t}
+ (α β : 4-cell-Globular-Type A u v) → Globular-Type l2 l2
+5-cell-globular-type-Globular-Type A =
+ 1-cell-globular-type-Globular-Type (4-cell-globular-type-Globular-Type A _ _)
+
+globular-structure-0-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2) →
+ globular-structure l2 (0-cell-Globular-Type A)
+1-cell-globular-structure
+ ( globular-structure-0-cell-Globular-Type A) =
+ 1-cell-Globular-Type A
+globular-structure-1-cell-globular-structure
+ ( globular-structure-0-cell-Globular-Type A) x y =
+ globular-structure-0-cell-Globular-Type
+ ( 1-cell-globular-type-Globular-Type A x y)
+
+globular-structure-1-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2) (x y : 0-cell-Globular-Type A) →
+ globular-structure l2 (1-cell-Globular-Type A x y)
+globular-structure-1-cell-Globular-Type A x y =
+ globular-structure-0-cell-Globular-Type
+ ( 1-cell-globular-type-Globular-Type A x y)
+
+globular-structure-2-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ (f g : 1-cell-Globular-Type A x y) →
+ globular-structure l2 (2-cell-Globular-Type A f g)
+globular-structure-2-cell-Globular-Type A =
+ globular-structure-1-cell-Globular-Type
+ ( 1-cell-globular-type-Globular-Type A _ _)
+
+globular-structure-3-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ (s t : 2-cell-Globular-Type A f g) →
+ globular-structure l2 (3-cell-Globular-Type A s t)
+globular-structure-3-cell-Globular-Type A =
+ globular-structure-2-cell-Globular-Type
+ ( 1-cell-globular-type-Globular-Type A _ _)
+
+globular-structure-4-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ {s t : 2-cell-Globular-Type A f g}
+ (u v : 3-cell-Globular-Type A s t) →
+ globular-structure l2 (4-cell-Globular-Type A u v)
+globular-structure-4-cell-Globular-Type A =
+ globular-structure-3-cell-Globular-Type
+ ( 1-cell-globular-type-Globular-Type A _ _)
+
+globular-structure-5-cell-Globular-Type :
+ {l1 l2 : Level} (A : Globular-Type l1 l2)
+ {x y : 0-cell-Globular-Type A}
+ {f g : 1-cell-Globular-Type A x y}
+ {s t : 2-cell-Globular-Type A f g}
+ {u v : 3-cell-Globular-Type A s t}
+ (α β : 4-cell-Globular-Type A u v) →
+ globular-structure l2 (5-cell-Globular-Type A α β)
+globular-structure-5-cell-Globular-Type A =
+ globular-structure-4-cell-Globular-Type
+ ( 1-cell-globular-type-Globular-Type A _ _)
```
## See also
+- [Discrete reflexive globular types](structured-types.discrete-reflexive-globular-types.md)
- [Reflexive globular types](structured-types.reflexive-globular-types.md)
+- [Superglobular types](structured-types.superglobular-types.md)
- [Symmetric globular types](structured-types.symmetric-globular-types.md)
- [Transitive globular types](structured-types.transitive-globular-types.md)
diff --git a/src/structured-types/large-colax-reflexive-globular-maps.lagda.md b/src/structured-types/large-colax-reflexive-globular-maps.lagda.md
new file mode 100644
index 0000000000..1922c3ccb6
--- /dev/null
+++ b/src/structured-types/large-colax-reflexive-globular-maps.lagda.md
@@ -0,0 +1,234 @@
+# Large colax reflexive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.large-colax-reflexive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.function-types
+open import foundation.universe-levels
+
+open import structured-types.colax-reflexive-globular-maps
+open import structured-types.large-globular-maps
+open import structured-types.large-reflexive-globular-types
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+A
+{{#concept "large colax reflexive globular map" Agda=large-colax-reflexive-globular-map}}
+between two
+[large reflexive globular types](structured-types.large-reflexive-globular-types.md)
+`G` and `H` is a [large globular map](structured-types.large-globular-maps.md)
+`f : G → H` equipped with a family of 2-cells
+
+```text
+ (x : G₀) → H₂ (f₁ (refl G x)) (refl H (f₀ x))
+```
+
+from the image of the reflexivity cell at `x` in `G` to the reflexivity cell at
+`f₀ x`, such that the [globular map](structured-types.globular-maps.md)
+`f' : G' x y → H' (f₀ x) (f₀ y)` is
+[colax reflexive](structured-types.colax-reflexive-globular-maps.md).
+
+### Lack of composition for colax reflexive globular maps
+
+Note that the large colax reflexive globular maps lack composition. For the
+composition of `g` and `f` to exist, there should be a `2`-cell from
+`g (f (refl G x))` to `refl K (g (f x))`, we need to compose the 2-cell that `g`
+preserves reflexivity with the action of `g` on the 2-cell that `f` preserves
+reflexivity. However, since the reflexive globular type `G` is not assumed to be
+[transitive](structured-types.transitive-globular-types.md), it might lack such
+instances of the compositions.
+
+### Lax versus colax
+
+The notion of
+[large lax reflexive globular map](structured-types.large-lax-reflexive-globular-maps.md)
+is almost the same, except with the direction of the 2-cell reversed. In
+general, the direction of lax coherence cells is determined by applying the
+morphism componentwise first, and then the operations, while the direction of
+colax coherence cells is determined by first applying the operations and then
+the morphism.
+
+## Definitions
+
+### The predicate of colaxly preserving reflexivity
+
+```agda
+record
+ is-colax-reflexive-large-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {γ : Level → Level}
+ (G : Large-Reflexive-Globular-Type α1 β1)
+ (H : Large-Reflexive-Globular-Type α2 β2)
+ (f : large-globular-map-Large-Reflexive-Globular-Type γ G H) : UUω
+ where
+ coinductive
+
+ field
+ preserves-refl-1-cell-is-colax-reflexive-large-globular-map :
+ {l1 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type G l1) →
+ 2-cell-Large-Reflexive-Globular-Type H
+ ( 1-cell-large-globular-map f
+ ( refl-1-cell-Large-Reflexive-Globular-Type G {x = x}))
+ ( refl-1-cell-Large-Reflexive-Globular-Type H)
+
+ field
+ is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ is-colax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H _ _)
+ ( 1-cell-globular-map-large-globular-map f)
+
+open is-colax-reflexive-large-globular-map public
+```
+
+### Colax reflexive globular maps
+
+```agda
+record
+ large-colax-reflexive-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (γ : Level → Level)
+ (G : Large-Reflexive-Globular-Type α1 β1)
+ (H : Large-Reflexive-Globular-Type α2 β2) : UUω
+ where
+
+ constructor
+ make-large-colax-reflexive-globular-map
+
+ field
+ large-globular-map-large-colax-reflexive-globular-map :
+ large-globular-map-Large-Reflexive-Globular-Type γ G H
+
+ 0-cell-large-colax-reflexive-globular-map :
+ {l1 : Level} →
+ 0-cell-Large-Reflexive-Globular-Type G l1 →
+ 0-cell-Large-Reflexive-Globular-Type H (γ l1)
+ 0-cell-large-colax-reflexive-globular-map =
+ 0-cell-large-globular-map
+ large-globular-map-large-colax-reflexive-globular-map
+
+ 1-cell-large-colax-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ 1-cell-Large-Reflexive-Globular-Type G x y →
+ 1-cell-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-colax-reflexive-globular-map x)
+ ( 0-cell-large-colax-reflexive-globular-map y)
+ 1-cell-large-colax-reflexive-globular-map =
+ 1-cell-large-globular-map
+ large-globular-map-large-colax-reflexive-globular-map
+
+ 1-cell-globular-map-large-colax-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ globular-map-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-colax-reflexive-globular-map x)
+ ( 0-cell-large-colax-reflexive-globular-map y))
+ 1-cell-globular-map-large-colax-reflexive-globular-map =
+ 1-cell-globular-map-large-globular-map
+ large-globular-map-large-colax-reflexive-globular-map
+
+ field
+ is-colax-reflexive-large-colax-reflexive-globular-map :
+ is-colax-reflexive-large-globular-map G H
+ large-globular-map-large-colax-reflexive-globular-map
+
+ preserves-refl-1-cell-large-colax-reflexive-globular-map :
+ {l1 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type G l1) →
+ 2-cell-Large-Reflexive-Globular-Type H
+ ( 1-cell-large-colax-reflexive-globular-map
+ ( refl-1-cell-Large-Reflexive-Globular-Type G {x = x}))
+ ( refl-1-cell-Large-Reflexive-Globular-Type H)
+ preserves-refl-1-cell-large-colax-reflexive-globular-map =
+ preserves-refl-1-cell-is-colax-reflexive-large-globular-map
+ is-colax-reflexive-large-colax-reflexive-globular-map
+
+ is-colax-reflexive-2-cell-globular-map-is-colax-reflexive-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ is-colax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-colax-reflexive-globular-map x)
+ ( 0-cell-large-colax-reflexive-globular-map y))
+ ( 1-cell-globular-map-large-colax-reflexive-globular-map)
+ is-colax-reflexive-2-cell-globular-map-is-colax-reflexive-large-globular-map =
+ is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-large-globular-map
+ is-colax-reflexive-large-colax-reflexive-globular-map
+
+ 1-cell-colax-reflexive-globular-map-large-colax-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ colax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-colax-reflexive-globular-map x)
+ ( 0-cell-large-colax-reflexive-globular-map y))
+ globular-map-colax-reflexive-globular-map
+ 1-cell-colax-reflexive-globular-map-large-colax-reflexive-globular-map =
+ 1-cell-globular-map-large-colax-reflexive-globular-map
+ is-colax-reflexive-colax-reflexive-globular-map
+ 1-cell-colax-reflexive-globular-map-large-colax-reflexive-globular-map =
+ is-colax-reflexive-2-cell-globular-map-is-colax-reflexive-large-globular-map
+
+open large-colax-reflexive-globular-map public
+```
+
+### The identity large colax reflexive globular map
+
+```agda
+map-id-large-colax-reflexive-globular-map :
+ {α : Level → Level} {β : Level → Level → Level}
+ (G : Large-Reflexive-Globular-Type α β) →
+ large-globular-map-Large-Reflexive-Globular-Type id G G
+map-id-large-colax-reflexive-globular-map G = id-large-globular-map _
+
+is-colax-reflexive-id-large-colax-reflexive-globular-map :
+ {α : Level → Level} {β : Level → Level → Level}
+ (G : Large-Reflexive-Globular-Type α β) →
+ is-colax-reflexive-large-globular-map G G
+ ( map-id-large-colax-reflexive-globular-map G)
+preserves-refl-1-cell-is-colax-reflexive-large-globular-map
+ ( is-colax-reflexive-id-large-colax-reflexive-globular-map G)
+ x =
+ refl-2-cell-Large-Reflexive-Globular-Type G
+is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-large-globular-map
+ ( is-colax-reflexive-id-large-colax-reflexive-globular-map G) =
+ is-colax-reflexive-id-colax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G _ _)
+
+id-large-colax-reflexive-globular-map :
+ {α : Level → Level} {β : Level → Level → Level}
+ (G : Large-Reflexive-Globular-Type α β) →
+ large-colax-reflexive-globular-map id G G
+large-globular-map-large-colax-reflexive-globular-map
+ ( id-large-colax-reflexive-globular-map G) =
+ map-id-large-colax-reflexive-globular-map G
+is-colax-reflexive-large-colax-reflexive-globular-map
+ ( id-large-colax-reflexive-globular-map G) =
+ ( is-colax-reflexive-id-large-colax-reflexive-globular-map G)
+```
+
+## See also
+
+- [Lax reflexive globular maps](structured-types.lax-reflexive-globular-maps.md)
+- [Reflexive globular maps](structured-types.reflexive-globular-maps.md)
diff --git a/src/structured-types/large-colax-transitive-globular-maps.lagda.md b/src/structured-types/large-colax-transitive-globular-maps.lagda.md
new file mode 100644
index 0000000000..0032b5fecb
--- /dev/null
+++ b/src/structured-types/large-colax-transitive-globular-maps.lagda.md
@@ -0,0 +1,267 @@
+# Large colax transitive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.large-colax-transitive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.function-types
+open import foundation.universe-levels
+
+open import structured-types.colax-transitive-globular-maps
+open import structured-types.large-globular-maps
+open import structured-types.large-transitive-globular-types
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+A
+{{#concept "large colax transitive globular map" Agda=large-colax-transitive-globular-map}}
+between two
+[large transitive globular types](structured-types.large-transitive-globular-types.md)
+`G` and `H` is a [large globular map](structured-types.large-globular-maps.md)
+`f : G → H` equipped with a family of 2-cells
+
+```text
+ H₂ (f₁ (q ∘G p)) (f₁ q ∘H f₁ p)
+```
+
+from the image of the composite of two 1-cells `q` and `p` in `G` to the
+composite of `f₁ q` and `f₁ p` in `H`, such that the globular map
+`f' : G' x y → H' (f₀ x) (f₀ y)` is again colax transitive.
+
+### Lack of identity large colax transitive globular maps
+
+Note that the large colax transitive globular maps lack an identity morphism.
+For an identity morphism to exist on a transitive globular type `G`, there
+should be a `2`-cell from `q ∘G p` to `q ∘G p` for every composable pair of
+`1`-cells `q` and `p`. However, since the large transitive globular type `G` is
+not assumed to be
+[reflexive](structured-types.large-reflexive-globular-types.md), it might lack
+such instances of the reflexivity cells.
+
+## Definitions
+
+### The predicate of colaxly preserving transitivity
+
+```agda
+record
+ is-colax-transitive-large-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {γ : Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (f : large-globular-map-Large-Transitive-Globular-Type γ G H) : UUω
+ where
+ coinductive
+
+ field
+ preserves-comp-1-cell-is-colax-transitive-large-globular-map :
+ {l1 l2 l3 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2}
+ {z : 0-cell-Large-Transitive-Globular-Type G l3} →
+ (q : 1-cell-Large-Transitive-Globular-Type G y z)
+ (p : 1-cell-Large-Transitive-Globular-Type G x y) →
+ 2-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-globular-map f
+ ( comp-1-cell-Large-Transitive-Globular-Type G q p))
+ ( comp-1-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-globular-map f q)
+ ( 1-cell-large-globular-map f p))
+
+ field
+ is-colax-transitive-1-cell-globular-map-is-colax-transitive-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ is-colax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H _ _)
+ ( 1-cell-globular-map-large-globular-map f)
+
+open is-colax-transitive-large-globular-map public
+```
+
+### Colax transitive globular maps
+
+```agda
+record
+ large-colax-transitive-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (γ : Level → Level)
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2) : UUω
+ where
+
+ field
+ large-globular-map-large-colax-transitive-globular-map :
+ large-globular-map-Large-Transitive-Globular-Type γ G H
+
+ 0-cell-large-colax-transitive-globular-map :
+ {l1 : Level} →
+ 0-cell-Large-Transitive-Globular-Type G l1 →
+ 0-cell-Large-Transitive-Globular-Type H (γ l1)
+ 0-cell-large-colax-transitive-globular-map =
+ 0-cell-large-globular-map
+ large-globular-map-large-colax-transitive-globular-map
+
+ 1-cell-large-colax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ 1-cell-Large-Transitive-Globular-Type G x y →
+ 1-cell-Large-Transitive-Globular-Type H
+ ( 0-cell-large-colax-transitive-globular-map x)
+ ( 0-cell-large-colax-transitive-globular-map y)
+ 1-cell-large-colax-transitive-globular-map =
+ 1-cell-large-globular-map
+ large-globular-map-large-colax-transitive-globular-map
+
+ 1-cell-globular-map-large-colax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ globular-map-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-colax-transitive-globular-map x)
+ ( 0-cell-large-colax-transitive-globular-map y))
+ 1-cell-globular-map-large-colax-transitive-globular-map =
+ 1-cell-globular-map-large-globular-map
+ large-globular-map-large-colax-transitive-globular-map
+
+ 2-cell-large-colax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ {f g : 1-cell-Large-Transitive-Globular-Type G x y} →
+ 2-cell-Large-Transitive-Globular-Type G f g →
+ 2-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-colax-transitive-globular-map f)
+ ( 1-cell-large-colax-transitive-globular-map g)
+ 2-cell-large-colax-transitive-globular-map =
+ 2-cell-large-globular-map
+ large-globular-map-large-colax-transitive-globular-map
+
+ 2-cell-globular-map-large-colax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ {f g : 1-cell-Large-Transitive-Globular-Type G x y} →
+ globular-map-Transitive-Globular-Type
+ ( 2-cell-transitive-globular-type-Large-Transitive-Globular-Type G f g)
+ ( 2-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 1-cell-large-colax-transitive-globular-map f)
+ ( 1-cell-large-colax-transitive-globular-map g))
+ 2-cell-globular-map-large-colax-transitive-globular-map =
+ 2-cell-globular-map-large-globular-map
+ ( large-globular-map-large-colax-transitive-globular-map)
+ ( _)
+ ( _)
+
+ field
+ is-colax-transitive-large-colax-transitive-globular-map :
+ is-colax-transitive-large-globular-map G H
+ large-globular-map-large-colax-transitive-globular-map
+
+ preserves-comp-1-cell-large-colax-transitive-globular-map :
+ {l1 l2 l3 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2}
+ {z : 0-cell-Large-Transitive-Globular-Type G l3}
+ (q : 1-cell-Large-Transitive-Globular-Type G y z)
+ (p : 1-cell-Large-Transitive-Globular-Type G x y) →
+ 2-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-colax-transitive-globular-map
+ ( comp-1-cell-Large-Transitive-Globular-Type G q p))
+ ( comp-1-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-colax-transitive-globular-map q)
+ ( 1-cell-large-colax-transitive-globular-map p))
+ preserves-comp-1-cell-large-colax-transitive-globular-map =
+ preserves-comp-1-cell-is-colax-transitive-large-globular-map
+ is-colax-transitive-large-colax-transitive-globular-map
+
+ is-colax-transitive-1-cell-globular-map-large-colax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ is-colax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-colax-transitive-globular-map x)
+ ( 0-cell-large-colax-transitive-globular-map y))
+ ( 1-cell-globular-map-large-colax-transitive-globular-map)
+ is-colax-transitive-1-cell-globular-map-large-colax-transitive-globular-map =
+ is-colax-transitive-1-cell-globular-map-is-colax-transitive-large-globular-map
+ is-colax-transitive-large-colax-transitive-globular-map
+
+ 1-cell-large-colax-transitive-large-globular-map-large-colax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ colax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-colax-transitive-globular-map x)
+ ( 0-cell-large-colax-transitive-globular-map y))
+ globular-map-colax-transitive-globular-map
+ 1-cell-large-colax-transitive-large-globular-map-large-colax-transitive-globular-map =
+ 1-cell-globular-map-large-colax-transitive-globular-map
+ is-colax-transitive-colax-transitive-globular-map
+ 1-cell-large-colax-transitive-large-globular-map-large-colax-transitive-globular-map =
+ is-colax-transitive-1-cell-globular-map-large-colax-transitive-globular-map
+
+open large-colax-transitive-globular-map public
+```
+
+### Composition of colax transitive maps
+
+```agda
+map-comp-large-colax-transitive-globular-map :
+ {α1 α2 α3 γ1 γ2 : Level → Level} {β1 β2 β3 : Level → Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (K : Large-Transitive-Globular-Type α3 β3)
+ (g : large-colax-transitive-globular-map γ2 H K)
+ (f : large-colax-transitive-globular-map γ1 G H) →
+ large-globular-map-Large-Transitive-Globular-Type (γ2 ∘ γ1) G K
+map-comp-large-colax-transitive-globular-map G H K g f =
+ comp-large-globular-map
+ ( large-globular-map-large-colax-transitive-globular-map g)
+ ( large-globular-map-large-colax-transitive-globular-map f)
+
+is-colax-transitive-comp-large-colax-transitive-globular-map :
+ {α1 α2 α3 γ1 γ2 : Level → Level} {β1 β2 β3 : Level → Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (K : Large-Transitive-Globular-Type α3 β3)
+ (g : large-colax-transitive-globular-map γ2 H K)
+ (f : large-colax-transitive-globular-map γ1 G H) →
+ is-colax-transitive-large-globular-map G K
+ ( map-comp-large-colax-transitive-globular-map G H K g f)
+preserves-comp-1-cell-is-colax-transitive-large-globular-map
+ ( is-colax-transitive-comp-large-colax-transitive-globular-map G H K g f)
+ ( q)
+ ( p) =
+ comp-2-cell-Large-Transitive-Globular-Type K
+ ( preserves-comp-1-cell-large-colax-transitive-globular-map g _ _)
+ ( 2-cell-large-colax-transitive-globular-map g
+ ( preserves-comp-1-cell-large-colax-transitive-globular-map f q p))
+is-colax-transitive-1-cell-globular-map-is-colax-transitive-large-globular-map
+ ( is-colax-transitive-comp-large-colax-transitive-globular-map
+ G H K g f) =
+ is-colax-transitive-comp-colax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G _ _)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H _ _)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type K _ _)
+ ( 1-cell-large-colax-transitive-large-globular-map-large-colax-transitive-globular-map
+ g)
+ ( 1-cell-large-colax-transitive-large-globular-map-large-colax-transitive-globular-map
+ f)
+```
diff --git a/src/structured-types/large-globular-maps.lagda.md b/src/structured-types/large-globular-maps.lagda.md
new file mode 100644
index 0000000000..607e1e62b8
--- /dev/null
+++ b/src/structured-types/large-globular-maps.lagda.md
@@ -0,0 +1,164 @@
+# Maps between large globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.large-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.globular-types
+open import structured-types.large-globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "large globular map" Agda=large-globular-map}} `f` between
+[large globular types](structured-types.large-globular-types.md) `A` and `B`
+consists of a map `F₀` of $0$-cells, and for every pair of $n$-cells `x` and
+`y`, a map of $(n+1)$-cells
+
+```text
+ Fₙ₊₁ : (𝑛+1)-Cell A x y → (𝑛+1)-Cell B (Fₙ x) (Fₙ y).
+```
+
+## Definitions
+
+### Maps between large globular types
+
+```agda
+record
+ large-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (δ : Level → Level)
+ (A : Large-Globular-Type α1 β1) (B : Large-Globular-Type α2 β2) : UUω
+ where
+
+ field
+ 0-cell-large-globular-map :
+ {l : Level} →
+ 0-cell-Large-Globular-Type A l → 0-cell-Large-Globular-Type B (δ l)
+
+ field
+ 1-cell-globular-map-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2} →
+ globular-map
+ ( 1-cell-globular-type-Large-Globular-Type A x y)
+ ( 1-cell-globular-type-Large-Globular-Type B
+ ( 0-cell-large-globular-map x)
+ ( 0-cell-large-globular-map y))
+
+ 1-cell-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2} →
+ 1-cell-Large-Globular-Type A x y →
+ 1-cell-Large-Globular-Type B
+ ( 0-cell-large-globular-map x)
+ ( 0-cell-large-globular-map y)
+ 1-cell-large-globular-map =
+ 0-cell-globular-map 1-cell-globular-map-large-globular-map
+
+ 2-cell-globular-map-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ (f g : 1-cell-Large-Globular-Type A x y) →
+ globular-map
+ ( 2-cell-globular-type-Large-Globular-Type A f g)
+ ( 2-cell-globular-type-Large-Globular-Type B
+ ( 1-cell-large-globular-map f)
+ ( 1-cell-large-globular-map g))
+ 2-cell-globular-map-large-globular-map f g =
+ 1-cell-globular-map-globular-map
+ 1-cell-globular-map-large-globular-map
+
+ 2-cell-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2} →
+ {f g : 1-cell-Large-Globular-Type A x y} →
+ 2-cell-Large-Globular-Type A f g →
+ 2-cell-Large-Globular-Type B
+ ( 1-cell-large-globular-map f)
+ ( 1-cell-large-globular-map g)
+ 2-cell-large-globular-map =
+ 1-cell-globular-map 1-cell-globular-map-large-globular-map
+
+ 3-cell-globular-map-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type A x y}
+ (s t : 2-cell-Large-Globular-Type A f g) →
+ globular-map
+ ( 3-cell-globular-type-Large-Globular-Type A s t)
+ ( 3-cell-globular-type-Large-Globular-Type B
+ ( 2-cell-large-globular-map s)
+ ( 2-cell-large-globular-map t))
+ 3-cell-globular-map-large-globular-map =
+ 2-cell-globular-map-globular-map
+ 1-cell-globular-map-large-globular-map
+
+ 3-cell-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2} →
+ {f g : 1-cell-Large-Globular-Type A x y} →
+ {H K : 2-cell-Large-Globular-Type A f g} →
+ 3-cell-Large-Globular-Type A H K →
+ 3-cell-Large-Globular-Type B
+ ( 2-cell-large-globular-map H)
+ ( 2-cell-large-globular-map K)
+ 3-cell-large-globular-map =
+ 2-cell-globular-map 1-cell-globular-map-large-globular-map
+
+open large-globular-map public
+```
+
+### Large identity globular maps
+
+```agda
+module _
+ {α : Level → Level} {β : Level → Level → Level}
+ (A : Large-Globular-Type α β)
+ where
+
+ id-large-globular-map : large-globular-map (λ l → l) A A
+ 0-cell-large-globular-map id-large-globular-map =
+ id
+ 1-cell-globular-map-large-globular-map id-large-globular-map =
+ id-globular-map (1-cell-globular-type-Large-Globular-Type A _ _)
+```
+
+### Composition of large globular maps
+
+```agda
+module _
+ {α1 α2 α3 δ1 δ2 : Level → Level} {β1 β2 β3 : Level → Level → Level}
+ {A : Large-Globular-Type α1 β1}
+ {B : Large-Globular-Type α2 β2}
+ {C : Large-Globular-Type α3 β3}
+ where
+
+ comp-large-globular-map :
+ (g : large-globular-map δ2 B C) (f : large-globular-map δ1 A B) →
+ large-globular-map (λ l → δ2 (δ1 l)) A C
+ 0-cell-large-globular-map (comp-large-globular-map g f) =
+ 0-cell-large-globular-map g ∘ 0-cell-large-globular-map f
+ 1-cell-globular-map-large-globular-map (comp-large-globular-map g f) =
+ comp-globular-map
+ ( 1-cell-globular-map-large-globular-map g)
+ ( 1-cell-globular-map-large-globular-map f)
+```
diff --git a/src/structured-types/large-globular-types.lagda.md b/src/structured-types/large-globular-types.lagda.md
index 04675ce811..26aaa51d6c 100644
--- a/src/structured-types/large-globular-types.lagda.md
+++ b/src/structured-types/large-globular-types.lagda.md
@@ -141,11 +141,27 @@ record
field
0-cell-Large-Globular-Type :
(l : Level) → UU (α l)
- globular-structure-0-cell-Large-Globular-Type :
- large-globular-structure β 0-cell-Large-Globular-Type
+ 1-cell-globular-type-Large-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Globular-Type l1)
+ (y : 0-cell-Large-Globular-Type l2) →
+ Globular-Type (β l1 l2) (β l1 l2)
open Large-Globular-Type public
+make-Large-Globular-Type :
+ {α : Level → Level} {β : Level → Level → Level} →
+ {A : (l : Level) → UU (α l)} →
+ large-globular-structure β A → Large-Globular-Type α β
+0-cell-Large-Globular-Type
+ ( make-Large-Globular-Type {A = A} B) =
+ A
+1-cell-globular-type-Large-Globular-Type
+ ( make-Large-Globular-Type B)
+ x y =
+ make-Globular-Type
+ ( globular-structure-1-cell-large-globular-structure B x y)
+
module _
{α : Level → Level} {β : Level → Level → Level} (A : Large-Globular-Type α β)
where
@@ -155,36 +171,102 @@ module _
(x : 0-cell-Large-Globular-Type A l1)
(y : 0-cell-Large-Globular-Type A l2) →
UU (β l1 l2)
- 1-cell-Large-Globular-Type =
- 1-cell-large-globular-structure
- ( globular-structure-0-cell-Large-Globular-Type A)
+ 1-cell-Large-Globular-Type x y =
+ 0-cell-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A x y)
- globular-structure-1-cell-Large-Globular-Type :
+ 2-cell-Large-Globular-Type :
{l1 l2 : Level}
- (x : 0-cell-Large-Globular-Type A l1)
- (y : 0-cell-Large-Globular-Type A l2) →
- globular-structure (β l1 l2) (1-cell-Large-Globular-Type x y)
- globular-structure-1-cell-Large-Globular-Type =
- globular-structure-1-cell-large-globular-structure
- ( globular-structure-0-cell-Large-Globular-Type A)
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ (f g : 1-cell-Large-Globular-Type x y) → UU (β l1 l2)
+ 2-cell-Large-Globular-Type =
+ 1-cell-Globular-Type ( 1-cell-globular-type-Large-Globular-Type A _ _)
- globular-type-1-cell-Large-Globular-Type :
+ 3-cell-Large-Globular-Type :
{l1 l2 : Level}
- (x : 0-cell-Large-Globular-Type A l1)
- (y : 0-cell-Large-Globular-Type A l2) →
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type x y}
+ (s t : 2-cell-Large-Globular-Type f g) → UU (β l1 l2)
+ 3-cell-Large-Globular-Type =
+ 2-cell-Globular-Type ( 1-cell-globular-type-Large-Globular-Type A _ _)
+
+ 4-cell-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type x y}
+ {s t : 2-cell-Large-Globular-Type f g}
+ (u v : 3-cell-Large-Globular-Type s t) → UU (β l1 l2)
+ 4-cell-Large-Globular-Type =
+ 3-cell-Globular-Type ( 1-cell-globular-type-Large-Globular-Type A _ _)
+
+ 5-cell-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type x y}
+ {s t : 2-cell-Large-Globular-Type f g}
+ {u v : 3-cell-Large-Globular-Type s t}
+ (a b : 4-cell-Large-Globular-Type u v) → UU (β l1 l2)
+ 5-cell-Large-Globular-Type =
+ 4-cell-Globular-Type ( 1-cell-globular-type-Large-Globular-Type A _ _)
+
+ 2-cell-globular-type-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ (f g : 1-cell-Large-Globular-Type x y) →
Globular-Type (β l1 l2) (β l1 l2)
- globular-type-1-cell-Large-Globular-Type x y =
- ( 1-cell-Large-Globular-Type x y ,
- globular-structure-1-cell-Large-Globular-Type x y)
+ 2-cell-globular-type-Large-Globular-Type =
+ 1-cell-globular-type-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A _ _)
- 2-cell-Large-Globular-Type :
+ 3-cell-globular-type-Large-Globular-Type :
{l1 l2 : Level}
{x : 0-cell-Large-Globular-Type A l1}
{y : 0-cell-Large-Globular-Type A l2}
- (p q : 1-cell-Large-Globular-Type x y) → UU (β l1 l2)
- 2-cell-Large-Globular-Type {x = x} {y} =
- 1-cell-globular-structure
- ( globular-structure-1-cell-Large-Globular-Type x y)
+ {f g : 1-cell-Large-Globular-Type x y}
+ (s t : 2-cell-Large-Globular-Type f g) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 3-cell-globular-type-Large-Globular-Type =
+ 2-cell-globular-type-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A _ _)
+
+ 4-cell-globular-type-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type x y}
+ {s t : 2-cell-Large-Globular-Type f g}
+ (u v : 3-cell-Large-Globular-Type s t) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 4-cell-globular-type-Large-Globular-Type =
+ 3-cell-globular-type-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A _ _)
+
+ 5-cell-globular-type-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type x y}
+ {s t : 2-cell-Large-Globular-Type f g}
+ {u v : 3-cell-Large-Globular-Type s t}
+ (a b : 4-cell-Large-Globular-Type u v) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 5-cell-globular-type-Large-Globular-Type =
+ 4-cell-globular-type-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A _ _)
+
+ globular-structure-1-cell-Large-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Globular-Type A l1)
+ (y : 0-cell-Large-Globular-Type A l2) →
+ globular-structure (β l1 l2) (1-cell-Large-Globular-Type x y)
+ globular-structure-1-cell-Large-Globular-Type x y =
+ globular-structure-0-cell-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A x y)
globular-structure-2-cell-Large-Globular-Type :
{l1 l2 : Level}
@@ -193,26 +275,38 @@ module _
(f g : 1-cell-Large-Globular-Type x y) →
globular-structure (β l1 l2) (2-cell-Large-Globular-Type f g)
globular-structure-2-cell-Large-Globular-Type =
- globular-structure-2-cell-large-globular-structure
- ( globular-structure-0-cell-Large-Globular-Type A)
+ globular-structure-1-cell-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A _ _)
- globular-type-2-cell-Large-Globular-Type :
+ globular-structure-3-cell-Large-Globular-Type :
{l1 l2 : Level}
{x : 0-cell-Large-Globular-Type A l1}
{y : 0-cell-Large-Globular-Type A l2}
- (f g : 1-cell-Large-Globular-Type x y) →
- Globular-Type (β l1 l2) (β l1 l2)
- globular-type-2-cell-Large-Globular-Type f g =
- ( 2-cell-Large-Globular-Type f g ,
- globular-structure-2-cell-Large-Globular-Type f g)
-
- 3-cell-Large-Globular-Type :
+ {f g : 1-cell-Large-Globular-Type x y}
+ (s t : 2-cell-Large-Globular-Type f g) →
+ globular-structure (β l1 l2) (3-cell-Large-Globular-Type s t)
+ globular-structure-3-cell-Large-Globular-Type =
+ globular-structure-2-cell-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A _ _)
+
+ globular-structure-4-cell-Large-Globular-Type :
{l1 l2 : Level}
{x : 0-cell-Large-Globular-Type A l1}
{y : 0-cell-Large-Globular-Type A l2}
- {p q : 1-cell-Large-Globular-Type x y}
- (H K : 2-cell-Large-Globular-Type p q) → UU (β l1 l2)
- 3-cell-Large-Globular-Type {x = x} {y} =
- 2-cell-globular-structure
- ( globular-structure-1-cell-Large-Globular-Type x y)
+ {f g : 1-cell-Large-Globular-Type x y}
+ {s t : 2-cell-Large-Globular-Type f g}
+ (u v : 3-cell-Large-Globular-Type s t) →
+ globular-structure (β l1 l2) (4-cell-Large-Globular-Type u v)
+ globular-structure-4-cell-Large-Globular-Type =
+ globular-structure-3-cell-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A _ _)
+
+ large-globular-structure-0-cell-Large-Globular-Type :
+ large-globular-structure β (0-cell-Large-Globular-Type A)
+ 1-cell-large-globular-structure
+ large-globular-structure-0-cell-Large-Globular-Type =
+ 1-cell-Large-Globular-Type
+ globular-structure-1-cell-large-globular-structure
+ large-globular-structure-0-cell-Large-Globular-Type =
+ globular-structure-1-cell-Large-Globular-Type
```
diff --git a/src/structured-types/large-lax-reflexive-globular-maps.lagda.md b/src/structured-types/large-lax-reflexive-globular-maps.lagda.md
new file mode 100644
index 0000000000..946afd3f4c
--- /dev/null
+++ b/src/structured-types/large-lax-reflexive-globular-maps.lagda.md
@@ -0,0 +1,231 @@
+# Large lax reflexive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.large-lax-reflexive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.function-types
+open import foundation.universe-levels
+
+open import structured-types.large-globular-maps
+open import structured-types.large-reflexive-globular-types
+open import structured-types.lax-reflexive-globular-maps
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+A
+{{#concept "large lax reflexive globular map" Agda=large-lax-reflexive-globular-map}}
+between two
+[large reflexive globular types](structured-types.large-reflexive-globular-types.md)
+`G` and `H` is a [large globular map](structured-types.large-globular-maps.md)
+`f : G → H` equipped with a family of 2-cells
+
+```text
+ (x : G₀) → H₂ (refl H (f₀ x)) (f₁ (refl G x))
+```
+
+from the image of the reflexivity cell at `x` in `G` to the reflexivity cell at
+`f₀ x`, such that the [globular map](structured-types.globular-maps.md)
+`f' : G' x y → H' (f₀ x) (f₀ y)` is
+[lax reflexive](structured-types.lax-reflexive-globular-maps.md).
+
+### Lack of composition for lax reflexive globular maps
+
+Note that the large lax reflexive globular maps lack composition. For the
+composition of `g` and `f` to exist, there should be a `2`-cell from
+`g (f (refl G x))` to `refl K (g (f x))`, we need to compose the 2-cell that `g`
+preserves reflexivity with the action of `g` on the 2-cell that `f` preserves
+reflexivity. However, since the reflexive globular type `G` is not assumed to be
+[transitive](structured-types.transitive-globular-types.md), it might lack such
+instances of the compositions.
+
+### Lax versus colax
+
+The notion of
+[large colax reflexive globular map](structured-types.large-lax-reflexive-globular-maps.md)
+is almost the same, except with the direction of the 2-cell reversed. In
+general, the direction of lax coherence cells is determined by applying the
+morphism componentwise first, and then the operations, while the direction of
+colax coherence cells is determined by first applying the operations and then
+the morphism.
+
+## Definitions
+
+### The predicate of laxly preserving reflexivity
+
+```agda
+record
+ is-lax-reflexive-large-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {γ : Level → Level}
+ (G : Large-Reflexive-Globular-Type α1 β1)
+ (H : Large-Reflexive-Globular-Type α2 β2)
+ (f : large-globular-map-Large-Reflexive-Globular-Type γ G H) : UUω
+ where
+ coinductive
+
+ field
+ preserves-refl-1-cell-is-lax-reflexive-large-globular-map :
+ {l1 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type G l1) →
+ 2-cell-Large-Reflexive-Globular-Type H
+ ( refl-1-cell-Large-Reflexive-Globular-Type H)
+ ( 1-cell-large-globular-map f
+ ( refl-1-cell-Large-Reflexive-Globular-Type G {x = x}))
+
+ field
+ is-lax-reflexive-1-cell-globular-map-is-lax-reflexive-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ is-lax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H _ _)
+ ( 1-cell-globular-map-large-globular-map f)
+
+open is-lax-reflexive-large-globular-map public
+```
+
+### Lax reflexive globular maps
+
+```agda
+record
+ large-lax-reflexive-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (γ : Level → Level)
+ (G : Large-Reflexive-Globular-Type α1 β1)
+ (H : Large-Reflexive-Globular-Type α2 β2) : UUω
+ where
+
+ field
+ large-globular-map-large-lax-reflexive-globular-map :
+ large-globular-map-Large-Reflexive-Globular-Type γ G H
+
+ 0-cell-large-lax-reflexive-globular-map :
+ {l1 : Level} →
+ 0-cell-Large-Reflexive-Globular-Type G l1 →
+ 0-cell-Large-Reflexive-Globular-Type H (γ l1)
+ 0-cell-large-lax-reflexive-globular-map =
+ 0-cell-large-globular-map
+ large-globular-map-large-lax-reflexive-globular-map
+
+ 1-cell-large-lax-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ 1-cell-Large-Reflexive-Globular-Type G x y →
+ 1-cell-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-lax-reflexive-globular-map x)
+ ( 0-cell-large-lax-reflexive-globular-map y)
+ 1-cell-large-lax-reflexive-globular-map =
+ 1-cell-large-globular-map
+ large-globular-map-large-lax-reflexive-globular-map
+
+ 1-cell-globular-map-large-lax-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ globular-map-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-lax-reflexive-globular-map x)
+ ( 0-cell-large-lax-reflexive-globular-map y))
+ 1-cell-globular-map-large-lax-reflexive-globular-map =
+ 1-cell-globular-map-large-globular-map
+ large-globular-map-large-lax-reflexive-globular-map
+
+ field
+ is-lax-reflexive-large-lax-reflexive-globular-map :
+ is-lax-reflexive-large-globular-map G H
+ large-globular-map-large-lax-reflexive-globular-map
+
+ preserves-refl-1-cell-large-lax-reflexive-globular-map :
+ {l1 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type G l1) →
+ 2-cell-Large-Reflexive-Globular-Type H
+ ( refl-1-cell-Large-Reflexive-Globular-Type H)
+ ( 1-cell-large-lax-reflexive-globular-map
+ ( refl-1-cell-Large-Reflexive-Globular-Type G {x = x}))
+ preserves-refl-1-cell-large-lax-reflexive-globular-map =
+ preserves-refl-1-cell-is-lax-reflexive-large-globular-map
+ is-lax-reflexive-large-lax-reflexive-globular-map
+
+ is-lax-reflexive-2-cell-globular-map-is-lax-reflexive-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ is-lax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-lax-reflexive-globular-map x)
+ ( 0-cell-large-lax-reflexive-globular-map y))
+ ( 1-cell-globular-map-large-lax-reflexive-globular-map)
+ is-lax-reflexive-2-cell-globular-map-is-lax-reflexive-large-globular-map =
+ is-lax-reflexive-1-cell-globular-map-is-lax-reflexive-large-globular-map
+ is-lax-reflexive-large-lax-reflexive-globular-map
+
+ 1-cell-lax-reflexive-globular-map-large-lax-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ lax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-lax-reflexive-globular-map x)
+ ( 0-cell-large-lax-reflexive-globular-map y))
+ globular-map-lax-reflexive-globular-map
+ 1-cell-lax-reflexive-globular-map-large-lax-reflexive-globular-map =
+ 1-cell-globular-map-large-lax-reflexive-globular-map
+ is-lax-reflexive-lax-reflexive-globular-map
+ 1-cell-lax-reflexive-globular-map-large-lax-reflexive-globular-map =
+ is-lax-reflexive-2-cell-globular-map-is-lax-reflexive-large-globular-map
+
+open large-lax-reflexive-globular-map public
+```
+
+### The identity large lax reflexive globular map
+
+```agda
+map-id-large-lax-reflexive-globular-map :
+ {α : Level → Level} {β : Level → Level → Level}
+ (G : Large-Reflexive-Globular-Type α β) →
+ large-globular-map-Large-Reflexive-Globular-Type id G G
+map-id-large-lax-reflexive-globular-map G = id-large-globular-map _
+
+is-lax-reflexive-id-large-lax-reflexive-globular-map :
+ {α : Level → Level} {β : Level → Level → Level}
+ (G : Large-Reflexive-Globular-Type α β) →
+ is-lax-reflexive-large-globular-map G G
+ ( map-id-large-lax-reflexive-globular-map G)
+preserves-refl-1-cell-is-lax-reflexive-large-globular-map
+ ( is-lax-reflexive-id-large-lax-reflexive-globular-map G)
+ x =
+ refl-2-cell-Large-Reflexive-Globular-Type G
+is-lax-reflexive-1-cell-globular-map-is-lax-reflexive-large-globular-map
+ ( is-lax-reflexive-id-large-lax-reflexive-globular-map G) =
+ is-lax-reflexive-id-lax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G _ _)
+
+id-large-lax-reflexive-globular-map :
+ {α : Level → Level} {β : Level → Level → Level}
+ (G : Large-Reflexive-Globular-Type α β) →
+ large-lax-reflexive-globular-map id G G
+large-globular-map-large-lax-reflexive-globular-map
+ ( id-large-lax-reflexive-globular-map G) =
+ map-id-large-lax-reflexive-globular-map G
+is-lax-reflexive-large-lax-reflexive-globular-map
+ ( id-large-lax-reflexive-globular-map G) =
+ ( is-lax-reflexive-id-large-lax-reflexive-globular-map G)
+```
+
+## See also
+
+- [Lax reflexive globular maps](structured-types.lax-reflexive-globular-maps.md)
+- [Reflexive globular maps](structured-types.reflexive-globular-maps.md)
diff --git a/src/structured-types/large-lax-transitive-globular-maps.lagda.md b/src/structured-types/large-lax-transitive-globular-maps.lagda.md
new file mode 100644
index 0000000000..1e9d827f13
--- /dev/null
+++ b/src/structured-types/large-lax-transitive-globular-maps.lagda.md
@@ -0,0 +1,265 @@
+# Large lax transitive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.large-lax-transitive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.function-types
+open import foundation.universe-levels
+
+open import structured-types.large-globular-maps
+open import structured-types.large-transitive-globular-types
+open import structured-types.lax-transitive-globular-maps
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+A
+{{#concept "large lax transitive globular map" Agda=large-lax-transitive-globular-map}}
+between two
+[large transitive globular types](structured-types.large-transitive-globular-types.md)
+`G` and `H` is a [large globular map](structured-types.large-globular-maps.md)
+`f : G → H` equipped with a family of 2-cells
+
+```text
+ H₂ (f₁ q ∘H f₁ p) (f₁ (q ∘G p))
+```
+
+from the image of the composite of two 1-cells `q` and `p` in `G` to the
+composite of `f₁ q` and `f₁ p` in `H`, such that the globular map
+`f' : G' x y → H' (f₀ x) (f₀ y)` is again lax transitive.
+
+### Lack of identity large lax transitive globular maps
+
+Note that the large lax transitive globular maps lack an identity morphism. For
+an identity morphism to exist on a transitive globular type `G`, there should be
+a `2`-cell from `q ∘G p` to `q ∘G p` for every composable pair of `1`-cells `q`
+and `p`. However, since the large transitive globular type `G` is not assumed to
+be [reflexive](structured-types.large-reflexive-globular-types.md), it might
+lack such instances of the reflexivity cells.
+
+## Definitions
+
+### The predicate of laxly preserving transitivity
+
+```agda
+record
+ is-lax-transitive-large-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {γ : Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (f : large-globular-map-Large-Transitive-Globular-Type γ G H) : UUω
+ where
+ coinductive
+
+ field
+ preserves-comp-1-cell-is-lax-transitive-large-globular-map :
+ {l1 l2 l3 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2}
+ {z : 0-cell-Large-Transitive-Globular-Type G l3} →
+ (q : 1-cell-Large-Transitive-Globular-Type G y z)
+ (p : 1-cell-Large-Transitive-Globular-Type G x y) →
+ 2-cell-Large-Transitive-Globular-Type H
+ ( comp-1-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-globular-map f q)
+ ( 1-cell-large-globular-map f p))
+ ( 1-cell-large-globular-map f
+ ( comp-1-cell-Large-Transitive-Globular-Type G q p))
+
+ field
+ is-lax-transitive-1-cell-globular-map-is-lax-transitive-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ is-lax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H _ _)
+ ( 1-cell-globular-map-large-globular-map f)
+
+open is-lax-transitive-large-globular-map public
+```
+
+### Lax transitive globular maps
+
+```agda
+record
+ large-lax-transitive-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (γ : Level → Level)
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2) : UUω
+ where
+
+ field
+ large-globular-map-large-lax-transitive-globular-map :
+ large-globular-map-Large-Transitive-Globular-Type γ G H
+
+ 0-cell-large-lax-transitive-globular-map :
+ {l1 : Level} →
+ 0-cell-Large-Transitive-Globular-Type G l1 →
+ 0-cell-Large-Transitive-Globular-Type H (γ l1)
+ 0-cell-large-lax-transitive-globular-map =
+ 0-cell-large-globular-map
+ large-globular-map-large-lax-transitive-globular-map
+
+ 1-cell-large-lax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ 1-cell-Large-Transitive-Globular-Type G x y →
+ 1-cell-Large-Transitive-Globular-Type H
+ ( 0-cell-large-lax-transitive-globular-map x)
+ ( 0-cell-large-lax-transitive-globular-map y)
+ 1-cell-large-lax-transitive-globular-map =
+ 1-cell-large-globular-map
+ large-globular-map-large-lax-transitive-globular-map
+
+ 1-cell-globular-map-large-lax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ globular-map-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-lax-transitive-globular-map x)
+ ( 0-cell-large-lax-transitive-globular-map y))
+ 1-cell-globular-map-large-lax-transitive-globular-map =
+ 1-cell-globular-map-large-globular-map
+ large-globular-map-large-lax-transitive-globular-map
+
+ 2-cell-large-lax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ {f g : 1-cell-Large-Transitive-Globular-Type G x y} →
+ 2-cell-Large-Transitive-Globular-Type G f g →
+ 2-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-lax-transitive-globular-map f)
+ ( 1-cell-large-lax-transitive-globular-map g)
+ 2-cell-large-lax-transitive-globular-map =
+ 2-cell-large-globular-map
+ large-globular-map-large-lax-transitive-globular-map
+
+ 2-cell-globular-map-large-lax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ {f g : 1-cell-Large-Transitive-Globular-Type G x y} →
+ globular-map-Transitive-Globular-Type
+ ( 2-cell-transitive-globular-type-Large-Transitive-Globular-Type G f g)
+ ( 2-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 1-cell-large-lax-transitive-globular-map f)
+ ( 1-cell-large-lax-transitive-globular-map g))
+ 2-cell-globular-map-large-lax-transitive-globular-map =
+ 2-cell-globular-map-large-globular-map
+ ( large-globular-map-large-lax-transitive-globular-map)
+ ( _)
+ ( _)
+
+ field
+ is-lax-transitive-large-lax-transitive-globular-map :
+ is-lax-transitive-large-globular-map G H
+ large-globular-map-large-lax-transitive-globular-map
+
+ preserves-comp-1-cell-large-lax-transitive-globular-map :
+ {l1 l2 l3 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2}
+ {z : 0-cell-Large-Transitive-Globular-Type G l3}
+ (q : 1-cell-Large-Transitive-Globular-Type G y z)
+ (p : 1-cell-Large-Transitive-Globular-Type G x y) →
+ 2-cell-Large-Transitive-Globular-Type H
+ ( comp-1-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-lax-transitive-globular-map q)
+ ( 1-cell-large-lax-transitive-globular-map p))
+ ( 1-cell-large-lax-transitive-globular-map
+ ( comp-1-cell-Large-Transitive-Globular-Type G q p))
+ preserves-comp-1-cell-large-lax-transitive-globular-map =
+ preserves-comp-1-cell-is-lax-transitive-large-globular-map
+ is-lax-transitive-large-lax-transitive-globular-map
+
+ is-lax-transitive-1-cell-globular-map-large-lax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ is-lax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-lax-transitive-globular-map x)
+ ( 0-cell-large-lax-transitive-globular-map y))
+ ( 1-cell-globular-map-large-lax-transitive-globular-map)
+ is-lax-transitive-1-cell-globular-map-large-lax-transitive-globular-map =
+ is-lax-transitive-1-cell-globular-map-is-lax-transitive-large-globular-map
+ is-lax-transitive-large-lax-transitive-globular-map
+
+ 1-cell-large-lax-transitive-large-globular-map-large-lax-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ lax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-lax-transitive-globular-map x)
+ ( 0-cell-large-lax-transitive-globular-map y))
+ globular-map-lax-transitive-globular-map
+ 1-cell-large-lax-transitive-large-globular-map-large-lax-transitive-globular-map =
+ 1-cell-globular-map-large-lax-transitive-globular-map
+ is-lax-transitive-lax-transitive-globular-map
+ 1-cell-large-lax-transitive-large-globular-map-large-lax-transitive-globular-map =
+ is-lax-transitive-1-cell-globular-map-large-lax-transitive-globular-map
+
+open large-lax-transitive-globular-map public
+```
+
+### Composition of lax transitive maps
+
+```agda
+map-comp-large-lax-transitive-globular-map :
+ {α1 α2 α3 γ1 γ2 : Level → Level} {β1 β2 β3 : Level → Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (K : Large-Transitive-Globular-Type α3 β3)
+ (g : large-lax-transitive-globular-map γ2 H K)
+ (f : large-lax-transitive-globular-map γ1 G H) →
+ large-globular-map-Large-Transitive-Globular-Type (γ2 ∘ γ1) G K
+map-comp-large-lax-transitive-globular-map G H K g f =
+ comp-large-globular-map
+ ( large-globular-map-large-lax-transitive-globular-map g)
+ ( large-globular-map-large-lax-transitive-globular-map f)
+
+is-lax-transitive-comp-large-lax-transitive-globular-map :
+ {α1 α2 α3 γ1 γ2 : Level → Level} {β1 β2 β3 : Level → Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (K : Large-Transitive-Globular-Type α3 β3)
+ (g : large-lax-transitive-globular-map γ2 H K)
+ (f : large-lax-transitive-globular-map γ1 G H) →
+ is-lax-transitive-large-globular-map G K
+ ( map-comp-large-lax-transitive-globular-map G H K g f)
+preserves-comp-1-cell-is-lax-transitive-large-globular-map
+ ( is-lax-transitive-comp-large-lax-transitive-globular-map G H K g f)
+ ( q)
+ ( p) =
+ comp-2-cell-Large-Transitive-Globular-Type K
+ ( 2-cell-large-lax-transitive-globular-map g
+ ( preserves-comp-1-cell-large-lax-transitive-globular-map f q p))
+ ( preserves-comp-1-cell-large-lax-transitive-globular-map g _ _)
+is-lax-transitive-1-cell-globular-map-is-lax-transitive-large-globular-map
+ ( is-lax-transitive-comp-large-lax-transitive-globular-map G H K g f) =
+ is-lax-transitive-comp-lax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G _ _)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H _ _)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type K _ _)
+ ( 1-cell-large-lax-transitive-large-globular-map-large-lax-transitive-globular-map
+ g)
+ ( 1-cell-large-lax-transitive-large-globular-map-large-lax-transitive-globular-map
+ f)
+```
diff --git a/src/structured-types/large-reflexive-globular-maps.lagda.md b/src/structured-types/large-reflexive-globular-maps.lagda.md
new file mode 100644
index 0000000000..8afac702e4
--- /dev/null
+++ b/src/structured-types/large-reflexive-globular-maps.lagda.md
@@ -0,0 +1,176 @@
+# Large reflexive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.large-reflexive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.large-globular-maps
+open import structured-types.large-reflexive-globular-types
+open import structured-types.reflexive-globular-maps
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "large reflexive globular map" Agda=large-reflexive-globular-map}}
+between two
+[large reflexive globular types](structured-types.large-reflexive-globular-types.md)
+`G` and `H` is a [large globular map](structured-types.large-globular-maps.md)
+`f : G → H` equipped with a family of
+[identifications](foundation-core.identity-types.md)
+
+```text
+ (x : G₀) → f₁ (refl G x) = refl H (f₀ x)
+```
+
+from the image of the reflexivity cell at `x` in `G` to the reflexivity cell at
+`f₀ x`, such that the [globular map](structured-types.globular-maps.md)
+`f' : G' x y → H' (f₀ x) (f₀ y)` is
+[reflexive](structured-types.reflexive-globular-maps.md).
+
+Note: In some settings it may be preferred to work with large globular maps
+preserving reflexivity cells up to a higher cell. The two notions of maps
+between reflexive globular types preserving the reflexivity structure up to a
+higher cell are, depending of the direction of the coherence cells, the notions
+of
+[large colax reflexive globular maps](structured-types.large-colax-reflexive-globular-maps.md)
+and
+[large lax reflexive globular maps](structured-types.large-lax-reflexive-globular-maps.md).
+
+## Definitions
+
+### The predicate of preserving reflexivity
+
+```agda
+record
+ preserves-refl-large-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {γ : Level → Level}
+ (G : Large-Reflexive-Globular-Type α1 β1)
+ (H : Large-Reflexive-Globular-Type α2 β2)
+ (f : large-globular-map-Large-Reflexive-Globular-Type γ G H) :
+ UUω
+ where
+ coinductive
+
+ field
+ preserves-refl-1-cell-preserves-refl-large-globular-map :
+ {l1 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type G l1) →
+ 1-cell-large-globular-map f
+ ( refl-1-cell-Large-Reflexive-Globular-Type G {x = x}) =
+ refl-1-cell-Large-Reflexive-Globular-Type H
+
+ field
+ preserves-refl-2-cell-globular-map-preserves-refl-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ preserves-refl-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H _ _)
+ ( 1-cell-globular-map-large-globular-map f)
+
+open preserves-refl-large-globular-map
+```
+
+### Large reflexive globular maps
+
+```agda
+record
+ large-reflexive-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (γ : Level → Level)
+ (G : Large-Reflexive-Globular-Type α1 β1)
+ (H : Large-Reflexive-Globular-Type α2 β2) : UUω
+ where
+
+ field
+ large-globular-map-large-reflexive-globular-map :
+ large-globular-map-Large-Reflexive-Globular-Type γ G H
+
+ 0-cell-large-reflexive-globular-map :
+ {l1 : Level} →
+ 0-cell-Large-Reflexive-Globular-Type G l1 →
+ 0-cell-Large-Reflexive-Globular-Type H (γ l1)
+ 0-cell-large-reflexive-globular-map =
+ 0-cell-large-globular-map large-globular-map-large-reflexive-globular-map
+
+ 1-cell-large-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ 1-cell-Large-Reflexive-Globular-Type G x y →
+ 1-cell-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-reflexive-globular-map x)
+ ( 0-cell-large-reflexive-globular-map y)
+ 1-cell-large-reflexive-globular-map =
+ 1-cell-large-globular-map large-globular-map-large-reflexive-globular-map
+
+ 1-cell-globular-map-large-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ globular-map-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-reflexive-globular-map x)
+ ( 0-cell-large-reflexive-globular-map y))
+ 1-cell-globular-map-large-reflexive-globular-map =
+ 1-cell-globular-map-large-globular-map
+ large-globular-map-large-reflexive-globular-map
+
+ field
+ preserves-refl-large-reflexive-globular-map :
+ preserves-refl-large-globular-map G H
+ large-globular-map-large-reflexive-globular-map
+
+ preserves-refl-1-cell-large-reflexive-globular-map :
+ {l1 : Level} (x : 0-cell-Large-Reflexive-Globular-Type G l1) →
+ 1-cell-large-reflexive-globular-map
+ ( refl-1-cell-Large-Reflexive-Globular-Type G {x = x}) =
+ refl-1-cell-Large-Reflexive-Globular-Type H
+ preserves-refl-1-cell-large-reflexive-globular-map =
+ preserves-refl-1-cell-preserves-refl-large-globular-map
+ preserves-refl-large-reflexive-globular-map
+
+ preserves-refl-2-cell-globular-map-large-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ preserves-refl-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-reflexive-globular-map x)
+ ( 0-cell-large-reflexive-globular-map y))
+ ( 1-cell-globular-map-large-reflexive-globular-map)
+ preserves-refl-2-cell-globular-map-large-reflexive-globular-map =
+ preserves-refl-2-cell-globular-map-preserves-refl-large-globular-map
+ preserves-refl-large-reflexive-globular-map
+
+ 1-cell-reflexive-globular-map-large-reflexive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type G l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type G l2} →
+ reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type H
+ ( 0-cell-large-reflexive-globular-map x)
+ ( 0-cell-large-reflexive-globular-map y))
+ globular-map-reflexive-globular-map
+ 1-cell-reflexive-globular-map-large-reflexive-globular-map =
+ 1-cell-globular-map-large-reflexive-globular-map
+ preserves-refl-reflexive-globular-map
+ 1-cell-reflexive-globular-map-large-reflexive-globular-map =
+ preserves-refl-2-cell-globular-map-large-reflexive-globular-map
+
+open large-reflexive-globular-map public
+```
diff --git a/src/structured-types/large-reflexive-globular-types.lagda.md b/src/structured-types/large-reflexive-globular-types.lagda.md
index d48595094e..8649583c31 100644
--- a/src/structured-types/large-reflexive-globular-types.lagda.md
+++ b/src/structured-types/large-reflexive-globular-types.lagda.md
@@ -9,9 +9,12 @@ module structured-types.large-reflexive-globular-types where
Imports
```agda
+open import foundation.binary-relations
open import foundation.large-binary-relations
open import foundation.universe-levels
+open import structured-types.globular-types
+open import structured-types.large-globular-maps
open import structured-types.large-globular-types
open import structured-types.reflexive-globular-types
```
@@ -21,65 +24,344 @@ open import structured-types.reflexive-globular-types
## Idea
A [large globular type](structured-types.large-globular-types.md) is
-{{#concept "reflexive" Disambiguation="large globular type" Agda=is-reflexive-large-globular-structure}}
+{{#concept "reflexive" Disambiguation="large globular type" Agda=is-reflexive-Large-Globular-Type}}
if every $n$-cell `x` comes with a choice of $(n+1)$-cell from `x` to `x`.
## Definition
-### Reflexivity structure on a large globular structure
+### Reflexivity structure on large globular types
```agda
record
- is-reflexive-large-globular-structure
- {α : Level → Level} {β : Level → Level → Level}
- {A : (l : Level) → UU (α l)}
- (G : large-globular-structure β A) : UUω
+ is-reflexive-Large-Globular-Type
+ {α : Level → Level} {β : Level → Level → Level}
+ (A : Large-Globular-Type α β) :
+ UUω
where
field
- is-reflexive-1-cell-is-reflexive-large-globular-structure :
- is-reflexive-Large-Relation A (1-cell-large-globular-structure G)
+ refl-1-cell-is-reflexive-Large-Globular-Type :
+ is-reflexive-Large-Relation
+ ( 0-cell-Large-Globular-Type A)
+ ( 1-cell-Large-Globular-Type A)
- is-reflexive-globular-structure-1-cell-is-reflexive-large-globular-structure :
- {l1 l2 : Level} (x : A l1) (y : A l2) →
- is-reflexive-globular-structure
- ( globular-structure-1-cell-large-globular-structure G x y)
+ field
+ is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2} →
+ is-reflexive-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type A x y)
+
+ refl-2-cell-is-reflexive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2} →
+ is-reflexive (2-cell-Large-Globular-Type A {x = x} {y = y})
+ refl-2-cell-is-reflexive-Large-Globular-Type =
+ is-reflexive-1-cell-is-reflexive-Globular-Type
+ ( is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type)
+
+ is-reflexive-2-cell-globular-type-is-reflexive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type A x y} →
+ is-reflexive-Globular-Type
+ ( 2-cell-globular-type-Large-Globular-Type A f g)
+ is-reflexive-2-cell-globular-type-is-reflexive-Large-Globular-Type =
+ is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type
+
+ refl-3-cell-is-reflexive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type A x y} →
+ is-reflexive (3-cell-Large-Globular-Type A {f = f} {g = g})
+ refl-3-cell-is-reflexive-Large-Globular-Type =
+ is-reflexive-2-cell-is-reflexive-Globular-Type
+ ( is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type)
+
+ is-reflexive-3-cell-globular-type-is-reflexive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type A l1}
+ {y : 0-cell-Large-Globular-Type A l2}
+ {f g : 1-cell-Large-Globular-Type A x y}
+ {s t : 2-cell-Large-Globular-Type A f g} →
+ is-reflexive-Globular-Type
+ ( 3-cell-globular-type-Large-Globular-Type A s t)
+ is-reflexive-3-cell-globular-type-is-reflexive-Large-Globular-Type =
+ is-reflexive-2-cell-globular-type-is-reflexive-Globular-Type
+ is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type
+
+open is-reflexive-Large-Globular-Type public
+```
+
+### Large reflexive globular types
+
+```agda
+record
+ Large-Reflexive-Globular-Type
+ ( α : Level → Level) (β : Level → Level → Level) : UUω
+ where
+```
+
+The underlying large globular type of a large reflexive globular type:
+
+```agda
+ field
+ large-globular-type-Large-Reflexive-Globular-Type :
+ Large-Globular-Type α β
+
+ 0-cell-Large-Reflexive-Globular-Type : (l : Level) → UU (α l)
+ 0-cell-Large-Reflexive-Globular-Type =
+ 0-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ 1-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type l1)
+ (y : 0-cell-Large-Reflexive-Globular-Type l2) →
+ UU (β l1 l2)
+ 1-cell-Large-Reflexive-Globular-Type =
+ 1-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ 2-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ (f g : 1-cell-Large-Reflexive-Globular-Type x y) → UU (β l1 l2)
+ 2-cell-Large-Reflexive-Globular-Type =
+ 2-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ 3-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y}
+ (s t : 2-cell-Large-Reflexive-Globular-Type f g) → UU (β l1 l2)
+ 3-cell-Large-Reflexive-Globular-Type =
+ 3-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ 4-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y}
+ {s t : 2-cell-Large-Reflexive-Globular-Type f g}
+ (u v : 3-cell-Large-Reflexive-Globular-Type s t) → UU (β l1 l2)
+ 4-cell-Large-Reflexive-Globular-Type =
+ 4-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ 5-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y}
+ {s t : 2-cell-Large-Reflexive-Globular-Type f g}
+ {u v : 3-cell-Large-Reflexive-Globular-Type s t}
+ (a b : 4-cell-Large-Reflexive-Globular-Type u v) → UU (β l1 l2)
+ 5-cell-Large-Reflexive-Globular-Type =
+ 5-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ 1-cell-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type l1)
+ (y : 0-cell-Large-Reflexive-Globular-Type l2) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 1-cell-globular-type-Large-Reflexive-Globular-Type =
+ 1-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
-open is-reflexive-large-globular-structure public
+ 2-cell-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ (f g : 1-cell-Large-Reflexive-Globular-Type x y) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 2-cell-globular-type-Large-Reflexive-Globular-Type =
+ 2-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+ 3-cell-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y}
+ (s t : 2-cell-Large-Reflexive-Globular-Type f g) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 3-cell-globular-type-Large-Reflexive-Globular-Type =
+ 3-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ 4-cell-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y}
+ {s t : 2-cell-Large-Reflexive-Globular-Type f g}
+ (u v : 3-cell-Large-Reflexive-Globular-Type s t) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 4-cell-globular-type-Large-Reflexive-Globular-Type =
+ 4-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ 5-cell-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y}
+ {s t : 2-cell-Large-Reflexive-Globular-Type f g}
+ {u v : 3-cell-Large-Reflexive-Globular-Type s t}
+ (a b : 4-cell-Large-Reflexive-Globular-Type u v) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 5-cell-globular-type-Large-Reflexive-Globular-Type =
+ 5-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ globular-structure-1-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type l1)
+ (y : 0-cell-Large-Reflexive-Globular-Type l2) →
+ globular-structure (β l1 l2) (1-cell-Large-Reflexive-Globular-Type x y)
+ globular-structure-1-cell-Large-Reflexive-Globular-Type =
+ globular-structure-1-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ globular-structure-2-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ (f g : 1-cell-Large-Reflexive-Globular-Type x y) →
+ globular-structure (β l1 l2) (2-cell-Large-Reflexive-Globular-Type f g)
+ globular-structure-2-cell-Large-Reflexive-Globular-Type =
+ globular-structure-2-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ globular-structure-3-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y}
+ (s t : 2-cell-Large-Reflexive-Globular-Type f g) →
+ globular-structure (β l1 l2) (3-cell-Large-Reflexive-Globular-Type s t)
+ globular-structure-3-cell-Large-Reflexive-Globular-Type =
+ globular-structure-3-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ globular-structure-4-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y}
+ {s t : 2-cell-Large-Reflexive-Globular-Type f g}
+ (u v : 3-cell-Large-Reflexive-Globular-Type s t) →
+ globular-structure (β l1 l2) (4-cell-Large-Reflexive-Globular-Type u v)
+ globular-structure-4-cell-Large-Reflexive-Globular-Type =
+ globular-structure-4-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ large-globular-structure-0-cell-Large-Reflexive-Globular-Type :
+ large-globular-structure β (0-cell-Large-Reflexive-Globular-Type)
+ large-globular-structure-0-cell-Large-Reflexive-Globular-Type =
+ large-globular-structure-0-cell-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+```
+
+The reflexivity structure of a large reflexive globular type:
+
+```agda
+ field
+ is-reflexive-Large-Reflexive-Globular-Type :
+ is-reflexive-Large-Globular-Type
+ large-globular-type-Large-Reflexive-Globular-Type
+
+ refl-1-cell-Large-Reflexive-Globular-Type :
+ {l1 : Level} {x : 0-cell-Large-Reflexive-Globular-Type l1} →
+ 1-cell-Large-Reflexive-Globular-Type x x
+ refl-1-cell-Large-Reflexive-Globular-Type =
+ refl-1-cell-is-reflexive-Large-Globular-Type
+ ( is-reflexive-Large-Reflexive-Globular-Type)
+ ( _)
+
+ is-reflexive-1-cell-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2} →
+ is-reflexive-Globular-Type
+ ( 1-cell-globular-type-Large-Reflexive-Globular-Type x y)
+ is-reflexive-1-cell-globular-type-Large-Reflexive-Globular-Type =
+ is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type
+ is-reflexive-Large-Reflexive-Globular-Type
+
+ 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Reflexive-Globular-Type l1)
+ (y : 0-cell-Large-Reflexive-Globular-Type l2) →
+ Reflexive-Globular-Type (β l1 l2) (β l1 l2)
+ globular-type-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type x y) =
+ 1-cell-globular-type-Large-Reflexive-Globular-Type x y
+ refl-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Large-Reflexive-Globular-Type x y) =
+ is-reflexive-1-cell-globular-type-Large-Reflexive-Globular-Type
+
+ refl-2-cell-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f : 1-cell-Large-Reflexive-Globular-Type x y} →
+ 2-cell-Large-Reflexive-Globular-Type f f
+ refl-2-cell-Large-Reflexive-Globular-Type =
+ refl-2-cell-is-reflexive-Large-Globular-Type
+ ( is-reflexive-Large-Reflexive-Globular-Type)
+ ( _)
+
+ is-reflexive-2-cell-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ {f g : 1-cell-Large-Reflexive-Globular-Type x y} →
+ is-reflexive-Globular-Type
+ ( 2-cell-globular-type-Large-Reflexive-Globular-Type f g)
+ is-reflexive-2-cell-globular-type-Large-Reflexive-Globular-Type =
+ is-reflexive-2-cell-globular-type-is-reflexive-Large-Globular-Type
+ is-reflexive-Large-Reflexive-Globular-Type
+
+ 2-cell-reflexive-globular-type-Large-Reflexive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Reflexive-Globular-Type l1}
+ {y : 0-cell-Large-Reflexive-Globular-Type l2}
+ (f g : 1-cell-Large-Reflexive-Globular-Type x y) →
+ Reflexive-Globular-Type (β l1 l2) (β l1 l2)
+ globular-type-Reflexive-Globular-Type
+ ( 2-cell-reflexive-globular-type-Large-Reflexive-Globular-Type f g) =
+ 2-cell-globular-type-Large-Reflexive-Globular-Type f g
+ refl-Reflexive-Globular-Type
+ ( 2-cell-reflexive-globular-type-Large-Reflexive-Globular-Type f g) =
+ is-reflexive-2-cell-globular-type-Large-Reflexive-Globular-Type
+
+open Large-Reflexive-Globular-Type public
+```
+
+### Large globular maps between large reflexive globular types
+
+```agda
module _
- {α : Level → Level} {β : Level → Level → Level}
- {A : (l : Level) → UU (α l)}
- {G : large-globular-structure β A}
- (r : is-reflexive-large-globular-structure G)
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (γ : Level → Level)
+ (G : Large-Reflexive-Globular-Type α1 β1)
+ (H : Large-Reflexive-Globular-Type α2 β2)
where
- refl-1-cell-is-reflexive-large-globular-structure :
- {l : Level} {x : A l} → 1-cell-large-globular-structure G x x
- refl-1-cell-is-reflexive-large-globular-structure {x = x} =
- is-reflexive-1-cell-is-reflexive-large-globular-structure r x
-
- refl-2-cell-is-reflexive-large-globular-structure :
- {l1 l2 : Level} {x : A l1} {y : A l2}
- {f : 1-cell-large-globular-structure G x y} →
- 2-cell-large-globular-structure G f f
- refl-2-cell-is-reflexive-large-globular-structure {x = x} {y} {f} =
- is-reflexive-1-cell-is-reflexive-globular-structure
- ( is-reflexive-globular-structure-1-cell-is-reflexive-large-globular-structure
- ( r)
- ( x)
- ( y))
- ( f)
-
- refl-3-cell-is-reflexive-large-globular-structure :
- {l1 l2 : Level} {x : A l1} {y : A l2}
- {f g : 1-cell-large-globular-structure G x y} →
- {H : 2-cell-large-globular-structure G f g} →
- 3-cell-large-globular-structure G H H
- refl-3-cell-is-reflexive-large-globular-structure {x = x} {y} =
- refl-2-cell-is-reflexive-globular-structure
- ( is-reflexive-globular-structure-1-cell-is-reflexive-large-globular-structure
- ( r)
- ( x)
- ( y))
+ large-globular-map-Large-Reflexive-Globular-Type : UUω
+ large-globular-map-Large-Reflexive-Globular-Type =
+ large-globular-map γ
+ ( large-globular-type-Large-Reflexive-Globular-Type G)
+ ( large-globular-type-Large-Reflexive-Globular-Type H)
```
diff --git a/src/structured-types/large-symmetric-globular-types.lagda.md b/src/structured-types/large-symmetric-globular-types.lagda.md
index 73b86a8c71..b3344cfe9f 100644
--- a/src/structured-types/large-symmetric-globular-types.lagda.md
+++ b/src/structured-types/large-symmetric-globular-types.lagda.md
@@ -12,6 +12,7 @@ module structured-types.large-symmetric-globular-types where
open import foundation.large-binary-relations
open import foundation.universe-levels
+open import structured-types.globular-types
open import structured-types.large-globular-types
open import structured-types.symmetric-globular-types
```
@@ -20,57 +21,101 @@ open import structured-types.symmetric-globular-types
## Idea
-We say a [large globular type](structured-types.large-globular-types.md) is
-{{#concept "symmetric" Disambiguation="large globular type" Agda=is-symmetric-large-globular-structure}}
+We say that a [large globular type](structured-types.large-globular-types.md) is
+{{#concept "symmetric" Disambiguation="large globular type" Agda=is-symmetric-Large-Globular-Type}}
if there is a symmetry action on its $n$-cells for positive $n$, mapping
$n$-cells from `x` to `y` to $n$-cells from `y` to `x`.
-## Definition
+## Definitions
-### Symmetry structure on a large globular structure
+### Symmetry structure on a large globular type
```agda
record
- is-symmetric-large-globular-structure
- {α : Level → Level} {β : Level → Level → Level}
- {A : (l : Level) → UU (α l)}
- (G : large-globular-structure β A) : UUω
+ is-symmetric-Large-Globular-Type
+ {α : Level → Level} {β : Level → Level → Level}
+ (G : Large-Globular-Type α β) :
+ UUω
where
+
+ field
+ inv-1-cell-is-symmetric-Large-Globular-Type :
+ is-symmetric-Large-Relation
+ ( 0-cell-Large-Globular-Type G)
+ ( 1-cell-Large-Globular-Type G)
+
field
- is-symmetric-1-cell-is-symmetric-large-globular-structure :
- is-symmetric-Large-Relation A (1-cell-large-globular-structure G)
- is-symmetric-globular-structure-1-cell-is-symmetric-large-globular-structure :
- {l1 l2 : Level} (x : A l1) (y : A l2) →
- is-symmetric-globular-structure
- ( globular-structure-1-cell-large-globular-structure G x y)
-
-open is-symmetric-large-globular-structure public
-
-module _
- {α : Level → Level} {β : Level → Level → Level}
- {A : (l : Level) → UU (α l)}
- (G : large-globular-structure β A)
- (r : is-symmetric-large-globular-structure G)
+ is-symmetric-1-cell-globular-type-is-symmetric-Large-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Globular-Type G l1) →
+ (y : 0-cell-Large-Globular-Type G l2) →
+ is-symmetric-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type G x y)
+
+open is-symmetric-Large-Globular-Type public
+```
+
+### Large symmetric globular types
+
+```agda
+record
+ Large-Symmetric-Globular-Type
+ (α : Level → Level) (β : Level → Level → Level) :
+ UUω
where
- sym-1-cell-is-symmetric-large-globular-structure :
- {l1 l2 : Level} {x : A l1} {y : A l2} →
- 1-cell-large-globular-structure G x y →
- 1-cell-large-globular-structure G y x
- sym-1-cell-is-symmetric-large-globular-structure {x = x} {y} =
- is-symmetric-1-cell-is-symmetric-large-globular-structure r x y
-
- sym-2-cell-is-symmetric-large-globular-structure :
- {l1 l2 : Level} {x : A l1} {y : A l2}
- {f g : 1-cell-large-globular-structure G x y} →
- 2-cell-large-globular-structure G f g →
- 2-cell-large-globular-structure G g f
- sym-2-cell-is-symmetric-large-globular-structure {x = x} {y} {f} {g} =
- is-symmetric-1-cell-is-symmetric-globular-structure
- ( is-symmetric-globular-structure-1-cell-is-symmetric-large-globular-structure
- ( r)
- ( x)
- ( y))
- ( f)
- ( g)
+ field
+ large-globular-type-Large-Symmetric-Globular-Type :
+ Large-Globular-Type α β
+
+ 0-cell-Large-Symmetric-Globular-Type :
+ (l1 : Level) → UU (α l1)
+ 0-cell-Large-Symmetric-Globular-Type =
+ 0-cell-Large-Globular-Type large-globular-type-Large-Symmetric-Globular-Type
+
+ 1-cell-globular-type-Large-Symmetric-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Symmetric-Globular-Type l1)
+ (y : 0-cell-Large-Symmetric-Globular-Type l2) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 1-cell-globular-type-Large-Symmetric-Globular-Type =
+ 1-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Symmetric-Globular-Type
+
+ 1-cell-Large-Symmetric-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Symmetric-Globular-Type l1)
+ (y : 0-cell-Large-Symmetric-Globular-Type l2) →
+ UU (β l1 l2)
+ 1-cell-Large-Symmetric-Globular-Type =
+ 1-cell-Large-Globular-Type large-globular-type-Large-Symmetric-Globular-Type
+
+ field
+ is-symmetric-Large-Symmetric-Globular-Type :
+ is-symmetric-Large-Globular-Type
+ large-globular-type-Large-Symmetric-Globular-Type
+
+ inv-1-cell-Large-Symmetric-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Symmetric-Globular-Type l1}
+ {y : 0-cell-Large-Symmetric-Globular-Type l2} →
+ 1-cell-Large-Symmetric-Globular-Type x y →
+ 1-cell-Large-Symmetric-Globular-Type y x
+ inv-1-cell-Large-Symmetric-Globular-Type =
+ inv-1-cell-is-symmetric-Large-Globular-Type
+ is-symmetric-Large-Symmetric-Globular-Type
+ _
+ _
+
+ is-symmetric-1-cell-globular-type-Large-Symmetric-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Symmetric-Globular-Type l1)
+ (y : 0-cell-Large-Symmetric-Globular-Type l2) →
+ is-symmetric-Globular-Type
+ ( 1-cell-globular-type-Large-Symmetric-Globular-Type x y)
+ is-symmetric-1-cell-globular-type-Large-Symmetric-Globular-Type =
+ is-symmetric-1-cell-globular-type-is-symmetric-Large-Globular-Type
+ is-symmetric-Large-Symmetric-Globular-Type
+
+open Large-Symmetric-Globular-Type public
```
diff --git a/src/structured-types/large-transitive-globular-maps.lagda.md b/src/structured-types/large-transitive-globular-maps.lagda.md
new file mode 100644
index 0000000000..af909f7b5e
--- /dev/null
+++ b/src/structured-types/large-transitive-globular-maps.lagda.md
@@ -0,0 +1,253 @@
+# Large transitive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.large-transitive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-functions
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.large-globular-maps
+open import structured-types.large-transitive-globular-types
+open import structured-types.transitive-globular-maps
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+A
+{{#concept "large transitive globular map" Agda=large-transitive-globular-map}}
+between two
+[large transitive globular types](structured-types.large-transitive-globular-types.md)
+`G` and `H` is a [large globular map](structured-types.large-globular-maps.md)
+`f : G → H` equipped with a family of
+[identifications](foundation-core.identity-types.md)
+
+```text
+ f₁ (q ∘G p) = f₁ q ∘H f₁ p
+```
+
+from the image of the composite of two 1-cells `q` and `p` in `G` to the
+composite of `f₁ q` and `f₁ p` in `H`, such that the globular map
+`f' : G' x y → H' (f₀ x) (f₀ y)` is again transitive.
+
+## Definitions
+
+### The predicate of preserving transitivity
+
+```agda
+record
+ is-transitive-large-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {γ : Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (f : large-globular-map-Large-Transitive-Globular-Type γ G H) : UUω
+ where
+ coinductive
+
+ field
+ preserves-comp-1-cell-is-transitive-large-globular-map :
+ {l1 l2 l3 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2}
+ {z : 0-cell-Large-Transitive-Globular-Type G l3} →
+ (q : 1-cell-Large-Transitive-Globular-Type G y z)
+ (p : 1-cell-Large-Transitive-Globular-Type G x y) →
+ 1-cell-large-globular-map f
+ ( comp-1-cell-Large-Transitive-Globular-Type G q p) =
+ comp-1-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-globular-map f q)
+ ( 1-cell-large-globular-map f p)
+
+ field
+ is-transitive-1-cell-globular-map-is-transitive-large-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ is-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H _ _)
+ ( 1-cell-globular-map-large-globular-map f)
+
+open is-transitive-large-globular-map public
+```
+
+### transitive globular maps
+
+```agda
+record
+ large-transitive-globular-map
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (γ : Level → Level)
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2) : UUω
+ where
+
+ field
+ large-globular-map-large-transitive-globular-map :
+ large-globular-map-Large-Transitive-Globular-Type γ G H
+
+ 0-cell-large-transitive-globular-map :
+ {l1 : Level} →
+ 0-cell-Large-Transitive-Globular-Type G l1 →
+ 0-cell-Large-Transitive-Globular-Type H (γ l1)
+ 0-cell-large-transitive-globular-map =
+ 0-cell-large-globular-map large-globular-map-large-transitive-globular-map
+
+ 1-cell-large-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ 1-cell-Large-Transitive-Globular-Type G x y →
+ 1-cell-Large-Transitive-Globular-Type H
+ ( 0-cell-large-transitive-globular-map x)
+ ( 0-cell-large-transitive-globular-map y)
+ 1-cell-large-transitive-globular-map =
+ 1-cell-large-globular-map
+ large-globular-map-large-transitive-globular-map
+
+ 1-cell-globular-map-large-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ globular-map-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-transitive-globular-map x)
+ ( 0-cell-large-transitive-globular-map y))
+ 1-cell-globular-map-large-transitive-globular-map =
+ 1-cell-globular-map-large-globular-map
+ large-globular-map-large-transitive-globular-map
+
+ 2-cell-large-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ {f g : 1-cell-Large-Transitive-Globular-Type G x y} →
+ 2-cell-Large-Transitive-Globular-Type G f g →
+ 2-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-transitive-globular-map f)
+ ( 1-cell-large-transitive-globular-map g)
+ 2-cell-large-transitive-globular-map =
+ 2-cell-large-globular-map
+ large-globular-map-large-transitive-globular-map
+
+ 2-cell-globular-map-large-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ {f g : 1-cell-Large-Transitive-Globular-Type G x y} →
+ globular-map-Transitive-Globular-Type
+ ( 2-cell-transitive-globular-type-Large-Transitive-Globular-Type G f g)
+ ( 2-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 1-cell-large-transitive-globular-map f)
+ ( 1-cell-large-transitive-globular-map g))
+ 2-cell-globular-map-large-transitive-globular-map =
+ 2-cell-globular-map-large-globular-map
+ ( large-globular-map-large-transitive-globular-map)
+ ( _)
+ ( _)
+
+ field
+ is-transitive-large-transitive-globular-map :
+ is-transitive-large-globular-map G H
+ large-globular-map-large-transitive-globular-map
+
+ preserves-comp-1-cell-large-transitive-globular-map :
+ {l1 l2 l3 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2}
+ {z : 0-cell-Large-Transitive-Globular-Type G l3}
+ (q : 1-cell-Large-Transitive-Globular-Type G y z)
+ (p : 1-cell-Large-Transitive-Globular-Type G x y) →
+ 1-cell-large-transitive-globular-map
+ ( comp-1-cell-Large-Transitive-Globular-Type G q p) =
+ comp-1-cell-Large-Transitive-Globular-Type H
+ ( 1-cell-large-transitive-globular-map q)
+ ( 1-cell-large-transitive-globular-map p)
+ preserves-comp-1-cell-large-transitive-globular-map =
+ preserves-comp-1-cell-is-transitive-large-globular-map
+ is-transitive-large-transitive-globular-map
+
+ is-transitive-1-cell-globular-map-large-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ is-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-transitive-globular-map x)
+ ( 0-cell-large-transitive-globular-map y))
+ ( 1-cell-globular-map-large-transitive-globular-map)
+ is-transitive-1-cell-globular-map-large-transitive-globular-map =
+ is-transitive-1-cell-globular-map-is-transitive-large-globular-map
+ is-transitive-large-transitive-globular-map
+
+ 1-cell-large-transitive-large-globular-map-large-transitive-globular-map :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type G l1}
+ {y : 0-cell-Large-Transitive-Globular-Type G l2} →
+ transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H
+ ( 0-cell-large-transitive-globular-map x)
+ ( 0-cell-large-transitive-globular-map y))
+ globular-map-transitive-globular-map
+ 1-cell-large-transitive-large-globular-map-large-transitive-globular-map =
+ 1-cell-globular-map-large-transitive-globular-map
+ is-transitive-transitive-globular-map
+ 1-cell-large-transitive-large-globular-map-large-transitive-globular-map =
+ is-transitive-1-cell-globular-map-large-transitive-globular-map
+
+open large-transitive-globular-map public
+```
+
+### Composition of transitive maps
+
+```agda
+map-comp-large-transitive-globular-map :
+ {α1 α2 α3 γ1 γ2 : Level → Level} {β1 β2 β3 : Level → Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (K : Large-Transitive-Globular-Type α3 β3)
+ (g : large-transitive-globular-map γ2 H K)
+ (f : large-transitive-globular-map γ1 G H) →
+ large-globular-map-Large-Transitive-Globular-Type (γ2 ∘ γ1) G K
+map-comp-large-transitive-globular-map G H K g f =
+ comp-large-globular-map
+ ( large-globular-map-large-transitive-globular-map g)
+ ( large-globular-map-large-transitive-globular-map f)
+
+is-transitive-comp-large-transitive-globular-map :
+ {α1 α2 α3 γ1 γ2 : Level → Level} {β1 β2 β3 : Level → Level → Level}
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
+ (K : Large-Transitive-Globular-Type α3 β3)
+ (g : large-transitive-globular-map γ2 H K)
+ (f : large-transitive-globular-map γ1 G H) →
+ is-transitive-large-globular-map G K
+ ( map-comp-large-transitive-globular-map G H K g f)
+preserves-comp-1-cell-is-transitive-large-globular-map
+ ( is-transitive-comp-large-transitive-globular-map G H K g f) q p =
+ ( ap (1-cell-large-transitive-globular-map g)
+ ( preserves-comp-1-cell-large-transitive-globular-map f q p)) ∙
+ ( preserves-comp-1-cell-large-transitive-globular-map g _ _)
+is-transitive-1-cell-globular-map-is-transitive-large-globular-map
+ ( is-transitive-comp-large-transitive-globular-map G H K g f) =
+ is-transitive-comp-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type G _ _)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type H _ _)
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type K _ _)
+ ( 1-cell-large-transitive-large-globular-map-large-transitive-globular-map
+ g)
+ ( 1-cell-large-transitive-large-globular-map-large-transitive-globular-map
+ f)
+```
diff --git a/src/structured-types/large-transitive-globular-types.lagda.md b/src/structured-types/large-transitive-globular-types.lagda.md
index af1cd79af6..d59b94d97d 100644
--- a/src/structured-types/large-transitive-globular-types.lagda.md
+++ b/src/structured-types/large-transitive-globular-types.lagda.md
@@ -11,6 +11,8 @@ module structured-types.large-transitive-globular-types where
```agda
open import foundation.universe-levels
+open import structured-types.globular-types
+open import structured-types.large-globular-maps
open import structured-types.large-globular-types
open import structured-types.transitive-globular-types
```
@@ -32,7 +34,220 @@ at every level $n$.
## Definition
-### The structure transitivitiy on a large globular type
+### Transitivity structure on large globular types
+
+```agda
+record
+ is-transitive-Large-Globular-Type
+ {α : Level → Level} {β : Level → Level → Level}
+ (G : Large-Globular-Type α β) : UUω
+ where
+
+ field
+ comp-1-cell-is-transitive-Large-Globular-Type :
+ {l1 l2 l3 : Level}
+ {x : 0-cell-Large-Globular-Type G l1}
+ {y : 0-cell-Large-Globular-Type G l2}
+ {z : 0-cell-Large-Globular-Type G l3} →
+ 1-cell-Large-Globular-Type G y z →
+ 1-cell-Large-Globular-Type G x y →
+ 1-cell-Large-Globular-Type G x z
+
+ field
+ is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type G l1}
+ {y : 0-cell-Large-Globular-Type G l2} →
+ is-transitive-Globular-Type
+ ( 1-cell-globular-type-Large-Globular-Type G x y)
+
+open is-transitive-Large-Globular-Type public
+
+module _
+ {α : Level → Level} {β : Level → Level → Level}
+ {G : Large-Globular-Type α β}
+ (τ : is-transitive-Large-Globular-Type G)
+ where
+
+ comp-2-cell-is-transitive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type G l1}
+ {y : 0-cell-Large-Globular-Type G l2}
+ {f g h : 1-cell-Large-Globular-Type G x y} →
+ 2-cell-Large-Globular-Type G g h →
+ 2-cell-Large-Globular-Type G f g →
+ 2-cell-Large-Globular-Type G f h
+ comp-2-cell-is-transitive-Large-Globular-Type =
+ comp-1-cell-is-transitive-Globular-Type
+ ( is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type τ)
+
+ is-transitive-2-cell-globular-type-is-transitive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type G l1}
+ {y : 0-cell-Large-Globular-Type G l2}
+ {f g : 1-cell-Large-Globular-Type G x y} →
+ is-transitive-Globular-Type
+ ( 2-cell-globular-type-Large-Globular-Type G f g)
+ is-transitive-2-cell-globular-type-is-transitive-Large-Globular-Type =
+ is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ ( is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type τ)
+
+ comp-3-cell-is-transitive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type G l1}
+ {y : 0-cell-Large-Globular-Type G l2}
+ {f g : 1-cell-Large-Globular-Type G x y}
+ {s t u : 2-cell-Large-Globular-Type G f g} →
+ 3-cell-Large-Globular-Type G t u →
+ 3-cell-Large-Globular-Type G s t →
+ 3-cell-Large-Globular-Type G s u
+ comp-3-cell-is-transitive-Large-Globular-Type =
+ comp-2-cell-is-transitive-Globular-Type
+ ( is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type τ)
+
+ is-transitive-3-cell-globular-type-is-transitive-Large-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Globular-Type G l1}
+ {y : 0-cell-Large-Globular-Type G l2}
+ {f g : 1-cell-Large-Globular-Type G x y}
+ {s t : 2-cell-Large-Globular-Type G f g} →
+ is-transitive-Globular-Type
+ ( 3-cell-globular-type-Large-Globular-Type G s t)
+ is-transitive-3-cell-globular-type-is-transitive-Large-Globular-Type =
+ is-transitive-2-cell-globular-type-is-transitive-Globular-Type
+ ( is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type τ)
+```
+
+### Large transitive globular types
+
+```agda
+record
+ Large-Transitive-Globular-Type
+ (α : Level → Level) (β : Level → Level → Level) : UUω
+ where
+
+ field
+ large-globular-type-Large-Transitive-Globular-Type :
+ Large-Globular-Type α β
+
+ 0-cell-Large-Transitive-Globular-Type : (l : Level) → UU (α l)
+ 0-cell-Large-Transitive-Globular-Type =
+ 0-cell-Large-Globular-Type
+ large-globular-type-Large-Transitive-Globular-Type
+
+ 1-cell-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Transitive-Globular-Type l1)
+ (y : 0-cell-Large-Transitive-Globular-Type l2) → UU (β l1 l2)
+ 1-cell-Large-Transitive-Globular-Type =
+ 1-cell-Large-Globular-Type
+ large-globular-type-Large-Transitive-Globular-Type
+
+ 1-cell-globular-type-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Transitive-Globular-Type l1)
+ (y : 0-cell-Large-Transitive-Globular-Type l2) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 1-cell-globular-type-Large-Transitive-Globular-Type =
+ 1-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Transitive-Globular-Type
+
+ 2-cell-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type l1}
+ {y : 0-cell-Large-Transitive-Globular-Type l2}
+ (f g : 1-cell-Large-Transitive-Globular-Type x y) → UU (β l1 l2)
+ 2-cell-Large-Transitive-Globular-Type =
+ 2-cell-Large-Globular-Type
+ large-globular-type-Large-Transitive-Globular-Type
+
+ 2-cell-globular-type-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type l1}
+ {y : 0-cell-Large-Transitive-Globular-Type l2}
+ (f g : 1-cell-Large-Transitive-Globular-Type x y) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 2-cell-globular-type-Large-Transitive-Globular-Type =
+ 2-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Transitive-Globular-Type
+
+ 3-cell-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type l1}
+ {y : 0-cell-Large-Transitive-Globular-Type l2}
+ {f g : 1-cell-Large-Transitive-Globular-Type x y}
+ (s t : 2-cell-Large-Transitive-Globular-Type f g) → UU (β l1 l2)
+ 3-cell-Large-Transitive-Globular-Type =
+ 3-cell-Large-Globular-Type
+ large-globular-type-Large-Transitive-Globular-Type
+
+ 3-cell-globular-type-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type l1}
+ {y : 0-cell-Large-Transitive-Globular-Type l2}
+ {f g : 1-cell-Large-Transitive-Globular-Type x y}
+ (s t : 2-cell-Large-Transitive-Globular-Type f g) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 3-cell-globular-type-Large-Transitive-Globular-Type =
+ 3-cell-globular-type-Large-Globular-Type
+ large-globular-type-Large-Transitive-Globular-Type
+
+ field
+ is-transitive-Large-Transitive-Globular-Type :
+ is-transitive-Large-Globular-Type
+ large-globular-type-Large-Transitive-Globular-Type
+
+ comp-1-cell-Large-Transitive-Globular-Type :
+ {l1 l2 l3 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type l1}
+ {y : 0-cell-Large-Transitive-Globular-Type l2}
+ {z : 0-cell-Large-Transitive-Globular-Type l3} →
+ 1-cell-Large-Transitive-Globular-Type y z →
+ 1-cell-Large-Transitive-Globular-Type x y →
+ 1-cell-Large-Transitive-Globular-Type x z
+ comp-1-cell-Large-Transitive-Globular-Type =
+ comp-1-cell-is-transitive-Large-Globular-Type
+ is-transitive-Large-Transitive-Globular-Type
+
+ 1-cell-transitive-globular-type-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ (x : 0-cell-Large-Transitive-Globular-Type l1)
+ (y : 0-cell-Large-Transitive-Globular-Type l2) →
+ Transitive-Globular-Type (β l1 l2) (β l1 l2)
+ globular-type-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type x y) =
+ 1-cell-globular-type-Large-Transitive-Globular-Type x y
+ is-transitive-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type x y) =
+ is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type
+ is-transitive-Large-Transitive-Globular-Type
+
+ comp-2-cell-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type l1}
+ {y : 0-cell-Large-Transitive-Globular-Type l2}
+ {f g h : 1-cell-Large-Transitive-Globular-Type x y} →
+ 2-cell-Large-Transitive-Globular-Type g h →
+ 2-cell-Large-Transitive-Globular-Type f g →
+ 2-cell-Large-Transitive-Globular-Type f h
+ comp-2-cell-Large-Transitive-Globular-Type =
+ comp-1-cell-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type _ _)
+
+ 2-cell-transitive-globular-type-Large-Transitive-Globular-Type :
+ {l1 l2 : Level}
+ {x : 0-cell-Large-Transitive-Globular-Type l1}
+ {y : 0-cell-Large-Transitive-Globular-Type l2}
+ (f g : 1-cell-Large-Transitive-Globular-Type x y) →
+ Transitive-Globular-Type (β l1 l2) (β l1 l2)
+ 2-cell-transitive-globular-type-Large-Transitive-Globular-Type =
+ 1-cell-transitive-globular-type-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Large-Transitive-Globular-Type _ _)
+
+open Large-Transitive-Globular-Type public
+```
+
+### The predicate of being a transitive large globular structure
```agda
record
@@ -111,21 +326,18 @@ record
open large-transitive-globular-structure public
```
-### The type of large transitive globular types
+### Large globular maps between large transitive globular types
```agda
-record
- Large-Transitive-Globular-Type
- (α : Level → Level) (β : Level → Level → Level) : UUω
+module _
+ {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (γ : Level → Level)
+ (G : Large-Transitive-Globular-Type α1 β1)
+ (H : Large-Transitive-Globular-Type α2 β2)
where
- field
- 0-cell-Large-Transitive-Globular-Type : (l : Level) → UU (α l)
-
- transitive-globular-structure-0-cell-Large-Transitive-Globular-Type :
- large-transitive-globular-structure
- ( β)
- ( 0-cell-Large-Transitive-Globular-Type)
-
-open Large-Transitive-Globular-Type public
+ large-globular-map-Large-Transitive-Globular-Type : UUω
+ large-globular-map-Large-Transitive-Globular-Type =
+ large-globular-map γ
+ ( large-globular-type-Large-Transitive-Globular-Type G)
+ ( large-globular-type-Large-Transitive-Globular-Type H)
```
diff --git a/src/structured-types/lax-reflexive-globular-maps.lagda.md b/src/structured-types/lax-reflexive-globular-maps.lagda.md
new file mode 100644
index 0000000000..d75fb64e70
--- /dev/null
+++ b/src/structured-types/lax-reflexive-globular-maps.lagda.md
@@ -0,0 +1,212 @@
+# Lax reflexive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.lax-reflexive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "lax reflexive globular map" Agda=lax-reflexive-globular-map}}
+between two
+[reflexive globular types](structured-types.reflexive-globular-types.md) `G` and
+`H` is a [globular map](structured-types.globular-maps.md) `f : G → H` equipped
+with a family of 2-cells
+
+```text
+ (x : G₀) → H₂ (refl H (f₀ x)) (f₁ (refl G x))
+```
+
+from the image of the reflexivity cell at `x` in `G` to the reflexivity cell at
+`f₀ x`, such that the globular map `f' : G' x y → H' (f₀ x) (f₀ y)` is again lax
+reflexive.
+
+### Lack of composition for lax reflexive globular maps
+
+Note that the lax reflexive globular maps lack composition. For the composition
+of `g` and `f` to exist, there should be a `2`-cell from `g (f (refl G x))` to
+`refl K (g (f x))`, we need to compose the 2-cell that `g` preserves reflexivity
+with the action of `g` on the 2-cell that `f` preserves reflexivity. However,
+since the reflexive globular type `G` is not assumed to be
+[transitive](structured-types.transitive-globular-types.md), it might lack such
+instances of the compositions.
+
+### Lax reflexive globular maps versus the morphisms of presheaves on the reflexive globe category
+
+When reflexive globular types are viewed as type valued presheaves over the
+reflexive globe category, the resulting notion of morphism is that of
+[reflexive globular maps](structured-types.reflexive-globular-maps.md), which is
+stricter than the notion of lax reflexive globular maps.
+
+### Lax versus colax
+
+The notion of
+[colax reflexive globular map](structured-types.colax-reflexive-globular-maps.md)
+is almost the same, except with the direction of the 2-cell reversed. In
+general, the direction of lax coherence cells is determined by applying the
+morphism componentwise first, and then the operations, while the direction of
+colax coherence cells is determined by first applying the operations and then
+the morphism.
+
+## Definitions
+
+### The predicate of laxly preserving reflexivity
+
+```agda
+record
+ is-lax-reflexive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2) (H : Reflexive-Globular-Type l3 l4)
+ (f : globular-map-Reflexive-Globular-Type G H) :
+ UU (l1 ⊔ l2 ⊔ l4)
+ where
+ coinductive
+
+ field
+ preserves-refl-1-cell-is-lax-reflexive-globular-map :
+ (x : 0-cell-Reflexive-Globular-Type G) →
+ 2-cell-Reflexive-Globular-Type H
+ ( refl-1-cell-Reflexive-Globular-Type H)
+ ( 1-cell-globular-map f (refl-1-cell-Reflexive-Globular-Type G {x}))
+
+ field
+ is-lax-reflexive-1-cell-globular-map-is-lax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ is-lax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H _ _)
+ ( 1-cell-globular-map-globular-map-Reflexive-Globular-Type G H f)
+
+open is-lax-reflexive-globular-map public
+```
+
+### Lax reflexive globular maps
+
+```agda
+record
+ lax-reflexive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+
+ field
+ globular-map-lax-reflexive-globular-map :
+ globular-map-Reflexive-Globular-Type G H
+
+ 0-cell-lax-reflexive-globular-map :
+ 0-cell-Reflexive-Globular-Type G → 0-cell-Reflexive-Globular-Type H
+ 0-cell-lax-reflexive-globular-map =
+ 0-cell-globular-map globular-map-lax-reflexive-globular-map
+
+ 1-cell-lax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ 1-cell-Reflexive-Globular-Type G x y →
+ 1-cell-Reflexive-Globular-Type H
+ ( 0-cell-lax-reflexive-globular-map x)
+ ( 0-cell-lax-reflexive-globular-map y)
+ 1-cell-lax-reflexive-globular-map =
+ 1-cell-globular-map globular-map-lax-reflexive-globular-map
+
+ 1-cell-globular-map-lax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ globular-map-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-lax-reflexive-globular-map x)
+ ( 0-cell-lax-reflexive-globular-map y))
+ 1-cell-globular-map-lax-reflexive-globular-map =
+ 1-cell-globular-map-globular-map globular-map-lax-reflexive-globular-map
+
+ field
+ is-lax-reflexive-lax-reflexive-globular-map :
+ is-lax-reflexive-globular-map G H
+ globular-map-lax-reflexive-globular-map
+
+ preserves-refl-1-cell-lax-reflexive-globular-map :
+ (x : 0-cell-Reflexive-Globular-Type G) →
+ 2-cell-Reflexive-Globular-Type H
+ ( refl-1-cell-Reflexive-Globular-Type H)
+ ( 1-cell-lax-reflexive-globular-map
+ ( refl-1-cell-Reflexive-Globular-Type G {x}))
+ preserves-refl-1-cell-lax-reflexive-globular-map =
+ preserves-refl-1-cell-is-lax-reflexive-globular-map
+ is-lax-reflexive-lax-reflexive-globular-map
+
+ is-lax-reflexive-2-cell-globular-map-is-lax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ is-lax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-lax-reflexive-globular-map x)
+ ( 0-cell-lax-reflexive-globular-map y))
+ ( 1-cell-globular-map-lax-reflexive-globular-map)
+ is-lax-reflexive-2-cell-globular-map-is-lax-reflexive-globular-map =
+ is-lax-reflexive-1-cell-globular-map-is-lax-reflexive-globular-map
+ is-lax-reflexive-lax-reflexive-globular-map
+
+ 1-cell-lax-reflexive-globular-map-lax-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ lax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-lax-reflexive-globular-map x)
+ ( 0-cell-lax-reflexive-globular-map y))
+ globular-map-lax-reflexive-globular-map
+ 1-cell-lax-reflexive-globular-map-lax-reflexive-globular-map =
+ 1-cell-globular-map-lax-reflexive-globular-map
+ is-lax-reflexive-lax-reflexive-globular-map
+ 1-cell-lax-reflexive-globular-map-lax-reflexive-globular-map =
+ is-lax-reflexive-2-cell-globular-map-is-lax-reflexive-globular-map
+
+open lax-reflexive-globular-map public
+```
+
+### The identity lax reflexive globular map
+
+```agda
+map-id-lax-reflexive-globular-map :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ globular-map-Reflexive-Globular-Type G G
+map-id-lax-reflexive-globular-map G = id-globular-map _
+
+is-lax-reflexive-id-lax-reflexive-globular-map :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ is-lax-reflexive-globular-map G G (map-id-lax-reflexive-globular-map G)
+preserves-refl-1-cell-is-lax-reflexive-globular-map
+ ( is-lax-reflexive-id-lax-reflexive-globular-map G)
+ x =
+ refl-2-cell-Reflexive-Globular-Type G
+is-lax-reflexive-1-cell-globular-map-is-lax-reflexive-globular-map
+ ( is-lax-reflexive-id-lax-reflexive-globular-map G) =
+ is-lax-reflexive-id-lax-reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G _ _)
+
+id-lax-reflexive-globular-map :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ lax-reflexive-globular-map G G
+globular-map-lax-reflexive-globular-map
+ ( id-lax-reflexive-globular-map G) =
+ map-id-lax-reflexive-globular-map G
+is-lax-reflexive-lax-reflexive-globular-map
+ ( id-lax-reflexive-globular-map G) =
+ ( is-lax-reflexive-id-lax-reflexive-globular-map G)
+```
+
+## See also
+
+- [Colax reflexive globular maps](structured-types.colax-reflexive-globular-maps.md)
+- [Reflexive globular maps](structured-types.reflexive-globular-maps.md)
diff --git a/src/structured-types/lax-transitive-globular-maps.lagda.md b/src/structured-types/lax-transitive-globular-maps.lagda.md
new file mode 100644
index 0000000000..483a8fbb9a
--- /dev/null
+++ b/src/structured-types/lax-transitive-globular-maps.lagda.md
@@ -0,0 +1,231 @@
+# Lax transitive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.lax-transitive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "lax transitive globular map" Agda=lax-transitive-globular-map}}
+between two
+[transitive globular types](structured-types.transitive-globular-types.md) `G`
+and `H` is a [globular map](structured-types.globular-maps.md) `f : G → H`
+equipped with a family of 2-cells
+
+```text
+ H₂ (f₁ q ∘H f₁ p) (f₁ (q ∘G p))
+```
+
+from the image of the composite of two 1-cells `q` and `p` in `G` to the
+composite of `f₁ q` and `f₁ p` in `H`, such that the globular map
+`f' : G' x y → H' (f₀ x) (f₀ y)` is again lax transitive.
+
+### Lack of identity lax transitive globular maps
+
+Note that the lax transitive globular maps lack an identity morphism. For an
+identity morphism to exist on a transitive globular type `G`, there should be a
+`2`-cell from `q ∘G p` to `q ∘G p` for every composable pair of `1`-cells `q`
+and `p`. However, since the transitive globular type `G` is not assumed to be
+[reflexive](structured-types.reflexive-globular-types.md), it might lack such
+instances of the reflexivity cells.
+
+## Definitions
+
+### The predicate of laxly preserving transitivity
+
+```agda
+record
+ is-lax-transitive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Transitive-Globular-Type l1 l2) (H : Transitive-Globular-Type l3 l4)
+ (f : globular-map-Transitive-Globular-Type G H) :
+ UU (l1 ⊔ l2 ⊔ l4)
+ where
+ coinductive
+
+ field
+ preserves-comp-1-cell-is-lax-transitive-globular-map :
+ {x y z : 0-cell-Transitive-Globular-Type G} →
+ (q : 1-cell-Transitive-Globular-Type G y z)
+ (p : 1-cell-Transitive-Globular-Type G x y) →
+ 2-cell-Transitive-Globular-Type H
+ ( comp-1-cell-Transitive-Globular-Type H
+ ( 1-cell-globular-map f q)
+ ( 1-cell-globular-map f p))
+ ( 1-cell-globular-map f
+ ( comp-1-cell-Transitive-Globular-Type G q p))
+
+ field
+ is-lax-transitive-1-cell-globular-map-is-lax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ is-lax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H _ _)
+ ( 1-cell-globular-map-globular-map f)
+
+open is-lax-transitive-globular-map public
+```
+
+### Lax transitive globular maps
+
+```agda
+record
+ lax-transitive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+
+ field
+ globular-map-lax-transitive-globular-map :
+ globular-map-Transitive-Globular-Type G H
+
+ 0-cell-lax-transitive-globular-map :
+ 0-cell-Transitive-Globular-Type G → 0-cell-Transitive-Globular-Type H
+ 0-cell-lax-transitive-globular-map =
+ 0-cell-globular-map globular-map-lax-transitive-globular-map
+
+ 1-cell-lax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ 1-cell-Transitive-Globular-Type G x y →
+ 1-cell-Transitive-Globular-Type H
+ ( 0-cell-lax-transitive-globular-map x)
+ ( 0-cell-lax-transitive-globular-map y)
+ 1-cell-lax-transitive-globular-map =
+ 1-cell-globular-map globular-map-lax-transitive-globular-map
+
+ 1-cell-globular-map-lax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ globular-map-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-lax-transitive-globular-map x)
+ ( 0-cell-lax-transitive-globular-map y))
+ 1-cell-globular-map-lax-transitive-globular-map =
+ 1-cell-globular-map-globular-map globular-map-lax-transitive-globular-map
+
+ 2-cell-lax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G}
+ {f g : 1-cell-Transitive-Globular-Type G x y} →
+ 2-cell-Transitive-Globular-Type G f g →
+ 2-cell-Transitive-Globular-Type H
+ ( 1-cell-lax-transitive-globular-map f)
+ ( 1-cell-lax-transitive-globular-map g)
+ 2-cell-lax-transitive-globular-map =
+ 2-cell-globular-map globular-map-lax-transitive-globular-map
+
+ 2-cell-globular-map-lax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G}
+ {f g : 1-cell-Transitive-Globular-Type G x y} →
+ globular-map-Transitive-Globular-Type
+ ( 2-cell-transitive-globular-type-Transitive-Globular-Type G f g)
+ ( 2-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 1-cell-lax-transitive-globular-map f)
+ ( 1-cell-lax-transitive-globular-map g))
+ 2-cell-globular-map-lax-transitive-globular-map =
+ 2-cell-globular-map-globular-map
+ ( globular-map-lax-transitive-globular-map)
+ ( _)
+ ( _)
+
+ field
+ is-lax-transitive-lax-transitive-globular-map :
+ is-lax-transitive-globular-map G H
+ globular-map-lax-transitive-globular-map
+
+ preserves-comp-1-cell-lax-transitive-globular-map :
+ {x y z : 0-cell-Transitive-Globular-Type G}
+ (q : 1-cell-Transitive-Globular-Type G y z)
+ (p : 1-cell-Transitive-Globular-Type G x y) →
+ 2-cell-Transitive-Globular-Type H
+ ( comp-1-cell-Transitive-Globular-Type H
+ ( 1-cell-lax-transitive-globular-map q)
+ ( 1-cell-lax-transitive-globular-map p))
+ ( 1-cell-lax-transitive-globular-map
+ ( comp-1-cell-Transitive-Globular-Type G q p))
+ preserves-comp-1-cell-lax-transitive-globular-map =
+ preserves-comp-1-cell-is-lax-transitive-globular-map
+ is-lax-transitive-lax-transitive-globular-map
+
+ is-lax-transitive-1-cell-globular-map-lax-transitive-globular-map :
+ { x y : 0-cell-Transitive-Globular-Type G} →
+ is-lax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-lax-transitive-globular-map x)
+ ( 0-cell-lax-transitive-globular-map y))
+ ( 1-cell-globular-map-lax-transitive-globular-map)
+ is-lax-transitive-1-cell-globular-map-lax-transitive-globular-map =
+ is-lax-transitive-1-cell-globular-map-is-lax-transitive-globular-map
+ is-lax-transitive-lax-transitive-globular-map
+
+ 1-cell-lax-transitive-globular-map-lax-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ lax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-lax-transitive-globular-map x)
+ ( 0-cell-lax-transitive-globular-map y))
+ globular-map-lax-transitive-globular-map
+ 1-cell-lax-transitive-globular-map-lax-transitive-globular-map =
+ 1-cell-globular-map-lax-transitive-globular-map
+ is-lax-transitive-lax-transitive-globular-map
+ 1-cell-lax-transitive-globular-map-lax-transitive-globular-map =
+ is-lax-transitive-1-cell-globular-map-lax-transitive-globular-map
+
+open lax-transitive-globular-map public
+```
+
+### Composition of lax transitive maps
+
+```agda
+map-comp-lax-transitive-globular-map :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4)
+ (K : Transitive-Globular-Type l5 l6) →
+ lax-transitive-globular-map H K → lax-transitive-globular-map G H →
+ globular-map-Transitive-Globular-Type G K
+map-comp-lax-transitive-globular-map G H K g f =
+ comp-globular-map
+ ( globular-map-lax-transitive-globular-map g)
+ ( globular-map-lax-transitive-globular-map f)
+
+is-lax-transitive-comp-lax-transitive-globular-map :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4)
+ (K : Transitive-Globular-Type l5 l6) →
+ (g : lax-transitive-globular-map H K)
+ (f : lax-transitive-globular-map G H) →
+ is-lax-transitive-globular-map G K
+ ( map-comp-lax-transitive-globular-map G H K g f)
+preserves-comp-1-cell-is-lax-transitive-globular-map
+ ( is-lax-transitive-comp-lax-transitive-globular-map G H K g f) q p =
+ comp-2-cell-Transitive-Globular-Type K
+ ( 2-cell-lax-transitive-globular-map g
+ ( preserves-comp-1-cell-lax-transitive-globular-map f q p))
+ ( preserves-comp-1-cell-lax-transitive-globular-map g _ _)
+is-lax-transitive-1-cell-globular-map-is-lax-transitive-globular-map
+ ( is-lax-transitive-comp-lax-transitive-globular-map G H K g f) =
+ is-lax-transitive-comp-lax-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G _ _)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H _ _)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type K _ _)
+ ( 1-cell-lax-transitive-globular-map-lax-transitive-globular-map g)
+ ( 1-cell-lax-transitive-globular-map-lax-transitive-globular-map f)
+```
diff --git a/src/structured-types/maps-globular-types.lagda.md b/src/structured-types/maps-globular-types.lagda.md
deleted file mode 100644
index 897076319b..0000000000
--- a/src/structured-types/maps-globular-types.lagda.md
+++ /dev/null
@@ -1,136 +0,0 @@
-# Maps between globular types
-
-```agda
-{-# OPTIONS --guardedness #-}
-
-module structured-types.maps-globular-types where
-```
-
-Imports
-
-```agda
-open import foundation.dependent-pair-types
-open import foundation.function-types
-open import foundation.identity-types
-open import foundation.universe-levels
-
-open import structured-types.globular-types
-```
-
-
-
-## Idea
-
-A {{#concept "map" Disambiguation="globular types" Agda=map-Globular-Type}} `f`
-between [globular types](structured-types.globular-types.md) `A` and `B` is a
-map `F₀` of $0$-cells, and for every pair of $n$-cells `x` and `y`, a map of
-$(n+1)$-cells
-
-```text
- Fₙ₊₁ : (𝑛+1)-Cell A x y → (𝑛+1)-Cell B (Fₙ x) (Fₙ y).
-```
-
-## Definitions
-
-### Maps between globular types
-
-```agda
-record
- map-Globular-Type
- {l1 l2 l3 l4 : Level} (A : Globular-Type l1 l2) (B : Globular-Type l3 l4)
- : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
- where
- coinductive
- field
- 0-cell-map-Globular-Type :
- 0-cell-Globular-Type A → 0-cell-Globular-Type B
-
- globular-type-1-cell-map-Globular-Type :
- {x y : 0-cell-Globular-Type A} →
- map-Globular-Type
- ( 1-cell-globular-type-Globular-Type A x y)
- ( 1-cell-globular-type-Globular-Type B
- ( 0-cell-map-Globular-Type x)
- ( 0-cell-map-Globular-Type y))
-
-open map-Globular-Type public
-
-module _
- {l1 l2 l3 l4 : Level}
- {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
- (F : map-Globular-Type A B)
- where
-
- 1-cell-map-Globular-Type :
- {x y : 0-cell-Globular-Type A} →
- 1-cell-Globular-Type A x y →
- 1-cell-Globular-Type B
- ( 0-cell-map-Globular-Type F x)
- ( 0-cell-map-Globular-Type F y)
- 1-cell-map-Globular-Type =
- 0-cell-map-Globular-Type (globular-type-1-cell-map-Globular-Type F)
-
-module _
- {l1 l2 l3 l4 : Level}
- {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
- (F : map-Globular-Type A B)
- where
-
- 2-cell-map-Globular-Type :
- {x y : 0-cell-Globular-Type A}
- {f g : 1-cell-Globular-Type A x y} →
- 2-cell-Globular-Type A f g →
- 2-cell-Globular-Type B
- ( 1-cell-map-Globular-Type F f)
- ( 1-cell-map-Globular-Type F g)
- 2-cell-map-Globular-Type =
- 1-cell-map-Globular-Type (globular-type-1-cell-map-Globular-Type F)
-
-module _
- {l1 l2 l3 l4 : Level}
- {A : Globular-Type l1 l2} {B : Globular-Type l3 l4}
- (F : map-Globular-Type A B)
- where
-
- 3-cell-map-Globular-Type :
- {x y : 0-cell-Globular-Type A}
- {f g : 1-cell-Globular-Type A x y} →
- {H K : 2-cell-Globular-Type A f g} →
- 3-cell-Globular-Type A H K →
- 3-cell-Globular-Type B
- ( 2-cell-map-Globular-Type F H)
- ( 2-cell-map-Globular-Type F K)
- 3-cell-map-Globular-Type =
- 2-cell-map-Globular-Type (globular-type-1-cell-map-Globular-Type F)
-```
-
-### The identity map on a globular type
-
-```agda
-id-map-Globular-Type :
- {l1 l2 : Level} (A : Globular-Type l1 l2) → map-Globular-Type A A
-id-map-Globular-Type A =
- λ where
- .0-cell-map-Globular-Type → id
- .globular-type-1-cell-map-Globular-Type {x} {y} →
- id-map-Globular-Type (1-cell-globular-type-Globular-Type A x y)
-```
-
-### Composition of maps of globular types
-
-```agda
-comp-map-Globular-Type :
- {l1 l2 l3 l4 l5 l6 : Level}
- {A : Globular-Type l1 l2}
- {B : Globular-Type l3 l4}
- {C : Globular-Type l5 l6} →
- map-Globular-Type B C → map-Globular-Type A B → map-Globular-Type A C
-comp-map-Globular-Type g f =
- λ where
- .0-cell-map-Globular-Type →
- 0-cell-map-Globular-Type g ∘ 0-cell-map-Globular-Type f
- .globular-type-1-cell-map-Globular-Type →
- comp-map-Globular-Type
- ( globular-type-1-cell-map-Globular-Type g)
- ( globular-type-1-cell-map-Globular-Type f)
-```
diff --git a/src/structured-types/maps-large-globular-types.lagda.md b/src/structured-types/maps-large-globular-types.lagda.md
deleted file mode 100644
index be0963436a..0000000000
--- a/src/structured-types/maps-large-globular-types.lagda.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# Maps between large globular types
-
-```agda
-{-# OPTIONS --guardedness #-}
-
-module structured-types.maps-large-globular-types where
-```
-
-Imports
-
-```agda
-open import foundation.dependent-pair-types
-open import foundation.identity-types
-open import foundation.universe-levels
-
-open import structured-types.globular-types
-open import structured-types.large-globular-types
-open import structured-types.maps-globular-types
-```
-
-
-
-## Idea
-
-A
-{{#concept "map" Disambiguation="large globular types" Agda=map-Large-Globular-Type}}
-`f` between [large globular types](structured-types.large-globular-types.md) `A`
-and `B` is a map `F₀` of $0$-cells, and for every pair of $n$-cells `x` and `y`,
-a map of $(n+1)$-cells
-
-```text
- Fₙ₊₁ : (𝑛+1)-Cell A x y → (𝑛+1)-Cell B (Fₙ x) (Fₙ y).
-```
-
-## Definitions
-
-### Maps between large globular types
-
-```agda
-record
- map-Large-Globular-Type
- {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (δ : Level → Level)
- (A : Large-Globular-Type α1 β1) (B : Large-Globular-Type α2 β2) : UUω
- where
- field
- 0-cell-map-Large-Globular-Type :
- {l : Level} →
- 0-cell-Large-Globular-Type A l → 0-cell-Large-Globular-Type B (δ l)
-
- globular-type-1-cell-map-Large-Globular-Type :
- {l1 l2 : Level}
- {x : 0-cell-Large-Globular-Type A l1}
- {y : 0-cell-Large-Globular-Type A l2} →
- map-Globular-Type
- ( globular-type-1-cell-Large-Globular-Type A x y)
- ( globular-type-1-cell-Large-Globular-Type B
- ( 0-cell-map-Large-Globular-Type x)
- ( 0-cell-map-Large-Globular-Type y))
-
-open map-Large-Globular-Type public
-
-module _
- {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {δ : Level → Level}
- {A : Large-Globular-Type α1 β1} {B : Large-Globular-Type α2 β2}
- (F : map-Large-Globular-Type δ A B)
- where
-
- 1-cell-map-Large-Globular-Type :
- {l1 l2 : Level}
- {x : 0-cell-Large-Globular-Type A l1}
- {y : 0-cell-Large-Globular-Type A l2} →
- 1-cell-Large-Globular-Type A x y →
- 1-cell-Large-Globular-Type B
- ( 0-cell-map-Large-Globular-Type F x)
- ( 0-cell-map-Large-Globular-Type F y)
- 1-cell-map-Large-Globular-Type =
- 0-cell-map-Globular-Type (globular-type-1-cell-map-Large-Globular-Type F)
-
-module _
- {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {δ : Level → Level}
- {A : Large-Globular-Type α1 β1} {B : Large-Globular-Type α2 β2}
- (F : map-Large-Globular-Type δ A B)
- where
-
- 2-cell-map-Large-Globular-Type :
- {l1 l2 : Level}
- {x : 0-cell-Large-Globular-Type A l1}
- {y : 0-cell-Large-Globular-Type A l2} →
- {f g : 1-cell-Large-Globular-Type A x y} →
- 2-cell-Large-Globular-Type A f g →
- 2-cell-Large-Globular-Type B
- ( 1-cell-map-Large-Globular-Type F f)
- ( 1-cell-map-Large-Globular-Type F g)
- 2-cell-map-Large-Globular-Type =
- 1-cell-map-Globular-Type (globular-type-1-cell-map-Large-Globular-Type F)
-
-module _
- {α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {δ : Level → Level}
- {A : Large-Globular-Type α1 β1} {B : Large-Globular-Type α2 β2}
- (F : map-Large-Globular-Type δ A B)
- where
-
- 3-cell-map-Large-Globular-Type :
- {l1 l2 : Level}
- {x : 0-cell-Large-Globular-Type A l1}
- {y : 0-cell-Large-Globular-Type A l2} →
- {f g : 1-cell-Large-Globular-Type A x y} →
- {H K : 2-cell-Large-Globular-Type A f g} →
- 3-cell-Large-Globular-Type A H K →
- 3-cell-Large-Globular-Type B
- ( 2-cell-map-Large-Globular-Type F H)
- ( 2-cell-map-Large-Globular-Type F K)
- 3-cell-map-Large-Globular-Type =
- 2-cell-map-Globular-Type (globular-type-1-cell-map-Large-Globular-Type F)
-```
diff --git a/src/structured-types/points-globular-types.lagda.md b/src/structured-types/points-globular-types.lagda.md
new file mode 100644
index 0000000000..2b12869c68
--- /dev/null
+++ b/src/structured-types/points-globular-types.lagda.md
@@ -0,0 +1,92 @@
+# Points of globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.points-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.unit-type
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.globular-types
+open import structured-types.unit-globular-type
+```
+
+
+
+## Idea
+
+A {{#concept "point" Disambiguation="globular type" Agda=point-Globular-Type}}
+of a [globular type](structured-types.globular-types.md) `G` consists of a
+0-cell `x₀ : G₀` and a point in the globular type `G' x₀ x₀` of 1-cells from
+`x₀` to itself. Equivalently, a point is a
+[globular map](structured-types.globular-maps.md) from the
+[unit globular type](structured-types.unit-globular-type.md) `𝟏` to `G`.
+
+## Definitions
+
+### Points of globular types
+
+```agda
+record point-Globular-Type
+ {l1 l2 : Level} (G : Globular-Type l1 l2) : UU (l1 ⊔ l2)
+ where
+ coinductive
+
+ field
+ 0-cell-point-Globular-Type : 0-cell-Globular-Type G
+
+ field
+ 1-cell-point-point-Globular-Type :
+ point-Globular-Type
+ ( 1-cell-globular-type-Globular-Type G
+ ( 0-cell-point-Globular-Type)
+ ( 0-cell-point-Globular-Type))
+
+open point-Globular-Type public
+
+1-cell-point-Globular-Type :
+ {l1 l2 : Level} (G : Globular-Type l1 l2) (x : point-Globular-Type G) →
+ 1-cell-Globular-Type G
+ (0-cell-point-Globular-Type x)
+ ( 0-cell-point-Globular-Type x)
+1-cell-point-Globular-Type G x =
+ 0-cell-point-Globular-Type (1-cell-point-point-Globular-Type x)
+```
+
+## Properties
+
+### Evaluating globular maps at points
+
+```agda
+ev-point-globular-map :
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2} {H : Globular-Type l3 l4}
+ (f : globular-map G H) → point-Globular-Type G → point-Globular-Type H
+0-cell-point-Globular-Type (ev-point-globular-map f x) =
+ 0-cell-globular-map f (0-cell-point-Globular-Type x)
+1-cell-point-point-Globular-Type (ev-point-globular-map f x) =
+ ev-point-globular-map
+ ( 1-cell-globular-map-globular-map f)
+ ( 1-cell-point-point-Globular-Type x)
+```
+
+### Points are globular maps from the terminal globular type
+
+#### The globular map associated to a point of a globular type
+
+```agda
+globular-map-point-Globular-Type :
+ {l1 l2 : Level} (G : Globular-Type l1 l2) →
+ point-Globular-Type G → globular-map unit-Globular-Type G
+0-cell-globular-map (globular-map-point-Globular-Type G x) star =
+ 0-cell-point-Globular-Type x
+1-cell-globular-map-globular-map (globular-map-point-Globular-Type G x) =
+ globular-map-point-Globular-Type
+ ( 1-cell-globular-type-Globular-Type G _ _)
+ ( 1-cell-point-point-Globular-Type x)
+```
diff --git a/src/structured-types/points-reflexive-globular-types.lagda.md b/src/structured-types/points-reflexive-globular-types.lagda.md
new file mode 100644
index 0000000000..6fd4796567
--- /dev/null
+++ b/src/structured-types/points-reflexive-globular-types.lagda.md
@@ -0,0 +1,65 @@
+# Points of reflexive globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.points-reflexive-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.points-globular-types
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+Consider a
+[reflexive globular type](structured-types.reflexive-globular-types.md) `G`. A
+{{#concept "point" Disambiguation="reflexive globular type" Agda=point-Reflexive-Globular-Type}}
+of `G` is a 0-cell of `G`. Equivalently, a point of `G` is a
+[reflexive globular map](structured-types.reflexive-globular-maps.md) from the
+[unit reflexive globular type](structured-types.unit-reflexive-globular-type.md)
+into `G`.
+
+The definition of points of reflexive globular types is much simpler than the
+definition of [points](structured-types.points-globular-types.md) of ordinary
+[globular types](structured-types.globular-types.md). This is due to the
+condition that reflexive globular maps preserve reflexivity, and therefore the
+type of higher cells relating the underlying 0-cell to itself is
+[contractible](foundation-core.contractible-types.md).
+
+## Definitions
+
+### Points of reflexive globular types
+
+```agda
+module _
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2)
+ where
+
+ point-Reflexive-Globular-Type : UU l1
+ point-Reflexive-Globular-Type = 0-cell-Reflexive-Globular-Type G
+```
+
+### The underlying points of the underlying globular type of a reflexive globular type
+
+```agda
+point-globular-type-point-Reflexive-Globular-Type :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ point-Reflexive-Globular-Type G →
+ point-Globular-Type (globular-type-Reflexive-Globular-Type G)
+0-cell-point-Globular-Type
+ ( point-globular-type-point-Reflexive-Globular-Type G x) =
+ x
+1-cell-point-point-Globular-Type
+ ( point-globular-type-point-Reflexive-Globular-Type G x) =
+ point-globular-type-point-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x x)
+ ( refl-1-cell-Reflexive-Globular-Type G)
+```
diff --git a/src/structured-types/pointwise-extensions-binary-families-globular-types.lagda.md b/src/structured-types/pointwise-extensions-binary-families-globular-types.lagda.md
new file mode 100644
index 0000000000..ce6542132c
--- /dev/null
+++ b/src/structured-types/pointwise-extensions-binary-families-globular-types.lagda.md
@@ -0,0 +1,81 @@
+# Pointwise extensions of binary families of globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module
+ structured-types.pointwise-extensions-binary-families-globular-types
+ where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.binary-dependent-globular-types
+open import structured-types.globular-equivalences
+open import structured-types.globular-types
+open import structured-types.points-globular-types
+```
+
+
+
+## Idea
+
+Consider two [globular types](structured-types.globular-types.md) `G` and `H`,
+and a binary family
+
+```text
+ K : G₀ → H₀ → Globular-Type
+```
+
+of globular types, indexed over the 0-cells of `G` and `H`. Furthermore,
+consider a
+[binary dependent globular type](structured-types.binary-dependent-globular-types.md)
+`L` over `G` and `H`. We say that `L` is a
+{{#concept "pointwise extension" Disambiguation="binary family of globular types" Agda=is-pointwise-extension-binary-family-globular-types}}
+of `K` if it comes equipped with a family of
+[globular equivalences](structured-types.globular-equivalences.md)
+
+```text
+ (x : point G) (y : point H) → ev-point L x y ≃ K x₀ y₀.
+```
+
+## Definitions
+
+### The predicate of being a pointwise extension of a binary family of globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 l7 l8 : Level}
+ {G : Globular-Type l1 l2} {H : Globular-Type l3 l4}
+ (K : 0-cell-Globular-Type G → 0-cell-Globular-Type H → Globular-Type l5 l6)
+ (L : Binary-Dependent-Globular-Type l7 l8 G H)
+ where
+
+ is-pointwise-extension-binary-family-globular-types :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6 ⊔ l7 ⊔ l8)
+ is-pointwise-extension-binary-family-globular-types =
+ (x : point-Globular-Type G) (y : point-Globular-Type H) →
+ globular-equiv
+ ( ev-point-Binary-Dependent-Globular-Type L x y)
+ ( K (0-cell-point-Globular-Type x) (0-cell-point-Globular-Type y))
+```
+
+### The type of pointwise extensions of a binary family of globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} (l7 l8 : Level)
+ {G : Globular-Type l1 l2} {H : Globular-Type l3 l4}
+ (K : 0-cell-Globular-Type G → 0-cell-Globular-Type H → Globular-Type l5 l6)
+ where
+
+ pointwise-extension-binary-family-globular-types :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6 ⊔ lsuc l7 ⊔ lsuc l8)
+ pointwise-extension-binary-family-globular-types =
+ Σ ( Binary-Dependent-Globular-Type l7 l8 G H)
+ ( is-pointwise-extension-binary-family-globular-types K)
+```
diff --git a/src/structured-types/pointwise-extensions-binary-families-reflexive-globular-types.lagda.md b/src/structured-types/pointwise-extensions-binary-families-reflexive-globular-types.lagda.md
new file mode 100644
index 0000000000..0a12b441c1
--- /dev/null
+++ b/src/structured-types/pointwise-extensions-binary-families-reflexive-globular-types.lagda.md
@@ -0,0 +1,87 @@
+# Pointwise extensions of binary families of reflexive globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module
+ structured-types.pointwise-extensions-binary-families-reflexive-globular-types
+ where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.binary-dependent-reflexive-globular-types
+open import structured-types.points-reflexive-globular-types
+open import structured-types.reflexive-globular-equivalences
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+Consider two
+[reflexive globular types](structured-types.reflexive-globular-types.md) `G` and
+`H`, and a binary family
+
+```text
+ K : G₀ → H₀ → Reflexive-Globular-Type
+```
+
+of reflexive globular types, indexed over the 0-cells of `G` and `H`.
+Furthermore, consider a
+[binary dependent reflexive globular type](structured-types.binary-dependent-reflexive-globular-types.md)
+`L` over `G` and `H`. We say that `L` is a
+{{#concept "pointwise extension" Disambiguation="binary family of reflexive globular types" Agda=is-pointwise-extension-binary-family-reflexive-globular-types}}
+of `K` if it comes equipped with a family of
+[reflexive globular equivalences](structured-types.reflexive-globular-equivalences.md)
+
+```text
+ (x : point G) (y : point H) → ev-point L x y ≃ K x₀ y₀.
+```
+
+## Definitions
+
+### The predicate of being a pointwise extension of a binary family of reflexive globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 l7 l8 : Level}
+ {G : Reflexive-Globular-Type l1 l2} {H : Reflexive-Globular-Type l3 l4}
+ (K :
+ 0-cell-Reflexive-Globular-Type G →
+ 0-cell-Reflexive-Globular-Type H → Reflexive-Globular-Type l5 l6)
+ (L : Binary-Dependent-Reflexive-Globular-Type l7 l8 G H)
+ where
+
+ is-pointwise-extension-binary-family-reflexive-globular-types :
+ UU (l1 ⊔ l3 ⊔ l5 ⊔ l6 ⊔ l7 ⊔ l8)
+ is-pointwise-extension-binary-family-reflexive-globular-types =
+ (x : point-Reflexive-Globular-Type G)
+ (y : point-Reflexive-Globular-Type H) →
+ reflexive-globular-equiv
+ ( ev-point-Binary-Dependent-Reflexive-Globular-Type G H L x y)
+ ( K x y)
+```
+
+### The type of pointwise extensions of a binary family of reflexive globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} (l7 l8 : Level)
+ (G : Reflexive-Globular-Type l1 l2) (H : Reflexive-Globular-Type l3 l4)
+ (K :
+ 0-cell-Reflexive-Globular-Type G →
+ 0-cell-Reflexive-Globular-Type H → Reflexive-Globular-Type l5 l6)
+ where
+
+ pointwise-extension-binary-family-reflexive-globular-types :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6 ⊔ lsuc l7 ⊔ lsuc l8)
+ pointwise-extension-binary-family-reflexive-globular-types =
+ Σ ( Binary-Dependent-Reflexive-Globular-Type l7 l8 G H)
+ ( is-pointwise-extension-binary-family-reflexive-globular-types K)
+```
diff --git a/src/structured-types/pointwise-extensions-families-globular-types.lagda.md b/src/structured-types/pointwise-extensions-families-globular-types.lagda.md
new file mode 100644
index 0000000000..6517b61aaa
--- /dev/null
+++ b/src/structured-types/pointwise-extensions-families-globular-types.lagda.md
@@ -0,0 +1,74 @@
+# Pointwise extensions of families of globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.pointwise-extensions-families-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.dependent-globular-types
+open import structured-types.globular-equivalences
+open import structured-types.globular-types
+open import structured-types.points-globular-types
+```
+
+
+
+## Idea
+
+Consider a family of [globular types](structured-types.globular-types.md)
+`H : G₀ → Globular-Type` indexed by the 0-cells of a globular type `G` and
+consider a
+[dependent globular type](structured-types.dependent-globular-types.md) `K` over
+`G`. We say that `K` is a
+{{#concept "pointwise extension" Disambiguation="family of globular types" Agda=is-pointwise-extension-family-of-globular-types-Dependent-Globular-Type}}
+of `H` if it comes equipped with a family of
+[globular equivalences](structured-types.globular-equivalences.md)
+
+```text
+ ev-point K x ≃ H x₀
+```
+
+indexed by the [points](structured-types.points-globular-types.md) of `G`.
+
+## Definitions
+
+### The predicate of being a pointwise extension of a family of globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} {G : Globular-Type l1 l2}
+ (H : 0-cell-Globular-Type G → Globular-Type l3 l4)
+ (K : Dependent-Globular-Type l5 l6 G)
+ where
+
+ is-pointwise-extension-family-of-globular-types-Dependent-Globular-Type :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ is-pointwise-extension-family-of-globular-types-Dependent-Globular-Type =
+ (x : point-Globular-Type G) →
+ globular-equiv
+ ( ev-point-Dependent-Globular-Type K x)
+ ( H (0-cell-point-Globular-Type x))
+```
+
+### The type of pointwise extensions of a family of globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (l5 l6 : Level) (G : Globular-Type l1 l2)
+ (H : 0-cell-Globular-Type G → Globular-Type l3 l4)
+ where
+
+ pointwise-extension-family-of-globular-types :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ lsuc l5 ⊔ lsuc l6)
+ pointwise-extension-family-of-globular-types =
+ Σ ( Dependent-Globular-Type l5 l6 G)
+ ( is-pointwise-extension-family-of-globular-types-Dependent-Globular-Type
+ H)
+```
diff --git a/src/structured-types/pointwise-extensions-families-reflexive-globular-types.lagda.md b/src/structured-types/pointwise-extensions-families-reflexive-globular-types.lagda.md
new file mode 100644
index 0000000000..88e43b9887
--- /dev/null
+++ b/src/structured-types/pointwise-extensions-families-reflexive-globular-types.lagda.md
@@ -0,0 +1,81 @@
+# Pointwise extensions of families of reflexive globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module
+ structured-types.pointwise-extensions-families-reflexive-globular-types
+ where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.dependent-globular-types
+open import structured-types.dependent-reflexive-globular-types
+open import structured-types.globular-types
+open import structured-types.points-globular-types
+open import structured-types.points-reflexive-globular-types
+open import structured-types.reflexive-globular-equivalences
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+Consider a family of
+[reflexive globular types](structured-types.reflexive-globular-types.md)
+`H : G₀ → Reflexive-Globular-Type` indexed by the 0-cells of a reflexive
+globular type `G` and consider a
+[dependent reflexive globular type](structured-types.dependent-reflexive-globular-types.md)
+`K` over `G`. We say that `K` is a
+{{#concept "pointwise extension" Disambiguation="family of reflexive globular types"}}
+of `H` if it comes equipped with a family of
+[reflexive globular equivalences](structured-types.reflexive-globular-equivalences.md)
+
+```text
+ ev-point K x ≃ H x₀
+```
+
+indexed by the [points](structured-types.points-reflexive-globular-types.md) of
+`G`.
+
+## Definitions
+
+### The predicate of being a pointwise extension of a family of reflexive globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 l5 l6 : Level} {G : Reflexive-Globular-Type l1 l2}
+ (H : 0-cell-Reflexive-Globular-Type G → Reflexive-Globular-Type l3 l4)
+ (K : Dependent-Reflexive-Globular-Type l5 l6 G)
+ where
+
+ is-pointwise-extension-family-of-reflexive-globular-types-Dependent-Reflexive-Globular-Type :
+ UU (l1 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6)
+ is-pointwise-extension-family-of-reflexive-globular-types-Dependent-Reflexive-Globular-Type =
+ (x : point-Reflexive-Globular-Type G) →
+ reflexive-globular-equiv
+ ( ev-point-Dependent-Reflexive-Globular-Type K x)
+ ( H x)
+```
+
+### The type of pointwise extensions of a family of reflexive globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} (l5 l6 : Level) (G : Reflexive-Globular-Type l1 l2)
+ (H : 0-cell-Reflexive-Globular-Type G → Reflexive-Globular-Type l3 l4)
+ where
+
+ pointwise-extension-family-of-reflexive-globular-types :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ lsuc l5 ⊔ lsuc l6)
+ pointwise-extension-family-of-reflexive-globular-types =
+ Σ ( Dependent-Reflexive-Globular-Type l5 l6 G)
+ ( is-pointwise-extension-family-of-reflexive-globular-types-Dependent-Reflexive-Globular-Type
+ H)
+```
diff --git a/src/structured-types/products-families-of-globular-types.lagda.md b/src/structured-types/products-families-of-globular-types.lagda.md
new file mode 100644
index 0000000000..844b8e7aaa
--- /dev/null
+++ b/src/structured-types/products-families-of-globular-types.lagda.md
@@ -0,0 +1,117 @@
+# Products of families of globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.products-families-of-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+Consider a family `G : I → Globular-Type` of
+[globular types](structured-types.globular-types.md) indexed by a type `I`. The
+{{#concept "indexed product" Disambiguation="family of globular types" Agda=indexed-product-Globular-Type}}
+`Π_I G` is the globular type given by
+
+```text
+ (Π_I G)₀ := (i : I) → (G i)₀
+ (Π_I G)' x y := Π_I (λ i → (G i)' (x i) (y i)).
+```
+
+## Definitions
+
+### Indexed products of globular types
+
+```agda
+module _
+ {l1 : Level} {I : UU l1}
+ where
+
+ 0-cell-indexed-product-Globular-Type :
+ {l2 l3 : Level} (G : I → Globular-Type l2 l3) → UU (l1 ⊔ l2)
+ 0-cell-indexed-product-Globular-Type G =
+ (i : I) → 0-cell-Globular-Type (G i)
+
+ 1-cell-indexed-product-Globular-Type :
+ {l2 l3 : Level} (G : I → Globular-Type l2 l3)
+ (x y : 0-cell-indexed-product-Globular-Type G) → UU (l1 ⊔ l3)
+ 1-cell-indexed-product-Globular-Type G x y =
+ (i : I) → 1-cell-Globular-Type (G i) (x i) (y i)
+
+ indexed-product-Globular-Type :
+ {l2 l3 : Level} (G : I → Globular-Type l2 l3) →
+ Globular-Type (l1 ⊔ l2) (l1 ⊔ l3)
+ 0-cell-Globular-Type (indexed-product-Globular-Type G) =
+ 0-cell-indexed-product-Globular-Type G
+ 1-cell-globular-type-Globular-Type (indexed-product-Globular-Type G) x y =
+ indexed-product-Globular-Type
+ ( λ i → 1-cell-globular-type-Globular-Type (G i) (x i) (y i))
+```
+
+### Double indexed products of families of globular types
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level} {I : UU l1} {J : I → UU l2}
+ (G : (i : I) (j : J i) → Globular-Type l3 l4)
+ where
+
+ 0-cell-double-indexed-product-Globular-Type : UU (l1 ⊔ l2 ⊔ l3)
+ 0-cell-double-indexed-product-Globular-Type =
+ 0-cell-indexed-product-Globular-Type
+ ( λ i → indexed-product-Globular-Type (G i))
+
+ 1-cell-double-indexed-product-Globular-Type :
+ (x y : 0-cell-double-indexed-product-Globular-Type) → UU (l1 ⊔ l2 ⊔ l4)
+ 1-cell-double-indexed-product-Globular-Type =
+ 1-cell-indexed-product-Globular-Type
+ ( λ i → indexed-product-Globular-Type (G i))
+
+ double-indexed-product-Globular-Type :
+ Globular-Type (l1 ⊔ l2 ⊔ l3) (l1 ⊔ l2 ⊔ l4)
+ double-indexed-product-Globular-Type =
+ indexed-product-Globular-Type
+ ( λ i → indexed-product-Globular-Type (G i))
+```
+
+### Evaluating globular maps into exponents of globular types
+
+```agda
+ev-hom-indexed-product-Globular-Type :
+ {l1 l2 l3 l4 l5 : Level} {I : UU l1}
+ {G : Globular-Type l2 l3} {H : I → Globular-Type l4 l5}
+ (f : globular-map G (indexed-product-Globular-Type H)) →
+ (i : I) → globular-map G (H i)
+0-cell-globular-map (ev-hom-indexed-product-Globular-Type f i) x =
+ 0-cell-globular-map f x i
+1-cell-globular-map-globular-map
+ ( ev-hom-indexed-product-Globular-Type f i) =
+ ev-hom-indexed-product-Globular-Type (1-cell-globular-map-globular-map f) i
+```
+
+### Binding families of globular maps
+
+```agda
+bind-indexed-family-globular-maps :
+ {l1 l2 l3 l4 l5 : Level} {I : UU l1}
+ {G : Globular-Type l2 l3} {H : I → Globular-Type l4 l5}
+ (f : (i : I) → globular-map G (H i)) →
+ globular-map G (indexed-product-Globular-Type H)
+0-cell-globular-map (bind-indexed-family-globular-maps f) x i =
+ 0-cell-globular-map (f i) x
+1-cell-globular-map-globular-map (bind-indexed-family-globular-maps f) =
+ bind-indexed-family-globular-maps
+ ( λ i → 1-cell-globular-map-globular-map (f i))
+```
diff --git a/src/structured-types/reflexive-globular-equivalences.lagda.md b/src/structured-types/reflexive-globular-equivalences.lagda.md
new file mode 100644
index 0000000000..5931233158
--- /dev/null
+++ b/src/structured-types/reflexive-globular-equivalences.lagda.md
@@ -0,0 +1,266 @@
+# Equivalences between reflexive globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.reflexive-globular-equivalences where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-functions
+open import foundation.dependent-pair-types
+open import foundation.equivalences
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.globular-equivalences
+open import structured-types.globular-maps
+open import structured-types.reflexive-globular-maps
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "reflexive globular equivalence" Agda=reflexive-globular-equiv}}
+`e` between
+[reflexive-globular types](structured-types.reflexive-globular-types.md) `A` and
+`B` is a [globular equivalence](structured-types.globular-equivalences.md) that
+preserves reflexivity.
+
+## Definitions
+
+### The predicate on globular equivalences of preserving reflexivity
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4)
+ where
+
+ preserves-refl-globular-equiv :
+ globular-equiv
+ ( globular-type-Reflexive-Globular-Type G)
+ ( globular-type-Reflexive-Globular-Type H) →
+ UU (l1 ⊔ l2 ⊔ l4)
+ preserves-refl-globular-equiv e =
+ preserves-refl-globular-map G H (globular-map-globular-equiv e)
+```
+
+### Equivalences between globular types
+
+```agda
+record
+ reflexive-globular-equiv
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+
+ field
+ globular-equiv-reflexive-globular-equiv :
+ globular-equiv
+ ( globular-type-Reflexive-Globular-Type G)
+ ( globular-type-Reflexive-Globular-Type H)
+
+ 0-cell-equiv-reflexive-globular-equiv :
+ 0-cell-Reflexive-Globular-Type G ≃ 0-cell-Reflexive-Globular-Type H
+ 0-cell-equiv-reflexive-globular-equiv =
+ 0-cell-equiv-globular-equiv globular-equiv-reflexive-globular-equiv
+
+ 0-cell-reflexive-globular-equiv :
+ 0-cell-Reflexive-Globular-Type G → 0-cell-Reflexive-Globular-Type H
+ 0-cell-reflexive-globular-equiv =
+ 0-cell-globular-equiv globular-equiv-reflexive-globular-equiv
+
+ 1-cell-equiv-reflexive-globular-equiv :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ 1-cell-Reflexive-Globular-Type G x y ≃
+ 1-cell-Reflexive-Globular-Type H
+ ( 0-cell-reflexive-globular-equiv x)
+ ( 0-cell-reflexive-globular-equiv y)
+ 1-cell-equiv-reflexive-globular-equiv =
+ 1-cell-equiv-globular-equiv globular-equiv-reflexive-globular-equiv
+
+ 1-cell-reflexive-globular-equiv :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ 1-cell-Reflexive-Globular-Type G x y →
+ 1-cell-Reflexive-Globular-Type H
+ ( 0-cell-reflexive-globular-equiv x)
+ ( 0-cell-reflexive-globular-equiv y)
+ 1-cell-reflexive-globular-equiv =
+ 1-cell-globular-equiv globular-equiv-reflexive-globular-equiv
+
+ 1-cell-globular-equiv-reflexive-globular-equiv :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ globular-equiv
+ ( 1-cell-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-reflexive-globular-equiv x)
+ ( 0-cell-reflexive-globular-equiv y))
+ 1-cell-globular-equiv-reflexive-globular-equiv =
+ 1-cell-globular-equiv-globular-equiv
+ globular-equiv-reflexive-globular-equiv
+
+ 2-cell-equiv-reflexive-globular-equiv :
+ {x y : 0-cell-Reflexive-Globular-Type G}
+ {f g : 1-cell-Reflexive-Globular-Type G x y} →
+ 2-cell-Reflexive-Globular-Type G f g ≃
+ 2-cell-Reflexive-Globular-Type H
+ ( 1-cell-reflexive-globular-equiv f)
+ ( 1-cell-reflexive-globular-equiv g)
+ 2-cell-equiv-reflexive-globular-equiv =
+ 2-cell-equiv-globular-equiv globular-equiv-reflexive-globular-equiv
+
+ 2-cell-reflexive-globular-equiv :
+ {x y : 0-cell-Reflexive-Globular-Type G}
+ {f g : 1-cell-Reflexive-Globular-Type G x y} →
+ 2-cell-Reflexive-Globular-Type G f g →
+ 2-cell-Reflexive-Globular-Type H
+ ( 1-cell-reflexive-globular-equiv f)
+ ( 1-cell-reflexive-globular-equiv g)
+ 2-cell-reflexive-globular-equiv =
+ 2-cell-globular-equiv globular-equiv-reflexive-globular-equiv
+
+ 3-cell-equiv-reflexive-globular-equiv :
+ {x y : 0-cell-Reflexive-Globular-Type G}
+ {f g : 1-cell-Reflexive-Globular-Type G x y} →
+ {s t : 2-cell-Reflexive-Globular-Type G f g} →
+ 3-cell-Reflexive-Globular-Type G s t ≃
+ 3-cell-Reflexive-Globular-Type H
+ ( 2-cell-reflexive-globular-equiv s)
+ ( 2-cell-reflexive-globular-equiv t)
+ 3-cell-equiv-reflexive-globular-equiv =
+ 3-cell-equiv-globular-equiv globular-equiv-reflexive-globular-equiv
+
+ globular-map-reflexive-globular-equiv :
+ globular-map
+ ( globular-type-Reflexive-Globular-Type G)
+ ( globular-type-Reflexive-Globular-Type H)
+ globular-map-reflexive-globular-equiv =
+ globular-map-globular-equiv globular-equiv-reflexive-globular-equiv
+
+ field
+ preserves-refl-reflexive-globular-equiv :
+ preserves-refl-globular-equiv G H globular-equiv-reflexive-globular-equiv
+
+ preserves-refl-1-cell-reflexive-globular-equiv :
+ (x : 0-cell-Reflexive-Globular-Type G) →
+ 1-cell-reflexive-globular-equiv
+ ( refl-1-cell-Reflexive-Globular-Type G {x}) =
+ refl-1-cell-Reflexive-Globular-Type H
+ preserves-refl-1-cell-reflexive-globular-equiv =
+ preserves-refl-1-cell-preserves-refl-globular-map
+ preserves-refl-reflexive-globular-equiv
+
+ preserves-refl-1-cell-globular-equiv-reflexive-globular-equiv :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ preserves-refl-globular-equiv
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H _ _)
+ ( 1-cell-globular-equiv-reflexive-globular-equiv)
+ preserves-refl-1-cell-globular-equiv-reflexive-globular-equiv =
+ preserves-refl-1-cell-globular-map-preserves-refl-globular-map
+ preserves-refl-reflexive-globular-equiv
+
+ 1-cell-reflexive-globular-equiv-reflexive-globular-equiv :
+ (x y : 0-cell-Reflexive-Globular-Type G) →
+ reflexive-globular-equiv
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H _ _)
+ globular-equiv-reflexive-globular-equiv
+ ( 1-cell-reflexive-globular-equiv-reflexive-globular-equiv x y) =
+ 1-cell-globular-equiv-reflexive-globular-equiv
+ preserves-refl-reflexive-globular-equiv
+ ( 1-cell-reflexive-globular-equiv-reflexive-globular-equiv x y) =
+ preserves-refl-1-cell-globular-equiv-reflexive-globular-equiv
+
+open reflexive-globular-equiv public
+```
+
+### The identity equivalence on a reflexive globular type
+
+```agda
+preserves-refl-id-globular-equiv :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ preserves-refl-globular-equiv
+ ( G)
+ ( G)
+ ( id-globular-equiv (globular-type-Reflexive-Globular-Type G))
+preserves-refl-1-cell-preserves-refl-globular-map
+ ( preserves-refl-id-globular-equiv G)
+ ( x) =
+ refl
+preserves-refl-1-cell-globular-map-preserves-refl-globular-map
+ ( preserves-refl-id-globular-equiv G) =
+ preserves-refl-id-globular-equiv
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G _ _)
+
+id-reflexive-globular-equiv :
+ {l1 l2 : Level} (G : Reflexive-Globular-Type l1 l2) →
+ reflexive-globular-equiv G G
+globular-equiv-reflexive-globular-equiv (id-reflexive-globular-equiv G) =
+ id-globular-equiv (globular-type-Reflexive-Globular-Type G)
+preserves-refl-reflexive-globular-equiv (id-reflexive-globular-equiv G) =
+ preserves-refl-id-globular-equiv G
+```
+
+### Composition of equivalences of reflexive globular types
+
+```agda
+globular-equiv-comp-reflexive-globular-equiv :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Reflexive-Globular-Type l1 l2}
+ {H : Reflexive-Globular-Type l3 l4}
+ {K : Reflexive-Globular-Type l5 l6} →
+ (f : reflexive-globular-equiv H K)
+ (e : reflexive-globular-equiv G H) →
+ globular-equiv
+ ( globular-type-Reflexive-Globular-Type G)
+ ( globular-type-Reflexive-Globular-Type K)
+globular-equiv-comp-reflexive-globular-equiv f e =
+ comp-globular-equiv
+ ( globular-equiv-reflexive-globular-equiv f)
+ ( globular-equiv-reflexive-globular-equiv e)
+
+preserves-refl-comp-reflexive-globular-equiv :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Reflexive-Globular-Type l1 l2}
+ {H : Reflexive-Globular-Type l3 l4}
+ {K : Reflexive-Globular-Type l5 l6} →
+ (g : reflexive-globular-equiv H K)
+ (f : reflexive-globular-equiv G H) →
+ preserves-refl-globular-equiv G K
+ ( globular-equiv-comp-reflexive-globular-equiv g f)
+preserves-refl-1-cell-preserves-refl-globular-map
+ ( preserves-refl-comp-reflexive-globular-equiv g f) x =
+ ( ap
+ ( 1-cell-reflexive-globular-equiv g)
+ ( preserves-refl-1-cell-reflexive-globular-equiv f _)) ∙
+ ( preserves-refl-1-cell-reflexive-globular-equiv g _)
+preserves-refl-1-cell-globular-map-preserves-refl-globular-map
+ ( preserves-refl-comp-reflexive-globular-equiv g f) =
+ preserves-refl-comp-reflexive-globular-equiv
+ ( 1-cell-reflexive-globular-equiv-reflexive-globular-equiv g _ _)
+ ( 1-cell-reflexive-globular-equiv-reflexive-globular-equiv f _ _)
+
+comp-reflexive-globular-equiv :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ {G : Reflexive-Globular-Type l1 l2}
+ {H : Reflexive-Globular-Type l3 l4}
+ {K : Reflexive-Globular-Type l5 l6} →
+ reflexive-globular-equiv H K →
+ reflexive-globular-equiv G H →
+ reflexive-globular-equiv G K
+globular-equiv-reflexive-globular-equiv
+ ( comp-reflexive-globular-equiv g f) =
+ globular-equiv-comp-reflexive-globular-equiv g f
+preserves-refl-reflexive-globular-equiv (comp-reflexive-globular-equiv g f) =
+ preserves-refl-comp-reflexive-globular-equiv g f
+```
diff --git a/src/structured-types/reflexive-globular-maps.lagda.md b/src/structured-types/reflexive-globular-maps.lagda.md
new file mode 100644
index 0000000000..e8f95bfcc5
--- /dev/null
+++ b/src/structured-types/reflexive-globular-maps.lagda.md
@@ -0,0 +1,154 @@
+# Reflexive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.reflexive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "reflexive globular map" Agda=reflexive-globular-map}} between two
+[reflexive globular types](structured-types.reflexive-globular-types.md) `G` and
+`H` is a [globular map](structured-types.globular-maps.md) `f : G → H` equipped
+with a family of [identifications](foundation-core.identity-types.md)
+
+```text
+ (x : G₀) → f₁ (refl G x) = refl H (f₀ x)
+```
+
+from the image of the reflexivity cell at `x` in `G` to the reflexivity cell at
+`f₀ x`, such that the globular map `f' : G' x y → H' (f₀ x) (f₀ y)` is again
+reflexive.
+
+Note: In some settings it may be preferred to work with globular maps preserving
+reflexivity cells up to a higher cell. The two notions of maps between reflexive
+globular types preserving the reflexivity structure up to a higher cell are,
+depending of the direction of the coherence cells, the notions of
+[colax reflexive globular maps](structured-types.colax-reflexive-globular-maps.md)
+and
+[lax reflexive globular maps](structured-types.lax-reflexive-globular-maps.md).
+
+## Definitions
+
+### The predicate of preserving reflexivity
+
+```agda
+record
+ preserves-refl-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2) (H : Reflexive-Globular-Type l3 l4)
+ (f : globular-map-Reflexive-Globular-Type G H) :
+ UU (l1 ⊔ l2 ⊔ l4)
+ where
+ coinductive
+
+ field
+ preserves-refl-1-cell-preserves-refl-globular-map :
+ (x : 0-cell-Reflexive-Globular-Type G) →
+ 1-cell-globular-map f (refl-1-cell-Reflexive-Globular-Type G {x}) =
+ refl-1-cell-Reflexive-Globular-Type H
+
+ field
+ preserves-refl-1-cell-globular-map-preserves-refl-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ preserves-refl-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H _ _)
+ ( 1-cell-globular-map-globular-map-Reflexive-Globular-Type G H f)
+
+open preserves-refl-globular-map public
+```
+
+### Reflexive globular maps
+
+```agda
+record
+ reflexive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2)
+ (H : Reflexive-Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+
+ field
+ globular-map-reflexive-globular-map :
+ globular-map-Reflexive-Globular-Type G H
+
+ 0-cell-reflexive-globular-map :
+ 0-cell-Reflexive-Globular-Type G → 0-cell-Reflexive-Globular-Type H
+ 0-cell-reflexive-globular-map =
+ 0-cell-globular-map globular-map-reflexive-globular-map
+
+ 1-cell-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ 1-cell-Reflexive-Globular-Type G x y →
+ 1-cell-Reflexive-Globular-Type H
+ ( 0-cell-reflexive-globular-map x)
+ ( 0-cell-reflexive-globular-map y)
+ 1-cell-reflexive-globular-map =
+ 1-cell-globular-map globular-map-reflexive-globular-map
+
+ 1-cell-globular-map-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ globular-map-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-reflexive-globular-map x)
+ ( 0-cell-reflexive-globular-map y))
+ 1-cell-globular-map-reflexive-globular-map =
+ 1-cell-globular-map-globular-map globular-map-reflexive-globular-map
+
+ field
+ preserves-refl-reflexive-globular-map :
+ preserves-refl-globular-map G H
+ globular-map-reflexive-globular-map
+
+ preserves-refl-1-cell-reflexive-globular-map :
+ ( x : 0-cell-Reflexive-Globular-Type G) →
+ 1-cell-reflexive-globular-map (refl-1-cell-Reflexive-Globular-Type G {x}) =
+ refl-1-cell-Reflexive-Globular-Type H
+ preserves-refl-1-cell-reflexive-globular-map =
+ preserves-refl-1-cell-preserves-refl-globular-map
+ preserves-refl-reflexive-globular-map
+
+ preserves-refl-2-cell-globular-map-reflexive-globular-map :
+ { x y : 0-cell-Reflexive-Globular-Type G} →
+ preserves-refl-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-reflexive-globular-map x)
+ ( 0-cell-reflexive-globular-map y))
+ ( 1-cell-globular-map-reflexive-globular-map)
+ preserves-refl-2-cell-globular-map-reflexive-globular-map =
+ preserves-refl-1-cell-globular-map-preserves-refl-globular-map
+ preserves-refl-reflexive-globular-map
+
+ 1-cell-reflexive-globular-map-reflexive-globular-map :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ reflexive-globular-map
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H
+ ( 0-cell-reflexive-globular-map x)
+ ( 0-cell-reflexive-globular-map y))
+ globular-map-reflexive-globular-map
+ 1-cell-reflexive-globular-map-reflexive-globular-map =
+ 1-cell-globular-map-reflexive-globular-map
+ preserves-refl-reflexive-globular-map
+ 1-cell-reflexive-globular-map-reflexive-globular-map =
+ preserves-refl-2-cell-globular-map-reflexive-globular-map
+
+open reflexive-globular-map public
+```
diff --git a/src/structured-types/reflexive-globular-types.lagda.md b/src/structured-types/reflexive-globular-types.lagda.md
index 69c8ba538a..148a661bf4 100644
--- a/src/structured-types/reflexive-globular-types.lagda.md
+++ b/src/structured-types/reflexive-globular-types.lagda.md
@@ -14,6 +14,7 @@ open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.universe-levels
+open import structured-types.globular-maps
open import structured-types.globular-types
```
@@ -25,92 +26,93 @@ A [globular type](structured-types.globular-types.md) is
{{#concept "reflexive" Disambiguation="globular type" Agda=is-reflexive-globular-structure}}
if every $n$-cell `x` comes with a choice of $(n+1)$-cell from `x` to `x`.
-## Definition
+## Definitions
-### Reflexivity structure on a globular structure
+### Reflexivity structure on globular types
```agda
record
- is-reflexive-globular-structure
- {l1 l2 : Level} {A : UU l1} (G : globular-structure l2 A) : UU (l1 ⊔ l2)
+ is-reflexive-Globular-Type
+ {l1 l2 : Level} (G : Globular-Type l1 l2) : UU (l1 ⊔ l2)
where
coinductive
+
+ field
+ is-reflexive-1-cell-is-reflexive-Globular-Type :
+ is-reflexive (1-cell-Globular-Type G)
+
field
- is-reflexive-1-cell-is-reflexive-globular-structure :
- is-reflexive (1-cell-globular-structure G)
- is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure :
- (x y : A) →
- is-reflexive-globular-structure
- ( globular-structure-1-cell-globular-structure G x y)
+ is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ is-reflexive-Globular-Type (1-cell-globular-type-Globular-Type G x y)
-open is-reflexive-globular-structure public
+open is-reflexive-Globular-Type public
module _
- {l1 l2 : Level} {A : UU l1} {G : globular-structure l2 A}
- (r : is-reflexive-globular-structure G)
+ {l1 l2 : Level} {G : Globular-Type l1 l2}
+ (r : is-reflexive-Globular-Type G)
where
- refl-1-cell-is-reflexive-globular-structure :
- {x : A} → 1-cell-globular-structure G x x
- refl-1-cell-is-reflexive-globular-structure {x} =
- is-reflexive-1-cell-is-reflexive-globular-structure r x
-
- refl-2-cell-is-reflexive-globular-structure :
- {x y : A} {f : 1-cell-globular-structure G x y} →
- 2-cell-globular-structure G f f
- refl-2-cell-is-reflexive-globular-structure {x} {y} {f} =
- is-reflexive-1-cell-is-reflexive-globular-structure
- ( is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
- ( r)
- ( x)
- ( y))
- ( f)
-
- is-reflexive-globular-structure-2-cell-is-reflexive-globular-structure :
- {x y : A}
- (f g : 1-cell-globular-structure G x y) →
- is-reflexive-globular-structure
- ( globular-structure-2-cell-globular-structure G f g)
- is-reflexive-globular-structure-2-cell-is-reflexive-globular-structure
- { x} {y} =
- is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
- ( is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
- ( r)
- ( x)
- ( y))
-
- refl-3-cell-is-reflexive-globular-structure :
- {x y : A}
- {f g : 1-cell-globular-structure G x y}
- {H : 2-cell-globular-structure G f g} →
- 3-cell-globular-structure G H H
- refl-3-cell-is-reflexive-globular-structure {x} {y} {f} {g} {H} =
- is-reflexive-1-cell-is-reflexive-globular-structure
- ( is-reflexive-globular-structure-2-cell-is-reflexive-globular-structure
- ( f)
- ( g))
- ( H)
-```
-
-### The type of reflexive globular structures
-
-```agda
-reflexive-globular-structure :
- {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2)
-reflexive-globular-structure l2 A =
- Σ (globular-structure l2 A) (is-reflexive-globular-structure)
-```
+ refl-2-cell-is-reflexive-Globular-Type :
+ {x : 0-cell-Globular-Type G} →
+ 1-cell-Globular-Type G x x
+ refl-2-cell-is-reflexive-Globular-Type =
+ is-reflexive-1-cell-is-reflexive-Globular-Type r _
+
+ is-reflexive-2-cell-is-reflexive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ is-reflexive (2-cell-Globular-Type G {x} {y})
+ is-reflexive-2-cell-is-reflexive-Globular-Type =
+ is-reflexive-1-cell-is-reflexive-Globular-Type
+ ( is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type r)
+
+ refl-3-cell-is-reflexive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} {f : 1-cell-Globular-Type G x y} →
+ 2-cell-Globular-Type G f f
+ refl-3-cell-is-reflexive-Globular-Type =
+ is-reflexive-1-cell-is-reflexive-Globular-Type
+ ( is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type r)
+ ( _)
-### Reflexivity structure on a globular type
+ is-reflexive-2-cell-globular-type-is-reflexive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ {f g : 1-cell-Globular-Type G x y} →
+ is-reflexive-Globular-Type
+ ( 2-cell-globular-type-Globular-Type G {x} {y} f g)
+ is-reflexive-2-cell-globular-type-is-reflexive-Globular-Type =
+ is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ ( is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type r)
-```agda
module _
{l1 l2 : Level} (G : Globular-Type l1 l2)
+ (r : is-reflexive-Globular-Type G)
where
- is-reflexive-Globular-Type : UU (l1 ⊔ l2)
- is-reflexive-Globular-Type =
- is-reflexive-globular-structure (globular-structure-0-cell-Globular-Type G)
+ is-reflexive-3-cell-is-reflexive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ {f g : 1-cell-Globular-Type G x y} →
+ is-reflexive (3-cell-Globular-Type G {x} {y} {f} {g})
+ is-reflexive-3-cell-is-reflexive-Globular-Type =
+ is-reflexive-2-cell-is-reflexive-Globular-Type
+ ( is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type r)
+
+ refl-4-cell-is-reflexive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ {f g : 1-cell-Globular-Type G x y} →
+ {s : 2-cell-Globular-Type G f g} → 3-cell-Globular-Type G s s
+ refl-4-cell-is-reflexive-Globular-Type =
+ refl-3-cell-is-reflexive-Globular-Type
+ ( is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type r)
+
+ is-reflexive-3-cell-globular-type-is-reflexive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ {f g : 1-cell-Globular-Type G x y}
+ {s t : 2-cell-Globular-Type G f g} →
+ is-reflexive-Globular-Type
+ ( 3-cell-globular-type-Globular-Type G {x} {y} {f} {g} s t)
+ is-reflexive-3-cell-globular-type-is-reflexive-Globular-Type =
+ is-reflexive-2-cell-globular-type-is-reflexive-Globular-Type
+ ( is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type r)
```
### Reflexive globular types
@@ -119,7 +121,11 @@ module _
record
Reflexive-Globular-Type (l1 l2 : Level) : UU (lsuc l1 ⊔ lsuc l2)
where
+```
+The underlying globular type of a reflexive globular type:
+
+```agda
field
globular-type-Reflexive-Globular-Type : Globular-Type l1 l2
@@ -138,21 +144,32 @@ record
2-cell-Reflexive-Globular-Type =
2-cell-Globular-Type globular-type-Reflexive-Globular-Type
+ 3-cell-Reflexive-Globular-Type :
+ {x x' : 0-cell-Reflexive-Globular-Type}
+ {y y' : 1-cell-Reflexive-Globular-Type x x'} →
+ (z z' : 2-cell-Reflexive-Globular-Type y y') → UU l2
+ 3-cell-Reflexive-Globular-Type =
+ 3-cell-Globular-Type globular-type-Reflexive-Globular-Type
+
globular-structure-Reflexive-Globular-Type :
globular-structure l2 0-cell-Reflexive-Globular-Type
globular-structure-Reflexive-Globular-Type =
globular-structure-0-cell-Globular-Type
( globular-type-Reflexive-Globular-Type)
+```
+
+The reflexivity structure of a reflexive globular type:
+```agda
field
refl-Reflexive-Globular-Type :
- is-reflexive-globular-structure globular-structure-Reflexive-Globular-Type
+ is-reflexive-Globular-Type globular-type-Reflexive-Globular-Type
- refl-0-cell-Reflexive-Globular-Type :
+ refl-1-cell-Reflexive-Globular-Type :
{x : 0-cell-Reflexive-Globular-Type} →
1-cell-Reflexive-Globular-Type x x
- refl-0-cell-Reflexive-Globular-Type =
- is-reflexive-1-cell-is-reflexive-globular-structure
+ refl-1-cell-Reflexive-Globular-Type =
+ is-reflexive-1-cell-is-reflexive-Globular-Type
( refl-Reflexive-Globular-Type)
( _)
@@ -161,6 +178,27 @@ record
1-cell-globular-type-Reflexive-Globular-Type =
1-cell-globular-type-Globular-Type globular-type-Reflexive-Globular-Type
+ refl-2-cell-Reflexive-Globular-Type :
+ {x y : 0-cell-Reflexive-Globular-Type}
+ {f : 1-cell-Reflexive-Globular-Type x y} →
+ 2-cell-Reflexive-Globular-Type f f
+ refl-2-cell-Reflexive-Globular-Type =
+ is-reflexive-2-cell-is-reflexive-Globular-Type
+ ( refl-Reflexive-Globular-Type)
+ ( _)
+
+ refl-2-cell-globular-type-Reflexive-Globular-Type :
+ {x y : 0-cell-Reflexive-Globular-Type} →
+ is-reflexive-Globular-Type
+ ( 1-cell-globular-type-Reflexive-Globular-Type x y)
+ refl-2-cell-globular-type-Reflexive-Globular-Type =
+ is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ refl-Reflexive-Globular-Type
+```
+
+The reflexive globular type of 1-cells of a reflexive globular type:
+
+```agda
1-cell-reflexive-globular-type-Reflexive-Globular-Type :
(x y : 0-cell-Reflexive-Globular-Type) → Reflexive-Globular-Type l2 l2
globular-type-Reflexive-Globular-Type
@@ -168,26 +206,127 @@ record
1-cell-globular-type-Reflexive-Globular-Type x y
refl-Reflexive-Globular-Type
( 1-cell-reflexive-globular-type-Reflexive-Globular-Type x y) =
- is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
- ( refl-Reflexive-Globular-Type)
- ( x)
- ( y)
+ refl-2-cell-globular-type-Reflexive-Globular-Type
open Reflexive-Globular-Type public
```
-## Examples
+### The predicate of being a reflexive globular structure
-### The reflexive globular structure on a type given by its identity types
+```agda
+is-reflexive-globular-structure :
+ {l1 l2 : Level} {A : UU l1} → globular-structure l2 A → UU (l1 ⊔ l2)
+is-reflexive-globular-structure G =
+ is-reflexive-Globular-Type (make-Globular-Type G)
+
+module _
+ {l1 l2 : Level} {A : UU l1} (G : globular-structure l2 A)
+ (r : is-reflexive-globular-structure G)
+ where
+
+ is-reflexive-1-cell-is-reflexive-globular-structure :
+ is-reflexive (1-cell-globular-structure G)
+ is-reflexive-1-cell-is-reflexive-globular-structure =
+ is-reflexive-1-cell-is-reflexive-Globular-Type r
+
+ refl-2-cell-is-reflexive-globular-structure :
+ {x : A} → 1-cell-globular-structure G x x
+ refl-2-cell-is-reflexive-globular-structure =
+ is-reflexive-1-cell-is-reflexive-Globular-Type r _
+
+ is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure :
+ {x y : A} →
+ is-reflexive-globular-structure
+ ( globular-structure-1-cell-globular-structure G x y)
+ is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure =
+ is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type r
+
+ is-reflexive-2-cell-is-reflexive-globular-structure :
+ {x y : A} → is-reflexive (2-cell-globular-structure G {x} {y})
+ is-reflexive-2-cell-is-reflexive-globular-structure {x} {y} =
+ is-reflexive-2-cell-is-reflexive-Globular-Type r
+
+ refl-3-cell-is-reflexive-globular-structure :
+ {x y : A} {f : 1-cell-globular-structure G x y} →
+ 2-cell-globular-structure G f f
+ refl-3-cell-is-reflexive-globular-structure =
+ is-reflexive-2-cell-is-reflexive-globular-structure _
+
+ is-reflexive-globular-structure-2-cell-is-reflexive-globular-structure :
+ {x y : A}
+ {f g : 1-cell-globular-structure G x y} →
+ is-reflexive-globular-structure
+ ( globular-structure-2-cell-globular-structure G f g)
+ is-reflexive-globular-structure-2-cell-is-reflexive-globular-structure =
+ is-reflexive-2-cell-globular-type-is-reflexive-Globular-Type r
+
+ is-reflexive-3-cell-is-reflexive-globular-structure :
+ {x y : A} {f g : 1-cell-globular-structure G x y} →
+ is-reflexive (3-cell-globular-structure G {x} {y} {f} {g})
+ is-reflexive-3-cell-is-reflexive-globular-structure =
+ is-reflexive-3-cell-is-reflexive-Globular-Type (make-Globular-Type G) r
+
+ refl-4-cell-is-reflexive-globular-structure :
+ {x y : A}
+ {f g : 1-cell-globular-structure G x y}
+ {H : 2-cell-globular-structure G f g} →
+ 3-cell-globular-structure G H H
+ refl-4-cell-is-reflexive-globular-structure {x} {y} {f} {g} {H} =
+ is-reflexive-3-cell-is-reflexive-globular-structure _
+```
+
+### The type of reflexive globular structures
+
+```agda
+reflexive-globular-structure :
+ {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2)
+reflexive-globular-structure l2 A =
+ Σ (globular-structure l2 A) (is-reflexive-globular-structure)
+```
+
+### Globular maps between reflexive globular types
+
+Since there are at least two notions of morphism between reflexive globular
+types, both of which have an underlying globular map, we record here the
+definition of globular maps between reflexive globular types.
```agda
-is-reflexive-globular-structure-Id :
- {l : Level} (A : UU l) →
- is-reflexive-globular-structure (globular-structure-Id A)
-is-reflexive-globular-structure-Id A =
- λ where
- .is-reflexive-1-cell-is-reflexive-globular-structure x →
- refl
- .is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure x y →
- is-reflexive-globular-structure-Id (x = y)
+module _
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2) (H : Reflexive-Globular-Type l3 l4)
+ where
+
+ globular-map-Reflexive-Globular-Type : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ globular-map-Reflexive-Globular-Type =
+ globular-map
+ ( globular-type-Reflexive-Globular-Type G)
+ ( globular-type-Reflexive-Globular-Type H)
+
+module _
+ {l1 l2 l3 l4 : Level}
+ (G : Reflexive-Globular-Type l1 l2) (H : Reflexive-Globular-Type l3 l4)
+ (f : globular-map-Reflexive-Globular-Type G H)
+ where
+
+ 0-cell-globular-map-Reflexive-Globular-Type :
+ 0-cell-Reflexive-Globular-Type G → 0-cell-Reflexive-Globular-Type H
+ 0-cell-globular-map-Reflexive-Globular-Type =
+ 0-cell-globular-map f
+
+ 1-cell-globular-map-globular-map-Reflexive-Globular-Type :
+ {x y : 0-cell-Reflexive-Globular-Type G} →
+ globular-map-Reflexive-Globular-Type
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type H _ _)
+ 1-cell-globular-map-globular-map-Reflexive-Globular-Type =
+ 1-cell-globular-map-globular-map f
```
+
+## See also
+
+- [Colax reflexive globular maps](structured-types.colax-reflexive-globular-maps.md)
+- [Lax reflexive globular maps](structured-types.lax-reflexive-globular-maps.md)
+- [Reflexive globular maps](structured-types.reflexive-globular-maps.md)
+- [Noncoherent wild higher precategories](wild-category-theory.noncoherent-wild-higher-precategories.md)
+ are globular types that are both reflexive and
+ [transitive](structured-types.transitive-globular-types.md).
diff --git a/src/structured-types/sections-dependent-globular-types.lagda.md b/src/structured-types/sections-dependent-globular-types.lagda.md
new file mode 100644
index 0000000000..cc2c6c7594
--- /dev/null
+++ b/src/structured-types/sections-dependent-globular-types.lagda.md
@@ -0,0 +1,75 @@
+# Sections of dependent globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.sections-dependent-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.universe-levels
+
+open import structured-types.dependent-globular-types
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+Consider a
+[dependent globular type](structured-types.dependent-globular-types.md) `H` over
+a [globular type](structured-types.globular-types.md) `G`. A
+{{#concept "section" Disambiguation="dependent globular type" Agda=section-Dependent-Globular-Type}}
+`f` of `H` consists of
+
+```text
+ s₀ : (x : G₀) → H₀ x
+ s' : {x y : G₀} (y : H₀ x) (y' : H₀ x') → section (H' y y').
+```
+
+## Definitions
+
+### Sections of dependent globular types
+
+```agda
+record
+ section-Dependent-Globular-Type
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G) : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+ coinductive
+
+ field
+ 0-cell-section-Dependent-Globular-Type :
+ (x : 0-cell-Globular-Type G) → 0-cell-Dependent-Globular-Type H x
+
+ field
+ 1-cell-section-section-Dependent-Globular-Type :
+ {x x' : 0-cell-Globular-Type G} →
+ section-Dependent-Globular-Type
+ ( 1-cell-dependent-globular-type-Dependent-Globular-Type H
+ ( 0-cell-section-Dependent-Globular-Type x)
+ ( 0-cell-section-Dependent-Globular-Type x'))
+
+open section-Dependent-Globular-Type public
+
+module _
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G)
+ (s : section-Dependent-Globular-Type H)
+ where
+
+ 1-cell-section-Dependent-Globular-Type :
+ {x x' : 0-cell-Globular-Type G}
+ (f : 1-cell-Globular-Type G x x') →
+ 1-cell-Dependent-Globular-Type H
+ ( 0-cell-section-Dependent-Globular-Type s x)
+ ( 0-cell-section-Dependent-Globular-Type s x')
+ ( f)
+ 1-cell-section-Dependent-Globular-Type =
+ 0-cell-section-Dependent-Globular-Type
+ ( 1-cell-section-section-Dependent-Globular-Type s)
+```
diff --git a/src/structured-types/superglobular-types.lagda.md b/src/structured-types/superglobular-types.lagda.md
new file mode 100644
index 0000000000..d41313fbee
--- /dev/null
+++ b/src/structured-types/superglobular-types.lagda.md
@@ -0,0 +1,188 @@
+# Superglobular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.superglobular-types where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.binary-dependent-reflexive-globular-types
+open import structured-types.globular-types
+open import structured-types.points-reflexive-globular-types
+open import structured-types.pointwise-extensions-binary-families-reflexive-globular-types
+open import structured-types.reflexive-globular-equivalences
+open import structured-types.reflexive-globular-types
+```
+
+
+
+**Disclaimer.** The contents of this file are experimental, and likely to be
+changed or reconsidered.
+
+## Idea
+
+An {{#concept "superglobular type" Agda=Superglobular-Type}} is a
+[reflexive globular type](structured-types.reflexive-globular-types.md) `G` such
+that the binary family of globular types
+
+```text
+ G' : G₀ → G₀ → Globular-Type
+```
+
+of 1-cells and higher cells
+[extends pointwise](structured-types.pointwise-extensions-binary-families-globular-types.md)
+to a
+[binary dependent globular type](structured-types.binary-dependent-globular-types.md).
+More specifically, a superglobular type consists of a reflexive globular type
+`G` equipped with a binary dependent globular type
+
+```text
+ H : Binary-Dependent-Globular-Type l2 l2 G G
+```
+
+and a family of
+[globular equivalences](structured-types.globular-equivalences.md)
+
+```text
+ (x y : G₀) → ev-point H x y ≃ G' x y.
+```
+
+The low-dimensional data of a superglobular type is therefore as follows:
+
+```text
+ G₀ : Type
+
+ G₁ : (x y : G₀) → Type
+ H₀ : (x y : G₀) → Type
+ e₀ : {x y : G₀} → H₀ x y ≃ G₀ x y
+ refl G : (x : G₀) → G₁ x x
+
+ G₂ : {x y : G₀} (s t : G₁ x y) → Type
+ H₁ : {x x' y y' : G₀} → G₁ x x' → G₁ y y' → H₀ x y → H₀ x' y' → Type
+ e₁ : {x y : G₀} {s t : H₀ x y} → H₁ (refl G x) (refl G y) s t ≃ G₂ (e₀ s) (e₀ t)
+ refl G : {x y : G₀} (s : G₁ x y) → G₂ s s
+
+ G₃ : {x y : G₀} {s t : G₁ x y} (u v : G₂ s t) → Type
+ H₂ : {x x' y y' : G₀} {s s' : G₁ x x'} {t t' : G₁ y y'}
+ (p : G₂ s s') (q : G₂ t t') → H₁ s t → H₁ s' t' → Type
+ e₂ : {x y : G₀} {s t : H₀ x y} {u v : H₁
+ H₂ (refl G x) (refl G y) u v ≃ G₃ (e₁ u) (e₁ v)
+```
+
+Note that the type of pairs `(Gₙ₊₁ , eₙ)` in this structure is
+[contractible](foundation-core.contractible-types.md). An equivalent way of
+presenting the low-dimensional data of a superglobular type is therefore:
+
+```text
+ G₀ : Type
+
+ H₀ : (x y : G₀) → Type
+ refl G : (x : G₀) → H₀ x x
+
+ H₁ : {x x' y y' : G₀} → H₁ x x' → H₁ y y' → H₀ x y → H₀ x' y' → Type
+ refl G : {x y : G₀} (s : H₀ x y) → H₁ (refl G x) (refl G y) s s
+
+ H₂ : {x x' y y' : G₀} {s s' : H₁ x x'} {t t' : H₁ y y'}
+ (p : H₂ s s') (q : H₂ t t') → H₁ s t → H₁ s' t' → Type
+```
+
+## Definitions
+
+### The predicate of being a superglobular type
+
+```agda
+module _
+ {l1 l2 : Level} (l3 l4 : Level) (G : Reflexive-Globular-Type l1 l2)
+ where
+
+ is-superglobular-Reflexive-Globular-Type : UU (l1 ⊔ l2 ⊔ lsuc l3 ⊔ lsuc l4)
+ is-superglobular-Reflexive-Globular-Type =
+ pointwise-extension-binary-family-reflexive-globular-types l3 l4 G G
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G)
+
+module _
+ {l1 l2 l3 l4 : Level} {G : Reflexive-Globular-Type l1 l2}
+ (H : is-superglobular-Reflexive-Globular-Type l3 l4 G)
+ where
+
+ 1-cell-binary-dependent-reflexive-globular-type-is-superglobular-Reflexive-Globular-Type :
+ Binary-Dependent-Reflexive-Globular-Type l3 l4 G G
+ 1-cell-binary-dependent-reflexive-globular-type-is-superglobular-Reflexive-Globular-Type =
+ pr1 H
+
+ reflexive-globular-equiv-is-superglobular-Reflexive-Globular-Type :
+ (x y : point-Reflexive-Globular-Type G) →
+ reflexive-globular-equiv
+ ( ev-point-Binary-Dependent-Reflexive-Globular-Type G G
+ ( 1-cell-binary-dependent-reflexive-globular-type-is-superglobular-Reflexive-Globular-Type)
+ ( x)
+ ( y))
+ ( 1-cell-reflexive-globular-type-Reflexive-Globular-Type G x y)
+ reflexive-globular-equiv-is-superglobular-Reflexive-Globular-Type =
+ pr2 H
+```
+
+### Superglobular types
+
+```agda
+record
+ Superglobular-Type
+ (l1 l2 l3 l4 : Level) : UU (lsuc l1 ⊔ lsuc l2 ⊔ lsuc l3 ⊔ lsuc l4)
+ where
+
+ field
+ reflexive-globular-type-Superglobular-Type : Reflexive-Globular-Type l1 l2
+
+ globular-type-Superglobular-Type : Globular-Type l1 l2
+ globular-type-Superglobular-Type =
+ globular-type-Reflexive-Globular-Type
+ reflexive-globular-type-Superglobular-Type
+
+ 0-cell-Superglobular-Type : UU l1
+ 0-cell-Superglobular-Type =
+ 0-cell-Reflexive-Globular-Type reflexive-globular-type-Superglobular-Type
+
+ point-Superglobular-Type : UU l1
+ point-Superglobular-Type =
+ point-Reflexive-Globular-Type reflexive-globular-type-Superglobular-Type
+
+ 1-cell-reflexive-globular-type-Superglobular-Type :
+ (x y : 0-cell-Superglobular-Type) →
+ Reflexive-Globular-Type l2 l2
+ 1-cell-reflexive-globular-type-Superglobular-Type =
+ 1-cell-reflexive-globular-type-Reflexive-Globular-Type
+ reflexive-globular-type-Superglobular-Type
+
+ field
+ is-superglobular-Superglobular-Type :
+ is-superglobular-Reflexive-Globular-Type l3 l4
+ reflexive-globular-type-Superglobular-Type
+
+ 1-cell-binary-dependent-reflexive-globular-type-Superglobular-Type :
+ Binary-Dependent-Reflexive-Globular-Type l3 l4
+ reflexive-globular-type-Superglobular-Type
+ reflexive-globular-type-Superglobular-Type
+ 1-cell-binary-dependent-reflexive-globular-type-Superglobular-Type =
+ 1-cell-binary-dependent-reflexive-globular-type-is-superglobular-Reflexive-Globular-Type
+ is-superglobular-Superglobular-Type
+
+ reflexive-globular-equiv-Superglobular-Type :
+ (x y : point-Superglobular-Type) →
+ reflexive-globular-equiv
+ ( ev-point-Binary-Dependent-Reflexive-Globular-Type
+ ( reflexive-globular-type-Superglobular-Type)
+ ( reflexive-globular-type-Superglobular-Type)
+ ( 1-cell-binary-dependent-reflexive-globular-type-Superglobular-Type)
+ ( x)
+ ( y))
+ ( 1-cell-reflexive-globular-type-Superglobular-Type x y)
+ reflexive-globular-equiv-Superglobular-Type =
+ reflexive-globular-equiv-is-superglobular-Reflexive-Globular-Type
+ is-superglobular-Superglobular-Type
+```
diff --git a/src/structured-types/symmetric-globular-types.lagda.md b/src/structured-types/symmetric-globular-types.lagda.md
index b84c03ea08..3a05599770 100644
--- a/src/structured-types/symmetric-globular-types.lagda.md
+++ b/src/structured-types/symmetric-globular-types.lagda.md
@@ -22,76 +22,89 @@ open import structured-types.globular-types
## Idea
We say a [globular type](structured-types.globular-types.md) is
-{{#concept "symmetric" Disambiguation="globular type" Agda=is-symmetric-globular-structure}}
+{{#concept "symmetric" Disambiguation="globular type" Agda=is-symmetric-Globular-Type}}
if there is a symmetry action on its $n$-cells for positive $n$, mapping
$n$-cells from `x` to `y` to $n$-cells from `y` to `x`.
## Definition
-### Symmetry structure on a globular structure
+### Symmetry structure on a globular type
```agda
record
- is-symmetric-globular-structure
- {l1 l2 : Level} {A : UU l1} (G : globular-structure l2 A) : UU (l1 ⊔ l2)
+ is-symmetric-Globular-Type
+ {l1 l2 : Level} (G : Globular-Type l1 l2) : UU (l1 ⊔ l2)
where
coinductive
+
field
- is-symmetric-1-cell-is-symmetric-globular-structure :
- is-symmetric (1-cell-globular-structure G)
- is-symmetric-globular-structure-1-cell-is-symmetric-globular-structure :
- (x y : A) →
- is-symmetric-globular-structure
- ( globular-structure-1-cell-globular-structure G x y)
-
-open is-symmetric-globular-structure public
-
-module _
- {l1 l2 : Level} {A : UU l1} {G : globular-structure l2 A}
- (r : is-symmetric-globular-structure G)
- where
+ is-symmetric-1-cell-is-symmetric-Globular-Type :
+ is-symmetric (1-cell-Globular-Type G)
+
+ field
+ is-symmetric-1-cell-globular-type-is-symmetric-Globular-Type :
+ (x y : 0-cell-Globular-Type G) →
+ is-symmetric-Globular-Type (1-cell-globular-type-Globular-Type G x y)
- sym-1-cell-is-symmetric-globular-structure :
- {x y : A} →
- 1-cell-globular-structure G x y → 1-cell-globular-structure G y x
- sym-1-cell-is-symmetric-globular-structure {x} {y} =
- is-symmetric-1-cell-is-symmetric-globular-structure r x y
-
- sym-2-cell-is-symmetric-globular-structure :
- {x y : A} {f g : 1-cell-globular-structure G x y} →
- 2-cell-globular-structure G f g →
- 2-cell-globular-structure G g f
- sym-2-cell-is-symmetric-globular-structure {x} {y} {f} {g} =
- is-symmetric-1-cell-is-symmetric-globular-structure
- ( is-symmetric-globular-structure-1-cell-is-symmetric-globular-structure
- ( r)
- ( x)
- ( y))
- ( f)
- ( g)
+open is-symmetric-Globular-Type public
```
-### The type of symmetric globular structures
+### Symmetric globular types
```agda
-symmetric-globular-structure :
- {l1 : Level} (l2 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2)
-symmetric-globular-structure l2 A =
- Σ (globular-structure l2 A) (is-symmetric-globular-structure)
-```
+record
+ Symmetric-Globular-Type
+ (l1 l2 : Level) : UU (lsuc l1 ⊔ lsuc l2)
+ where
-## Examples
+ field
+ globular-type-Symmetric-Globular-Type : Globular-Type l1 l2
-### The symmetric globular structure on a type given by its identity types
+ 0-cell-Symmetric-Globular-Type : UU l1
+ 0-cell-Symmetric-Globular-Type =
+ 0-cell-Globular-Type globular-type-Symmetric-Globular-Type
-```agda
-is-symmetric-globular-structure-Id :
- {l : Level} (A : UU l) →
- is-symmetric-globular-structure (globular-structure-Id A)
-is-symmetric-globular-structure-Id A =
- λ where
- .is-symmetric-1-cell-is-symmetric-globular-structure x y →
- inv
- .is-symmetric-globular-structure-1-cell-is-symmetric-globular-structure x y →
- is-symmetric-globular-structure-Id (x = y)
+ 1-cell-globular-type-Symmetric-Globular-Type :
+ (x y : 0-cell-Symmetric-Globular-Type) →
+ Globular-Type l2 l2
+ 1-cell-globular-type-Symmetric-Globular-Type =
+ 1-cell-globular-type-Globular-Type globular-type-Symmetric-Globular-Type
+
+ 1-cell-Symmetric-Globular-Type :
+ (x y : 0-cell-Symmetric-Globular-Type) → UU l2
+ 1-cell-Symmetric-Globular-Type =
+ 1-cell-Globular-Type globular-type-Symmetric-Globular-Type
+
+ field
+ is-symmetric-Symmetric-Globular-Type :
+ is-symmetric-Globular-Type globular-type-Symmetric-Globular-Type
+
+ inv-1-cell-Symmetric-Globular-Type :
+ {x y : 0-cell-Symmetric-Globular-Type} →
+ 1-cell-Symmetric-Globular-Type x y → 1-cell-Symmetric-Globular-Type y x
+ inv-1-cell-Symmetric-Globular-Type =
+ is-symmetric-1-cell-is-symmetric-Globular-Type
+ is-symmetric-Symmetric-Globular-Type
+ _
+ _
+
+ is-symmetric-1-cell-globular-type-Symmetric-Globular-Type :
+ (x y : 0-cell-Symmetric-Globular-Type) →
+ is-symmetric-Globular-Type
+ ( 1-cell-globular-type-Symmetric-Globular-Type x y)
+ is-symmetric-1-cell-globular-type-Symmetric-Globular-Type =
+ is-symmetric-1-cell-globular-type-is-symmetric-Globular-Type
+ is-symmetric-Symmetric-Globular-Type
+
+ 1-cell-symmetric-globular-type-Symmetric-Globular-Type :
+ (x y : 0-cell-Symmetric-Globular-Type) →
+ Symmetric-Globular-Type l2 l2
+ globular-type-Symmetric-Globular-Type
+ ( 1-cell-symmetric-globular-type-Symmetric-Globular-Type x y) =
+ 1-cell-globular-type-Symmetric-Globular-Type x y
+ is-symmetric-Symmetric-Globular-Type
+ ( 1-cell-symmetric-globular-type-Symmetric-Globular-Type x y) =
+ is-symmetric-1-cell-globular-type-Symmetric-Globular-Type x y
+
+open Symmetric-Globular-Type public
```
diff --git a/src/structured-types/terminal-globular-types.lagda.md b/src/structured-types/terminal-globular-types.lagda.md
new file mode 100644
index 0000000000..62331d496b
--- /dev/null
+++ b/src/structured-types/terminal-globular-types.lagda.md
@@ -0,0 +1,38 @@
+# Terminal globular types
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.terminal-globular-types where
+```
+
+Imports
+
+```agda
+open import foundation.contractible-types
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+A [globular type](structured-types.globular-types.md) `G` is said to be
+{{#concept "terminal" Disambiguation="globular type" Agda=is-terminal-Globular-Type}}
+if for any globular type `H` the type of
+[globular maps](structured-types.globular-maps.md) `H → G` is
+[contractible](foundation-core.contractible-types.md).
+
+## Definitions
+
+### The predicate of being a terminal globular type
+
+```agda
+is-terminal-Globular-Type :
+ {l1 l2 : Level} → Globular-Type l1 l2 → UUω
+is-terminal-Globular-Type G =
+ {l3 l4 : Level} (H : Globular-Type l3 l4) → is-contr (globular-map H G)
+```
diff --git a/src/structured-types/transitive-globular-maps.lagda.md b/src/structured-types/transitive-globular-maps.lagda.md
new file mode 100644
index 0000000000..aa994efec4
--- /dev/null
+++ b/src/structured-types/transitive-globular-maps.lagda.md
@@ -0,0 +1,220 @@
+# Transitive globular maps
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.transitive-globular-maps where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-functions
+open import foundation.identity-types
+open import foundation.universe-levels
+
+open import structured-types.globular-maps
+open import structured-types.transitive-globular-types
+```
+
+
+
+## Idea
+
+A {{#concept "transitive globular map" Agda=transitive-globular-map}} between
+two [transitive globular types](structured-types.transitive-globular-types.md)
+`G` and `H` is a [globular map](structured-types.globular-maps.md) `f : G → H`
+equipped with a family of [identifications](foundation-core.identity-types.md)
+
+```text
+ f₁ (q ∘G p) = f₁ q ∘H f₁ p
+```
+
+from the image of the composite of two 1-cells `q` and `p` in `G` to the
+composite of `f₁ q` and `f₁ p` in `H`, such that the globular map
+`f' : G' x y → H' (f₀ x) (f₀ y)` is again transitive.
+
+## Definitions
+
+### The predicate of preserving transitivity
+
+```agda
+record
+ is-transitive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Transitive-Globular-Type l1 l2) (H : Transitive-Globular-Type l3 l4)
+ (f : globular-map-Transitive-Globular-Type G H) :
+ UU (l1 ⊔ l2 ⊔ l4)
+ where
+ coinductive
+
+ field
+ preserves-comp-1-cell-is-transitive-globular-map :
+ {x y z : 0-cell-Transitive-Globular-Type G} →
+ (q : 1-cell-Transitive-Globular-Type G y z)
+ (p : 1-cell-Transitive-Globular-Type G x y) →
+ 1-cell-globular-map f (comp-1-cell-Transitive-Globular-Type G q p) =
+ comp-1-cell-Transitive-Globular-Type H
+ ( 1-cell-globular-map f q)
+ ( 1-cell-globular-map f p)
+
+ field
+ is-transitive-1-cell-globular-map-is-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ is-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H _ _)
+ ( 1-cell-globular-map-globular-map f)
+
+open is-transitive-globular-map public
+```
+
+### transitive globular maps
+
+```agda
+record
+ transitive-globular-map
+ {l1 l2 l3 l4 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4) :
+ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ where
+
+ field
+ globular-map-transitive-globular-map :
+ globular-map-Transitive-Globular-Type G H
+
+ 0-cell-transitive-globular-map :
+ 0-cell-Transitive-Globular-Type G → 0-cell-Transitive-Globular-Type H
+ 0-cell-transitive-globular-map =
+ 0-cell-globular-map globular-map-transitive-globular-map
+
+ 1-cell-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ 1-cell-Transitive-Globular-Type G x y →
+ 1-cell-Transitive-Globular-Type H
+ ( 0-cell-transitive-globular-map x)
+ ( 0-cell-transitive-globular-map y)
+ 1-cell-transitive-globular-map =
+ 1-cell-globular-map globular-map-transitive-globular-map
+
+ 1-cell-globular-map-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ globular-map-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-transitive-globular-map x)
+ ( 0-cell-transitive-globular-map y))
+ 1-cell-globular-map-transitive-globular-map =
+ 1-cell-globular-map-globular-map globular-map-transitive-globular-map
+
+ 2-cell-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G}
+ {f g : 1-cell-Transitive-Globular-Type G x y} →
+ 2-cell-Transitive-Globular-Type G f g →
+ 2-cell-Transitive-Globular-Type H
+ ( 1-cell-transitive-globular-map f)
+ ( 1-cell-transitive-globular-map g)
+ 2-cell-transitive-globular-map =
+ 2-cell-globular-map globular-map-transitive-globular-map
+
+ 2-cell-globular-map-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G}
+ {f g : 1-cell-Transitive-Globular-Type G x y} →
+ globular-map-Transitive-Globular-Type
+ ( 2-cell-transitive-globular-type-Transitive-Globular-Type G f g)
+ ( 2-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 1-cell-transitive-globular-map f)
+ ( 1-cell-transitive-globular-map g))
+ 2-cell-globular-map-transitive-globular-map =
+ 2-cell-globular-map-globular-map
+ ( globular-map-transitive-globular-map)
+ ( _)
+ ( _)
+
+ field
+ is-transitive-transitive-globular-map :
+ is-transitive-globular-map G H
+ globular-map-transitive-globular-map
+
+ preserves-comp-1-cell-transitive-globular-map :
+ {x y z : 0-cell-Transitive-Globular-Type G}
+ (q : 1-cell-Transitive-Globular-Type G y z)
+ (p : 1-cell-Transitive-Globular-Type G x y) →
+ 1-cell-transitive-globular-map
+ ( comp-1-cell-Transitive-Globular-Type G q p) =
+ comp-1-cell-Transitive-Globular-Type H
+ ( 1-cell-transitive-globular-map q)
+ ( 1-cell-transitive-globular-map p)
+ preserves-comp-1-cell-transitive-globular-map =
+ preserves-comp-1-cell-is-transitive-globular-map
+ is-transitive-transitive-globular-map
+
+ is-transitive-1-cell-globular-map-transitive-globular-map :
+ { x y : 0-cell-Transitive-Globular-Type G} →
+ is-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-transitive-globular-map x)
+ ( 0-cell-transitive-globular-map y))
+ ( 1-cell-globular-map-transitive-globular-map)
+ is-transitive-1-cell-globular-map-transitive-globular-map =
+ is-transitive-1-cell-globular-map-is-transitive-globular-map
+ is-transitive-transitive-globular-map
+
+ 1-cell-transitive-globular-map-transitive-globular-map :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H
+ ( 0-cell-transitive-globular-map x)
+ ( 0-cell-transitive-globular-map y))
+ globular-map-transitive-globular-map
+ 1-cell-transitive-globular-map-transitive-globular-map =
+ 1-cell-globular-map-transitive-globular-map
+ is-transitive-transitive-globular-map
+ 1-cell-transitive-globular-map-transitive-globular-map =
+ is-transitive-1-cell-globular-map-transitive-globular-map
+
+open transitive-globular-map public
+```
+
+### Composition of transitive maps
+
+```agda
+map-comp-transitive-globular-map :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4)
+ (K : Transitive-Globular-Type l5 l6) →
+ transitive-globular-map H K → transitive-globular-map G H →
+ globular-map-Transitive-Globular-Type G K
+map-comp-transitive-globular-map G H K g f =
+ comp-globular-map
+ ( globular-map-transitive-globular-map g)
+ ( globular-map-transitive-globular-map f)
+
+is-transitive-comp-transitive-globular-map :
+ {l1 l2 l3 l4 l5 l6 : Level}
+ (G : Transitive-Globular-Type l1 l2)
+ (H : Transitive-Globular-Type l3 l4)
+ (K : Transitive-Globular-Type l5 l6) →
+ (g : transitive-globular-map H K)
+ (f : transitive-globular-map G H) →
+ is-transitive-globular-map G K
+ ( map-comp-transitive-globular-map G H K g f)
+preserves-comp-1-cell-is-transitive-globular-map
+ ( is-transitive-comp-transitive-globular-map G H K g f) q p =
+ ( ap
+ ( 1-cell-transitive-globular-map g)
+ ( preserves-comp-1-cell-transitive-globular-map f q p)) ∙
+ ( preserves-comp-1-cell-transitive-globular-map g _ _)
+is-transitive-1-cell-globular-map-is-transitive-globular-map
+ ( is-transitive-comp-transitive-globular-map G H K g f) =
+ is-transitive-comp-transitive-globular-map
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G _ _)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H _ _)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type K _ _)
+ ( 1-cell-transitive-globular-map-transitive-globular-map g)
+ ( 1-cell-transitive-globular-map-transitive-globular-map f)
+```
diff --git a/src/structured-types/transitive-globular-types.lagda.md b/src/structured-types/transitive-globular-types.lagda.md
index 798d612054..39a12d99f8 100644
--- a/src/structured-types/transitive-globular-types.lagda.md
+++ b/src/structured-types/transitive-globular-types.lagda.md
@@ -9,10 +9,12 @@ module structured-types.transitive-globular-types where
Imports
```agda
+open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.universe-levels
+open import structured-types.globular-maps
open import structured-types.globular-types
```
@@ -32,70 +34,235 @@ at every level $n$.
**Note.** This is not established terminology and may change.
-## Definition
+## Definitions
-### Transitivity structure on a globular type
+### Transitivity structure on globular types
```agda
record
- is-transitive-globular-structure
- {l1 l2 : Level} {A : UU l1} (G : globular-structure l2 A) : UU (l1 ⊔ l2)
+ is-transitive-Globular-Type
+ {l1 l2 : Level} (G : Globular-Type l1 l2) : UU (l1 ⊔ l2)
where
coinductive
+
+ field
+ comp-1-cell-is-transitive-Globular-Type :
+ is-transitive' (1-cell-Globular-Type G)
+
field
- comp-1-cell-is-transitive-globular-structure :
- {x y z : A} →
- 1-cell-globular-structure G y z →
- 1-cell-globular-structure G x y →
- 1-cell-globular-structure G x z
+ is-transitive-1-cell-globular-type-is-transitive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ is-transitive-Globular-Type
+ ( 1-cell-globular-type-Globular-Type G x y)
+
+open is-transitive-Globular-Type public
- is-transitive-globular-structure-1-cell-is-transitive-globular-structure :
- (x y : A) →
- is-transitive-globular-structure
- ( globular-structure-1-cell-globular-structure G x y)
+module _
+ {l1 l2 : Level} {G : Globular-Type l1 l2}
+ (t : is-transitive-Globular-Type G)
+ where
-open is-transitive-globular-structure public
+ comp-2-cell-is-transitive-Globular-Type :
+ {x y : 0-cell-Globular-Type G} →
+ is-transitive' (2-cell-Globular-Type G {x} {y})
+ comp-2-cell-is-transitive-Globular-Type =
+ comp-1-cell-is-transitive-Globular-Type
+ ( is-transitive-1-cell-globular-type-is-transitive-Globular-Type t)
+
+ is-transitive-2-cell-globular-type-is-transitive-Globular-Type :
+ {x y : 0-cell-Globular-Type G}
+ {f g : 1-cell-Globular-Type G x y} →
+ is-transitive-Globular-Type
+ ( 2-cell-globular-type-Globular-Type G f g)
+ is-transitive-2-cell-globular-type-is-transitive-Globular-Type =
+ is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ ( is-transitive-1-cell-globular-type-is-transitive-Globular-Type t)
+
+module _
+ {l1 l2 : Level} {G : Globular-Type l1 l2}
+ (t : is-transitive-Globular-Type G)
+ where
+
+ comp-3-cell-is-transitive-Globular-Type :
+ {x y : 0-cell-Globular-Type G}
+ {f g : 1-cell-Globular-Type G x y} →
+ is-transitive' (3-cell-Globular-Type G {x} {y} {f} {g})
+ comp-3-cell-is-transitive-Globular-Type =
+ comp-2-cell-is-transitive-Globular-Type
+ ( is-transitive-1-cell-globular-type-is-transitive-Globular-Type t)
+
+ is-transitive-3-cell-globular-type-is-transitive-Globular-Type :
+ {x y : 0-cell-Globular-Type G}
+ {f g : 1-cell-Globular-Type G x y}
+ {s t : 2-cell-Globular-Type G f g} →
+ is-transitive-Globular-Type
+ ( 3-cell-globular-type-Globular-Type G s t)
+ is-transitive-3-cell-globular-type-is-transitive-Globular-Type =
+ is-transitive-2-cell-globular-type-is-transitive-Globular-Type
+ ( is-transitive-1-cell-globular-type-is-transitive-Globular-Type t)
+```
+
+### Transitive globular types
+
+```agda
+record
+ Transitive-Globular-Type
+ (l1 l2 : Level) : UU (lsuc l1 ⊔ lsuc l2)
+ where
+
+ constructor
+ make-Transitive-Globular-Type
+```
+
+The underlying globular type of a transitive globular type:
+
+```agda
+ field
+ globular-type-Transitive-Globular-Type : Globular-Type l1 l2
+
+ 0-cell-Transitive-Globular-Type : UU l1
+ 0-cell-Transitive-Globular-Type =
+ 0-cell-Globular-Type globular-type-Transitive-Globular-Type
+
+ 1-cell-globular-type-Transitive-Globular-Type :
+ (x y : 0-cell-Transitive-Globular-Type) → Globular-Type l2 l2
+ 1-cell-globular-type-Transitive-Globular-Type =
+ 1-cell-globular-type-Globular-Type globular-type-Transitive-Globular-Type
+
+ 1-cell-Transitive-Globular-Type :
+ 0-cell-Transitive-Globular-Type → 0-cell-Transitive-Globular-Type → UU l2
+ 1-cell-Transitive-Globular-Type =
+ 1-cell-Globular-Type globular-type-Transitive-Globular-Type
+
+ 2-cell-globular-type-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type}
+ (f g : 1-cell-Transitive-Globular-Type x y) → Globular-Type l2 l2
+ 2-cell-globular-type-Transitive-Globular-Type =
+ 2-cell-globular-type-Globular-Type globular-type-Transitive-Globular-Type
+
+ 2-cell-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type}
+ (f g : 1-cell-Transitive-Globular-Type x y) → UU l2
+ 2-cell-Transitive-Globular-Type =
+ 2-cell-Globular-Type globular-type-Transitive-Globular-Type
+
+ 3-cell-globular-type-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type}
+ {f g : 1-cell-Transitive-Globular-Type x y}
+ (s t : 2-cell-Transitive-Globular-Type f g) → Globular-Type l2 l2
+ 3-cell-globular-type-Transitive-Globular-Type =
+ 3-cell-globular-type-Globular-Type globular-type-Transitive-Globular-Type
+
+ 3-cell-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type}
+ {f g : 1-cell-Transitive-Globular-Type x y}
+ (s t : 2-cell-Transitive-Globular-Type f g) → UU l2
+ 3-cell-Transitive-Globular-Type =
+ 3-cell-Globular-Type globular-type-Transitive-Globular-Type
+
+ globular-structure-Transitive-Globular-Type :
+ globular-structure l2 0-cell-Transitive-Globular-Type
+ globular-structure-Transitive-Globular-Type =
+ globular-structure-0-cell-Globular-Type
+ ( globular-type-Transitive-Globular-Type)
+```
+
+The composition structure of a transitive globular type:
+
+```agda
+ field
+ is-transitive-Transitive-Globular-Type :
+ is-transitive-Globular-Type globular-type-Transitive-Globular-Type
+
+ comp-1-cell-Transitive-Globular-Type :
+ is-transitive' 1-cell-Transitive-Globular-Type
+ comp-1-cell-Transitive-Globular-Type =
+ comp-1-cell-is-transitive-Globular-Type
+ is-transitive-Transitive-Globular-Type
+
+ comp-2-cell-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type} →
+ is-transitive' (2-cell-Transitive-Globular-Type {x} {y})
+ comp-2-cell-Transitive-Globular-Type =
+ comp-2-cell-is-transitive-Globular-Type
+ is-transitive-Transitive-Globular-Type
+
+ comp-3-cell-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type}
+ {f g : 1-cell-Transitive-Globular-Type x y} →
+ is-transitive' (3-cell-Transitive-Globular-Type {x} {y} {f} {g})
+ comp-3-cell-Transitive-Globular-Type =
+ comp-3-cell-is-transitive-Globular-Type
+ is-transitive-Transitive-Globular-Type
+
+ 1-cell-transitive-globular-type-Transitive-Globular-Type :
+ (x y : 0-cell-Transitive-Globular-Type) →
+ Transitive-Globular-Type l2 l2
+ globular-type-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type x y) =
+ 1-cell-globular-type-Transitive-Globular-Type x y
+ is-transitive-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type x y) =
+ is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ is-transitive-Transitive-Globular-Type
+
+ 2-cell-transitive-globular-type-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type} →
+ (f g : 1-cell-Transitive-Globular-Type x y) →
+ Transitive-Globular-Type l2 l2
+ globular-type-Transitive-Globular-Type
+ ( 2-cell-transitive-globular-type-Transitive-Globular-Type f g) =
+ 2-cell-globular-type-Transitive-Globular-Type f g
+ is-transitive-Transitive-Globular-Type
+ ( 2-cell-transitive-globular-type-Transitive-Globular-Type f g) =
+ is-transitive-2-cell-globular-type-is-transitive-Globular-Type
+ is-transitive-Transitive-Globular-Type
+
+open Transitive-Globular-Type public
+```
+
+### The predicate of being a transitive globular structure
+
+```agda
+is-transitive-globular-structure :
+ {l1 l2 : Level} {A : UU l1} (G : globular-structure l2 A) → UU (l1 ⊔ l2)
+is-transitive-globular-structure G =
+ is-transitive-Globular-Type (make-Globular-Type G)
module _
{l1 l2 : Level} {A : UU l1} {G : globular-structure l2 A}
- (r : is-transitive-globular-structure G)
+ (t : is-transitive-globular-structure G)
where
+ comp-1-cell-is-transitive-globular-structure :
+ is-transitive' (1-cell-globular-structure G)
+ comp-1-cell-is-transitive-globular-structure =
+ comp-1-cell-is-transitive-Globular-Type t
+
+ is-transitive-globular-structure-1-cell-is-transitive-globular-structure :
+ {x y : A} →
+ is-transitive-globular-structure
+ ( globular-structure-1-cell-globular-structure G x y)
+ is-transitive-globular-structure-1-cell-is-transitive-globular-structure =
+ is-transitive-1-cell-globular-type-is-transitive-Globular-Type t
+
comp-2-cell-is-transitive-globular-structure :
- {x y : A} {f g h : 1-cell-globular-structure G x y} →
- 2-cell-globular-structure G g h →
- 2-cell-globular-structure G f g →
- 2-cell-globular-structure G f h
+ {x y : A} → is-transitive' (2-cell-globular-structure G {x} {y})
comp-2-cell-is-transitive-globular-structure {x} {y} =
- comp-1-cell-is-transitive-globular-structure
- ( is-transitive-globular-structure-1-cell-is-transitive-globular-structure
- ( r)
- ( x)
- ( y))
+ comp-2-cell-is-transitive-Globular-Type t
is-transitive-globular-structure-2-cell-is-transitive-globular-structure :
- {x y : A} (f g : 1-cell-globular-structure G x y) →
+ {x y : A} {f g : 1-cell-globular-structure G x y} →
is-transitive-globular-structure
( globular-structure-2-cell-globular-structure G f g)
- is-transitive-globular-structure-2-cell-is-transitive-globular-structure
- { x} {y} =
- is-transitive-globular-structure-1-cell-is-transitive-globular-structure
- ( is-transitive-globular-structure-1-cell-is-transitive-globular-structure
- ( r)
- ( x)
- ( y))
+ is-transitive-globular-structure-2-cell-is-transitive-globular-structure =
+ is-transitive-2-cell-globular-type-is-transitive-Globular-Type t
comp-3-cell-is-transitive-globular-structure :
- {x y : A} {f g : 1-cell-globular-structure G x y}
- {H K L : 2-cell-globular-structure G f g} →
- 3-cell-globular-structure G K L →
- 3-cell-globular-structure G H K →
- 3-cell-globular-structure G H L
- comp-3-cell-is-transitive-globular-structure {x} {y} {f} {g} =
- comp-1-cell-is-transitive-globular-structure
- ( is-transitive-globular-structure-2-cell-is-transitive-globular-structure
- ( f)
- ( g))
+ {x y : A} {f g : 1-cell-globular-structure G x y} →
+ is-transitive' (3-cell-globular-structure G {x} {y} {f} {g})
+ comp-3-cell-is-transitive-globular-structure =
+ comp-3-cell-is-transitive-Globular-Type t
```
### The type of transitive globular structures on a type
@@ -107,32 +274,56 @@ transitive-globular-structure l2 A =
Σ (globular-structure l2 A) (is-transitive-globular-structure)
```
-### The type of transitive globular types
+### Globular maps between transitive globular types
+
+Since there are at least two notions of morphism between transitive globular
+types, both of which have an underlying globular map, we record here the
+definition of globular maps between transitive globular types.
```agda
-Transitive-Globular-Type : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
-Transitive-Globular-Type l1 l2 = Σ (UU l1) (transitive-globular-structure l2)
-```
+module _
+ {l1 l2 l3 l4 : Level}
+ (G : Transitive-Globular-Type l1 l2) (H : Transitive-Globular-Type l3 l4)
+ where
-## Examples
+ globular-map-Transitive-Globular-Type : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+ globular-map-Transitive-Globular-Type =
+ globular-map
+ ( globular-type-Transitive-Globular-Type G)
+ ( globular-type-Transitive-Globular-Type H)
-### The transitive globular structure on a type given by its identity types
+module _
+ {l1 l2 l3 l4 : Level}
+ (G : Transitive-Globular-Type l1 l2) (H : Transitive-Globular-Type l3 l4)
+ (f : globular-map-Transitive-Globular-Type G H)
+ where
-```agda
-is-transitive-globular-structure-Id :
- {l : Level} (A : UU l) →
- is-transitive-globular-structure (globular-structure-Id A)
-is-transitive-globular-structure-Id A =
- λ where
- .comp-1-cell-is-transitive-globular-structure
- p q →
- q ∙ p
- .is-transitive-globular-structure-1-cell-is-transitive-globular-structure
- x y →
- is-transitive-globular-structure-Id (x = y)
-
-transitive-globular-structure-Id :
- {l : Level} (A : UU l) → transitive-globular-structure l A
-transitive-globular-structure-Id A =
- ( globular-structure-Id A , is-transitive-globular-structure-Id A)
+ 0-cell-globular-map-Transitive-Globular-Type :
+ 0-cell-Transitive-Globular-Type G → 0-cell-Transitive-Globular-Type H
+ 0-cell-globular-map-Transitive-Globular-Type =
+ 0-cell-globular-map f
+
+ 1-cell-globular-map-globular-map-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ globular-map-Transitive-Globular-Type
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type G x y)
+ ( 1-cell-transitive-globular-type-Transitive-Globular-Type H _ _)
+ 1-cell-globular-map-globular-map-Transitive-Globular-Type =
+ 1-cell-globular-map-globular-map f
+
+ 1-cell-globular-map-Transitive-Globular-Type :
+ {x y : 0-cell-Transitive-Globular-Type G} →
+ 1-cell-Transitive-Globular-Type G x y →
+ 1-cell-Transitive-Globular-Type H
+ ( 0-cell-globular-map-Transitive-Globular-Type x)
+ ( 0-cell-globular-map-Transitive-Globular-Type y)
+ 1-cell-globular-map-Transitive-Globular-Type =
+ 1-cell-globular-map f
```
+
+## See also
+
+- [Composition structure on globular types](structured-types.composition-structure-globular-types.md)
+- [Noncoherent wild higher precategories](wild-category-theory.noncoherent-wild-higher-precategories.md)
+ are globular types that are both
+ [reflexive](structured-types.reflexive-globular-types.md) and transitive.
diff --git a/src/structured-types/unit-globular-type.lagda.md b/src/structured-types/unit-globular-type.lagda.md
new file mode 100644
index 0000000000..f3027a82bd
--- /dev/null
+++ b/src/structured-types/unit-globular-type.lagda.md
@@ -0,0 +1,40 @@
+# The unit globular type
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.unit-globular-type where
+```
+
+Imports
+
+```agda
+open import foundation.unit-type
+open import foundation.universe-levels
+
+open import structured-types.constant-globular-types
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+The {{#concept "unit globular type" Agda=unit-Globular-Type}} is the
+[constant globular type](structured-types.constant-globular-types.md) at the
+[unit type](foundation.unit-type.md). That is, the unit globular type is the
+[globular type](structured-types.globular-types.md) `𝟏` given by
+
+```text
+ 𝟏₀ := unit
+ 𝟏' x y := 𝟏.
+```
+
+## Definitions
+
+### The unit globular type
+
+```agda
+unit-Globular-Type : Globular-Type lzero lzero
+unit-Globular-Type = constant-Globular-Type unit
+```
diff --git a/src/structured-types/unit-reflexive-globular-type.lagda.md b/src/structured-types/unit-reflexive-globular-type.lagda.md
new file mode 100644
index 0000000000..71dc61e919
--- /dev/null
+++ b/src/structured-types/unit-reflexive-globular-type.lagda.md
@@ -0,0 +1,53 @@
+# The unit reflexive globular type
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.unit-reflexive-globular-type where
+```
+
+Imports
+
+```agda
+open import foundation.unit-type
+open import foundation.universe-levels
+
+open import structured-types.reflexive-globular-types
+open import structured-types.unit-globular-type
+```
+
+
+
+## Idea
+
+The
+{{#concept "unit reflexive globular type" Agda=unit-Reflexive-Globular-Type}} is
+the [reflexive globular type](structured-types.reflexive-globular-types.md) `𝟏`
+given by
+
+```text
+ 𝟏₀ := unit
+ 𝟏' x y := 𝟏
+ refl 𝟏 x := star.
+```
+
+## Definitions
+
+### The unit reflexive globular type
+
+```agda
+is-reflexive-unit-Globular-Type :
+ is-reflexive-Globular-Type unit-Globular-Type
+is-reflexive-1-cell-is-reflexive-Globular-Type
+ is-reflexive-unit-Globular-Type x =
+ star
+is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ is-reflexive-unit-Globular-Type =
+ is-reflexive-unit-Globular-Type
+
+unit-Reflexive-Globular-Type : Reflexive-Globular-Type lzero lzero
+globular-type-Reflexive-Globular-Type unit-Reflexive-Globular-Type =
+ unit-Globular-Type
+refl-Reflexive-Globular-Type unit-Reflexive-Globular-Type =
+ is-reflexive-unit-Globular-Type
+```
diff --git a/src/structured-types/universal-globular-type.lagda.md b/src/structured-types/universal-globular-type.lagda.md
new file mode 100644
index 0000000000..1e8b52694d
--- /dev/null
+++ b/src/structured-types/universal-globular-type.lagda.md
@@ -0,0 +1,202 @@
+# The universal globular type
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.universal-globular-type where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.spans
+open import foundation.universe-levels
+
+open import structured-types.dependent-globular-types
+open import structured-types.exponentials-globular-types
+open import structured-types.globular-maps
+open import structured-types.globular-types
+```
+
+
+
+## Idea
+
+The {{#concept "universal globular type"}} `𝒢 l` at
+[universe level](foundation.universe-levels.md) `l` has the universe `UU l` as
+its type of `0`-cells, and uses iterated binary relations for its globular
+structure.
+
+Specifically, the universal globular type is a translation from category theory
+into type theory of the Hofmann–Streicher universe {{#cite Awodey22}} of
+presheaves on the globular category `Γ`
+
+```text
+ s₀ s₁ s₂
+ -----> -----> ----->
+ 0 -----> 1 -----> 2 -----> ⋯.
+ t₀ t₁ t₂
+```
+
+The Hofmann–Streicher universe of presheaves on a category `𝒞` is the presheaf
+
+```text
+ 𝒰_𝒞 I := Presheaf 𝒞/I
+ El_𝒞 I A := A *,
+```
+
+where `*` is the terminal object of `𝒞/I`, i.e., the identity morphism on `I`.
+
+We compute a few instances of the slice category `Γ/I`:
+
+- The slice category `Γ/0` is the terminal category.
+- The slice category `Γ/1` is the representing cospan
+
+ ```text
+ s₀ t₀
+ s₀ -----> 1 <----- t₀
+ ```
+
+ The functors `s₀ t₀ : Γ/0 → Γ/1` are given by `* ↦ s₀` and `* ↦ t₀`,
+ respectively.
+
+- The slice category `Γ/2` is the free category on the graph
+
+ ```text
+ s₁s₀ t₁s₀
+ | |
+ | |
+ ∨ ∨
+ s₁ -----> 1 <----- t₁
+ ∧ ∧
+ | |
+ | |
+ s₁t₀ t₁t₀
+ ```
+
+ and so on. The functors `s₁ t₁ : Γ/1 → Γ/2` are given by
+
+ ```text
+ s₀ ↦ s₁s₀ s₀ ↦ t₁s₀
+ 1 ↦ s₁ and 1 ↦ t₁
+ t₀ ↦ s₁t₀ t₀ ↦ t₁t₀
+ ```
+
+ respectively.
+
+More specifically, the slice category `Γ/n` is isomorphic to the iterated
+suspension `Σⁿ1` of the terminal category.
+
+This means that:
+
+- The type `0`-cells of the universal globular type is the universe of types
+ `UU l`.
+- The type of `1`-cells from `X` to `Y` of the universal globular type is the
+ type of spans from `X` to `Y`.
+- The type of `2`-cells between any two spans `R` and `S` from `X` to `Y` is the
+ type of families of spans from `R x y` to `S x y` indexed by `x : X` and
+ `y : Y`, and so on.
+
+In other words, the universal globular type `𝒰` has the universe of types as its
+type of `0`-cells, and for any two types `X` and `Y`, the globular type of
+`1`-cells is the double
+[exponent](structured-types.exponentials-globular-types.md) `(𝒰^Y)^X` of
+globular types.
+
+Unfortunately, the termination checking algorithm isn't able to establish that
+this definition is terminating. Nevertheless, when termination checking is
+turned off for this definition, the types of the `n`-cells come out correctly
+for low values of `n`.
+
+## Definitions
+
+### The universal globular type
+
+```agda
+0-cell-universal-Globular-Type : (l1 l2 : Level) → UU (lsuc l1)
+0-cell-universal-Globular-Type l1 l2 = UU l1
+
+{-# TERMINATING #-}
+
+universal-Globular-Type :
+ (l1 l2 : Level) → Globular-Type (lsuc l1) (l1 ⊔ lsuc l2)
+0-cell-Globular-Type (universal-Globular-Type l1 l2) =
+ 0-cell-universal-Globular-Type l1 l2
+1-cell-globular-type-Globular-Type (universal-Globular-Type l1 l2) X Y =
+ exponential-Globular-Type X
+ ( exponential-Globular-Type Y (universal-Globular-Type l2 l2))
+
+1-cell-universal-Globular-Type :
+ {l1 l2 : Level} (X Y : UU l1) → UU (l1 ⊔ lsuc l2)
+1-cell-universal-Globular-Type {l1} {l2} =
+ 1-cell-Globular-Type (universal-Globular-Type l1 l2)
+
+2-cell-universal-Globular-Type :
+ {l1 l2 : Level} {X Y : UU l1} (R S : X → Y → UU l2) → UU (l1 ⊔ lsuc l2)
+2-cell-universal-Globular-Type {l1} {l2} {X} {Y} =
+ 2-cell-Globular-Type (universal-Globular-Type l1 l2)
+
+3-cell-universal-Globular-Type :
+ {l1 l2 : Level} {X Y : UU l1} {R S : X → Y → UU l2}
+ (A B : (x : X) (y : Y) → R x y → S x y → UU l2) → UU (l1 ⊔ lsuc l2)
+3-cell-universal-Globular-Type {l1} {l2} =
+ 3-cell-Globular-Type (universal-Globular-Type l1 l2)
+```
+
+### Dependent globular types
+
+#### Morphisms into the universal globular type induce dependent globular types
+
+```agda
+0-cell-dependent-globular-type-hom-universal-Globular-Type :
+ {l1 l2 l3 l4 : Level} (G : Globular-Type l1 l2)
+ (h : globular-map G (universal-Globular-Type l3 l4)) →
+ 0-cell-Globular-Type G → UU l3
+0-cell-dependent-globular-type-hom-universal-Globular-Type G h =
+ 0-cell-globular-map h
+
+dependent-globular-type-hom-universal-Globular-Type :
+ {l1 l2 l3 l4 : Level} (G : Globular-Type l1 l2)
+ (h : globular-map G (universal-Globular-Type l3 l4)) →
+ Dependent-Globular-Type l3 l4 G
+0-cell-Dependent-Globular-Type
+ ( dependent-globular-type-hom-universal-Globular-Type G h) =
+ 0-cell-dependent-globular-type-hom-universal-Globular-Type G h
+1-cell-dependent-globular-type-Dependent-Globular-Type
+ ( dependent-globular-type-hom-universal-Globular-Type G h)
+ {x} {x'} y y' =
+ dependent-globular-type-hom-universal-Globular-Type
+ ( 1-cell-globular-type-Globular-Type G x x')
+ ( ev-hom-exponential-Globular-Type
+ ( ev-hom-exponential-Globular-Type
+ ( 1-cell-globular-map-globular-map h {x} {x'})
+ ( y))
+ ( y'))
+```
+
+#### Dependent globular types induce morphisms into the universal globular type
+
+```agda
+{-# TERMINATING #-}
+
+characteristic-globular-map-Dependent-Globular-Type :
+ {l1 l2 l3 l4 : Level} {G : Globular-Type l1 l2}
+ (H : Dependent-Globular-Type l3 l4 G) →
+ globular-map G (universal-Globular-Type l3 l4)
+0-cell-globular-map
+ ( characteristic-globular-map-Dependent-Globular-Type {G = G} H) =
+ 0-cell-Dependent-Globular-Type H
+1-cell-globular-map-globular-map
+ ( characteristic-globular-map-Dependent-Globular-Type {G = G} H) {x} {x'} =
+ bind-family-globular-maps
+ ( λ y →
+ bind-family-globular-maps
+ ( λ y' →
+ characteristic-globular-map-Dependent-Globular-Type
+ ( 1-cell-dependent-globular-type-Dependent-Globular-Type H y y')))
+```
+
+## References
+
+{{#bibliography}}
diff --git a/src/structured-types/universal-reflexive-globular-type.lagda.md b/src/structured-types/universal-reflexive-globular-type.lagda.md
new file mode 100644
index 0000000000..6bb22b4d99
--- /dev/null
+++ b/src/structured-types/universal-reflexive-globular-type.lagda.md
@@ -0,0 +1,114 @@
+# The universal reflexive globular type
+
+```agda
+{-# OPTIONS --guardedness #-}
+
+module structured-types.universal-reflexive-globular-type where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import structured-types.reflexive-globular-types
+```
+
+
+
+## Idea
+
+The {{#concept "universal reflexive globular type"}} `𝒢 l` at
+[universe level](foundation.universe-levels.md) is a translation from category
+theory into type theory of the Hofmann–Streicher universe {{#cite Awodey22}} of
+presheaves on the reflexive globular category `Γʳ`
+
+```text
+ s₀ s₁ s₂
+ -----> -----> ----->
+ 0 <-r₀-- 1 <-r₁-- 2 <-r₂-- ⋯,
+ -----> -----> ----->
+ t₀ t₁ t₂
+```
+
+in which the _reflexive globular identities_
+
+```text
+ rs = id
+ rt = id
+ ss = ts
+ tt = st
+```
+
+hold.
+
+The Hofmann–Streicher universe of presheaves on a category `𝒞` is the presheaf
+obtained by applying the functoriality of the right adjoint `ν : Cat → Psh 𝒞` of
+the _category of elements functor_ `∫_𝒞 : Psh 𝒞 → Cat` to the universal discrete
+fibration `π : Pointed-Type → Type`. More specifically, the Hofmann–Streicher
+universe `(𝒰_𝒞 , El_𝒞)` is given by
+
+```text
+ 𝒰_𝒞 I := Presheaf 𝒞/I
+ El_𝒞 I A := A *,
+```
+
+where `*` is the terminal object of `𝒞/I`, i.e., the identity morphism on `I`.
+
+We compute a few instances of the slice category `Γʳ/I`:
+
+- The category Γʳ/0 is the category
+
+ ```text
+ s₀ s₁ s₂
+ -----> -----> ----->
+ 1 <-r₀-- r₀ <-r₁-- r₀r₁ <-r₂-- ⋯.
+ -----> -----> ----->
+ t₀ t₁ t₂
+ ```
+
+ In other words, we have an isomorphism of categories `Γʳ/0 ≅ Γʳ`.
+
+- The category Γʳ/1 is the category
+
+ ```text
+ ⋮
+ r₁r₂
+ ∧|∧
+ |||
+ |∨|
+ r₁
+ ∧|∧
+ s₁ s₀ ||| s₀ s₁
+ <----- <----- s₀ |∨| t₀ -----> ----->
+ ⋯ s₀r₀r₁ --r₁-> s₀r₀ --r₀-> s₀ -----> 1 <----- t₀ <-r₀-- t₀r₀ <-r₁-- t₀r₀r₁ ⋯.
+ <----- <----- -----> ----->
+ t₁ t₀ t₀ t₁
+ ```
+
+## Definitions
+
+```agda
+module _
+ (l1 l2 : Level)
+ where
+
+ 0-cell-universal-Reflexive-Globular-Type : UU (lsuc l1 ⊔ lsuc l2)
+ 0-cell-universal-Reflexive-Globular-Type =
+ Reflexive-Globular-Type l1 l2
+```
+
+## See also
+
+- [The universal directed graph](graph-theory.universal-directed-graph.md)
+- [The universal globular type](structured-types.universal-globular-type.md)
+- [The universal reflexive graph](graph-theory.universal-reflexive-graph.md)
+
+## External links
+
+- [Globular sets](https://ncatlab.org/nlab/show/globular+set) at the $n$Lab.
+
+## References
+
+{{#bibliography}}
diff --git a/src/structured-types/wild-category-of-pointed-types.lagda.md b/src/structured-types/wild-category-of-pointed-types.lagda.md
index 14d31f1fa0..40effbc29d 100644
--- a/src/structured-types/wild-category-of-pointed-types.lagda.md
+++ b/src/structured-types/wild-category-of-pointed-types.lagda.md
@@ -16,6 +16,7 @@ open import foundation.identity-types
open import foundation.universe-levels
open import foundation.whiskering-identifications-concatenation
+open import structured-types.discrete-reflexive-globular-types
open import structured-types.globular-types
open import structured-types.large-globular-types
open import structured-types.large-reflexive-globular-types
@@ -39,7 +40,7 @@ open import wild-category-theory.noncoherent-wild-higher-precategories
## Idea
The
-{{#concept "wild category of pointed types" Agda=uniform-Pointed-Type-Noncoherent-Large-Wild-Higher-Precategory Agda=Pointed-Type-Noncoherent-Large-Wild-Higher-Precategory}}
+{{#concept "wild category of pointed types" Agda=uniform-pointed-type-Noncoherent-Large-Wild-Higher-Precategory Agda=pointed-type-Noncoherent-Large-Wild-Higher-Precategory}}
consists of [pointed types](structured-types.pointed-types.md),
[pointed functions](structured-types.pointed-maps.md), and
[pointed homotopies](structured-types.pointed-homotopies.md).
@@ -55,220 +56,295 @@ the higher cells are [identities](foundation-core.identity-types.md).
## Definitions
-### The uniform definition of the wild category of pointed types
+### The noncoherent large wild higher precategory of pointed types, pointed maps, and uniform pointed homotopies
-#### The uniform globular structure on dependent pointed function types
+#### The large globular type of pointed types, pointed maps, and uniform pointed homotopies
```agda
-uniform-globular-structure-pointed-Π :
- {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A} →
- globular-structure (l1 ⊔ l2) (pointed-Π A B)
-uniform-globular-structure-pointed-Π =
- λ where
- .1-cell-globular-structure →
- uniform-pointed-htpy
- .globular-structure-1-cell-globular-structure f g →
- uniform-globular-structure-pointed-Π
-
-is-reflexive-uniform-globular-structure-pointed-Π :
- {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A} →
- is-reflexive-globular-structure
- ( uniform-globular-structure-pointed-Π {A = A} {B})
-is-reflexive-uniform-globular-structure-pointed-Π =
- λ where
- .is-reflexive-1-cell-is-reflexive-globular-structure →
- refl-uniform-pointed-htpy
- .is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure f g →
- is-reflexive-uniform-globular-structure-pointed-Π
-
-is-transitive-uniform-globular-structure-pointed-Π :
- {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A} →
- is-transitive-globular-structure
- ( uniform-globular-structure-pointed-Π {A = A} {B})
-is-transitive-uniform-globular-structure-pointed-Π =
- λ where
- .comp-1-cell-is-transitive-globular-structure {f} {g} {h} H K →
- concat-uniform-pointed-htpy {f = f} {g} {h} K H
- .is-transitive-globular-structure-1-cell-is-transitive-globular-structure
- H K →
- is-transitive-uniform-globular-structure-pointed-Π
+uniform-pointed-Π-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Fam l2 A) →
+ Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+0-cell-Globular-Type (uniform-pointed-Π-Globular-Type A B) =
+ pointed-Π A B
+1-cell-globular-type-Globular-Type (uniform-pointed-Π-Globular-Type A B) f g =
+ uniform-pointed-Π-Globular-Type A (eq-value-Pointed-Fam f g)
+
+uniform-pointed-map-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) →
+ Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+uniform-pointed-map-Globular-Type A B =
+ uniform-pointed-Π-Globular-Type A (constant-Pointed-Fam A B)
+
+uniform-pointed-type-Large-Globular-Type :
+ Large-Globular-Type lsuc (λ l1 l2 → l1 ⊔ l2)
+0-cell-Large-Globular-Type
+ uniform-pointed-type-Large-Globular-Type l =
+ Pointed-Type l
+1-cell-globular-type-Large-Globular-Type
+ uniform-pointed-type-Large-Globular-Type =
+ uniform-pointed-map-Globular-Type
```
-#### The uniform large globular structure on pointed types
+#### Identity structure on the large globular type of pointed types, pointed maps, and uniform pointed homotopies
```agda
-uniform-large-globular-structure-Pointed-Type :
- large-globular-structure (_⊔_) Pointed-Type
-uniform-large-globular-structure-Pointed-Type =
- λ where
- .1-cell-large-globular-structure X Y →
- (X →∗ Y)
- .globular-structure-1-cell-large-globular-structure X Y →
- uniform-globular-structure-pointed-Π
-
-is-reflexive-uniform-large-globular-structure-Pointed-Type :
- is-reflexive-large-globular-structure
- uniform-large-globular-structure-Pointed-Type
-is-reflexive-uniform-large-globular-structure-Pointed-Type =
- λ where
- .is-reflexive-1-cell-is-reflexive-large-globular-structure X →
- id-pointed-map
- .is-reflexive-globular-structure-1-cell-is-reflexive-large-globular-structure
- X Y →
- is-reflexive-uniform-globular-structure-pointed-Π
-
-is-transitive-uniform-large-globular-structure-Pointed-Type :
- is-transitive-large-globular-structure
- uniform-large-globular-structure-Pointed-Type
-is-transitive-uniform-large-globular-structure-Pointed-Type =
- λ where
- .comp-1-cell-is-transitive-large-globular-structure g f →
- g ∘∗ f
- .is-transitive-globular-structure-1-cell-is-transitive-large-globular-structure
- X Y →
- is-transitive-uniform-globular-structure-pointed-Π
+is-reflexive-uniform-pointed-Π-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Fam l2 A) →
+ is-reflexive-Globular-Type (uniform-pointed-Π-Globular-Type A B)
+is-reflexive-1-cell-is-reflexive-Globular-Type
+ ( is-reflexive-uniform-pointed-Π-Globular-Type A B) =
+ refl-uniform-pointed-htpy
+is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ ( is-reflexive-uniform-pointed-Π-Globular-Type A B)
+ { f}
+ { g} =
+ is-reflexive-uniform-pointed-Π-Globular-Type A (eq-value-Pointed-Fam f g)
+
+is-reflexive-uniform-pointed-map-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) →
+ is-reflexive-Globular-Type (uniform-pointed-map-Globular-Type A B)
+is-reflexive-uniform-pointed-map-Globular-Type A B =
+ is-reflexive-uniform-pointed-Π-Globular-Type A (constant-Pointed-Fam A B)
+
+id-structure-uniform-pointed-type-Large-Globular-Type :
+ is-reflexive-Large-Globular-Type uniform-pointed-type-Large-Globular-Type
+refl-1-cell-is-reflexive-Large-Globular-Type
+ id-structure-uniform-pointed-type-Large-Globular-Type A =
+ id-pointed-map
+is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type
+ id-structure-uniform-pointed-type-Large-Globular-Type =
+ is-reflexive-uniform-pointed-map-Globular-Type _ _
```
-#### The uniform noncoherent large wild higher precategory of pointed types
+#### Composition structure on the large globular type of pointed types, pointed maps, and uniform pointed homotopies
```agda
-uniform-Pointed-Type-Noncoherent-Large-Wild-Higher-Precategory :
- Noncoherent-Large-Wild-Higher-Precategory lsuc (_⊔_)
-uniform-Pointed-Type-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .obj-Noncoherent-Large-Wild-Higher-Precategory →
- Pointed-Type
- .hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- uniform-large-globular-structure-Pointed-Type
- .id-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- is-reflexive-uniform-large-globular-structure-Pointed-Type
- .comp-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- is-transitive-uniform-large-globular-structure-Pointed-Type
+is-transitive-uniform-pointed-Π-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Fam l2 A) →
+ is-transitive-Globular-Type (uniform-pointed-Π-Globular-Type A B)
+comp-1-cell-is-transitive-Globular-Type
+ ( is-transitive-uniform-pointed-Π-Globular-Type A B) {f} {g} {h} K H =
+ concat-uniform-pointed-htpy {f = f} {g} {h} H K
+is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ ( is-transitive-uniform-pointed-Π-Globular-Type A B) {f} {g} =
+ is-transitive-uniform-pointed-Π-Globular-Type A (eq-value-Pointed-Fam f g)
+
+uniform-pointed-Π-Transitive-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Fam l2 A) →
+ Transitive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+uniform-pointed-Π-Transitive-Globular-Type A B =
+ make-Transitive-Globular-Type
+ ( uniform-pointed-Π-Globular-Type A B)
+ ( is-transitive-uniform-pointed-Π-Globular-Type A B)
+
+is-transitive-uniform-pointed-map-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) →
+ is-transitive-Globular-Type (uniform-pointed-map-Globular-Type A B)
+is-transitive-uniform-pointed-map-Globular-Type A B =
+ is-transitive-uniform-pointed-Π-Globular-Type A (constant-Pointed-Fam A B)
+
+uniform-pointed-map-Transitive-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) →
+ Transitive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+uniform-pointed-map-Transitive-Globular-Type A B =
+ uniform-pointed-Π-Transitive-Globular-Type A (constant-Pointed-Fam A B)
+
+comp-structure-uniform-pointed-type-Large-Globular-Type :
+ is-transitive-Large-Globular-Type uniform-pointed-type-Large-Globular-Type
+comp-1-cell-is-transitive-Large-Globular-Type
+ comp-structure-uniform-pointed-type-Large-Globular-Type g f =
+ g ∘∗ f
+is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type
+ comp-structure-uniform-pointed-type-Large-Globular-Type =
+ is-transitive-uniform-pointed-Π-Globular-Type _ _
```
-### The nonuniform definition of the wild category of pointed types
-
-#### The nonuniform globular structure on dependent pointed function types
+#### The noncoherent large wild higher precategory of pointed types, pointed maps, and uniform pointed homotopies
```agda
-globular-structure-pointed-Π :
- {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A} →
- globular-structure (l1 ⊔ l2) (pointed-Π A B)
-globular-structure-pointed-Π =
- λ where
- .1-cell-globular-structure →
- pointed-htpy
- .globular-structure-1-cell-globular-structure f g
- .1-cell-globular-structure →
- pointed-2-htpy
- .globular-structure-1-cell-globular-structure f g
- .globular-structure-1-cell-globular-structure H K →
- globular-structure-Id (pointed-2-htpy H K)
-
-is-reflexive-globular-structure-pointed-Π :
- {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A} →
- is-reflexive-globular-structure (globular-structure-pointed-Π {A = A} {B})
-is-reflexive-globular-structure-pointed-Π =
- λ where
- .is-reflexive-1-cell-is-reflexive-globular-structure →
- refl-pointed-htpy
- .is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure f g
- .is-reflexive-1-cell-is-reflexive-globular-structure →
- refl-pointed-2-htpy
- .is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure f g
- .is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
- H K →
- is-reflexive-globular-structure-Id (pointed-2-htpy H K)
-
-is-transitive-globular-structure-pointed-Π :
- {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A} →
- is-transitive-globular-structure (globular-structure-pointed-Π {A = A} {B})
-is-transitive-globular-structure-pointed-Π =
- λ where
- .comp-1-cell-is-transitive-globular-structure {f} {g} {h} H K →
- concat-pointed-htpy {f = f} {g} {h} K H
- .is-transitive-globular-structure-1-cell-is-transitive-globular-structure H K
- .comp-1-cell-is-transitive-globular-structure α β →
- concat-pointed-2-htpy β α
- .is-transitive-globular-structure-1-cell-is-transitive-globular-structure H K
- .is-transitive-globular-structure-1-cell-is-transitive-globular-structure
- α β →
- is-transitive-globular-structure-Id (pointed-2-htpy α β)
+uniform-pointed-type-Noncoherent-Large-Wild-Higher-Precategory :
+ Noncoherent-Large-Wild-Higher-Precategory lsuc (_⊔_)
+large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ uniform-pointed-type-Noncoherent-Large-Wild-Higher-Precategory =
+ uniform-pointed-type-Large-Globular-Type
+id-structure-Noncoherent-Large-Wild-Higher-Precategory
+ uniform-pointed-type-Noncoherent-Large-Wild-Higher-Precategory =
+ id-structure-uniform-pointed-type-Large-Globular-Type
+comp-structure-Noncoherent-Large-Wild-Higher-Precategory
+ uniform-pointed-type-Noncoherent-Large-Wild-Higher-Precategory =
+ comp-structure-uniform-pointed-type-Large-Globular-Type
```
-#### The nonuniform large globular structure on pointed types
+### The noncoherent large wild higher precategory of pointed types, pointed maps, and nonuniform homotopies
+
+#### The large globular type of pointed types, pointed maps, and nonuniform pointed homotopies
```agda
-large-globular-structure-Pointed-Type :
- large-globular-structure (_⊔_) Pointed-Type
-large-globular-structure-Pointed-Type =
- λ where
- .1-cell-large-globular-structure X Y →
- (X →∗ Y)
- .globular-structure-1-cell-large-globular-structure X Y →
- globular-structure-pointed-Π
-
-is-reflexive-large-globular-structure-Pointed-Type :
- is-reflexive-large-globular-structure large-globular-structure-Pointed-Type
-is-reflexive-large-globular-structure-Pointed-Type =
- λ where
- .is-reflexive-1-cell-is-reflexive-large-globular-structure X →
- id-pointed-map
- .is-reflexive-globular-structure-1-cell-is-reflexive-large-globular-structure
- X Y →
- is-reflexive-globular-structure-pointed-Π
-
-is-transitive-large-globular-structure-Pointed-Type :
- is-transitive-large-globular-structure large-globular-structure-Pointed-Type
-is-transitive-large-globular-structure-Pointed-Type =
- λ where
- .comp-1-cell-is-transitive-large-globular-structure g f →
- g ∘∗ f
- .is-transitive-globular-structure-1-cell-is-transitive-large-globular-structure
- X Y →
- is-transitive-globular-structure-pointed-Π
+pointed-htpy-Globular-Type :
+ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A}
+ (f g : pointed-Π A B) → Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+0-cell-Globular-Type (pointed-htpy-Globular-Type f g) = f ~∗ g
+1-cell-globular-type-Globular-Type (pointed-htpy-Globular-Type f g) H K =
+ globular-type-discrete-Reflexive-Globular-Type (pointed-2-htpy H K)
+
+pointed-Π-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Fam l2 A) →
+ Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+0-cell-Globular-Type
+ ( pointed-Π-Globular-Type A B) =
+ pointed-Π A B
+1-cell-globular-type-Globular-Type
+ ( pointed-Π-Globular-Type A B) =
+ pointed-htpy-Globular-Type
+
+pointed-map-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) →
+ Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+pointed-map-Globular-Type A B =
+ pointed-Π-Globular-Type A (constant-Pointed-Fam A B)
+
+pointed-type-Large-Globular-Type :
+ Large-Globular-Type lsuc (λ l1 l2 → l1 ⊔ l2)
+0-cell-Large-Globular-Type pointed-type-Large-Globular-Type l =
+ Pointed-Type l
+1-cell-globular-type-Large-Globular-Type pointed-type-Large-Globular-Type =
+ pointed-map-Globular-Type
```
-#### The nonuniform noncoherent large wild higher precategory of pointed types
+#### Identity structure on the large globular type of nonpointed types, pointed maps, and uniform pointed homotopies
```agda
-Pointed-Type-Noncoherent-Large-Wild-Higher-Precategory :
- Noncoherent-Large-Wild-Higher-Precategory lsuc (_⊔_)
-Pointed-Type-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .obj-Noncoherent-Large-Wild-Higher-Precategory →
- Pointed-Type
- .hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- large-globular-structure-Pointed-Type
- .id-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- is-reflexive-large-globular-structure-Pointed-Type
- .comp-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory →
- is-transitive-large-globular-structure-Pointed-Type
+is-reflexive-pointed-htpy-Globular-Type :
+ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A}
+ (f g : pointed-Π A B) →
+ is-reflexive-Globular-Type (pointed-htpy-Globular-Type f g)
+is-reflexive-1-cell-is-reflexive-Globular-Type
+ ( is-reflexive-pointed-htpy-Globular-Type f g) =
+ refl-pointed-2-htpy
+is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ ( is-reflexive-pointed-htpy-Globular-Type f g) =
+ refl-discrete-Reflexive-Globular-Type
+
+pointed-htpy-Reflexive-Globular-Type :
+ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A}
+ (f g : pointed-Π A B) → Reflexive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+globular-type-Reflexive-Globular-Type
+ ( pointed-htpy-Reflexive-Globular-Type f g) =
+ pointed-htpy-Globular-Type f g
+refl-Reflexive-Globular-Type
+ ( pointed-htpy-Reflexive-Globular-Type f g) =
+ is-reflexive-pointed-htpy-Globular-Type f g
+
+is-reflexive-pointed-Π-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Fam l2 A) →
+ is-reflexive-Globular-Type (pointed-Π-Globular-Type A B)
+is-reflexive-1-cell-is-reflexive-Globular-Type
+ ( is-reflexive-pointed-Π-Globular-Type A B) =
+ refl-pointed-htpy
+is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ ( is-reflexive-pointed-Π-Globular-Type A B) =
+ is-reflexive-pointed-htpy-Globular-Type _ _
+
+pointed-Π-Reflexive-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Fam l2 A) →
+ Reflexive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+globular-type-Reflexive-Globular-Type
+ ( pointed-Π-Reflexive-Globular-Type A B) =
+ pointed-Π-Globular-Type A B
+refl-Reflexive-Globular-Type
+ ( pointed-Π-Reflexive-Globular-Type A B) =
+ is-reflexive-pointed-Π-Globular-Type A B
+
+is-reflexive-pointed-map-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) →
+ is-reflexive-Globular-Type (pointed-map-Globular-Type A B)
+is-reflexive-pointed-map-Globular-Type A B =
+ is-reflexive-pointed-Π-Globular-Type A (constant-Pointed-Fam A B)
+
+pointed-map-Reflexive-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) →
+ Reflexive-Globular-Type (l1 ⊔ l2) (l1 ⊔ l2)
+pointed-map-Reflexive-Globular-Type A B =
+ pointed-Π-Reflexive-Globular-Type A (constant-Pointed-Fam A B)
+
+is-reflexive-pointed-type-Large-Globular-Type :
+ is-reflexive-Large-Globular-Type pointed-type-Large-Globular-Type
+refl-1-cell-is-reflexive-Large-Globular-Type
+ is-reflexive-pointed-type-Large-Globular-Type A = id-pointed-map
+is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type
+ is-reflexive-pointed-type-Large-Globular-Type =
+ is-reflexive-pointed-map-Globular-Type _ _
+
+pointed-type-Large-Reflexive-Globular-Type :
+ Large-Reflexive-Globular-Type lsuc (_⊔_)
+large-globular-type-Large-Reflexive-Globular-Type
+ pointed-type-Large-Reflexive-Globular-Type =
+ pointed-type-Large-Globular-Type
+is-reflexive-Large-Reflexive-Globular-Type
+ pointed-type-Large-Reflexive-Globular-Type =
+ is-reflexive-pointed-type-Large-Globular-Type
```
-## Properties
-
-### The left unit law for the identity pointed map
+#### Composition structure on the large globular type of nonpointed types, pointed maps, and uniform pointed homotopies
```agda
-module _
- {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2}
- where
-
- left-unit-law-id-pointed-map :
- (f : A →∗ B) → id-pointed-map ∘∗ f ~∗ f
- pr1 (left-unit-law-id-pointed-map f) = refl-htpy
- pr2 (left-unit-law-id-pointed-map f) = right-unit ∙ ap-id (pr2 f)
+is-transitive-pointed-htpy-Globular-Type :
+ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Fam l2 A}
+ (f g : pointed-Π A B) →
+ is-transitive-Globular-Type (pointed-htpy-Globular-Type f g)
+comp-1-cell-is-transitive-Globular-Type
+ ( is-transitive-pointed-htpy-Globular-Type f g) K H =
+ concat-pointed-2-htpy H K
+is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ ( is-transitive-pointed-htpy-Globular-Type f g) =
+ is-transitive-discrete-Reflexive-Globular-Type
+
+is-transitive-pointed-Π-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Fam l2 A) →
+ is-transitive-Globular-Type (pointed-Π-Globular-Type A B)
+comp-1-cell-is-transitive-Globular-Type
+ ( is-transitive-pointed-Π-Globular-Type A B) K H =
+ concat-pointed-htpy H K
+is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ ( is-transitive-pointed-Π-Globular-Type A B) =
+ is-transitive-pointed-htpy-Globular-Type _ _
+
+is-transitive-pointed-map-Globular-Type :
+ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) →
+ is-transitive-Globular-Type (pointed-map-Globular-Type A B)
+is-transitive-pointed-map-Globular-Type A B =
+ is-transitive-pointed-Π-Globular-Type A (constant-Pointed-Fam A B)
+
+is-transitive-pointed-type-Large-Globular-Type :
+ is-transitive-Large-Globular-Type pointed-type-Large-Globular-Type
+comp-1-cell-is-transitive-Large-Globular-Type
+ is-transitive-pointed-type-Large-Globular-Type g f =
+ g ∘∗ f
+is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type
+ is-transitive-pointed-type-Large-Globular-Type =
+ is-transitive-pointed-map-Globular-Type _ _
```
-### The right unit law for the identity pointed map
+#### The noncoherent large wild higher precategory of pointed types, pointed maps, and nonuniform pointed homotopies
```agda
-module _
- {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2}
- where
-
- right-unit-law-id-pointed-map :
- (f : A →∗ B) → f ∘∗ id-pointed-map ~∗ f
- right-unit-law-id-pointed-map = refl-pointed-htpy
+pointed-type-Noncoherent-Large-Wild-Higher-Precategory :
+ Noncoherent-Large-Wild-Higher-Precategory lsuc (_⊔_)
+large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ pointed-type-Noncoherent-Large-Wild-Higher-Precategory =
+ pointed-type-Large-Globular-Type
+id-structure-Noncoherent-Large-Wild-Higher-Precategory
+ pointed-type-Noncoherent-Large-Wild-Higher-Precategory =
+ is-reflexive-pointed-type-Large-Globular-Type
+comp-structure-Noncoherent-Large-Wild-Higher-Precategory
+ pointed-type-Noncoherent-Large-Wild-Higher-Precategory =
+ is-transitive-pointed-type-Large-Globular-Type
```
+
+## See also
+
+- The categorical laws of pointed maps and pointed homotopies are proven in
+ [pointed homotopies](structured-types.pointed-homotopies.md).
+- The categorical laws of pointed maps and uniform pointed homotopies are proven
+ in
+ [uniform pointed homotopies](structured-types.uniform-pointed-homotopies.md).
diff --git a/src/synthetic-homotopy-theory/maps-of-prespectra.lagda.md b/src/synthetic-homotopy-theory/maps-of-prespectra.lagda.md
index bee29e4701..4f3e139b27 100644
--- a/src/synthetic-homotopy-theory/maps-of-prespectra.lagda.md
+++ b/src/synthetic-homotopy-theory/maps-of-prespectra.lagda.md
@@ -110,12 +110,12 @@ module _
( pointed-adjoint-structure-map-Prespectrum A n)
~∗ pointed-adjoint-structure-map-Prespectrum A n
by
- left-unit-law-id-pointed-map
+ left-unit-law-comp-pointed-map
( pointed-adjoint-structure-map-Prespectrum A n)
~∗ pointed-adjoint-structure-map-Prespectrum A n ∘∗ id-pointed-map
by
inv-pointed-htpy
- ( right-unit-law-id-pointed-map
+ ( right-unit-law-comp-pointed-map
( pointed-adjoint-structure-map-Prespectrum A n))
id-map-Prespectrum : map-Prespectrum A A
diff --git a/src/trees/combinator-directed-trees.lagda.md b/src/trees/combinator-directed-trees.lagda.md
index 05e15871fd..4d2862298f 100644
--- a/src/trees/combinator-directed-trees.lagda.md
+++ b/src/trees/combinator-directed-trees.lagda.md
@@ -745,21 +745,21 @@ module _
( cases-map-inv-node-combinator-fiber-base-Directed-Tree x)
( eq-is-contr ( unique-walk-to-base-Directed-Tree T x))
- is-equiv-node-combinator-fiber-base-Directed-Tree :
+ is-node-equiv-combinator-fiber-base-Directed-Tree :
is-equiv node-combinator-fiber-base-Directed-Tree
- is-equiv-node-combinator-fiber-base-Directed-Tree =
+ is-node-equiv-combinator-fiber-base-Directed-Tree =
is-equiv-is-invertible
map-inv-node-combinator-fiber-base-Directed-Tree
is-section-map-inv-node-combinator-fiber-base-Directed-Tree
is-retraction-map-inv-node-combinator-fiber-base-Directed-Tree
- equiv-node-combinator-fiber-base-Directed-Tree :
+ node-equiv-combinator-fiber-base-Directed-Tree :
node-combinator-Directed-Tree (fiber-base-Directed-Tree T) ≃
node-Directed-Tree T
- pr1 equiv-node-combinator-fiber-base-Directed-Tree =
+ pr1 node-equiv-combinator-fiber-base-Directed-Tree =
node-combinator-fiber-base-Directed-Tree
- pr2 equiv-node-combinator-fiber-base-Directed-Tree =
- is-equiv-node-combinator-fiber-base-Directed-Tree
+ pr2 node-equiv-combinator-fiber-base-Directed-Tree =
+ is-node-equiv-combinator-fiber-base-Directed-Tree
edge-combinator-fiber-base-Directed-Tree :
(x y : node-combinator-Directed-Tree (fiber-base-Directed-Tree T)) →
@@ -791,7 +791,7 @@ module _
( combinator-Directed-Tree (fiber-base-Directed-Tree T))
( T)
( hom-combinator-fiber-base-Directed-Tree)
- ( is-equiv-node-combinator-fiber-base-Directed-Tree)
+ ( is-node-equiv-combinator-fiber-base-Directed-Tree)
combinator-fiber-base-Directed-Tree :
equiv-Directed-Tree
diff --git a/src/trees/equivalences-directed-trees.lagda.md b/src/trees/equivalences-directed-trees.lagda.md
index 4b3dbd9ecb..5b7a6ffa00 100644
--- a/src/trees/equivalences-directed-trees.lagda.md
+++ b/src/trees/equivalences-directed-trees.lagda.md
@@ -84,10 +84,10 @@ module _
(e : equiv-Directed-Tree S T)
where
- equiv-node-equiv-Directed-Tree :
+ node-equiv-equiv-Directed-Tree :
node-Directed-Tree S ≃ node-Directed-Tree T
- equiv-node-equiv-Directed-Tree =
- equiv-vertex-equiv-Directed-Graph
+ node-equiv-equiv-Directed-Tree =
+ vertex-equiv-equiv-Directed-Graph
( graph-Directed-Tree S)
( graph-Directed-Tree T)
( e)
@@ -100,9 +100,9 @@ module _
( graph-Directed-Tree T)
( e)
- is-equiv-node-equiv-Directed-Tree : is-equiv node-equiv-Directed-Tree
- is-equiv-node-equiv-Directed-Tree =
- is-equiv-vertex-equiv-Directed-Graph
+ is-node-equiv-equiv-Directed-Tree : is-equiv node-equiv-Directed-Tree
+ is-node-equiv-equiv-Directed-Tree =
+ is-vertex-equiv-equiv-Directed-Graph
( graph-Directed-Tree S)
( graph-Directed-Tree T)
( e)
@@ -131,20 +131,20 @@ module _
( graph-Directed-Tree T)
( e)
- equiv-edge-equiv-Directed-Tree :
+ edge-equiv-equiv-Directed-Tree :
(x y : node-Directed-Tree S) →
edge-Directed-Tree S x y ≃
edge-Directed-Tree T
( node-equiv-Directed-Tree x)
( node-equiv-Directed-Tree y)
- equiv-edge-equiv-Directed-Tree =
- equiv-edge-equiv-Directed-Graph
+ edge-equiv-equiv-Directed-Tree =
+ edge-equiv-equiv-Directed-Graph
( graph-Directed-Tree S)
( graph-Directed-Tree T)
( e)
edge-equiv-Directed-Tree :
- (x y : node-Directed-Tree S) →
+ {x y : node-Directed-Tree S} →
edge-Directed-Tree S x y →
edge-Directed-Tree T
( node-equiv-Directed-Tree x)
@@ -155,10 +155,10 @@ module _
( graph-Directed-Tree T)
( e)
- is-equiv-edge-equiv-Directed-Tree :
- (x y : node-Directed-Tree S) → is-equiv (edge-equiv-Directed-Tree x y)
- is-equiv-edge-equiv-Directed-Tree =
- is-equiv-edge-equiv-Directed-Graph
+ is-edge-equiv-equiv-Directed-Tree :
+ (x y : node-Directed-Tree S) → is-equiv (edge-equiv-Directed-Tree {x} {y})
+ is-edge-equiv-equiv-Directed-Tree =
+ is-edge-equiv-equiv-Directed-Graph
( graph-Directed-Tree S)
( graph-Directed-Tree T)
( e)
@@ -186,8 +186,8 @@ module _
equiv-direct-predecessor-equiv-Directed-Tree x =
equiv-Σ
( λ y → edge-Directed-Tree T y (node-equiv-Directed-Tree x))
- ( equiv-node-equiv-Directed-Tree)
- ( λ y → equiv-edge-equiv-Directed-Tree y x)
+ ( node-equiv-equiv-Directed-Tree)
+ ( λ y → edge-equiv-equiv-Directed-Tree y x)
direct-predecessor-equiv-Directed-Tree :
(x : node-Directed-Tree S) →
@@ -248,27 +248,27 @@ module _
( g)
( f)
- equiv-node-comp-equiv-Directed-Tree :
+ node-equiv-comp-equiv-Directed-Tree :
node-Directed-Tree R ≃ node-Directed-Tree T
- equiv-node-comp-equiv-Directed-Tree =
- equiv-node-equiv-Directed-Tree R T comp-equiv-Directed-Tree
+ node-equiv-comp-equiv-Directed-Tree =
+ node-equiv-equiv-Directed-Tree R T comp-equiv-Directed-Tree
node-comp-equiv-Directed-Tree :
node-Directed-Tree R → node-Directed-Tree T
node-comp-equiv-Directed-Tree =
node-equiv-Directed-Tree R T comp-equiv-Directed-Tree
- equiv-edge-comp-equiv-Directed-Tree :
+ edge-equiv-comp-equiv-Directed-Tree :
(x y : node-Directed-Tree R) →
edge-Directed-Tree R x y ≃
edge-Directed-Tree T
( node-comp-equiv-Directed-Tree x)
( node-comp-equiv-Directed-Tree y)
- equiv-edge-comp-equiv-Directed-Tree =
- equiv-edge-equiv-Directed-Tree R T comp-equiv-Directed-Tree
+ edge-equiv-comp-equiv-Directed-Tree =
+ edge-equiv-equiv-Directed-Tree R T comp-equiv-Directed-Tree
edge-comp-equiv-Directed-Tree :
- (x y : node-Directed-Tree R) →
+ {x y : node-Directed-Tree R} →
edge-Directed-Tree R x y →
edge-Directed-Tree T
( node-comp-equiv-Directed-Tree x)
@@ -306,8 +306,8 @@ module _
( edge-Directed-Tree T)
( node-htpy-equiv-Directed-Tree α x)
( node-htpy-equiv-Directed-Tree α y)
- ( edge-equiv-Directed-Tree S T f x y e) =
- edge-equiv-Directed-Tree S T g x y e
+ ( edge-equiv-Directed-Tree S T f e) =
+ edge-equiv-Directed-Tree S T g e
edge-htpy-equiv-Directed-Tree =
edge-htpy-hom-Directed-Tree S T
( hom-equiv-Directed-Tree S T f)
@@ -405,7 +405,7 @@ module _
preserves-root-equiv-Directed-Tree =
preserves-root-is-equiv-node-hom-Directed-Tree S T
( hom-equiv-Directed-Tree S T e)
- ( is-equiv-node-equiv-Directed-Tree S T e)
+ ( is-node-equiv-equiv-Directed-Tree S T e)
rooted-hom-equiv-Directed-Tree :
rooted-hom-Directed-Tree S T
@@ -513,10 +513,10 @@ module _
( graph-Directed-Tree T)
( f)
- equiv-node-inv-equiv-Directed-Tree :
+ node-equiv-inv-equiv-Directed-Tree :
node-Directed-Tree T ≃ node-Directed-Tree S
- equiv-node-inv-equiv-Directed-Tree =
- equiv-vertex-inv-equiv-Directed-Graph
+ node-equiv-inv-equiv-Directed-Tree =
+ vertex-equiv-inv-equiv-Directed-Graph
( graph-Directed-Tree S)
( graph-Directed-Tree T)
( f)
@@ -530,7 +530,7 @@ module _
( f)
edge-inv-equiv-Directed-Tree :
- (x y : node-Directed-Tree T) →
+ {x y : node-Directed-Tree T} →
edge-Directed-Tree T x y →
edge-Directed-Tree S
( node-inv-equiv-Directed-Tree x)
@@ -541,14 +541,14 @@ module _
( graph-Directed-Tree T)
( f)
- equiv-edge-inv-equiv-Directed-Tree :
+ edge-equiv-inv-equiv-Directed-Tree :
(x y : node-Directed-Tree T) →
edge-Directed-Tree T x y ≃
edge-Directed-Tree S
( node-inv-equiv-Directed-Tree x)
( node-inv-equiv-Directed-Tree y)
- equiv-edge-inv-equiv-Directed-Tree =
- equiv-edge-inv-equiv-Directed-Graph
+ edge-equiv-inv-equiv-Directed-Tree =
+ edge-equiv-inv-equiv-Directed-Graph
( graph-Directed-Tree S)
( graph-Directed-Tree T)
( f)
diff --git a/src/trees/equivalences-enriched-directed-trees.lagda.md b/src/trees/equivalences-enriched-directed-trees.lagda.md
index b4ee4e1da9..410b7c1709 100644
--- a/src/trees/equivalences-enriched-directed-trees.lagda.md
+++ b/src/trees/equivalences-enriched-directed-trees.lagda.md
@@ -136,10 +136,10 @@ module _
( directed-tree-Enriched-Directed-Tree A B T)
equiv-directed-tree-equiv-Enriched-Directed-Tree = pr1 e
- equiv-node-equiv-Enriched-Directed-Tree :
+ node-equiv-equiv-Enriched-Directed-Trhee :
node-Enriched-Directed-Tree A B S ≃ node-Enriched-Directed-Tree A B T
- equiv-node-equiv-Enriched-Directed-Tree =
- equiv-node-equiv-Directed-Tree
+ node-equiv-equiv-Enriched-Directed-Trhee =
+ node-equiv-equiv-Directed-Tree
( directed-tree-Enriched-Directed-Tree A B S)
( directed-tree-Enriched-Directed-Tree A B T)
( equiv-directed-tree-equiv-Enriched-Directed-Tree)
@@ -152,20 +152,20 @@ module _
( directed-tree-Enriched-Directed-Tree A B T)
( equiv-directed-tree-equiv-Enriched-Directed-Tree)
- equiv-edge-equiv-Enriched-Directed-Tree :
+ edge-equiv-equiv-Enriched-Directed-Trhee :
(x y : node-Enriched-Directed-Tree A B S) →
edge-Enriched-Directed-Tree A B S x y ≃
edge-Enriched-Directed-Tree A B T
( node-equiv-Enriched-Directed-Tree x)
( node-equiv-Enriched-Directed-Tree y)
- equiv-edge-equiv-Enriched-Directed-Tree =
- equiv-edge-equiv-Directed-Tree
+ edge-equiv-equiv-Enriched-Directed-Trhee =
+ edge-equiv-equiv-Directed-Tree
( directed-tree-Enriched-Directed-Tree A B S)
( directed-tree-Enriched-Directed-Tree A B T)
( equiv-directed-tree-equiv-Enriched-Directed-Tree)
edge-equiv-Enriched-Directed-Tree :
- (x y : node-Enriched-Directed-Tree A B S) →
+ {x y : node-Enriched-Directed-Tree A B S} →
edge-Enriched-Directed-Tree A B S x y →
edge-Enriched-Directed-Tree A B T
( node-equiv-Enriched-Directed-Tree x)
@@ -295,11 +295,11 @@ module _
( equiv-directed-tree-equiv-Enriched-Directed-Tree A B S T g)
( equiv-directed-tree-equiv-Enriched-Directed-Tree A B R S f)
- equiv-node-comp-equiv-Enriched-Directed-Tree :
+ node-equiv-comp-equiv-Enriched-Directed-Tree :
node-Enriched-Directed-Tree A B R ≃
node-Enriched-Directed-Tree A B T
- equiv-node-comp-equiv-Enriched-Directed-Tree =
- equiv-node-equiv-Directed-Tree
+ node-equiv-comp-equiv-Enriched-Directed-Tree =
+ node-equiv-equiv-Directed-Tree
( directed-tree-Enriched-Directed-Tree A B R)
( directed-tree-Enriched-Directed-Tree A B T)
( equiv-directed-tree-comp-equiv-Enriched-Directed-Tree)
@@ -313,20 +313,20 @@ module _
( directed-tree-Enriched-Directed-Tree A B T)
( equiv-directed-tree-comp-equiv-Enriched-Directed-Tree)
- equiv-edge-comp-equiv-Enriched-Directed-Tree :
+ edge-equiv-comp-equiv-Enriched-Directed-Tree :
(x y : node-Enriched-Directed-Tree A B R) →
edge-Enriched-Directed-Tree A B R x y ≃
edge-Enriched-Directed-Tree A B T
( node-comp-equiv-Enriched-Directed-Tree x)
( node-comp-equiv-Enriched-Directed-Tree y)
- equiv-edge-comp-equiv-Enriched-Directed-Tree =
- equiv-edge-equiv-Directed-Tree
+ edge-equiv-comp-equiv-Enriched-Directed-Tree =
+ edge-equiv-equiv-Directed-Tree
( directed-tree-Enriched-Directed-Tree A B R)
( directed-tree-Enriched-Directed-Tree A B T)
( equiv-directed-tree-comp-equiv-Enriched-Directed-Tree)
edge-comp-equiv-Enriched-Directed-Tree :
- (x y : node-Enriched-Directed-Tree A B R) →
+ {x y : node-Enriched-Directed-Tree A B R} →
edge-Enriched-Directed-Tree A B R x y →
edge-Enriched-Directed-Tree A B T
( node-comp-equiv-Enriched-Directed-Tree x)
diff --git a/src/trees/functoriality-fiber-directed-tree.lagda.md b/src/trees/functoriality-fiber-directed-tree.lagda.md
index 3f800be9d9..2338441e60 100644
--- a/src/trees/functoriality-fiber-directed-tree.lagda.md
+++ b/src/trees/functoriality-fiber-directed-tree.lagda.md
@@ -85,7 +85,7 @@ module _
equiv-node-fiber-equiv-Directed-Tree =
equiv-Σ
( λ y → walk-Directed-Tree T y (node-equiv-Directed-Tree S T f x))
- ( equiv-node-equiv-Directed-Tree S T f)
+ ( node-equiv-equiv-Directed-Tree S T f)
( λ y → equiv-walk-equiv-Directed-Tree S T f {y} {x})
node-fiber-equiv-Directed-Tree :
@@ -94,19 +94,19 @@ module _
node-fiber-equiv-Directed-Tree =
map-equiv equiv-node-fiber-equiv-Directed-Tree
- equiv-edge-fiber-equiv-Directed-Tree :
+ edge-equiv-fiber-equiv-Directed-Tree :
(y z : node-fiber-Directed-Tree S x) →
edge-fiber-Directed-Tree S x y z ≃
edge-fiber-Directed-Tree T
( node-equiv-Directed-Tree S T f x)
( node-fiber-equiv-Directed-Tree y)
( node-fiber-equiv-Directed-Tree z)
- equiv-edge-fiber-equiv-Directed-Tree (y , v) (z , w) =
+ edge-equiv-fiber-equiv-Directed-Tree (y , v) (z , w) =
equiv-Σ
( λ e →
walk-equiv-Directed-Tree S T f v =
cons-walk-Directed-Graph e (walk-equiv-Directed-Tree S T f w))
- ( equiv-edge-equiv-Directed-Tree S T f y z)
+ ( edge-equiv-equiv-Directed-Tree S T f y z)
( λ e →
equiv-ap
( equiv-walk-equiv-Directed-Tree S T f)
@@ -121,7 +121,7 @@ module _
( node-fiber-equiv-Directed-Tree y)
( node-fiber-equiv-Directed-Tree z)
edge-fiber-equiv-Directed-Tree y z =
- map-equiv (equiv-edge-fiber-equiv-Directed-Tree y z)
+ map-equiv (edge-equiv-fiber-equiv-Directed-Tree y z)
fiber-equiv-Directed-Tree :
equiv-Directed-Tree
@@ -130,5 +130,5 @@ module _
pr1 fiber-equiv-Directed-Tree =
equiv-node-fiber-equiv-Directed-Tree
pr2 fiber-equiv-Directed-Tree =
- equiv-edge-fiber-equiv-Directed-Tree
+ edge-equiv-fiber-equiv-Directed-Tree
```
diff --git a/src/trees/raising-universe-levels-directed-trees.lagda.md b/src/trees/raising-universe-levels-directed-trees.lagda.md
index 9d6797efb7..8f1e1ac294 100644
--- a/src/trees/raising-universe-levels-directed-trees.lagda.md
+++ b/src/trees/raising-universe-levels-directed-trees.lagda.md
@@ -40,10 +40,10 @@ module _
node-raise-Directed-Tree : UU (l1 ⊔ l3)
node-raise-Directed-Tree = vertex-Directed-Graph graph-raise-Directed-Tree
- equiv-node-compute-raise-Directed-Tree :
+ node-equiv-compute-raise-Directed-Tree :
node-Directed-Tree T ≃ node-raise-Directed-Tree
- equiv-node-compute-raise-Directed-Tree =
- equiv-vertex-compute-raise-Directed-Graph l3 l4 (graph-Directed-Tree T)
+ node-equiv-compute-raise-Directed-Tree =
+ vertex-equiv-compute-raise-Directed-Graph l3 l4 (graph-Directed-Tree T)
node-compute-raise-Directed-Tree :
node-Directed-Tree T → node-raise-Directed-Tree
@@ -54,14 +54,14 @@ module _
(x y : node-raise-Directed-Tree) → UU (l2 ⊔ l4)
edge-raise-Directed-Tree = edge-Directed-Graph graph-raise-Directed-Tree
- equiv-edge-compute-raise-Directed-Tree :
+ edge-equiv-compute-raise-Directed-Tree :
(x y : node-Directed-Tree T) →
edge-Directed-Tree T x y ≃
edge-raise-Directed-Tree
( node-compute-raise-Directed-Tree x)
( node-compute-raise-Directed-Tree y)
- equiv-edge-compute-raise-Directed-Tree =
- equiv-edge-compute-raise-Directed-Graph l3 l4 (graph-Directed-Tree T)
+ edge-equiv-compute-raise-Directed-Tree =
+ edge-equiv-compute-raise-Directed-Graph l3 l4 (graph-Directed-Tree T)
edge-compute-raise-Directed-Tree :
(x y : node-Directed-Tree T) →
diff --git a/src/trees/underlying-trees-elements-coalgebras-polynomial-endofunctors.lagda.md b/src/trees/underlying-trees-elements-coalgebras-polynomial-endofunctors.lagda.md
index 75e7da1e47..9184f6da42 100644
--- a/src/trees/underlying-trees-elements-coalgebras-polynomial-endofunctors.lagda.md
+++ b/src/trees/underlying-trees-elements-coalgebras-polynomial-endofunctors.lagda.md
@@ -721,24 +721,24 @@ module _
( node-inclusion-element-coalgebra (b , refl) x) =
refl
- is-equiv-node-compute-directed-tree-element-coalgebra :
+ is-node-equiv-compute-directed-tree-element-coalgebra :
is-equiv node-compute-directed-tree-element-coalgebra
- is-equiv-node-compute-directed-tree-element-coalgebra =
+ is-node-equiv-compute-directed-tree-element-coalgebra =
is-equiv-is-invertible
map-inv-node-compute-directed-tree-element-coalgebra
is-section-map-inv-node-compute-directed-tree-element-coalgebra
is-retraction-map-inv-node-compute-directed-tree-element-coalgebra
- equiv-node-compute-directed-tree-element-coalgebra :
+ node-equiv-compute-directed-tree-element-coalgebra :
node-element-coalgebra X w ≃
node-combinator-Directed-Tree
( λ b →
directed-tree-element-coalgebra X
( component-coalgebra-polynomial-endofunctor X w b))
- pr1 equiv-node-compute-directed-tree-element-coalgebra =
+ pr1 node-equiv-compute-directed-tree-element-coalgebra =
node-compute-directed-tree-element-coalgebra
- pr2 equiv-node-compute-directed-tree-element-coalgebra =
- is-equiv-node-compute-directed-tree-element-coalgebra
+ pr2 node-equiv-compute-directed-tree-element-coalgebra =
+ is-node-equiv-compute-directed-tree-element-coalgebra
edge-compute-directed-tree-element-coalgebra :
(x y : node-element-coalgebra X w) →
@@ -862,16 +862,16 @@ module _
is-retraction-map-inv-edge-compute-directed-tree-element-coalgebra ._ ._
( edge-inclusion-element-coalgebra (b , refl) e) = refl
- is-equiv-edge-compute-directed-tree-element-coalgebra :
+ is-edge-equiv-compute-directed-tree-element-coalgebra :
(x y : node-element-coalgebra X w) →
is-equiv (edge-compute-directed-tree-element-coalgebra x y)
- is-equiv-edge-compute-directed-tree-element-coalgebra x y =
+ is-edge-equiv-compute-directed-tree-element-coalgebra x y =
is-equiv-is-invertible
( map-inv-edge-compute-directed-tree-element-coalgebra x y)
( is-section-map-inv-edge-compute-directed-tree-element-coalgebra x y)
( is-retraction-map-inv-edge-compute-directed-tree-element-coalgebra x y)
- equiv-edge-compute-directed-tree-element-coalgebra :
+ edge-equiv-compute-directed-tree-element-coalgebra :
(x y : node-element-coalgebra X w) →
edge-element-coalgebra X w x y ≃
edge-combinator-Directed-Tree
@@ -880,10 +880,10 @@ module _
( component-coalgebra-polynomial-endofunctor X w b))
( node-compute-directed-tree-element-coalgebra x)
( node-compute-directed-tree-element-coalgebra y)
- pr1 (equiv-edge-compute-directed-tree-element-coalgebra x y) =
+ pr1 (edge-equiv-compute-directed-tree-element-coalgebra x y) =
edge-compute-directed-tree-element-coalgebra x y
- pr2 (equiv-edge-compute-directed-tree-element-coalgebra x y) =
- is-equiv-edge-compute-directed-tree-element-coalgebra x y
+ pr2 (edge-equiv-compute-directed-tree-element-coalgebra x y) =
+ is-edge-equiv-compute-directed-tree-element-coalgebra x y
compute-directed-tree-element-coalgebra :
equiv-Directed-Tree
@@ -893,9 +893,9 @@ module _
directed-tree-element-coalgebra X
( component-coalgebra-polynomial-endofunctor X w b)))
pr1 compute-directed-tree-element-coalgebra =
- equiv-node-compute-directed-tree-element-coalgebra
+ node-equiv-compute-directed-tree-element-coalgebra
pr2 compute-directed-tree-element-coalgebra =
- equiv-edge-compute-directed-tree-element-coalgebra
+ edge-equiv-compute-directed-tree-element-coalgebra
shape-compute-enriched-directed-tree-element-coalgebra :
shape-element-coalgebra X w ~
diff --git a/src/trees/underlying-trees-of-elements-of-w-types.lagda.md b/src/trees/underlying-trees-of-elements-of-w-types.lagda.md
index 12927994dc..bd9f754279 100644
--- a/src/trees/underlying-trees-of-elements-of-w-types.lagda.md
+++ b/src/trees/underlying-trees-of-elements-of-w-types.lagda.md
@@ -359,17 +359,17 @@ module _
( 𝕎-Coalg A B)
( w)
- is-equiv-node-compute-directed-tree-element-𝕎 :
+ is-node-equiv-compute-directed-tree-element-𝕎 :
is-equiv node-compute-directed-tree-element-𝕎
- is-equiv-node-compute-directed-tree-element-𝕎 =
- is-equiv-node-compute-directed-tree-element-coalgebra (𝕎-Coalg A B) w
+ is-node-equiv-compute-directed-tree-element-𝕎 =
+ is-node-equiv-compute-directed-tree-element-coalgebra (𝕎-Coalg A B) w
- equiv-node-compute-directed-tree-element-𝕎 :
+ node-equiv-compute-directed-tree-element-𝕎 :
node-element-𝕎 w ≃
node-combinator-Directed-Tree
( λ b → directed-tree-element-𝕎 (component-𝕎 w b))
- equiv-node-compute-directed-tree-element-𝕎 =
- equiv-node-compute-directed-tree-element-coalgebra (𝕎-Coalg A B) w
+ node-equiv-compute-directed-tree-element-𝕎 =
+ node-equiv-compute-directed-tree-element-coalgebra (𝕎-Coalg A B) w
edge-compute-directed-tree-element-𝕎 :
(x y : node-element-𝕎 w) →
@@ -414,21 +414,21 @@ module _
( 𝕎-Coalg A B)
( w)
- is-equiv-edge-compute-directed-tree-element-𝕎 :
+ is-edge-equiv-compute-directed-tree-element-𝕎 :
(x y : node-element-𝕎 w) →
is-equiv (edge-compute-directed-tree-element-𝕎 x y)
- is-equiv-edge-compute-directed-tree-element-𝕎 =
- is-equiv-edge-compute-directed-tree-element-coalgebra (𝕎-Coalg A B) w
+ is-edge-equiv-compute-directed-tree-element-𝕎 =
+ is-edge-equiv-compute-directed-tree-element-coalgebra (𝕎-Coalg A B) w
- equiv-edge-compute-directed-tree-element-𝕎 :
+ edge-equiv-compute-directed-tree-element-𝕎 :
(x y : node-element-𝕎 w) →
edge-element-𝕎 w x y ≃
edge-combinator-Directed-Tree
( λ b → directed-tree-element-𝕎 (component-𝕎 w b))
( node-compute-directed-tree-element-𝕎 x)
( node-compute-directed-tree-element-𝕎 y)
- equiv-edge-compute-directed-tree-element-𝕎 =
- equiv-edge-compute-directed-tree-element-coalgebra (𝕎-Coalg A B) w
+ edge-equiv-compute-directed-tree-element-𝕎 =
+ edge-equiv-compute-directed-tree-element-coalgebra (𝕎-Coalg A B) w
compute-directed-tree-element-𝕎 :
equiv-Directed-Tree
diff --git a/src/wild-category-theory/colax-functors-noncoherent-large-wild-higher-precategories.lagda.md b/src/wild-category-theory/colax-functors-noncoherent-large-wild-higher-precategories.lagda.md
index 6e923d8faa..885f278d55 100644
--- a/src/wild-category-theory/colax-functors-noncoherent-large-wild-higher-precategories.lagda.md
+++ b/src/wild-category-theory/colax-functors-noncoherent-large-wild-higher-precategories.lagda.md
@@ -14,8 +14,11 @@ open import foundation.function-types
open import foundation.identity-types
open import foundation.universe-levels
+open import structured-types.globular-maps
open import structured-types.globular-types
-open import structured-types.maps-globular-types
+open import structured-types.large-colax-reflexive-globular-maps
+open import structured-types.large-colax-transitive-globular-maps
+open import structured-types.large-globular-maps
open import wild-category-theory.colax-functors-noncoherent-wild-higher-precategories
open import wild-category-theory.maps-noncoherent-large-wild-higher-precategories
@@ -53,6 +56,42 @@ in `ℬ`.
## Definitions
+### The predicate on maps between large noncoherent wild higher precategories of preserving the identity structure
+
+```agda
+preserves-id-structure-map-Noncoherent-Large-Wild-Higher-Precategory :
+ {α1 α2 γ : Level → Level}
+ {β1 β2 : Level → Level → Level}
+ (𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1)
+ (ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2)
+ (F : map-Noncoherent-Large-Wild-Higher-Precategory γ 𝒜 ℬ) → UUω
+preserves-id-structure-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ F =
+ is-colax-reflexive-large-globular-map
+ ( large-reflexive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜)
+ ( large-reflexive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ)
+ ( F)
+```
+
+### The predicate on maps between large noncoherent wild higher precategories of preserving the composition structure
+
+```agda
+preserves-comp-structure-map-Noncoherent-Large-Wild-Higher-Precategory :
+ {α1 α2 γ : Level → Level}
+ {β1 β2 : Level → Level → Level}
+ (𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1)
+ (ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2)
+ (F : map-Noncoherent-Large-Wild-Higher-Precategory γ 𝒜 ℬ) → UUω
+preserves-comp-structure-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ F =
+ is-colax-transitive-large-globular-map
+ ( large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜)
+ ( large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ)
+ ( F)
+```
+
### The predicate of being a colax functor between noncoherent wild higher precategories
```agda
@@ -60,44 +99,100 @@ record
is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
{α1 α2 : Level → Level}
{β1 β2 : Level → Level → Level}
- {δ : Level → Level}
- {𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1}
- {ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2}
- (F : map-Noncoherent-Large-Wild-Higher-Precategory δ 𝒜 ℬ) : UUω
+ {γ : Level → Level}
+ (𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1)
+ (ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2)
+ (F : map-Noncoherent-Large-Wild-Higher-Precategory γ 𝒜 ℬ) : UUω
where
+
+ constructor
+ make-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
field
- preserves-id-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
- {l : Level}
- (x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l) →
- 2-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
- ( hom-map-Noncoherent-Large-Wild-Higher-Precategory F
- ( id-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 {x = x}))
- ( id-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
- { x = obj-map-Noncoherent-Large-Wild-Higher-Precategory F x})
-
- preserves-comp-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
- {l1 l2 l3 : Level}
- {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
- {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2}
- {z : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l3}
- (g : hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 y z)
- (f : hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y) →
- 2-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
- ( hom-map-Noncoherent-Large-Wild-Higher-Precategory F
- ( comp-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 g f))
- ( comp-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
- ( hom-map-Noncoherent-Large-Wild-Higher-Precategory F g)
- ( hom-map-Noncoherent-Large-Wild-Higher-Precategory F f))
-
- is-colax-functor-map-hom-Noncoherent-Large-Wild-Higher-Precategory :
- {l1 l2 : Level}
- (x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1)
- (y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2) →
- is-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( hom-noncoherent-wild-higher-precategory-map-Noncoherent-Large-Wild-Higher-Precategory
- ( F)
- ( x)
- ( y))
+ preserves-id-structure-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ preserves-id-structure-map-Noncoherent-Large-Wild-Higher-Precategory
+ ( 𝒜)
+ ( ℬ)
+ ( F)
+
+ field
+ preserves-comp-structure-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ preserves-comp-structure-map-Noncoherent-Large-Wild-Higher-Precategory
+ ( 𝒜)
+ ( ℬ)
+ ( F)
+
+ preserves-id-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ {l : Level}
+ (x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l) →
+ 2-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
+ ( hom-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ F
+ ( id-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 {x = x}))
+ ( id-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
+ { x = obj-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ F x})
+ preserves-id-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-refl-1-cell-is-colax-reflexive-large-globular-map
+ preserves-id-structure-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
+ preserves-id-structure-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
+ preserves-id-structure-map-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜 x y)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ _ _)
+ ( 1-cell-globular-map-large-globular-map F)
+ preserves-id-structure-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-large-globular-map
+ preserves-id-structure-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
+ preserves-comp-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 l3 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2}
+ {z : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l3}
+ (g : hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 y z)
+ (f : hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y) →
+ 2-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
+ ( hom-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ F
+ ( comp-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 g f))
+ ( comp-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
+ ( hom-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ F g)
+ ( hom-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ F f))
+ preserves-comp-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-comp-1-cell-is-colax-transitive-large-globular-map
+ preserves-comp-structure-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
+ preserves-comp-structure-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
+ preserves-comp-structure-map-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜 x y)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ _ _)
+ ( 1-cell-globular-map-large-globular-map F)
+ preserves-comp-structure-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ is-colax-transitive-1-cell-globular-map-is-colax-transitive-large-globular-map
+ preserves-comp-structure-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
+ is-colax-functor-hom-is-colax-functor-map-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
+ is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜 x y)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ _ _)
+ ( 1-cell-globular-map-large-globular-map F)
+ is-colax-functor-hom-is-colax-functor-map-Noncoherent-Large-Wild-Higher-Precategory =
+ make-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ preserves-id-structure-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-comp-structure-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
open is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory public
```
@@ -114,22 +209,23 @@ record
(ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2) : UUω
where
+ constructor
+ make-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+```
+
+The underlying large globular map of a colax functor:
+
+```agda
field
map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
map-Noncoherent-Large-Wild-Higher-Precategory δ 𝒜 ℬ
- is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
- is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- ( map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
-```
-
-```agda
obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
{l : Level} →
obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l →
obj-Noncoherent-Large-Wild-Higher-Precategory ℬ (δ l)
obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- obj-map-Noncoherent-Large-Wild-Higher-Precategory
+ obj-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ
( map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
@@ -141,9 +237,62 @@ record
( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory x)
( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory y)
hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- hom-map-Noncoherent-Large-Wild-Higher-Precategory
+ hom-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ
map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ 2-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2}
+ {f g : hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y} →
+ 2-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 f g →
+ 2-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
+ ( hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory f)
+ ( hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory g)
+ 2-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ 2-hom-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ
+ map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
+ hom-globular-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
+ globular-map
+ ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y)
+ ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory ℬ
+ ( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory x)
+ ( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory y))
+ hom-globular-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ hom-globular-map-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ
+ ( map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
+
+ field
+ is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ
+ ( map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
+```
+
+Preservation of the identity structure:
+
+```agda
+ preserves-id-structure-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ preserves-id-structure-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ
+ map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-id-structure-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-id-structure-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
+ colax-reflexive-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ large-colax-reflexive-globular-map δ
+ ( large-reflexive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜)
+ ( large-reflexive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ)
+ colax-reflexive-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ make-large-colax-reflexive-globular-map
+ map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-id-structure-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
preserves-id-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
{l : Level}
(x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l) →
@@ -156,6 +305,45 @@ record
preserves-id-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
( is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
+ preserves-id-structure-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
+ preserves-id-structure-map-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜 x y)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ _ _)
+ ( 1-cell-globular-map-large-globular-map
+ map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
+ preserves-id-structure-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-id-structure-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+```
+
+Preservation of the composition structure:
+
+```agda
+ preserves-comp-structure-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ preserves-comp-structure-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ
+ map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-comp-structure-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-comp-structure-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
+ colax-transitive-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ large-colax-transitive-globular-map δ
+ ( large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜)
+ ( large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ)
+ large-globular-map-large-colax-transitive-globular-map
+ colax-transitive-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ is-colax-transitive-large-colax-transitive-globular-map
+ colax-transitive-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-comp-structure-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
preserves-comp-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 l3 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
@@ -173,37 +361,30 @@ record
preserves-comp-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
( is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
- 2-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ preserves-comp-structure-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
- {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2}
- {f g : hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y} →
- 2-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 f g →
- 2-hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
- ( hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory f)
- ( hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory g)
- 2-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- 2-hom-map-Noncoherent-Large-Wild-Higher-Precategory
- map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
+ preserves-comp-structure-map-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜 x y)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ _ _)
+ ( 1-cell-globular-map-large-globular-map
+ map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
+ preserves-comp-structure-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-comp-structure-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+```
+
+The globular map on hom-types is again a colax functor:
- hom-globular-type-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+```agda
+ is-colax-functor-hom-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
{y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
- map-Globular-Type
- ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y)
- ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory ℬ
- ( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory x)
- ( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory y))
- hom-globular-type-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory
- ( map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
-
- map-hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
- {l1 l2 : Level}
- (x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1)
- (y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2) →
- map-Noncoherent-Wild-Higher-Precategory
+ is-colax-functor-Noncoherent-Wild-Higher-Precategory
( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
( 𝒜)
( x)
@@ -212,11 +393,13 @@ record
( ℬ)
( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory x)
( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory y))
- map-hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- hom-noncoherent-wild-higher-precategory-map-Noncoherent-Large-Wild-Higher-Precategory
- ( map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
+ ( hom-globular-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
+ is-colax-functor-hom-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ make-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ preserves-id-structure-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-comp-structure-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ hom-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
(x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1)
(y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2) →
@@ -229,15 +412,10 @@ record
( ℬ)
( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory x)
( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory y))
- hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ hom-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
x y =
- ( map-hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- ( x)
- ( y) ,
- is-colax-functor-map-hom-Noncoherent-Large-Wild-Higher-Precategory
- ( is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
- ( x)
- ( y))
+ hom-globular-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory ,
+ is-colax-functor-hom-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
open colax-functor-Noncoherent-Large-Wild-Higher-Precategory public
```
@@ -250,32 +428,43 @@ module _
(𝒜 : Noncoherent-Large-Wild-Higher-Precategory α β)
where
+ preserves-id-structure-id-colax-functor-Noncoherent-Large-Wild-Higher-Precatory :
+ preserves-id-structure-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 𝒜
+ ( id-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜)
+ preserves-id-structure-id-colax-functor-Noncoherent-Large-Wild-Higher-Precatory =
+ is-colax-reflexive-id-large-colax-reflexive-globular-map
+ ( large-reflexive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜)
+
+ preserves-comp-structure-id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ preserves-comp-structure-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 𝒜
+ ( id-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜)
+ preserves-comp-1-cell-is-colax-transitive-large-globular-map
+ preserves-comp-structure-id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ g f =
+ id-2-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 _
+ is-colax-transitive-1-cell-globular-map-is-colax-transitive-large-globular-map
+ preserves-comp-structure-id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-comp-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜 _ _)
+
is-colax-functor-id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
- is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory 𝒜 𝒜
( id-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜)
is-colax-functor-id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .preserves-id-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- x →
- id-2-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜
- .preserves-comp-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- g f →
- id-2-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜
- .is-colax-functor-map-hom-Noncoherent-Large-Wild-Higher-Precategory x y →
- is-colax-functor-id-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
- ( 𝒜)
- ( x)
- ( y))
+ make-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-id-structure-id-colax-functor-Noncoherent-Large-Wild-Higher-Precatory
+ preserves-comp-structure-id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
colax-functor-Noncoherent-Large-Wild-Higher-Precategory (λ l → l) 𝒜 𝒜
- id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory →
- id-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜
- .is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory →
- is-colax-functor-id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ id-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜
+ is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ is-colax-functor-id-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
```
### Composition of colax functors between noncoherent wild higher precategories
@@ -295,57 +484,69 @@ module _
map-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
map-Noncoherent-Large-Wild-Higher-Precategory (λ l → δ2 (δ1 l)) 𝒜 𝒞
map-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- comp-map-Noncoherent-Large-Wild-Higher-Precategory
+ comp-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 ℬ 𝒞
( map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory G)
( map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory F)
- is-colax-functor-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
- is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- ( map-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory)
- is-colax-functor-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .preserves-id-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- x →
+ preserves-id-structure-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ preserves-id-structure-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 𝒞
+ map-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-refl-1-cell-is-colax-reflexive-large-globular-map
+ preserves-id-structure-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ x =
comp-2-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒞
( preserves-id-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
( G)
- ( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory F x))
+ ( _))
( 2-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory G
( preserves-id-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
( F)
- ( x)))
- .preserves-comp-hom-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- g f →
- comp-2-hom-Noncoherent-Large-Wild-Higher-Precategory 𝒞
- ( preserves-comp-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- ( G)
- ( hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory F g)
- ( hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory F f))
- ( 2-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory G
- ( preserves-comp-hom-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- ( F)
- ( g)
- ( f)))
- .is-colax-functor-map-hom-Noncoherent-Large-Wild-Higher-Precategory x y →
- is-colax-functor-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- ( G)
- ( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory F x)
- ( obj-colax-functor-Noncoherent-Large-Wild-Higher-Precategory F y))
- ( hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- ( F)
- ( x)
- ( y))
-
- comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ ( _)))
+ is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-large-globular-map
+ preserves-id-structure-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ preserves-id-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜 _ _)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ _ _)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒞 _ _)
+ ( hom-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ G _ _)
+ ( hom-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ F _ _)
+
+ preserves-comp-structure-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory :
+ preserves-comp-structure-map-Noncoherent-Large-Wild-Higher-Precategory 𝒜 𝒞
+ map-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-comp-structure-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
+ is-colax-transitive-comp-large-colax-transitive-globular-map
+ ( large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒜)
+ ( large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ ℬ)
+ ( large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ 𝒞)
+ ( colax-transitive-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ G)
+ ( colax-transitive-map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ F)
+
+ is-colax-functor-comp-colax-functor-Noncoherent-Large-Wild-Precategory :
+ is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory 𝒜 𝒞
+ map-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ is-colax-functor-comp-colax-functor-Noncoherent-Large-Wild-Precategory =
+ make-is-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-id-structure-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ preserves-comp-structure-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+
+ comp-colax-functor-Noncoherent-Large-Wild-Precategory :
colax-functor-Noncoherent-Large-Wild-Higher-Precategory
( λ l → δ2 (δ1 l))
( 𝒜)
( 𝒞)
- comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .map-colax-functor-Noncoherent-Large-Wild-Higher-Precategory →
+ comp-colax-functor-Noncoherent-Large-Wild-Precategory =
+ make-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
map-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
- .is-colax-functor-colax-functor-Noncoherent-Large-Wild-Higher-Precategory →
- is-colax-functor-comp-colax-functor-Noncoherent-Large-Wild-Higher-Precategory
+ is-colax-functor-comp-colax-functor-Noncoherent-Large-Wild-Precategory
```
diff --git a/src/wild-category-theory/colax-functors-noncoherent-wild-higher-precategories.lagda.md b/src/wild-category-theory/colax-functors-noncoherent-wild-higher-precategories.lagda.md
index 0c5b5f044f..179cd1d54a 100644
--- a/src/wild-category-theory/colax-functors-noncoherent-wild-higher-precategories.lagda.md
+++ b/src/wild-category-theory/colax-functors-noncoherent-wild-higher-precategories.lagda.md
@@ -14,8 +14,11 @@ open import foundation.function-types
open import foundation.identity-types
open import foundation.universe-levels
+open import structured-types.colax-reflexive-globular-maps
+open import structured-types.colax-transitive-globular-maps
+open import structured-types.globular-maps
open import structured-types.globular-types
-open import structured-types.maps-globular-types
+open import structured-types.reflexive-globular-types
open import wild-category-theory.maps-noncoherent-wild-higher-precategories
open import wild-category-theory.noncoherent-wild-higher-precategories
@@ -31,9 +34,10 @@ A
[noncoherent wild higher precategories](wild-category-theory.noncoherent-wild-higher-precategories.md)
`𝒜` and `ℬ` is a
[map of noncoherent wild higher precategories](wild-category-theory.maps-noncoherent-wild-higher-precategories.md)
-that preserves identity morphisms and composition _colaxly_. This means that for
-every $n$-morphism `f` in `𝒜`, where we take $0$-morphisms to be objects, there
-is an $(n+1)$-morphism
+which is [colax reflexive](structured-types.colax-reflexive-globular-maps.md)
+and [colax transitive](structured-types.colax-transitive-globular-maps.md). This
+means that for every $n$-morphism `f` in `𝒜`, where we take $0$-morphisms to be
+objects, there is an $(n+1)$-morphism
```text
Fₙ₊₁ (id-hom 𝒜 f) ⇒ id-hom ℬ (Fₙ f)
@@ -50,44 +54,130 @@ in `ℬ`.
## Definitions
+### The predicate on maps on noncoherent wild higher precategories of preserving identity structure
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4)
+ (F : map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ)
+ where
+
+ preserves-id-structure-map-Noncoherent-Wild-Higher-Precategory :
+ UU (l1 ⊔ l2 ⊔ l4)
+ preserves-id-structure-map-Noncoherent-Wild-Higher-Precategory =
+ is-colax-reflexive-globular-map
+ ( reflexive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜)
+ ( reflexive-globular-type-Noncoherent-Wild-Higher-Precategory ℬ)
+ ( F)
+```
+
+### The predicate on maps of noncoherent wild higher precategories of preserving composition structure
+
+```agda
+module _
+ {l1 l2 l3 l4 : Level}
+ (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4)
+ (F : map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ)
+ where
+
+ preserves-comp-structure-map-Noncoherent-Wild-Higher-Precategory :
+ UU (l1 ⊔ l2 ⊔ l4)
+ preserves-comp-structure-map-Noncoherent-Wild-Higher-Precategory =
+ is-colax-transitive-globular-map
+ ( transitive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜)
+ ( transitive-globular-type-Noncoherent-Wild-Higher-Precategory ℬ)
+ ( F)
+```
+
### The predicate of being a colax functor between noncoherent wild higher precategories
```agda
record
is-colax-functor-Noncoherent-Wild-Higher-Precategory
- {l1 l2 l3 l4 : Level}
- {𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2}
- {ℬ : Noncoherent-Wild-Higher-Precategory l3 l4}
- (F : map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ) : UU (l1 ⊔ l2 ⊔ l4)
+ {l1 l2 l3 l4 : Level}
+ (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4)
+ (F : map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ) : UU (l1 ⊔ l2 ⊔ l4)
where
+
+ constructor make-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+
coinductive
+
field
- preserves-id-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
- (x : obj-Noncoherent-Wild-Higher-Precategory 𝒜) →
- 2-hom-Noncoherent-Wild-Higher-Precategory ℬ
- ( hom-map-Noncoherent-Wild-Higher-Precategory F
- ( id-hom-Noncoherent-Wild-Higher-Precategory 𝒜 {x}))
- ( id-hom-Noncoherent-Wild-Higher-Precategory ℬ
- { obj-map-Noncoherent-Wild-Higher-Precategory F x})
-
- preserves-comp-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
- {x y z : obj-Noncoherent-Wild-Higher-Precategory 𝒜}
- (g : hom-Noncoherent-Wild-Higher-Precategory 𝒜 y z)
- (f : hom-Noncoherent-Wild-Higher-Precategory 𝒜 x y) →
- 2-hom-Noncoherent-Wild-Higher-Precategory ℬ
- ( hom-map-Noncoherent-Wild-Higher-Precategory F
- ( comp-hom-Noncoherent-Wild-Higher-Precategory 𝒜 g f))
- ( comp-hom-Noncoherent-Wild-Higher-Precategory ℬ
- ( hom-map-Noncoherent-Wild-Higher-Precategory F g)
- ( hom-map-Noncoherent-Wild-Higher-Precategory F f))
-
- is-colax-functor-map-hom-Noncoherent-Wild-Higher-Precategory :
- (x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜) →
- is-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( hom-noncoherent-wild-higher-precategory-map-Noncoherent-Wild-Higher-Precategory
- ( F)
- ( x)
- ( y))
+ is-reflexive-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ preserves-id-structure-map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ F
+
+ preserves-id-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ (x : obj-Noncoherent-Wild-Higher-Precategory 𝒜) →
+ 2-hom-Noncoherent-Wild-Higher-Precategory ℬ
+ ( 1-cell-globular-map F (id-hom-Noncoherent-Wild-Higher-Precategory 𝒜))
+ ( id-hom-Noncoherent-Wild-Higher-Precategory ℬ)
+ preserves-id-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ preserves-refl-1-cell-is-colax-reflexive-globular-map
+ is-reflexive-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+
+ is-reflexive-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
+ is-colax-reflexive-globular-map
+ ( hom-reflexive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜 x y)
+ ( hom-reflexive-globular-type-Noncoherent-Wild-Higher-Precategory ℬ
+ ( 0-cell-globular-map F x)
+ ( 0-cell-globular-map F y))
+ ( 1-cell-globular-map-globular-map F)
+ is-reflexive-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-globular-map
+ is-reflexive-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+
+ field
+ is-transitive-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ preserves-comp-structure-map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ F
+
+ preserves-comp-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {x y z : obj-Noncoherent-Wild-Higher-Precategory 𝒜}
+ (g : hom-Noncoherent-Wild-Higher-Precategory 𝒜 y z)
+ (f : hom-Noncoherent-Wild-Higher-Precategory 𝒜 x y) →
+ 2-hom-Noncoherent-Wild-Higher-Precategory ℬ
+ ( 1-cell-globular-map F
+ ( comp-hom-Noncoherent-Wild-Higher-Precategory 𝒜 g f))
+ ( comp-hom-Noncoherent-Wild-Higher-Precategory ℬ
+ ( 1-cell-globular-map F g)
+ ( 1-cell-globular-map F f))
+ preserves-comp-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ preserves-comp-1-cell-is-colax-transitive-globular-map
+ is-transitive-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+
+ is-transitive-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
+ is-colax-transitive-globular-map
+ ( hom-transitive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜 x y)
+ ( hom-transitive-globular-type-Noncoherent-Wild-Higher-Precategory ℬ
+ ( 0-cell-globular-map F x)
+ ( 0-cell-globular-map F y))
+ ( 1-cell-globular-map-globular-map F)
+ is-transitive-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ is-colax-transitive-1-cell-globular-map-is-colax-transitive-globular-map
+ is-transitive-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+
+ is-colax-functor-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
+ is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
+ 𝒜 x y)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
+ ( ℬ)
+ ( 0-cell-globular-map F x)
+ ( 0-cell-globular-map F y))
+ ( 1-cell-globular-map-globular-map F {x} {y})
+ is-reflexive-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ is-colax-functor-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ is-reflexive-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ is-transitive-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ is-colax-functor-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ is-transitive-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory
open is-colax-functor-Noncoherent-Wild-Higher-Precategory public
```
@@ -102,8 +192,12 @@ colax-functor-Noncoherent-Wild-Higher-Precategory :
UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ =
Σ ( map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ)
- ( is-colax-functor-Noncoherent-Wild-Higher-Precategory)
+ ( is-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ)
+```
+
+The action of colax functors on objects, morphisms, and higher morphisms:
+```agda
module _
{l1 l2 l3 l4 : Level}
{𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2}
@@ -115,17 +209,11 @@ module _
map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ
map-colax-functor-Noncoherent-Wild-Higher-Precategory = pr1 F
- is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory :
- is-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( map-colax-functor-Noncoherent-Wild-Higher-Precategory)
- is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory = pr2 F
-
obj-colax-functor-Noncoherent-Wild-Higher-Precategory :
obj-Noncoherent-Wild-Higher-Precategory 𝒜 →
obj-Noncoherent-Wild-Higher-Precategory ℬ
obj-colax-functor-Noncoherent-Wild-Higher-Precategory =
- obj-map-Noncoherent-Wild-Higher-Precategory
- ( map-colax-functor-Noncoherent-Wild-Higher-Precategory)
+ 0-cell-globular-map map-colax-functor-Noncoherent-Wild-Higher-Precategory
hom-colax-functor-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
@@ -134,9 +222,38 @@ module _
( obj-colax-functor-Noncoherent-Wild-Higher-Precategory x)
( obj-colax-functor-Noncoherent-Wild-Higher-Precategory y)
hom-colax-functor-Noncoherent-Wild-Higher-Precategory =
- hom-map-Noncoherent-Wild-Higher-Precategory
+ 1-cell-globular-map map-colax-functor-Noncoherent-Wild-Higher-Precategory
+
+ hom-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
+ globular-map
+ ( hom-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜 x y)
+ ( hom-globular-type-Noncoherent-Wild-Higher-Precategory ℬ
+ ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory x)
+ ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory y))
+ hom-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ 1-cell-globular-map-globular-map
map-colax-functor-Noncoherent-Wild-Higher-Precategory
+ 2-hom-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜}
+ {f g : hom-Noncoherent-Wild-Higher-Precategory 𝒜 x y} →
+ 2-hom-Noncoherent-Wild-Higher-Precategory 𝒜 f g →
+ 2-hom-Noncoherent-Wild-Higher-Precategory ℬ
+ ( hom-colax-functor-Noncoherent-Wild-Higher-Precategory f)
+ ( hom-colax-functor-Noncoherent-Wild-Higher-Precategory g)
+ 2-hom-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ 2-cell-globular-map map-colax-functor-Noncoherent-Wild-Higher-Precategory
+
+ is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ is-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ
+ ( map-colax-functor-Noncoherent-Wild-Higher-Precategory)
+ is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory = pr2 F
+```
+
+Preservation by colax functors of identity morphisms:
+
+```agda
preserves-id-hom-colax-functor-Noncoherent-Wild-Higher-Precategory :
(x : obj-Noncoherent-Wild-Higher-Precategory 𝒜) →
2-hom-Noncoherent-Wild-Higher-Precategory ℬ
@@ -148,6 +265,20 @@ module _
preserves-id-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory
( is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory)
+ colax-reflexive-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ colax-reflexive-globular-map
+ ( reflexive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜)
+ ( reflexive-globular-type-Noncoherent-Wild-Higher-Precategory ℬ)
+ colax-reflexive-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ make-colax-reflexive-globular-map
+ ( map-colax-functor-Noncoherent-Wild-Higher-Precategory)
+ ( is-reflexive-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory)
+```
+
+Preservation by colax functors of composition:
+
+```agda
preserves-comp-hom-colax-functor-Noncoherent-Wild-Higher-Precategory :
{x y z : obj-Noncoherent-Wild-Higher-Precategory 𝒜}
(g : hom-Noncoherent-Wild-Higher-Precategory 𝒜 y z)
@@ -162,44 +293,21 @@ module _
preserves-comp-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory
( is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory)
- 2-hom-colax-functor-Noncoherent-Wild-Higher-Precategory :
- {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜}
- {f g : hom-Noncoherent-Wild-Higher-Precategory 𝒜 x y} →
- 2-hom-Noncoherent-Wild-Higher-Precategory 𝒜 f g →
- 2-hom-Noncoherent-Wild-Higher-Precategory ℬ
- ( hom-colax-functor-Noncoherent-Wild-Higher-Precategory f)
- ( hom-colax-functor-Noncoherent-Wild-Higher-Precategory g)
- 2-hom-colax-functor-Noncoherent-Wild-Higher-Precategory =
- 2-hom-map-Noncoherent-Wild-Higher-Precategory
- map-colax-functor-Noncoherent-Wild-Higher-Precategory
-
- hom-globular-type-map-colax-functor-Noncoherent-Wild-Higher-Precategory :
- {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
- map-Globular-Type
- ( hom-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜 x y)
- ( hom-globular-type-Noncoherent-Wild-Higher-Precategory ℬ
- ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory x)
- ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory y))
- hom-globular-type-map-colax-functor-Noncoherent-Wild-Higher-Precategory =
- hom-globular-type-map-Noncoherent-Wild-Higher-Precategory
+ colax-transitive-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ colax-transitive-globular-map
+ ( transitive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜)
+ ( transitive-globular-type-Noncoherent-Wild-Higher-Precategory ℬ)
+ colax-transitive-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ make-colax-transitive-globular-map
( map-colax-functor-Noncoherent-Wild-Higher-Precategory)
+ ( is-transitive-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory)
+```
- map-hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Wild-Higher-Precategory :
- (x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜) →
- map-Noncoherent-Wild-Higher-Precategory
- ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
- ( 𝒜)
- ( x)
- ( y))
- ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
- ( ℬ)
- ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory x)
- ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory y))
- map-hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Wild-Higher-Precategory =
- hom-noncoherent-wild-higher-precategory-map-Noncoherent-Wild-Higher-Precategory
- ( map-colax-functor-Noncoherent-Wild-Higher-Precategory)
+The induced colax functor on the wild category of morphisms between two objects:
- hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Wild-Higher-Precategory :
+```agda
+ hom-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory :
(x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜) →
colax-functor-Noncoherent-Wild-Higher-Precategory
( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
@@ -210,38 +318,57 @@ module _
( ℬ)
( obj-colax-functor-Noncoherent-Wild-Higher-Precategory x)
( obj-colax-functor-Noncoherent-Wild-Higher-Precategory y))
- hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Wild-Higher-Precategory
- x y =
- ( map-hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( x)
- ( y) ,
- is-colax-functor-map-hom-Noncoherent-Wild-Higher-Precategory
- ( is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory)
- ( x)
- ( y))
+ hom-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory x y =
+ ( hom-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory ,
+ is-colax-functor-hom-globular-map-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ is-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory)
```
### The identity colax functor on a noncoherent wild higher precategory
```agda
+map-id-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {l1 l2 : Level} (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2) →
+ map-Noncoherent-Wild-Higher-Precategory 𝒜 𝒜
+map-id-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 =
+ id-map-Noncoherent-Wild-Higher-Precategory 𝒜
+
+preserves-id-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {l1 l2 : Level} (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2) →
+ preserves-id-structure-map-Noncoherent-Wild-Higher-Precategory 𝒜 𝒜
+ ( map-id-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜)
+preserves-id-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 =
+ is-colax-reflexive-id-colax-reflexive-globular-map
+ ( reflexive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜)
+
+preserves-comp-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ {l1 l2 : Level} (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2) →
+ preserves-comp-structure-map-Noncoherent-Wild-Higher-Precategory 𝒜 𝒜
+ ( map-id-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜)
+preserves-comp-1-cell-is-colax-transitive-globular-map
+ ( preserves-comp-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory
+ 𝒜)
+ _ _ =
+ id-2-hom-Noncoherent-Wild-Higher-Precategory 𝒜
+is-colax-transitive-1-cell-globular-map-is-colax-transitive-globular-map
+ ( preserves-comp-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory
+ 𝒜) =
+ preserves-comp-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
+ ( 𝒜)
+ ( _)
+ ( _))
+
is-colax-functor-id-colax-functor-Noncoherent-Wild-Higher-Precategory :
{l1 l2 : Level} (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2) →
- is-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( id-map-Noncoherent-Wild-Higher-Precategory 𝒜)
+ is-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 𝒜
+ ( map-id-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜)
is-colax-functor-id-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 =
- λ where
- .preserves-id-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory
- x →
- id-2-hom-Noncoherent-Wild-Higher-Precategory 𝒜
- .preserves-comp-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory
- g f →
- id-2-hom-Noncoherent-Wild-Higher-Precategory 𝒜
- .is-colax-functor-map-hom-Noncoherent-Wild-Higher-Precategory x y →
- is-colax-functor-id-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
- ( 𝒜)
- ( x)
- ( y))
+ make-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ ( preserves-id-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory
+ 𝒜)
+ ( preserves-comp-structure-id-colax-functor-Noncoherent-Wild-Higher-Precategory
+ 𝒜)
id-colax-functor-Noncoherent-Wild-Higher-Precategory :
{l1 l2 : Level} (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2) →
@@ -256,9 +383,9 @@ id-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 =
```agda
module _
{l1 l2 l3 l4 l5 l6 : Level}
- {𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2}
- {ℬ : Noncoherent-Wild-Higher-Precategory l3 l4}
- {𝒞 : Noncoherent-Wild-Higher-Precategory l5 l6}
+ (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4)
+ (𝒞 : Noncoherent-Wild-Higher-Precategory l5 l6)
(G : colax-functor-Noncoherent-Wild-Higher-Precategory ℬ 𝒞)
(F : colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ)
where
@@ -266,62 +393,77 @@ module _
map-comp-colax-functor-Noncoherent-Wild-Higher-Precategory :
map-Noncoherent-Wild-Higher-Precategory 𝒜 𝒞
map-comp-colax-functor-Noncoherent-Wild-Higher-Precategory =
- comp-map-Noncoherent-Wild-Higher-Precategory
+ comp-map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ 𝒞
( map-colax-functor-Noncoherent-Wild-Higher-Precategory G)
( map-colax-functor-Noncoherent-Wild-Higher-Precategory F)
-is-colax-functor-comp-colax-functor-Noncoherent-Wild-Higher-Precategory :
+preserves-id-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory :
{l1 l2 l3 l4 l5 l6 : Level}
- {𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2}
- {ℬ : Noncoherent-Wild-Higher-Precategory l3 l4}
- {𝒞 : Noncoherent-Wild-Higher-Precategory l5 l6}
+ (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4)
+ (𝒞 : Noncoherent-Wild-Higher-Precategory l5 l6)
(G : colax-functor-Noncoherent-Wild-Higher-Precategory ℬ 𝒞)
(F : colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ) →
- is-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( map-comp-colax-functor-Noncoherent-Wild-Higher-Precategory G F)
-is-colax-functor-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
- {𝒞 = 𝒞} G F =
- λ where
- .preserves-id-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory x →
- comp-2-hom-Noncoherent-Wild-Higher-Precategory 𝒞
- ( preserves-id-hom-colax-functor-Noncoherent-Wild-Higher-Precategory G
- ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory F x))
- ( 2-hom-colax-functor-Noncoherent-Wild-Higher-Precategory G
- ( preserves-id-hom-colax-functor-Noncoherent-Wild-Higher-Precategory F
- ( x)))
- .preserves-comp-hom-is-colax-functor-Noncoherent-Wild-Higher-Precategory g f →
- comp-2-hom-Noncoherent-Wild-Higher-Precategory 𝒞
- ( preserves-comp-hom-colax-functor-Noncoherent-Wild-Higher-Precategory G
- ( hom-colax-functor-Noncoherent-Wild-Higher-Precategory F g)
- ( hom-colax-functor-Noncoherent-Wild-Higher-Precategory F f))
- ( 2-hom-colax-functor-Noncoherent-Wild-Higher-Precategory G
- ( preserves-comp-hom-colax-functor-Noncoherent-Wild-Higher-Precategory F
- ( g)
- ( f)))
- .is-colax-functor-map-hom-Noncoherent-Wild-Higher-Precategory x y →
- is-colax-functor-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( G)
- ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory F x)
- ( obj-colax-functor-Noncoherent-Wild-Higher-Precategory F y))
- ( hom-noncoherent-wild-higher-precategory-colax-functor-Noncoherent-Wild-Higher-Precategory
- ( F)
- ( x)
- ( y))
+ preserves-id-structure-map-Noncoherent-Wild-Higher-Precategory 𝒜 𝒞
+ ( map-comp-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ 𝒞 G F)
+preserves-refl-1-cell-is-colax-reflexive-globular-map
+ ( preserves-id-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
+ 𝒜 ℬ 𝒞 G F)
+ x =
+ comp-2-hom-Noncoherent-Wild-Higher-Precategory 𝒞
+ ( preserves-id-hom-colax-functor-Noncoherent-Wild-Higher-Precategory G _)
+ ( 2-hom-colax-functor-Noncoherent-Wild-Higher-Precategory G
+ ( preserves-id-hom-colax-functor-Noncoherent-Wild-Higher-Precategory F _))
+is-colax-reflexive-1-cell-globular-map-is-colax-reflexive-globular-map
+ ( preserves-id-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
+ 𝒜 ℬ 𝒞 G F) =
+ preserves-id-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
+ 𝒜 _ _)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
+ ℬ _ _)
+ ( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
+ 𝒞 _ _)
+ ( hom-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory
+ G _ _)
+ ( hom-colax-functor-colax-functor-Noncoherent-Wild-Higher-Precategory
+ F _ _)
module _
{l1 l2 l3 l4 l5 l6 : Level}
- {𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2}
- {ℬ : Noncoherent-Wild-Higher-Precategory l3 l4}
- {𝒞 : Noncoherent-Wild-Higher-Precategory l5 l6}
+ (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4)
+ (𝒞 : Noncoherent-Wild-Higher-Precategory l5 l6)
(G : colax-functor-Noncoherent-Wild-Higher-Precategory ℬ 𝒞)
(F : colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ)
where
+ preserves-comp-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ preserves-comp-structure-map-Noncoherent-Wild-Higher-Precategory 𝒜 𝒞
+ ( map-comp-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ 𝒞 G F)
+ preserves-comp-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ is-colax-transitive-comp-colax-transitive-globular-map
+ ( transitive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜)
+ ( transitive-globular-type-Noncoherent-Wild-Higher-Precategory ℬ)
+ ( transitive-globular-type-Noncoherent-Wild-Higher-Precategory 𝒞)
+ ( colax-transitive-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory
+ G)
+ ( colax-transitive-globular-map-colax-functor-Noncoherent-Wild-Higher-Precategory
+ F)
+
+ is-colax-functor-comp-colax-functor-Noncoherent-Wild-Higher-Precategory :
+ is-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 𝒞
+ ( map-comp-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ 𝒞 G F)
+ is-colax-functor-comp-colax-functor-Noncoherent-Wild-Higher-Precategory =
+ make-is-colax-functor-Noncoherent-Wild-Higher-Precategory
+ ( preserves-id-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
+ 𝒜 ℬ 𝒞 G F)
+ ( preserves-comp-structure-comp-colax-functor-Noncoherent-Wild-Higher-Precategory)
+
comp-colax-functor-Noncoherent-Wild-Higher-Precategory :
colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 𝒞
pr1 comp-colax-functor-Noncoherent-Wild-Higher-Precategory =
- map-comp-colax-functor-Noncoherent-Wild-Higher-Precategory G F
+ map-comp-colax-functor-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ 𝒞 G F
pr2 comp-colax-functor-Noncoherent-Wild-Higher-Precategory =
- is-colax-functor-comp-colax-functor-Noncoherent-Wild-Higher-Precategory G F
+ is-colax-functor-comp-colax-functor-Noncoherent-Wild-Higher-Precategory
```
diff --git a/src/wild-category-theory/maps-noncoherent-large-wild-higher-precategories.lagda.md b/src/wild-category-theory/maps-noncoherent-large-wild-higher-precategories.lagda.md
index 292ce8a8b0..6b34a71c36 100644
--- a/src/wild-category-theory/maps-noncoherent-large-wild-higher-precategories.lagda.md
+++ b/src/wild-category-theory/maps-noncoherent-large-wild-higher-precategories.lagda.md
@@ -14,10 +14,10 @@ open import foundation.function-types
open import foundation.identity-types
open import foundation.universe-levels
+open import structured-types.globular-maps
open import structured-types.globular-types
+open import structured-types.large-globular-maps
open import structured-types.large-globular-types
-open import structured-types.maps-globular-types
-open import structured-types.maps-large-globular-types
open import wild-category-theory.maps-noncoherent-wild-higher-precategories
open import wild-category-theory.noncoherent-large-wild-higher-precategories
@@ -32,8 +32,12 @@ A
{{#concept "map" Disambiguation="between noncoherent large wild higher precategories" Agda=map-Noncoherent-Large-Wild-Higher-Precategory}}
`f` between
[noncoherent large wild higher precategories](wild-category-theory.noncoherent-large-wild-higher-precategories.md)
-`𝒜` and `ℬ` consists of a map on objects `F₀ : obj 𝒜 → obj ℬ`, and for every
-pair of $n$-morphisms `f` and `g`, a map of $(n+1)$-morphisms
+`𝒜` and `ℬ` is a [large globular map](structured-types.large-globular-maps.md)
+between their underlying
+[large globular types](structured-types.large-globular-types.md). More
+specifically, maps between noncoherent large wild higher precategories consist
+of a map on objects `F₀ : obj 𝒜 → obj ℬ`, and for every pair of $n$-morphisms
+`f` and `g`, a map of $(n+1)$-morphisms
```text
Fₙ₊₁ : (𝑛+1)-hom 𝒞 f g → (𝑛+1)-hom 𝒟 (Fₙ f) (Fₙ g).
@@ -51,48 +55,51 @@ that in one sense preserves this additional structure, see
### Maps between noncoherent large wild higher precategories
```agda
-record
- map-Noncoherent-Large-Wild-Higher-Precategory
+map-Noncoherent-Large-Wild-Higher-Precategory :
{α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} (δ : Level → Level)
(𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1)
- (ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2) : UUω
- where
- field
- obj-map-Noncoherent-Large-Wild-Higher-Precategory :
- {l : Level} →
- obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l →
- obj-Noncoherent-Large-Wild-Higher-Precategory ℬ (δ l)
-
- hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory :
- {l1 l2 : Level}
- {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
- {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
- map-Globular-Type
- ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y)
- ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory ℬ
- ( obj-map-Noncoherent-Large-Wild-Higher-Precategory x)
- ( obj-map-Noncoherent-Large-Wild-Higher-Precategory y))
-
-open map-Noncoherent-Large-Wild-Higher-Precategory public
+ (ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2) → UUω
+map-Noncoherent-Large-Wild-Higher-Precategory δ 𝒜 ℬ =
+ large-globular-map δ
+ ( large-globular-type-Noncoherent-Large-Wild-Higher-Precategory 𝒜)
+ ( large-globular-type-Noncoherent-Large-Wild-Higher-Precategory ℬ)
module _
{α1 α2 : Level → Level} {β1 β2 : Level → Level → Level} {δ : Level → Level}
- {𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1}
- {ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2}
+ (𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1)
+ (ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2)
(F : map-Noncoherent-Large-Wild-Higher-Precategory δ 𝒜 ℬ)
where
+ obj-map-Noncoherent-Large-Wild-Higher-Precategory :
+ {l : Level} →
+ obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l →
+ obj-Noncoherent-Large-Wild-Higher-Precategory ℬ (δ l)
+ obj-map-Noncoherent-Large-Wild-Higher-Precategory =
+ 0-cell-large-globular-map F
+
+ hom-globular-map-map-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
+ globular-map
+ ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y)
+ ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory ℬ
+ ( obj-map-Noncoherent-Large-Wild-Higher-Precategory x)
+ ( obj-map-Noncoherent-Large-Wild-Higher-Precategory y))
+ hom-globular-map-map-Noncoherent-Large-Wild-Higher-Precategory =
+ 1-cell-globular-map-large-globular-map F
+
hom-map-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l1}
{y : obj-Noncoherent-Large-Wild-Higher-Precategory 𝒜 l2} →
hom-Noncoherent-Large-Wild-Higher-Precategory 𝒜 x y →
hom-Noncoherent-Large-Wild-Higher-Precategory ℬ
- ( obj-map-Noncoherent-Large-Wild-Higher-Precategory F x)
- ( obj-map-Noncoherent-Large-Wild-Higher-Precategory F y)
+ ( obj-map-Noncoherent-Large-Wild-Higher-Precategory x)
+ ( obj-map-Noncoherent-Large-Wild-Higher-Precategory y)
hom-map-Noncoherent-Large-Wild-Higher-Precategory =
- 0-cell-map-Globular-Type
- ( hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory F)
+ 1-cell-large-globular-map F
2-hom-map-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
@@ -104,8 +111,7 @@ module _
( hom-map-Noncoherent-Large-Wild-Higher-Precategory f)
( hom-map-Noncoherent-Large-Wild-Higher-Precategory g)
2-hom-map-Noncoherent-Large-Wild-Higher-Precategory =
- 1-cell-map-Globular-Type
- ( hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory F)
+ 2-cell-large-globular-map F
hom-noncoherent-wild-higher-precategory-map-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
@@ -118,16 +124,11 @@ module _
( y))
( hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
( ℬ)
- ( obj-map-Noncoherent-Large-Wild-Higher-Precategory F x)
- ( obj-map-Noncoherent-Large-Wild-Higher-Precategory F y))
+ ( obj-map-Noncoherent-Large-Wild-Higher-Precategory x)
+ ( obj-map-Noncoherent-Large-Wild-Higher-Precategory y))
hom-noncoherent-wild-higher-precategory-map-Noncoherent-Large-Wild-Higher-Precategory
- x y =
- λ where
- .obj-map-Noncoherent-Wild-Higher-Precategory →
- hom-map-Noncoherent-Large-Wild-Higher-Precategory
- .hom-globular-type-map-Noncoherent-Wild-Higher-Precategory →
- globular-type-1-cell-map-Globular-Type
- ( hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory F)
+ _ _ =
+ 1-cell-globular-map-large-globular-map F
```
### The identity map on a noncoherent large wild higher precategory
@@ -141,11 +142,7 @@ module _
id-map-Noncoherent-Large-Wild-Higher-Precategory :
map-Noncoherent-Large-Wild-Higher-Precategory (λ l → l) 𝒜 𝒜
id-map-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .obj-map-Noncoherent-Large-Wild-Higher-Precategory →
- id
- .hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory →
- id-map-Globular-Type _
+ id-large-globular-map _
```
### Composition of maps of noncoherent large wild higher precategories
@@ -155,9 +152,9 @@ module _
{α1 α2 α3 : Level → Level}
{β1 β2 β3 : Level → Level → Level}
{δ1 δ2 : Level → Level}
- {𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1}
- {ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2}
- {𝒞 : Noncoherent-Large-Wild-Higher-Precategory α3 β3}
+ (𝒜 : Noncoherent-Large-Wild-Higher-Precategory α1 β1)
+ (ℬ : Noncoherent-Large-Wild-Higher-Precategory α2 β2)
+ (𝒞 : Noncoherent-Large-Wild-Higher-Precategory α3 β3)
(G : map-Noncoherent-Large-Wild-Higher-Precategory δ2 ℬ 𝒞)
(F : map-Noncoherent-Large-Wild-Higher-Precategory δ1 𝒜 ℬ)
where
@@ -165,12 +162,5 @@ module _
comp-map-Noncoherent-Large-Wild-Higher-Precategory :
map-Noncoherent-Large-Wild-Higher-Precategory (λ l → δ2 (δ1 l)) 𝒜 𝒞
comp-map-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .obj-map-Noncoherent-Large-Wild-Higher-Precategory →
- obj-map-Noncoherent-Large-Wild-Higher-Precategory G ∘
- obj-map-Noncoherent-Large-Wild-Higher-Precategory F
- .hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory →
- comp-map-Globular-Type
- ( hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory G)
- ( hom-globular-type-map-Noncoherent-Large-Wild-Higher-Precategory F)
+ comp-large-globular-map G F
```
diff --git a/src/wild-category-theory/maps-noncoherent-wild-higher-precategories.lagda.md b/src/wild-category-theory/maps-noncoherent-wild-higher-precategories.lagda.md
index 051aa89d16..9a5a76e199 100644
--- a/src/wild-category-theory/maps-noncoherent-wild-higher-precategories.lagda.md
+++ b/src/wild-category-theory/maps-noncoherent-wild-higher-precategories.lagda.md
@@ -14,8 +14,8 @@ open import foundation.function-types
open import foundation.identity-types
open import foundation.universe-levels
+open import structured-types.globular-maps
open import structured-types.globular-types
-open import structured-types.maps-globular-types
open import wild-category-theory.noncoherent-wild-higher-precategories
```
@@ -28,8 +28,11 @@ A
{{#concept "map" Disambiguation="between noncoherent wild higher precategories" Agda=map-Noncoherent-Wild-Higher-Precategory}}
`f` between
[noncoherent wild higher precategories](wild-category-theory.noncoherent-wild-higher-precategories.md)
-`𝒜` and `ℬ` consists of a map on objects `F₀ : obj 𝒜 → obj ℬ`, and for every
-pair of $n$-morphisms `f` and `g`, a map of $(n+1)$-morphisms
+`𝒜` and `ℬ` is a [globular map](structured-types.globular-maps.md) between their
+underlying [globular types](structured-types.globular-types.md). More
+specifically, a map `F` between noncoherent wild higher precategories consists
+of a map on objects `F₀ : obj 𝒜 → obj ℬ`, and for every pair of $n$-morphisms
+`f` and `g`, a map of $(n+1)$-morphisms
```text
Fₙ₊₁ : (𝑛+1)-hom 𝒞 f g → (𝑛+1)-hom 𝒟 (Fₙ f) (Fₙ g).
@@ -47,43 +50,47 @@ sense preserves this additional structure, see
### Maps between noncoherent wild higher precategories
```agda
-record
- map-Noncoherent-Wild-Higher-Precategory
+map-Noncoherent-Wild-Higher-Precategory :
{l1 l2 l3 l4 : Level}
(𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
- (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4) : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
- where
- field
- obj-map-Noncoherent-Wild-Higher-Precategory :
- obj-Noncoherent-Wild-Higher-Precategory 𝒜 →
- obj-Noncoherent-Wild-Higher-Precategory ℬ
-
- hom-globular-type-map-Noncoherent-Wild-Higher-Precategory :
- {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
- map-Globular-Type
- ( hom-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜 x y)
- ( hom-globular-type-Noncoherent-Wild-Higher-Precategory ℬ
- ( obj-map-Noncoherent-Wild-Higher-Precategory x)
- ( obj-map-Noncoherent-Wild-Higher-Precategory y))
-
-open map-Noncoherent-Wild-Higher-Precategory public
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4)
+map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ =
+ globular-map
+ ( globular-type-Noncoherent-Wild-Higher-Precategory 𝒜)
+ ( globular-type-Noncoherent-Wild-Higher-Precategory ℬ)
module _
{l1 l2 l3 l4 : Level}
- {𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2}
- {ℬ : Noncoherent-Wild-Higher-Precategory l3 l4}
+ (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4)
(F : map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ)
where
+ obj-map-Noncoherent-Wild-Higher-Precategory :
+ obj-Noncoherent-Wild-Higher-Precategory 𝒜 →
+ obj-Noncoherent-Wild-Higher-Precategory ℬ
+ obj-map-Noncoherent-Wild-Higher-Precategory =
+ 0-cell-globular-map F
+
+ hom-globular-map-map-Noncoherent-Wild-Higher-Precategory :
+ {x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
+ globular-map
+ ( hom-globular-type-Noncoherent-Wild-Higher-Precategory 𝒜 x y)
+ ( hom-globular-type-Noncoherent-Wild-Higher-Precategory ℬ
+ ( obj-map-Noncoherent-Wild-Higher-Precategory x)
+ ( obj-map-Noncoherent-Wild-Higher-Precategory y))
+ hom-globular-map-map-Noncoherent-Wild-Higher-Precategory =
+ 1-cell-globular-map-globular-map F
+
hom-map-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜} →
hom-Noncoherent-Wild-Higher-Precategory 𝒜 x y →
hom-Noncoherent-Wild-Higher-Precategory ℬ
- ( obj-map-Noncoherent-Wild-Higher-Precategory F x)
- ( obj-map-Noncoherent-Wild-Higher-Precategory F y)
+ ( obj-map-Noncoherent-Wild-Higher-Precategory x)
+ ( obj-map-Noncoherent-Wild-Higher-Precategory y)
hom-map-Noncoherent-Wild-Higher-Precategory =
- 0-cell-map-Globular-Type
- ( hom-globular-type-map-Noncoherent-Wild-Higher-Precategory F)
+ 0-cell-globular-map
+ ( hom-globular-map-map-Noncoherent-Wild-Higher-Precategory)
2-hom-map-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜}
@@ -93,8 +100,8 @@ module _
( hom-map-Noncoherent-Wild-Higher-Precategory f)
( hom-map-Noncoherent-Wild-Higher-Precategory g)
2-hom-map-Noncoherent-Wild-Higher-Precategory =
- 1-cell-map-Globular-Type
- ( hom-globular-type-map-Noncoherent-Wild-Higher-Precategory F)
+ 1-cell-globular-map
+ ( hom-globular-map-map-Noncoherent-Wild-Higher-Precategory)
hom-noncoherent-wild-higher-precategory-map-Noncoherent-Wild-Higher-Precategory :
(x y : obj-Noncoherent-Wild-Higher-Precategory 𝒜) →
@@ -105,16 +112,11 @@ module _
( y))
( hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
( ℬ)
- ( obj-map-Noncoherent-Wild-Higher-Precategory F x)
- ( obj-map-Noncoherent-Wild-Higher-Precategory F y))
+ ( obj-map-Noncoherent-Wild-Higher-Precategory x)
+ ( obj-map-Noncoherent-Wild-Higher-Precategory y))
hom-noncoherent-wild-higher-precategory-map-Noncoherent-Wild-Higher-Precategory
x y =
- λ where
- .obj-map-Noncoherent-Wild-Higher-Precategory →
- hom-map-Noncoherent-Wild-Higher-Precategory
- .hom-globular-type-map-Noncoherent-Wild-Higher-Precategory →
- globular-type-1-cell-map-Globular-Type
- ( hom-globular-type-map-Noncoherent-Wild-Higher-Precategory F)
+ 1-cell-globular-map-globular-map F
```
### The identity map on a noncoherent wild higher precategory
@@ -127,11 +129,7 @@ module _
id-map-Noncoherent-Wild-Higher-Precategory :
map-Noncoherent-Wild-Higher-Precategory 𝒜 𝒜
id-map-Noncoherent-Wild-Higher-Precategory =
- λ where
- .obj-map-Noncoherent-Wild-Higher-Precategory →
- id
- .hom-globular-type-map-Noncoherent-Wild-Higher-Precategory →
- id-map-Globular-Type _
+ id-globular-map _
```
### Composition of maps between noncoherent wild higher precategories
@@ -139,9 +137,9 @@ module _
```agda
module _
{l1 l2 l3 l4 l5 l6 : Level}
- {𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2}
- {ℬ : Noncoherent-Wild-Higher-Precategory l3 l4}
- {𝒞 : Noncoherent-Wild-Higher-Precategory l5 l6}
+ (𝒜 : Noncoherent-Wild-Higher-Precategory l1 l2)
+ (ℬ : Noncoherent-Wild-Higher-Precategory l3 l4)
+ (𝒞 : Noncoherent-Wild-Higher-Precategory l5 l6)
(G : map-Noncoherent-Wild-Higher-Precategory ℬ 𝒞)
(F : map-Noncoherent-Wild-Higher-Precategory 𝒜 ℬ)
where
@@ -149,12 +147,5 @@ module _
comp-map-Noncoherent-Wild-Higher-Precategory :
map-Noncoherent-Wild-Higher-Precategory 𝒜 𝒞
comp-map-Noncoherent-Wild-Higher-Precategory =
- λ where
- .obj-map-Noncoherent-Wild-Higher-Precategory →
- obj-map-Noncoherent-Wild-Higher-Precategory G ∘
- obj-map-Noncoherent-Wild-Higher-Precategory F
- .hom-globular-type-map-Noncoherent-Wild-Higher-Precategory →
- comp-map-Globular-Type
- ( hom-globular-type-map-Noncoherent-Wild-Higher-Precategory G)
- ( hom-globular-type-map-Noncoherent-Wild-Higher-Precategory F)
+ comp-globular-map G F
```
diff --git a/src/wild-category-theory/noncoherent-large-wild-higher-precategories.lagda.md b/src/wild-category-theory/noncoherent-large-wild-higher-precategories.lagda.md
index a35acc18ca..a448641016 100644
--- a/src/wild-category-theory/noncoherent-large-wild-higher-precategories.lagda.md
+++ b/src/wild-category-theory/noncoherent-large-wild-higher-precategories.lagda.md
@@ -24,6 +24,8 @@ open import structured-types.globular-types
open import structured-types.large-globular-types
open import structured-types.large-reflexive-globular-types
open import structured-types.large-transitive-globular-types
+open import structured-types.reflexive-globular-types
+open import structured-types.transitive-globular-types
open import wild-category-theory.noncoherent-wild-higher-precategories
```
@@ -75,135 +77,112 @@ record
Noncoherent-Large-Wild-Higher-Precategory
(α : Level → Level) (β : Level → Level → Level) : UUω
where
+```
- field
- obj-Noncoherent-Large-Wild-Higher-Precategory : (l : Level) → UU (α l)
-
- hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory :
- large-globular-structure β obj-Noncoherent-Large-Wild-Higher-Precategory
-
- id-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory :
- is-reflexive-large-globular-structure
- ( hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
-
- comp-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory :
- is-transitive-large-globular-structure
- ( hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
+The underlying large globular type of a noncoherent large wild precategory:
- large-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
- Large-Globular-Type α β
- large-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
- λ where
- .0-cell-Large-Globular-Type →
- obj-Noncoherent-Large-Wild-Higher-Precategory
- .globular-structure-0-cell-Large-Globular-Type →
- hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory
+```agda
+ field
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
+ Large-Globular-Type α β
```
-We record some common projections for noncoherent large wild higher
-precategories.
+The type of objects of a noncoherent large wild higher precategory:
```agda
- hom-Noncoherent-Large-Wild-Higher-Precategory :
- {l1 l2 : Level} →
- obj-Noncoherent-Large-Wild-Higher-Precategory l1 →
- obj-Noncoherent-Large-Wild-Higher-Precategory l2 →
- UU (β l1 l2)
- hom-Noncoherent-Large-Wild-Higher-Precategory =
- 1-cell-large-globular-structure
- ( hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
-
- id-hom-Noncoherent-Large-Wild-Higher-Precategory :
- {l : Level} {x : obj-Noncoherent-Large-Wild-Higher-Precategory l} →
- hom-Noncoherent-Large-Wild-Higher-Precategory x x
- id-hom-Noncoherent-Large-Wild-Higher-Precategory =
- refl-1-cell-is-reflexive-large-globular-structure
- ( id-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
+ obj-Noncoherent-Large-Wild-Higher-Precategory : (l : Level) → UU (α l)
+ obj-Noncoherent-Large-Wild-Higher-Precategory =
+ 0-cell-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+```
- comp-hom-Noncoherent-Large-Wild-Higher-Precategory :
- {l1 l2 l3 : Level}
- {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
- {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
- {z : obj-Noncoherent-Large-Wild-Higher-Precategory l3} →
- hom-Noncoherent-Large-Wild-Higher-Precategory y z →
- hom-Noncoherent-Large-Wild-Higher-Precategory x y →
- hom-Noncoherent-Large-Wild-Higher-Precategory x z
- comp-hom-Noncoherent-Large-Wild-Higher-Precategory =
- comp-1-cell-is-transitive-large-globular-structure
- ( comp-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
+The globular type of morphisms between two objects in a noncoherent large wild
+higher precategory:
+```agda
hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
(x : obj-Noncoherent-Large-Wild-Higher-Precategory l1)
(y : obj-Noncoherent-Large-Wild-Higher-Precategory l2) →
Globular-Type (β l1 l2) (β l1 l2)
- pr1 (hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory x y) =
- hom-Noncoherent-Large-Wild-Higher-Precategory x y
- pr2 (hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory x y) =
- globular-structure-1-cell-large-globular-structure
- ( hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
- ( x)
- ( y)
+ hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ 1-cell-globular-type-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
- hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory :
+ hom-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
(x : obj-Noncoherent-Large-Wild-Higher-Precategory l1)
(y : obj-Noncoherent-Large-Wild-Higher-Precategory l2) →
- Noncoherent-Wild-Higher-Precategory (β l1 l2) (β l1 l2)
- hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
- x y =
- make-Noncoherent-Wild-Higher-Precategory
- ( hom-Noncoherent-Large-Wild-Higher-Precategory x y)
- ( globular-structure-1-cell-large-globular-structure
- ( hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
- ( x)
- ( y))
- ( is-reflexive-globular-structure-1-cell-is-reflexive-large-globular-structure
- ( id-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
- ( x)
- ( y))
- ( is-transitive-globular-structure-1-cell-is-transitive-large-globular-structure
- ( comp-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
- ( x)
- ( y))
+ UU (β l1 l2)
+ hom-Noncoherent-Large-Wild-Higher-Precategory =
+ 1-cell-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+```
+
+The globular structure on the type of objects of a noncoherent large wild higher
+precategory:
+
+```agda
+ globular-structure-obj-Noncoherent-Large-Wild-Higher-Precategory :
+ large-globular-structure β obj-Noncoherent-Large-Wild-Higher-Precategory
+ globular-structure-obj-Noncoherent-Large-Wild-Higher-Precategory =
+ large-globular-structure-0-cell-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
```
+The globular type of 2-morphisms is a noncoherent large wild higher precategory:
+
```agda
+ 2-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
+ (f g : hom-Noncoherent-Large-Wild-Higher-Precategory x y) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 2-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ 2-cell-globular-type-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+
2-hom-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
{y : obj-Noncoherent-Large-Wild-Higher-Precategory l2} →
- hom-Noncoherent-Large-Wild-Higher-Precategory x y →
- hom-Noncoherent-Large-Wild-Higher-Precategory x y →
- UU (β l1 l2)
+ (f g : hom-Noncoherent-Large-Wild-Higher-Precategory x y) → UU (β l1 l2)
2-hom-Noncoherent-Large-Wild-Higher-Precategory =
- 2-cell-large-globular-structure
- ( hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
+ 2-cell-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+```
- id-2-hom-Noncoherent-Large-Wild-Higher-Precategory :
+The globular structure on the type of morphisms between two objects in a
+noncoherent large wild higher precategory:
+
+```agda
+ globular-structure-hom-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
- {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
- {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
- {f : hom-Noncoherent-Large-Wild-Higher-Precategory x y} →
- 2-hom-Noncoherent-Large-Wild-Higher-Precategory f f
- id-2-hom-Noncoherent-Large-Wild-Higher-Precategory =
- refl-2-cell-is-reflexive-large-globular-structure
- ( id-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
+ (x : obj-Noncoherent-Large-Wild-Higher-Precategory l1)
+ (y : obj-Noncoherent-Large-Wild-Higher-Precategory l2) →
+ globular-structure
+ ( β l1 l2)
+ ( hom-Noncoherent-Large-Wild-Higher-Precategory x y)
+ globular-structure-hom-Noncoherent-Large-Wild-Higher-Precategory =
+ globular-structure-1-cell-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+```
- comp-2-hom-Noncoherent-Large-Wild-Higher-Precategory :
+The globular type of 3-morphisms in a noncoherent large wild higher precategory:
+
+```agda
+ 3-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
{y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
- {f g h : hom-Noncoherent-Large-Wild-Higher-Precategory x y} →
- 2-hom-Noncoherent-Large-Wild-Higher-Precategory g h →
- 2-hom-Noncoherent-Large-Wild-Higher-Precategory f g →
- 2-hom-Noncoherent-Large-Wild-Higher-Precategory f h
- comp-2-hom-Noncoherent-Large-Wild-Higher-Precategory =
- comp-2-cell-is-transitive-large-globular-structure
- ( comp-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
-```
+ {f g : hom-Noncoherent-Large-Wild-Higher-Precategory x y}
+ (s t : 2-hom-Noncoherent-Large-Wild-Higher-Precategory f g) →
+ Globular-Type (β l1 l2) (β l1 l2)
+ 3-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ 3-cell-globular-type-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
-```agda
3-hom-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
@@ -213,34 +192,176 @@ precategories.
2-hom-Noncoherent-Large-Wild-Higher-Precategory f g →
UU (β l1 l2)
3-hom-Noncoherent-Large-Wild-Higher-Precategory =
- 3-cell-large-globular-structure
- ( hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
+ 3-cell-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+```
+
+The globular structure on the type of 2-morphisms in a noncoherent large wild
+higher precategory:
+
+```agda
+ globular-structure-2-hom-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
+ (f g : hom-Noncoherent-Large-Wild-Higher-Precategory x y) →
+ globular-structure
+ ( β l1 l2)
+ ( 2-hom-Noncoherent-Large-Wild-Higher-Precategory f g)
+ globular-structure-2-hom-Noncoherent-Large-Wild-Higher-Precategory =
+ globular-structure-2-cell-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+```
+
+The structure of identity morphisms in a noncoherent large wild higher
+precategory:
+
+```agda
+ field
+ id-structure-Noncoherent-Large-Wild-Higher-Precategory :
+ is-reflexive-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+
+ id-hom-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 : Level} {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1} →
+ hom-Noncoherent-Large-Wild-Higher-Precategory x x
+ id-hom-Noncoherent-Large-Wild-Higher-Precategory {l1} {x} =
+ refl-1-cell-is-reflexive-Large-Globular-Type
+ ( id-structure-Noncoherent-Large-Wild-Higher-Precategory)
+ ( x)
+
+ id-structure-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2} →
+ is-reflexive-Globular-Type
+ ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory x y)
+ id-structure-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ is-reflexive-1-cell-globular-type-is-reflexive-Large-Globular-Type
+ id-structure-Noncoherent-Large-Wild-Higher-Precategory
+
+ id-2-hom-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
+ (f : hom-Noncoherent-Large-Wild-Higher-Precategory x y) →
+ 2-hom-Noncoherent-Large-Wild-Higher-Precategory f f
+ id-2-hom-Noncoherent-Large-Wild-Higher-Precategory =
+ refl-2-cell-is-reflexive-Large-Globular-Type
+ id-structure-Noncoherent-Large-Wild-Higher-Precategory
id-3-hom-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
{y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
{f g : hom-Noncoherent-Large-Wild-Higher-Precategory x y}
- {H : 2-hom-Noncoherent-Large-Wild-Higher-Precategory f g} →
- 3-hom-Noncoherent-Large-Wild-Higher-Precategory H H
+ (s : 2-hom-Noncoherent-Large-Wild-Higher-Precategory f g) →
+ 3-hom-Noncoherent-Large-Wild-Higher-Precategory s s
id-3-hom-Noncoherent-Large-Wild-Higher-Precategory =
- refl-3-cell-is-reflexive-large-globular-structure
- ( id-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
+ refl-3-cell-is-reflexive-Large-Globular-Type
+ id-structure-Noncoherent-Large-Wild-Higher-Precategory
+```
+
+The structure of composition in a noncoherent large wild higher precategory:
+
+```agda
+ field
+ comp-structure-Noncoherent-Large-Wild-Higher-Precategory :
+ is-transitive-Large-Globular-Type
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+
+ comp-hom-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 l3 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
+ {z : obj-Noncoherent-Large-Wild-Higher-Precategory l3} →
+ hom-Noncoherent-Large-Wild-Higher-Precategory y z →
+ hom-Noncoherent-Large-Wild-Higher-Precategory x y →
+ hom-Noncoherent-Large-Wild-Higher-Precategory x z
+ comp-hom-Noncoherent-Large-Wild-Higher-Precategory =
+ comp-1-cell-is-transitive-Large-Globular-Type
+ comp-structure-Noncoherent-Large-Wild-Higher-Precategory
+
+ comp-structure-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2} →
+ is-transitive-Globular-Type
+ ( hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory x y)
+ comp-structure-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ is-transitive-1-cell-globular-type-is-transitive-Large-Globular-Type
+ comp-structure-Noncoherent-Large-Wild-Higher-Precategory
+
+ comp-2-hom-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ {x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
+ {y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
+ {f g h : hom-Noncoherent-Large-Wild-Higher-Precategory x y} →
+ 2-hom-Noncoherent-Large-Wild-Higher-Precategory g h →
+ 2-hom-Noncoherent-Large-Wild-Higher-Precategory f g →
+ 2-hom-Noncoherent-Large-Wild-Higher-Precategory f h
+ comp-2-hom-Noncoherent-Large-Wild-Higher-Precategory =
+ comp-2-cell-is-transitive-Large-Globular-Type
+ comp-structure-Noncoherent-Large-Wild-Higher-Precategory
comp-3-hom-Noncoherent-Large-Wild-Higher-Precategory :
{l1 l2 : Level}
{x : obj-Noncoherent-Large-Wild-Higher-Precategory l1}
{y : obj-Noncoherent-Large-Wild-Higher-Precategory l2}
{f g : hom-Noncoherent-Large-Wild-Higher-Precategory x y}
- {H K L : 2-hom-Noncoherent-Large-Wild-Higher-Precategory f g} →
- 3-hom-Noncoherent-Large-Wild-Higher-Precategory K L →
- 3-hom-Noncoherent-Large-Wild-Higher-Precategory H K →
- 3-hom-Noncoherent-Large-Wild-Higher-Precategory H L
+ {r s t : 2-hom-Noncoherent-Large-Wild-Higher-Precategory f g} →
+ 3-hom-Noncoherent-Large-Wild-Higher-Precategory s t →
+ 3-hom-Noncoherent-Large-Wild-Higher-Precategory r s →
+ 3-hom-Noncoherent-Large-Wild-Higher-Precategory r t
comp-3-hom-Noncoherent-Large-Wild-Higher-Precategory =
- comp-3-cell-is-transitive-large-globular-structure
- ( comp-hom-globular-structure-Noncoherent-Large-Wild-Higher-Precategory)
+ comp-3-cell-is-transitive-Large-Globular-Type
+ comp-structure-Noncoherent-Large-Wild-Higher-Precategory
```
+The noncoherent wild higher precategory of morphisms between two object in a
+noncoherent large wild higher precategory:
+
```agda
+ hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory :
+ {l1 l2 : Level}
+ (x : obj-Noncoherent-Large-Wild-Higher-Precategory l1)
+ (y : obj-Noncoherent-Large-Wild-Higher-Precategory l2) →
+ Noncoherent-Wild-Higher-Precategory (β l1 l2) (β l1 l2)
+ hom-noncoherent-wild-higher-precategory-Noncoherent-Large-Wild-Higher-Precategory
+ x y =
+ make-Noncoherent-Wild-Higher-Precategory
+ ( id-structure-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ { x = x}
+ { y})
+ ( comp-structure-hom-globular-type-Noncoherent-Large-Wild-Higher-Precategory)
+```
+
+The underlying reflexive globular type of a noncoherent large wild higher
+precategory:
+
+```agda
+ large-reflexive-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
+ Large-Reflexive-Globular-Type α β
+ large-globular-type-Large-Reflexive-Globular-Type
+ large-reflexive-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ is-reflexive-Large-Reflexive-Globular-Type
+ large-reflexive-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ id-structure-Noncoherent-Large-Wild-Higher-Precategory
+```
+
+The underlying transitive globular type of a noncoherent large wild higher
+precategory:
+
+```agda
+ large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory :
+ Large-Transitive-Globular-Type α β
+ large-globular-type-Large-Transitive-Globular-Type
+ large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ large-globular-type-Noncoherent-Large-Wild-Higher-Precategory
+ is-transitive-Large-Transitive-Globular-Type
+ large-transitive-globular-type-Noncoherent-Large-Wild-Higher-Precategory =
+ comp-structure-Noncoherent-Large-Wild-Higher-Precategory
+
open Noncoherent-Large-Wild-Higher-Precategory public
```
diff --git a/src/wild-category-theory/noncoherent-wild-higher-precategories.lagda.md b/src/wild-category-theory/noncoherent-wild-higher-precategories.lagda.md
index 0d32197fc4..743fb94601 100644
--- a/src/wild-category-theory/noncoherent-wild-higher-precategories.lagda.md
+++ b/src/wild-category-theory/noncoherent-wild-higher-precategories.lagda.md
@@ -69,27 +69,14 @@ the transitivity operations are branded as _composition of morphisms_.
```agda
Noncoherent-Wild-Higher-Precategory : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
Noncoherent-Wild-Higher-Precategory l1 l2 =
- Σ ( UU l1)
- ( λ obj-Noncoherent-Wild-Higher-Precategory →
- Σ ( globular-structure l2 obj-Noncoherent-Wild-Higher-Precategory)
- ( λ hom-globular-structure-Noncoherent-Wild-Higher-Precategory →
- ( is-reflexive-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)) ×
- ( is-transitive-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory))))
+ Σ ( Globular-Type l1 l2)
+ ( λ X → is-reflexive-Globular-Type X × is-transitive-Globular-Type X)
make-Noncoherent-Wild-Higher-Precategory :
- {l1 l2 : Level} →
- (obj-Noncoherent-Wild-Higher-Precategory : UU l1)
- (hom-globular-structure-Noncoherent-Wild-Higher-Precategory :
- globular-structure l2 obj-Noncoherent-Wild-Higher-Precategory) →
- ( is-reflexive-globular-structure
- hom-globular-structure-Noncoherent-Wild-Higher-Precategory) →
- ( is-transitive-globular-structure
- hom-globular-structure-Noncoherent-Wild-Higher-Precategory) →
- Noncoherent-Wild-Higher-Precategory l1 l2
-make-Noncoherent-Wild-Higher-Precategory obj hom id comp =
- ( obj , hom , id , comp)
+ {l1 l2 : Level} {X : Globular-Type l1 l2} → is-reflexive-Globular-Type X →
+ is-transitive-Globular-Type X → Noncoherent-Wild-Higher-Precategory l1 l2
+make-Noncoherent-Wild-Higher-Precategory id comp =
+ ( _ , id , comp)
{-# INLINE make-Noncoherent-Wild-Higher-Precategory #-}
@@ -97,49 +84,82 @@ module _
{l1 l2 : Level} (𝒞 : Noncoherent-Wild-Higher-Precategory l1 l2)
where
- obj-Noncoherent-Wild-Higher-Precategory : UU l1
- obj-Noncoherent-Wild-Higher-Precategory = pr1 𝒞
-
- hom-globular-structure-Noncoherent-Wild-Higher-Precategory :
- globular-structure l2 obj-Noncoherent-Wild-Higher-Precategory
- hom-globular-structure-Noncoherent-Wild-Higher-Precategory = pr1 (pr2 𝒞)
-
- id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory :
- is-reflexive-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
- id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory =
- pr1 (pr2 (pr2 𝒞))
-
- comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory :
- is-transitive-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
- comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory =
- pr2 (pr2 (pr2 𝒞))
-
globular-type-Noncoherent-Wild-Higher-Precategory : Globular-Type l1 l2
- pr1 globular-type-Noncoherent-Wild-Higher-Precategory =
- obj-Noncoherent-Wild-Higher-Precategory
- pr2 globular-type-Noncoherent-Wild-Higher-Precategory =
- hom-globular-structure-Noncoherent-Wild-Higher-Precategory
+ globular-type-Noncoherent-Wild-Higher-Precategory = pr1 𝒞
+
+ obj-Noncoherent-Wild-Higher-Precategory : UU l1
+ obj-Noncoherent-Wild-Higher-Precategory =
+ 0-cell-Globular-Type globular-type-Noncoherent-Wild-Higher-Precategory
```
-We record some common projections for noncoherent wild higher precategories.
+Morphisms in a noncoherent wild higher precategory:
```agda
+ hom-globular-type-Noncoherent-Wild-Higher-Precategory :
+ (x y : obj-Noncoherent-Wild-Higher-Precategory) →
+ Globular-Type l2 l2
+ hom-globular-type-Noncoherent-Wild-Higher-Precategory =
+ 1-cell-globular-type-Globular-Type
+ globular-type-Noncoherent-Wild-Higher-Precategory
+
hom-Noncoherent-Wild-Higher-Precategory :
obj-Noncoherent-Wild-Higher-Precategory →
obj-Noncoherent-Wild-Higher-Precategory →
UU l2
hom-Noncoherent-Wild-Higher-Precategory =
- 1-cell-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ 1-cell-Globular-Type globular-type-Noncoherent-Wild-Higher-Precategory
+```
+
+Identity morphisms in a noncoherent wild higher precategory:
+
+```agda
+ id-structure-Noncoherent-Wild-Higher-Precategory :
+ is-reflexive-Globular-Type globular-type-Noncoherent-Wild-Higher-Precategory
+ id-structure-Noncoherent-Wild-Higher-Precategory =
+ pr1 (pr2 𝒞)
id-hom-Noncoherent-Wild-Higher-Precategory :
{x : obj-Noncoherent-Wild-Higher-Precategory} →
hom-Noncoherent-Wild-Higher-Precategory x x
- id-hom-Noncoherent-Wild-Higher-Precategory =
- refl-1-cell-is-reflexive-globular-structure
- ( id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ id-hom-Noncoherent-Wild-Higher-Precategory {x} =
+ refl-2-cell-is-reflexive-Globular-Type
+ id-structure-Noncoherent-Wild-Higher-Precategory
+
+ id-structure-hom-globular-type-Noncoherent-Wild-Higher-Precategory :
+ {x y : obj-Noncoherent-Wild-Higher-Precategory} →
+ is-reflexive-Globular-Type
+ ( hom-globular-type-Noncoherent-Wild-Higher-Precategory x y)
+ id-structure-hom-globular-type-Noncoherent-Wild-Higher-Precategory =
+ is-reflexive-1-cell-globular-type-is-reflexive-Globular-Type
+ id-structure-Noncoherent-Wild-Higher-Precategory
+
+ reflexive-globular-type-Noncoherent-Wild-Higher-Precategory :
+ Reflexive-Globular-Type l1 l2
+ globular-type-Reflexive-Globular-Type
+ reflexive-globular-type-Noncoherent-Wild-Higher-Precategory =
+ globular-type-Noncoherent-Wild-Higher-Precategory
+ refl-Reflexive-Globular-Type
+ reflexive-globular-type-Noncoherent-Wild-Higher-Precategory =
+ id-structure-Noncoherent-Wild-Higher-Precategory
+
+ hom-reflexive-globular-type-Noncoherent-Wild-Higher-Precategory :
+ (x y : obj-Noncoherent-Wild-Higher-Precategory) →
+ Reflexive-Globular-Type l2 l2
+ hom-reflexive-globular-type-Noncoherent-Wild-Higher-Precategory x y =
+ 1-cell-reflexive-globular-type-Reflexive-Globular-Type
+ ( reflexive-globular-type-Noncoherent-Wild-Higher-Precategory)
+ ( x)
+ ( y)
+```
+
+Composition in a noncoherent wild higher precategory:
+
+```agda
+ comp-structure-Noncoherent-Wild-Higher-Precategory :
+ is-transitive-Globular-Type
+ globular-type-Noncoherent-Wild-Higher-Precategory
+ comp-structure-Noncoherent-Wild-Higher-Precategory =
+ pr2 (pr2 𝒞)
comp-hom-Noncoherent-Wild-Higher-Precategory :
{x y z : obj-Noncoherent-Wild-Higher-Precategory} →
@@ -147,41 +167,53 @@ We record some common projections for noncoherent wild higher precategories.
hom-Noncoherent-Wild-Higher-Precategory x y →
hom-Noncoherent-Wild-Higher-Precategory x z
comp-hom-Noncoherent-Wild-Higher-Precategory =
- comp-1-cell-is-transitive-globular-structure
- ( comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ comp-1-cell-is-transitive-Globular-Type
+ comp-structure-Noncoherent-Wild-Higher-Precategory
- hom-globular-type-Noncoherent-Wild-Higher-Precategory :
+ comp-structure-hom-globular-type-Noncoherent-Wild-Higher-Precategory :
+ {x y : obj-Noncoherent-Wild-Higher-Precategory} →
+ is-transitive-Globular-Type
+ ( hom-globular-type-Noncoherent-Wild-Higher-Precategory x y)
+ comp-structure-hom-globular-type-Noncoherent-Wild-Higher-Precategory =
+ is-transitive-1-cell-globular-type-is-transitive-Globular-Type
+ comp-structure-Noncoherent-Wild-Higher-Precategory
+
+ transitive-globular-type-Noncoherent-Wild-Higher-Precategory :
+ Transitive-Globular-Type l1 l2
+ globular-type-Transitive-Globular-Type
+ transitive-globular-type-Noncoherent-Wild-Higher-Precategory =
+ globular-type-Noncoherent-Wild-Higher-Precategory
+ is-transitive-Transitive-Globular-Type
+ transitive-globular-type-Noncoherent-Wild-Higher-Precategory =
+ comp-structure-Noncoherent-Wild-Higher-Precategory
+
+ hom-transitive-globular-type-Noncoherent-Wild-Higher-Precategory :
(x y : obj-Noncoherent-Wild-Higher-Precategory) →
- Globular-Type l2 l2
- pr1 (hom-globular-type-Noncoherent-Wild-Higher-Precategory x y) =
- hom-Noncoherent-Wild-Higher-Precategory x y
- pr2 (hom-globular-type-Noncoherent-Wild-Higher-Precategory x y) =
- globular-structure-1-cell-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ Transitive-Globular-Type l2 l2
+ hom-transitive-globular-type-Noncoherent-Wild-Higher-Precategory x y =
+ 1-cell-transitive-globular-type-Transitive-Globular-Type
+ ( transitive-globular-type-Noncoherent-Wild-Higher-Precategory)
( x)
( y)
+```
+The noncoherent wild higher precategory of morphisms between two objects in a
+noncoherent wild higher precategory:
+
+```agda
hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory :
(x y : obj-Noncoherent-Wild-Higher-Precategory) →
Noncoherent-Wild-Higher-Precategory l2 l2
hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
x y =
make-Noncoherent-Wild-Higher-Precategory
- ( hom-Noncoherent-Wild-Higher-Precategory x y)
- ( globular-structure-1-cell-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
- ( x)
- ( y))
- ( is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
- ( id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
- ( x)
- ( y))
- ( is-transitive-globular-structure-1-cell-is-transitive-globular-structure
- ( comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
- ( x)
- ( y))
+ ( id-structure-hom-globular-type-Noncoherent-Wild-Higher-Precategory
+ {x} {y})
+ ( comp-structure-hom-globular-type-Noncoherent-Wild-Higher-Precategory)
```
+2-Morphisms in a noncoherent wild higher precategory:
+
```agda
2-hom-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory} →
@@ -189,16 +221,15 @@ We record some common projections for noncoherent wild higher precategories.
hom-Noncoherent-Wild-Higher-Precategory x y →
UU l2
2-hom-Noncoherent-Wild-Higher-Precategory =
- 2-cell-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ 2-cell-Globular-Type globular-type-Noncoherent-Wild-Higher-Precategory
id-2-hom-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory}
{f : hom-Noncoherent-Wild-Higher-Precategory x y} →
2-hom-Noncoherent-Wild-Higher-Precategory f f
id-2-hom-Noncoherent-Wild-Higher-Precategory =
- refl-2-cell-is-reflexive-globular-structure
- ( id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ refl-3-cell-is-reflexive-Globular-Type
+ id-structure-Noncoherent-Wild-Higher-Precategory
comp-2-hom-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory}
@@ -207,20 +238,20 @@ We record some common projections for noncoherent wild higher precategories.
2-hom-Noncoherent-Wild-Higher-Precategory f g →
2-hom-Noncoherent-Wild-Higher-Precategory f h
comp-2-hom-Noncoherent-Wild-Higher-Precategory =
- comp-2-cell-is-transitive-globular-structure
- ( comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ comp-2-cell-is-transitive-Globular-Type
+ comp-structure-Noncoherent-Wild-Higher-Precategory
```
+3-Morphisms in a noncoherent wild higher precategory:
+
```agda
3-hom-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory}
{f g : hom-Noncoherent-Wild-Higher-Precategory x y} →
2-hom-Noncoherent-Wild-Higher-Precategory f g →
- 2-hom-Noncoherent-Wild-Higher-Precategory f g →
- UU l2
+ 2-hom-Noncoherent-Wild-Higher-Precategory f g → UU l2
3-hom-Noncoherent-Wild-Higher-Precategory =
- 3-cell-globular-structure
- ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ 3-cell-Globular-Type globular-type-Noncoherent-Wild-Higher-Precategory
id-3-hom-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory}
@@ -228,8 +259,9 @@ We record some common projections for noncoherent wild higher precategories.
{H : 2-hom-Noncoherent-Wild-Higher-Precategory f g} →
3-hom-Noncoherent-Wild-Higher-Precategory H H
id-3-hom-Noncoherent-Wild-Higher-Precategory =
- refl-3-cell-is-reflexive-globular-structure
- ( id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ refl-4-cell-is-reflexive-Globular-Type
+ globular-type-Noncoherent-Wild-Higher-Precategory
+ id-structure-Noncoherent-Wild-Higher-Precategory
comp-3-hom-Noncoherent-Wild-Higher-Precategory :
{x y : obj-Noncoherent-Wild-Higher-Precategory}
@@ -239,6 +271,6 @@ We record some common projections for noncoherent wild higher precategories.
3-hom-Noncoherent-Wild-Higher-Precategory H K →
3-hom-Noncoherent-Wild-Higher-Precategory H L
comp-3-hom-Noncoherent-Wild-Higher-Precategory =
- comp-3-cell-is-transitive-globular-structure
- ( comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
+ comp-3-cell-is-transitive-Globular-Type
+ comp-structure-Noncoherent-Wild-Higher-Precategory
```