Symmetric Monoidal Preorder
Textbook Definition
Definition 2.1. A (strict) symmetric monoidal structure on a preorder (X, ≤) consists of two constituents:
(i) an element I ∈ X, called the monoidal unit,
(ii) a function ⊗ : X × X → X, called the monoidal product.
These constituents must satisfy the following properties, where we write ⊗(x₁, x₂) = x₁ ⊗ x₂:
(a) for all x₁, x₂, y₁, y₂ ∈ X, if x₁ ≤ y₁ and x₂ ≤ y₂, then x₁ ⊗ x₂ ≤ y₁ ⊗ y₂,
(b) for all x ∈ X, the equations I ⊗ x = x and x ⊗ I = x hold,
(c) for all x, y, z ∈ X, the equation (x ⊗ y) ⊗ z = x ⊗ (y ⊗ z) holds,
(d) for all x, y ∈ X, the equation x ⊗ y = y ⊗ x holds.
We call these conditions monotonicity, unitality, associativity, and symmetry respectively. A preorder equipped with a symmetric monoidal structure, (X, ≤, I, ⊗), is called a symmetric monoidal preorder.
Agda Formalization
module definitions.chapter2.SymmetricMonoidalPreorder where open import definitions.chapter1.Preorder using (Preorder) open import Relation.Binary.PropositionalEquality using (_≡_) -- A symmetric monoidal structure on a preorder (X, ≤) record SymmetricMonoidalStructure (P : Preorder) : Set where open Preorder P field -- (i) Monoidal unit I : Carrier -- (ii) Monoidal product _⊗_ : Carrier → Carrier → Carrier -- (a) Monotonicity: if x₁ ≤ y₁ and x₂ ≤ y₂, then x₁ ⊗ x₂ ≤ y₁ ⊗ y₂ monotonicity : ∀ {x₁ x₂ y₁ y₂} → x₁ ≤ y₁ → x₂ ≤ y₂ → (x₁ ⊗ x₂) ≤ (y₁ ⊗ y₂) -- (b) Unitality: I ⊗ x = x and x ⊗ I = x left-unit : ∀ {x} → I ⊗ x ≡ x right-unit : ∀ {x} → x ⊗ I ≡ x -- (c) Associativity: (x ⊗ y) ⊗ z = x ⊗ (y ⊗ z) associativity : ∀ {x y z} → (x ⊗ y) ⊗ z ≡ x ⊗ (y ⊗ z) -- (d) Symmetry: x ⊗ y = y ⊗ x symmetry : ∀ {x y} → x ⊗ y ≡ y ⊗ x -- A symmetric monoidal preorder is a preorder equipped with -- a symmetric monoidal structure (X, ≤, I, ⊗) record SymmetricMonoidalPreorder : Set₁ where field preorder : Preorder structure : SymmetricMonoidalStructure preorder open Preorder preorder public open SymmetricMonoidalStructure structure public