Module
Data.BooleanAlgebra
- Package
- purescript-prelude
- Repository
- purescript/purescript-prelude
#BooleanAlgebra Source
class (HeytingAlgebra a) <= BooleanAlgebra a The BooleanAlgebra type class represents types that behave like boolean
values.
Instances should satisfy the following laws in addition to the
HeytingAlgebra law:
- Excluded middle:
a || not a = tt
Instances
BooleanAlgebra BooleanBooleanAlgebra Unit(BooleanAlgebra b) => BooleanAlgebra (a -> b)(RowToList row list, BooleanAlgebraRecord list row row) => BooleanAlgebra (Record row)
#BooleanAlgebraRecord Source
class (HeytingAlgebraRecord rowlist row subrow) <= BooleanAlgebraRecord rowlist row subrow | rowlist -> subrowA class for records where all fields have BooleanAlgebra instances, used
to implement the BooleanAlgebra instance for records.
Instances
BooleanAlgebraRecord Nil row ()(IsSymbol key, Cons key focus subrowTail subrow, BooleanAlgebraRecord rowlistTail row subrowTail, BooleanAlgebra focus) => BooleanAlgebraRecord (Cons key focus rowlistTail) row subrow
Re-exports from Data.HeytingAlgebra
#HeytingAlgebra Source
class HeytingAlgebra a whereThe 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) || ca && (b && c) = (a && b) && c
- Commutativity:
a || b = b || aa && b = b && a
- Absorption:
a || (a && b) = aa && (a || b) = a
- Idempotent:
a || a = aa && a = a
- Identity:
a || ff = aa && tt = a
- Implication:
a `implies` a = tta && (a `implies` b) = a && bb && (a `implies` b) = ba `implies` (b && c) = (a `implies` b) && (a `implies` c)
- Complemented:
not a = a `implies` ff
Members
Instances
HeytingAlgebra BooleanHeytingAlgebra Unit(HeytingAlgebra b) => HeytingAlgebra (a -> b)(RowToList row list, HeytingAlgebraRecord list row row) => HeytingAlgebra (Record row)
#HeytingAlgebraRecord Source
class HeytingAlgebraRecord rowlist row subrow | rowlist -> subrowA class for records where all fields have HeytingAlgebra instances, used
to implement the HeytingAlgebra instance for records.
Instances
HeytingAlgebraRecord Nil row ()(IsSymbol key, Cons key focus subrowTail subrow, HeytingAlgebraRecord rowlistTail row subrowTail, HeytingAlgebra focus) => HeytingAlgebraRecord (Cons key focus rowlistTail) row subrow
- Modules
- Control.
Applicative - Control.
Apply - Control.
Bind - Control.
Category - Control.
Monad - Control.
Semigroupoid - Data.
Boolean - Data.
BooleanAlgebra - Data.
Bounded - Data.
CommutativeRing - Data.
DivisionRing - Data.
Eq - Data.
EuclideanRing - Data.
Field - Data.
Function - Data.
Functor - Data.
HeytingAlgebra - Data.
Monoid - Data.
Monoid. Additive - Data.
Monoid. Conj - Data.
Monoid. Disj - Data.
Monoid. Dual - Data.
Monoid. Endo - Data.
Monoid. Multiplicative - Data.
NaturalTransformation - Data.
Ord - Data.
Ord. Unsafe - Data.
Ordering - Data.
Ring - Data.
Semigroup - Data.
Semigroup. First - Data.
Semigroup. Last - Data.
Semiring - Data.
Show - Data.
Symbol - Data.
Unit - Data.
Void - Prelude
- Record.
Unsafe - Type.
Data. Row - Type.
Data. RowList