Docs / Logic / Trivalent / Powerset

Three-valued truth as sets of classical values

import Linglib.Logic.Trivalent.Powerset · namespace SignType

A three-valued truth value can be read as the set of classical values it leaves open: 1 is {true}, -1 is {false} and the undefined 0 is {true, false}. These are the values of its two bivalent readings, its designation at K3 and at LP, so the set of a value is the supervaluation reading of Linglib.Logic.Trivalent.Supervaluation at a single occurrence.

Lifting a Boolean operation pointwise to these sets computes every classical result compatible with its inputs, and for negation, conjunction, disjunction and the biconditional the lift is Kleene's strong table; Trivalent.Formula.eval_strongKleene_eq_supervaluation extends this to whole formulas. The Weak Kleene connectives are the lift of no Boolean operation. The knowledge order of Linglib.Logic.Trivalent.Flat is reverse inclusion, so a lifted operation is monotone for it, which is Kleene's regularity (Kleene 1952).

Main definitions

Main results

References

Values as sets of classical values

The classical values a value leaves open: {true}, {false}, or both when undefined.

def toFinsetL57–61
:
SignType → Finset Bool

Used by toFinset_one, toFinset_neg_one, toFinset_zero, toFinset_nonempty, toFinset_injective, toFinset_inj, ofFinset_toFinset, toFinset_ofFinset, toFinset_eq_image_threshold_le, toFinset_supervaluation, toFinset_neg, toFinset_inf, toFinset_sup, toFinset_mul, meetWeak_not_lift, joinWeak_not_lift, toFlat_le_toFlat_iff_toFinset_subset

Used in Logic/Trivalent/Deployment

L63
L65
L67
L69–70
L72–73
L86–87

Over a nonempty family, the supervaluation of P leaves open exactly the classical values P takes on the family.

theorem toFinset_supervaluationL101–116
{α : Type u_1} {s : Finset α} (P : α → Prop) [DecidablePred P] (hs : s.Nonempty) :
(supervaluation s P).toFinset = Finset.image (fun (a : α) => decide (P a)) s

Built from

Connectives as pointwise lifts

The Strong Kleene biconditional, multiplication, is the lift of ==.

@[simp] theorem toFinset_mulL134–137
(a b : SignType) :
(a * b).toFinset = Finset.image₂ (fun (x1 x2 : Bool) => x1 == x2) a.toFinset b.toFinset

Built from

Weak Kleene conjunction is the lift of no Boolean operation, since an undefined operand makes it undefined even where the lift is settled.

theorem meetWeak_not_liftL139–143
:
¬∃ (f : Bool → Bool → Bool), ∀ (a b : SignType), (a.meetWeak b).toFinset = Finset.image₂ f a.toFinset b.toFinset

Built from

The knowledge order