algebra.lattice

package algebra.lattice

Members list

Type members

Classlikes

trait Bool[A] extends Heyting[A], GenBool[A]

Boolean algebras are Heyting algebras with the additional constraint that the law of the excluded middle is true (equivalently, double-negation is true).

Boolean algebras are Heyting algebras with the additional constraint that the law of the excluded middle is true (equivalently, double-negation is true).

This means that in addition to the laws Heyting algebras obey, boolean algebras also obey the following:

- (a ∨ ¬a) = 1 - ¬¬a = a

Boolean algebras generalize classical logic: one is equivalent to "true" and zero is equivalent to "false". Boolean algebras provide additional logical operators such as xor, nand, nor, and nxor which are commonly used.

Every boolean algebras has a dual algebra, which involves reversing true/false as well as and/or.

Attributes

Companion
object
Source
Bool.scala
Supertypes
trait GenBool[A]
trait Heyting[A]
trait BoundedLattice[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Show all
Known subtypes
class BoolFromBoolRing[A]
class DualBool[A]
Self type
Bool[A]

Attributes

Companion
trait
Source
Bool.scala
Supertypes
Self type
Bool.type

Every Boolean ring gives rise to a Boolean algebra: - 0 and 1 are preserved; - ring multiplication (times) corresponds to and; - ring addition (plus) corresponds to xor; - a or b is then defined as a xor b xor (a and b); - complement (¬a) is defined as a xor 1.

Every Boolean ring gives rise to a Boolean algebra: - 0 and 1 are preserved; - ring multiplication (times) corresponds to and; - ring addition (plus) corresponds to xor; - a or b is then defined as a xor b xor (a and b); - complement (¬a) is defined as a xor 1.

Attributes

Source
Bool.scala
Supertypes
trait Bool[A]
trait Heyting[A]
trait BoundedLattice[A]
trait GenBool[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Object
trait Matchable
class Any
Show all

Attributes

Source
Bool.scala
Supertypes
trait BoolRing[A]
trait CommutativeRing[A]
trait CommutativeRig[A]
trait Ring[A]
trait Rig[A]
trait BoolRng[A]
trait CommutativeRng[A]
trait Rng[A]
trait AdditiveGroup[A]
trait Semiring[A]
trait AdditiveMonoid[A]
trait Serializable
class Object
trait Matchable
class Any
Show all
class BoolRngFromGenBool[A](orig: GenBool[A]) extends BoolRng[A]

Attributes

Source
GenBool.scala
Supertypes
trait BoolRng[A]
trait CommutativeRng[A]
trait Rng[A]
trait AdditiveGroup[A]
trait Semiring[A]
trait AdditiveMonoid[A]
trait Serializable
class Object
trait Matchable
class Any
Show all
Known subtypes
class BoolRingFromBool[A]

A bounded distributive lattice is a lattice that both bounded and distributive

A bounded distributive lattice is a lattice that both bounded and distributive

Attributes

Companion
object
Source
BoundedDistributiveLattice.scala
Supertypes
trait BoundedLattice[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Show all
Known subtypes
trait Heyting[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
trait Logic[A]
trait DeMorgan[A]
Show all
Self type

Attributes

Companion
object
Source
BoundedJoinSemilattice.scala
Supertypes
trait JoinSemilattice[A]
trait Serializable
class Any
Known subtypes
trait BoundedLattice[A]
trait Heyting[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
trait Logic[A]
trait DeMorgan[A]
trait GenBool[A]
class SetLattice[A]
Show all

Attributes

Source
BoundedJoinSemilattice.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object DeMorgan
trait GenBoolFunctions[G]
object Bool
object GenBool
trait HeytingFunctions[H]
object Heyting
Show all

A bounded lattice is a lattice that additionally has one element that is the bottom (zero, also written as ⊥), and one element that is the top (one, also written as ⊤).

A bounded lattice is a lattice that additionally has one element that is the bottom (zero, also written as ⊥), and one element that is the top (one, also written as ⊤).

This means that for any a in A:

join(zero, a) = a = meet(one, a)

Or written using traditional notation:

(0 ∨ a) = a = (1 ∧ a)

Attributes

Companion
object
Source
BoundedLattice.scala
Supertypes
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Show all
Known subtypes
trait Heyting[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
trait Logic[A]
trait DeMorgan[A]
Show all
Self type

Attributes

Companion
object
Source
BoundedMeetSemilattice.scala
Supertypes
trait MeetSemilattice[A]
trait Serializable
class Any
Known subtypes
trait BoundedLattice[A]
trait Heyting[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
trait Logic[A]
trait DeMorgan[A]
Show all

Attributes

Source
BoundedMeetSemilattice.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object DeMorgan
trait HeytingFunctions[H]
object Bool
object Heyting
Show all
trait DeMorgan[A] extends Logic[A]

De Morgan algebras are bounded lattices that are also equipped with a De Morgan involution.

De Morgan algebras are bounded lattices that are also equipped with a De Morgan involution.

De Morgan involution obeys the following laws:

- ¬¬a = a - ¬(x∧y) = ¬x∨¬y

However, in De Morgan algebras this involution does not necessarily provide the law of the excluded middle. This means that there is no guarantee that (a ∨ ¬a) = 1. De Morgan algebra do not not necessarily provide the law of non contradiction either. This means that there is no guarantee that (a ∧ ¬a) = 0.

De Morgan algebras are useful to model fuzzy logic. For a model of classical logic, see the boolean algebra type class implemented as Bool.

Attributes

Companion
object
Source
DeMorgan.scala
Supertypes
trait Logic[A]
trait BoundedLattice[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Show all
Self type

Attributes

Companion
trait
Source
DeMorgan.scala
Supertypes
Self type
DeMorgan.type

Attributes

Source
DeMorgan.scala
Supertypes
trait LogicFunctions[H]
class Object
trait Matchable
class Any
Show all
Known subtypes
object DeMorgan
trait DistributiveLattice[A] extends Lattice[A]

A distributive lattice a lattice where join and meet distribute:

A distributive lattice a lattice where join and meet distribute:

  • a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c)

  • a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c)

Attributes

Companion
object
Source
DistributiveLattice.scala
Supertypes
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Known subtypes
trait Heyting[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
trait Logic[A]
trait DeMorgan[A]
trait GenBool[A]
class SetLattice[A]
class MinMaxLattice[A]
Show all
class DualBool[A](orig: Bool[A]) extends Bool[A]

Attributes

Source
Bool.scala
Supertypes
trait Bool[A]
trait GenBool[A]
trait Heyting[A]
trait BoundedLattice[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Object
trait Matchable
class Any
Show all

Generalized Boolean algebra, that is, a Boolean algebra without the top element.

Generalized Boolean algebra, that is, a Boolean algebra without the top element. Generalized Boolean algebras do not (in general) have (absolute) complements, but they have relative complements (see GenBool.without).

Attributes

Companion
object
Source
GenBool.scala
Supertypes
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Show all
Known subtypes
class SetLattice[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
Show all
Self type
GenBool[A]
object GenBool extends GenBoolFunctions[GenBool]

Attributes

Companion
trait
Source
GenBool.scala
Supertypes
Self type
GenBool.type
class GenBoolFromBoolRng[A](orig: BoolRng[A]) extends GenBool[A]

Every Boolean rng gives rise to a Boolean algebra without top: - 0 is preserved; - ring multiplication (times) corresponds to and; - ring addition (plus) corresponds to xor; - a or b is then defined as a xor b xor (a and b); - relative complement a\b is defined as a xor (a and b).

Every Boolean rng gives rise to a Boolean algebra without top: - 0 is preserved; - ring multiplication (times) corresponds to and; - ring addition (plus) corresponds to xor; - a or b is then defined as a xor b xor (a and b); - relative complement a\b is defined as a xor (a and b).

BoolRng.asBool.asBoolRing gives back the original BoolRng.

Attributes

See also
Source
GenBool.scala
Supertypes
trait GenBool[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Object
trait Matchable
class Any
Show all
Known subtypes
class BoolFromBoolRing[A]

Attributes

Source
GenBool.scala
Supertypes
class Object
trait Matchable
class Any
Show all
Known subtypes
object Bool
object GenBool

Heyting algebras are bounded lattices that are also equipped with an additional binary operation imp (for implication, also written as →).

Heyting algebras are bounded lattices that are also equipped with an additional binary operation imp (for implication, also written as →).

Implication obeys the following laws:

- a → a = 1 - a ∧ (a → b) = a ∧ b - b ∧ (a → b) = b - a → (b ∧ c) = (a → b) ∧ (a → c)

In heyting algebras, and is equivalent to meet and or is equivalent to join; both methods are available.

Heyting algebra also define complement operation (sometimes written as ¬a). The complement of a is equivalent to (a → 0), and the following laws hold:

- a ∧ ¬a = 0

However, in Heyting algebras this operation is only a pseudo-complement, since Heyting algebras do not necessarily provide the law of the excluded middle. This means that there is no guarantee that (a ∨ ¬a) = 1.

Heyting algebras model intuitionistic logic. For a model of classical logic, see the boolean algebra type class implemented as Bool.

Attributes

Companion
object
Source
Heyting.scala
Supertypes
trait BoundedLattice[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Show all
Known subtypes
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
Self type
Heyting[A]

Attributes

Source
Heyting.scala
Supertypes
class Object
trait Matchable
class Any
Show all
Known subtypes
object Bool
object Heyting

Attributes

Source
Heyting.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object Heyting
trait JoinSemilattice[A] extends Serializable

A join-semilattice (or upper semilattice) is a semilattice whose operation is called "join", and which can be thought of as a least upper bound.

A join-semilattice (or upper semilattice) is a semilattice whose operation is called "join", and which can be thought of as a least upper bound.

Attributes

Companion
object
Source
JoinSemilattice.scala
Supertypes
trait Serializable
class Any
Known subtypes
trait BoundedLattice[A]
trait Heyting[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
trait Logic[A]
trait DeMorgan[A]
trait GenBool[A]
class SetLattice[A]
trait Lattice[A]
class MinMaxLattice[A]
Show all

Attributes

Companion
trait
Source
JoinSemilattice.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Source
JoinSemilattice.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
trait Lattice[A] extends JoinSemilattice[A], MeetSemilattice[A]

A lattice is a set A together with two operations (meet and join).

A lattice is a set A together with two operations (meet and join). Both operations individually constitute semilattices (join- and meet-semilattices respectively): each operation is commutative, associative, and idempotent.

Join can be thought of as finding a least upper bound (supremum), and meet can be thought of as finding a greatest lower bound (infimum).

The join and meet operations are also linked by absorption laws:

meet(a, join(a, b)) = join(a, meet(a, b)) = a

Attributes

Companion
object
Source
Lattice.scala
Supertypes
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Known subtypes
trait BoundedLattice[A]
trait Heyting[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
trait Logic[A]
trait DeMorgan[A]
trait GenBool[A]
class SetLattice[A]
class MinMaxLattice[A]
Show all
Self type
Lattice[A]

Attributes

Companion
trait
Source
Lattice.scala
Supertypes
class Object
trait Matchable
class Any
Self type
Lattice.type
trait Logic[A] extends BoundedDistributiveLattice[A]

Logic models a logic generally.

Logic models a logic generally. It is a bounded distributive lattice with an extra negation operator.

The negation operator obeys the weak De Morgan laws: - ¬(x∨y) = ¬x∧¬y - ¬(x∧y) = ¬¬(¬x∨¬y)

For intuitionistic logic see Heyting For fuzzy logic see DeMorgan

Attributes

Companion
object
Source
Logic.scala
Supertypes
trait BoundedLattice[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Any
Show all
Known subtypes
trait DeMorgan[A]
Self type
Logic[A]
object Logic extends LogicFunctions[Logic]

Attributes

Companion
trait
Source
Logic.scala
Supertypes
class Object
trait Matchable
class Any
Self type
Logic.type
trait LogicFunctions[H <: (Logic)]

Attributes

Source
Logic.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object DeMorgan
object Logic
trait MeetSemilattice[A] extends Serializable

A meet-semilattice (or lower semilattice) is a semilattice whose operation is called "meet", and which can be thought of as a greatest lower bound.

A meet-semilattice (or lower semilattice) is a semilattice whose operation is called "meet", and which can be thought of as a greatest lower bound.

Attributes

Companion
object
Source
MeetSemilattice.scala
Supertypes
trait Serializable
class Any
Known subtypes
trait BoundedLattice[A]
trait Heyting[A]
trait Bool[A]
class BoolFromBoolRing[A]
class DualBool[A]
trait Logic[A]
trait DeMorgan[A]
trait Lattice[A]
trait GenBool[A]
class SetLattice[A]
class MinMaxLattice[A]
Show all

Attributes

Companion
trait
Source
MeetSemilattice.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Source
MeetSemilattice.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes

Attributes

Source
BoundedDistributiveLattice.scala
Supertypes
trait BoundedLattice[A]
class MinMaxLattice[A]
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Object
trait Matchable
class Any
Show all
class MinMaxLattice[A](implicit order: Order[A]) extends DistributiveLattice[A]

Attributes

Source
DistributiveLattice.scala
Supertypes
trait Lattice[A]
trait MeetSemilattice[A]
trait JoinSemilattice[A]
trait Serializable
class Object
trait Matchable
class Any
Show all
Known subtypes