Module

Data.HeytingAlgebra

#HeytingAlgebra

class HeytingAlgebra a  where

The HeytingAlgebra type class represents types that are bounded lattices with an implication operator such that the following laws hold:

  • Associativity:
    • a || (b || c) = (a || b) || c
    • a && (b && c) = (a && b) && c
  • Commutativity:
    • a || b = b || a
    • a && b = b && a
  • Absorption:
    • a || (a && b) = a
    • a && (a || b) = a
  • Idempotent:
    • a || a = a
    • a && a = a
  • Identity:
    • a || ff = a
    • a && tt = a
  • Implication:
    • a `implies` a = tt
    • a && (a `implies` b) = a && b
    • b && (a `implies` b) = b
    • a `implies` (b && c) = (a `implies` b) && (a `implies` c)
  • Complemented:
    • not a = a `implies` ff

Members

Instances

#(&&)

Operator alias for Data.HeytingAlgebra.conj (right-associative / precedence 3)

#(||)

Operator alias for Data.HeytingAlgebra.disj (right-associative / precedence 2)

#HeytingAlgebraRecord

class HeytingAlgebraRecord rowlist row subrow | rowlist -> subrow where

A class for records where all fields have HeytingAlgebra instances, used to implement the HeytingAlgebra instance for records.

Members

Instances

Modules