Documentation

Mathlib.Algebra.Order.Quantale

Theory of quantales #

Quantales are the non-commutative generalization of locales/frames and as such are linked to point-free topology and order theory. Applications are found throughout logic, quantum mechanics, and computer science (see e.g. [Vic89] and [Mul86]).

The most general definition of quantale occurring in literature, is that a quantale is a semigroup distributing over a complete sup-semilattice. In our definition below, we use the fact that every complete sup-semilattice is in fact a complete lattice, and make constructs defined for those immediately available. Another view could be to define a quantale as a complete idempotent semiring, i.e. a complete semiring in which + and sup coincide. However, we will often encounter additive quantales, i.e. quantales in which the semigroup operator is thought of as addition, in which case the link with semirings will lead to confusion notationally.

In this file, we follow the basic definition set out on the wikipedia page on quantales, using a mixin typeclass to make the special cases of unital, commutative, idempotent, integral, and involutive quantales easier to add on later.

Main definitions #

Notation #

References #

https://en.wikipedia.org/wiki/Quantale https://encyclopediaofmath.org/wiki/Quantale https://ncatlab.org/nlab/show/quantale

class IsAddQuantale (α : Type u_1) [AddSemigroup α] [CompleteLattice α] :

An additive quantale is an additive semigroup distributing over a complete lattice.

  • add_sSup_distrib (x : α) (s : Set α) : x + sSup s = ys, x + y

    Addition is distributive over join in a quantale

  • sSup_add_distrib (s : Set α) (y : α) : sSup s + y = xs, x + y

    Addition is distributive over join in a quantale

