Trivalent propositions #
A trivalent proposition is a function W → SignType, true, false or undefined at each world.
Its worlds split into a positive extension, a negative extension and a gap, and Beaver and
Krahmer's assertion operator applied pointwise collapses the gap into the negative extension.
Strong Kleene conjunction and disjunction of propositions are the pointwise ⊓ and ⊔. A
trivalent proposition is also a conditional event in de Finetti's sense, fixed by where it is
defined and where it is true. This file adds the extensions, bivalence, the conditional-event
decomposition, and the three families of trivalent quantifiers.
Main definitions #
Trivalent.posExt,Trivalent.negExt,Trivalent.gapExt: the three extensions.Trivalent.IsBivalent: the proposition is never0.Trivalent.forallWeak,Trivalent.existsWeak: the Weak Kleene quantifiers, undefined as soon as any instance is.Trivalent.forallStrong,Trivalent.existsStrong: the Strong Kleene quantifiers, the indexed⊓and⊔.Trivalent.forallHaug,Trivalent.existsHaug: Haug's quantifiers, undefined only when every instance is, withexistsHaug_meetWeak_presupposeas Quantifier Projection.
Main results #
Trivalent.indicator_support_ofProp_eq_one,Trivalent.indicator_ofProp_eq_indicator_ofProp_iff: every trivalent proposition is the conditional event of its truth on its definedness, and two conditional events coincide exactly when they have the same condition and agree on it.
Each family is the quantifier of a theory of how a presupposition projects from the scope of a quantifier. Over the domain's subtype, the Weak Kleene quantifiers project universally, as Chemla's experiments support, Haug's existentially, as Mayr and Sauerland argue for a semantic projection that pragmatics then strengthens, and the Strong Kleene existential of Kleene and Fox is defined exactly where some instance is true or every instance is false; Spector and Sudo delimit when each reading surfaces.
Implementation notes #
The Strong Kleene quantifiers are explicit definitions rather than ⨅ and ⨆, because a
CompleteLinearOrder instance on SignType would carry a second LinearOrder parent that
instance search prefers, making every later ⊓ noncomputable.
References #
Extensions #
The positive extension collects the worlds where the proposition is true.
Equations
- Trivalent.posExt p = {w : W | p w = 1}
Instances For
The negative extension collects the worlds where the proposition is false.
Equations
- Trivalent.negExt p = {w : W | p w = -1}
Instances For
The extension gap collects the worlds where the proposition is neither true nor false.
Equations
- Trivalent.gapExt p = {w : W | p w = 0}
Instances For
A proposition is defined where it is true or false.
The positive and negative extensions are disjoint.
A proposition is bivalent if it takes no 0 value.
Equations
- Trivalent.IsBivalent p = ∀ (w : W), p w = 1 ∨ p w = -1
Instances For
Presupposition and assertion #
A proposition defined where A holds and asserting B there is the indicator
{w | A w}.indicator fun w ↦ ofProp (B w): the classical value of B on A and 0 elsewhere.
Its defined region is its Function.support, and an indicator of an indicator is the indicator
of the intersection (Set.indicator_indicator).
A classical proposition is defined everywhere, so by Set.support_indicator an assertion
restricted to s is defined exactly on s.
The defined region of a proposition is the complement of its gap.
Conditional events #
A trivalent proposition is fixed by where it is defined and where it is true, and every such pair
arises: the indicator of B on A is defined on A and true on A ∩ B. So trivalent
propositions are the conditional events B | A of [dF36], conditional assertions of a
two-valued content on a two-valued condition, and two of them coincide exactly when they have the
same condition and agree on it.
Every trivalent proposition is the conditional event of its truth on its definedness.
Two conditional events coincide exactly when they have the same condition and agree on it.
Extensions under assertion #
Asserting a proposition pointwise, fun w ↦ ofProp (p w = 1), keeps its positive extension and
moves its gap into the negative extension.
Asserting a proposition pointwise makes it bivalent.
Quantifiers #
Like the binary connectives, the trivalent quantifiers come in rival families that share one
truth rule and differ only in where undefinedness projects, which forallWith and
existsWith make definitional: a family is fixed by its definedness condition. The Weak
Kleene quantifiers are undefined as soon as any instance is; the Strong Kleene quantifiers
are defined whenever the instances settle the value, the indexed ⊓ and ⊔; and the
quantifiers of [Hau14], adopted by [CB15] and [Coo23], are undefined
only when every instance is, so that a quantified presupposition projects existentially.
Restricted to a pair of instances the families are the binary connectives — Weak Kleene
meetWeak, Strong Kleene ⊓, and, for Haug's quantifier, Belnap's skip-undefined
meetBelnap (forallHaug_pair). Middle Kleene reads its operands left to right, so it has
no order-free quantifier.
forallWith D p is the universal quantifier undefined unless D holds, and otherwise false
exactly when some instance is. All the families share this truth rule
(forallWith_eq_forallWith_of_defined).
Equations
- Trivalent.forallWith D p = if D then if ∃ (i : ι), p i = -1 then -1 else 1 else 0
Instances For
existsWith D p is the existential quantifier of the family whose definedness condition
is D, the dual of forallWith.
Equations
- Trivalent.existsWith D p = -Trivalent.forallWith D fun (i : ι) => -p i
Instances For
Any two families agree wherever both are defined, since they share one truth rule.
The Weak Kleene universal quantifier is undefined when any instance is, and otherwise classical.
Equations
- Trivalent.forallWeak p = Trivalent.forallWith (∀ (i : ι), p i ≠ 0) p
Instances For
The Weak Kleene existential quantifier is the dual of forallWeak.
Equations
- Trivalent.existsWeak p = Trivalent.existsWith (∀ (i : ι), p i ≠ 0) p
Instances For
The Strong Kleene universal quantifier is the indexed ⊓, false when any instance is, true
when all are, and undefined otherwise.
Equations
- Trivalent.forallStrong p = Trivalent.forallWith ((∃ (i : ι), p i = -1) ∨ ∀ (i : ι), p i = 1) p
Instances For
The Strong Kleene existential quantifier is the dual of forallStrong, the indexed
⊔.
Equations
- Trivalent.existsStrong p = Trivalent.existsWith ((∃ (i : ι), p i = 1) ∨ ∀ (i : ι), p i = -1) p
Instances For
Haug's universal quantifier skips undefined instances — undefined only when every instance is, false when some instance is, and true otherwise.
Equations
- Trivalent.forallHaug p = Trivalent.forallWith (∃ (w : W), p w ≠ 0) p
Instances For
The dual of forallHaug.
Equations
- Trivalent.existsHaug p = Trivalent.existsWith (∃ (w : W), p w ≠ 0) p
Instances For
Each family restricted to a pair is its binary connective #
One lemma carries the correspondence: the gap-policy quantifier at a pair of instances is
the gap-policy connective at the matching policy (forallWith_pair), and each family's
pair lemma instantiates it.
Haug's universal quantifier restricted to a pair of instances is the conjunction of [Bel70], which skips undefined operands.
Dually, Haug's existential restricted to a pair is Belnap disjunction.
An existentially quantified presupposition is true or undefined, never false.
Quantifier Projection ([CB15]'s appendix) lets a presupposition under the
existential project as an existentially quantified presupposition, over bivalent φ and
ψ.