trait Heyting[A] extends BoundedDistributiveLattice[A]
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
.
- Self Type
- Heyting[A]
- Source
- Heyting.scala
- Alphabetic
- By Inheritance
- Heyting
- BoundedDistributiveLattice
- DistributiveLattice
- BoundedLattice
- BoundedJoinSemilattice
- BoundedMeetSemilattice
- Lattice
- MeetSemilattice
- JoinSemilattice
- Serializable
- Serializable
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
- abstract def and(a: A, b: A): A
- abstract def complement(a: A): A
-
abstract
def
getClass(): Class[_]
- Definition Classes
- Any
- abstract def imp(a: A, b: A): A
-
abstract
def
one: A
- Definition Classes
- BoundedMeetSemilattice
- abstract def or(a: A, b: A): A
-
abstract
def
zero: A
- Definition Classes
- BoundedJoinSemilattice
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- Any
-
final
def
##(): Int
- Definition Classes
- Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- Any
-
def
asCommutativeRig: CommutativeRig[A]
Return a CommutativeRig using join and meet.
Return a CommutativeRig using join and meet. Note this must obey the commutative rig laws since meet(a, one) = a, and meet and join are associative, commutative and distributive.
- Definition Classes
- BoundedDistributiveLattice
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
dual: BoundedDistributiveLattice[A]
This is the lattice with meet and join swapped
This is the lattice with meet and join swapped
- Definition Classes
- BoundedDistributiveLattice → BoundedLattice → Lattice
-
def
equals(arg0: Any): Boolean
- Definition Classes
- Any
-
def
hashCode(): Int
- Definition Classes
- Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isOne(a: A)(implicit ev: Eq[A]): Boolean
- Definition Classes
- BoundedMeetSemilattice
-
def
isZero(a: A)(implicit ev: Eq[A]): Boolean
- Definition Classes
- BoundedJoinSemilattice
-
def
join(a: A, b: A): A
- Definition Classes
- Heyting → JoinSemilattice
-
def
joinPartialOrder(implicit ev: Eq[A]): PartialOrder[A]
- Definition Classes
- JoinSemilattice
-
def
joinSemilattice: BoundedSemilattice[A]
- Definition Classes
- BoundedJoinSemilattice → JoinSemilattice
-
def
meet(a: A, b: A): A
- Definition Classes
- Heyting → MeetSemilattice
-
def
meetPartialOrder(implicit ev: Eq[A]): PartialOrder[A]
- Definition Classes
- MeetSemilattice
-
def
meetSemilattice: BoundedSemilattice[A]
- Definition Classes
- BoundedMeetSemilattice → MeetSemilattice
- def nand(a: A, b: A): A
- def nor(a: A, b: A): A
- def nxor(a: A, b: A): A
-
def
toString(): String
- Definition Classes
- Any
- def xor(a: A, b: A): A