Instances
    class IsQuantale (α : Type u_1) [Semigroup α] [CompleteLattice α] :

    A quantale is a semigroup distributing over a complete lattice.

    • mul_sSup_distrib (x : α) (s : Set α) : x * sSup s = ys, x * y

      Multiplication is distributive over join in a quantale

    • sSup_mul_distrib (s : Set α) (y : α) : sSup s * y = xs, x * y

      Multiplication is distributive over join in a quantale

    Instances
      theorem mul_sSup_distrib {α : Type u_1} {x : α} {s : Set α} [Semigroup α] [CompleteLattice α] [IsQuantale α] :
      x * sSup s = ys, x * y
      theorem add_sSup_distrib {α : Type u_1} {x : α} {s : Set α} [AddSemigroup α] [CompleteLattice α] [IsAddQuantale α] :
      x + sSup s = ys, x + y
      theorem sSup_mul_distrib {α : Type u_1} {x : α} {s : Set α} [Semigroup α] [CompleteLattice α] [IsQuantale α] :
      sSup s * x = ys, y * x
      theorem sSup_add_distrib {α : Type u_1} {x : α} {s : Set α} [AddSemigroup α] [CompleteLattice α] [IsAddQuantale α] :
      sSup s + x = ys, y + x
      def IsAddQuantale.leftAddResiduation {α : Type u_1} [AddSemigroup α] [CompleteLattice α] (x y : α) :
      α

      Left- and right- residuation operators on an additive quantale are similar to the Heyting operator on complete lattices, but for a non-commutative logic. I.e. x ≤ y ⇨ₗ z ↔ x + y ≤ z or alternatively x ⇨ₗ y = sSup { z | z + x ≤ y }.

      Equations
      Instances For
        def IsAddQuantale.rightAddResiduation {α : Type u_1} [AddSemigroup α] [CompleteLattice α] (x y : α) :
        α

        Left- and right- residuation operators on an additive quantale are similar to the Heyting operator on complete lattices, but for a non-commutative logic. I.e. x ≤ y ⇨ᵣ z ↔ y + x ≤ z or alternatively x ⇨ₗ y = sSup { z | x + z ≤ y }."

        Equations
        Instances For

          Left- and right- residuation operators on an additive quantale are similar to the Heyting operator on complete lattices, but for a non-commutative logic. I.e. x ≤ y ⇨ₗ z ↔ x + y ≤ z or alternatively x ⇨ₗ y = sSup { z | z + x ≤ y }.

          Equations
          Instances For

            Left- and right- residuation operators on an additive quantale are similar to the Heyting operator on complete lattices, but for a non-commutative logic. I.e. x ≤ y ⇨ᵣ z ↔ y + x ≤ z or alternatively x ⇨ₗ y = sSup { z | x + z ≤ y }."

            Equations
            Instances For
              def IsQuantale.leftMulResiduation {α : Type u_1} [Semigroup α] [CompleteLattice α] (x y : α) :
              α

              Left- and right-residuation operators on an additive quantale are similar to the Heyting operator on complete lattices, but for a non-commutative logic. I.e. x ≤ y ⇨ₗ z ↔ x * y ≤ z or alternatively x ⇨ₗ y = sSup { z | z * x ≤ y }.

              Equations
              Instances For
                def IsQuantale.rightMulResiduation {α : Type u_1} [Semigroup α] [CompleteLattice α] (x y : α) :
                α

                Left- and right- residuation operators on an additive quantale are similar to the Heyting operator on complete lattices, but for a non-commutative logic. I.e. x ≤ y ⇨ᵣ z ↔ y * x ≤ z or alternatively x ⇨ₗ y = sSup { z | x * z ≤ y }.

                Equations
                Instances For

                  Left- and right-residuation operators on an additive quantale are similar to the Heyting operator on complete lattices, but for a non-commutative logic. I.e. x ≤ y ⇨ₗ z ↔ x * y ≤ z or alternatively x ⇨ₗ y = sSup { z | z * x ≤ y }.

                  Equations
                  Instances For

                    Left- and right- residuation operators on an additive quantale are similar to the Heyting operator on complete lattices, but for a non-commutative logic. I.e. x ≤ y ⇨ᵣ z ↔ y * x ≤ z or alternatively x ⇨ₗ y = sSup { z | x * z ≤ y }.

                    Equations
                    Instances For
                      theorem IsQuantale.mul_iSup_distrib {α : Type u_1} {ι : Type u_2} {x : α} {f : ια} [Semigroup α] [CompleteLattice α] [IsQuantale α] :
                      x * ⨆ (i : ι), f i = ⨆ (i : ι), x * f i
                      theorem IsAddQuantale.add_iSup_distrib {α : Type u_1} {ι : Type u_2} {x : α} {f : ια} [AddSemigroup α] [CompleteLattice α] [IsAddQuantale α] :
                      x + ⨆ (i : ι), f i = ⨆ (i : ι), x + f i
                      theorem IsQuantale.iSup_mul_distrib {α : Type u_1} {ι : Type u_2} {x : α} {f : ια} [Semigroup α] [CompleteLattice α] [IsQuantale α] :
                      (⨆ (i : ι), f i) * x = ⨆ (i : ι), f i * x
                      theorem IsAddQuantale.iSup_add_distrib {α : Type u_1} {ι : Type u_2} {x : α} {f : ια} [AddSemigroup α] [CompleteLattice α] [IsAddQuantale α] :
                      (⨆ (i : ι), f i) + x = ⨆ (i : ι), f i + x
                      theorem IsQuantale.mul_sup_distrib {α : Type u_1} {x y z : α} [Semigroup α] [CompleteLattice α] [IsQuantale α] :
                      x * (y z) = x * y x * z
                      theorem IsAddQuantale.add_sup_distrib {α : Type u_1} {x y z : α} [AddSemigroup α] [CompleteLattice α] [IsAddQuantale α] :
                      x + y z = (x + y) (x + z)
                      theorem IsQuantale.sup_mul_distrib {α : Type u_1} {x y z : α} [Semigroup α] [CompleteLattice α] [IsQuantale α] :
                      (x y) * z = x * z y * z
                      theorem IsAddQuantale.sup_add_distrib {α : Type u_1} {x y z : α} [AddSemigroup α] [CompleteLattice α] [IsAddQuantale α] :
                      x y + z = (x + z) (y + z)
                      @[simp]
                      theorem IsQuantale.bot_mul {α : Type u_3} [Semigroup α] [CompleteLattice α] [IsQuantale α] {x : α} :
                      @[simp]
                      theorem IsAddQuantale.bot_add {α : Type u_3} [AddSemigroup α] [CompleteLattice α] [IsAddQuantale α] {x : α} :
                      @[simp]
                      theorem IsQuantale.mul_bot {α : Type u_3} [Semigroup α] [CompleteLattice α] [IsQuantale α] {x : α} :
                      @[simp]
                      theorem IsAddQuantale.add_bot {α : Type u_3} [AddSemigroup α] [CompleteLattice α] [IsAddQuantale α] {x : α} :