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