Documentation

Linglib.Logic.Trivalent.Four

Belnap's four values #

Belnap's four values are the diagonal product Bool ⊙ Bool: a value records whether a proposition has been told true and whether it has been told false. Arieli and Avron develop their logic as a bilattice, and FOUR is the literature's name for it. The consistent values, those without a glut, are Kleene's three: SignType.orderIsoConsistent identifies SignType with them, carrying Strong Kleene negation, conjunction and disjunction to FOUR's negation and truth meet and join, and the knowledge order of SignType.toFlat to FOUR's.

Main definitions #

Main results #

References #

@[reducible, inline]

Belnap's four-valued bilattice FOUR = Bool ⊙ Bool records whether a proposition has been told true and whether it has been told false ([Bel77]).

Equations
Instances For

    The gap ⊥, told neither true nor false.

    Equations
    Instances For

      true.

      Equations
      Instances For

        false.

        Equations
        Instances For

          The glut ⊤, told both true and false.

          Equations
          Instances For
            @[simp]

            The consistent values of FOUR are those other than the glut I.

            @[simp]
            theorem Bilattice.FOUR.isExact_iff (x : FOUR) :
            IsExact x ↔ x = F ∨ x = T

            The exact values of FOUR are the classical values F and T ([Fit94]).

            Kleene's three values inside FOUR, sending 0, 1 and -1 to U, T and F.

            Equations
            Instances For
              theorem SignType.toFour_injective :
              Function.Injective toFour
              @[simp]
              theorem SignType.toFour_le_toFour {a b : SignType} :
              a.toFour ≤ b.toFour ↔ a ≤ b

              Kleene's values are exactly the consistent values of FOUR ([Fit94] §3).

              SignType is the consistent part of FOUR ([Fit94] §3).

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem SignType.isExact_toFour (a : SignType) :

                The exact values among Kleene's are the defined ones ([Fit94] §3).

                theorem SignType.toFour_kLE_toFour {a b : SignType} :

                The knowledge order of SignType is FOUR's on Kleene's values.

                @[simp]
                theorem SignType.toFour_neg (a : SignType) :
                (-a).toFour = a.toFourᶜ

                Strong Kleene negation is FOUR's negation on Kleene's values.

                @[simp]
                theorem SignType.toFour_inf (a b : SignType) :
                (min a b).toFour = a.toFour ⊓ b.toFour

                Strong Kleene conjunction is FOUR's truth meet on Kleene's values ([Fit94] §3).

                @[simp]
                theorem SignType.toFour_sup (a b : SignType) :
                (max a b).toFour = a.toFour ⊔ b.toFour

                Strong Kleene disjunction is FOUR's truth join on Kleene's values ([Fit94] §3).