Partial Propositions (PrProp) #
@cite{heim-1983} @cite{schlenker-2009} @cite{von-fintel-1999} @cite{geurts-2005} @cite{belnap-1970}
PrProp W is linglib's canonical representation of partial propositions —
propositions that may be undefined at some evaluation points. The type
parameter W is the evaluation domain: worlds, possibilities, events,
world-assignment pairs, or any other type. The two fields are:
presup(= definedness): whether the proposition says anything at this pointassertion(= content): what it says when defined
Domain generality #
PrProp W is parametric over W. Common instantiations:
PrProp World— classical presupposition over possible worldsPrProp (Possibility W E)— dynamic presupposition over world-assignment pairsPrProp (W × Event)— event presuppositions (preconditions on events)PrProp (W × Time)— temporal presuppositions
All operations (filtering connectives, eval, accommodation) work
uniformly across domains because they are pointwise over W.
Satisfaction relations #
Two satisfaction relations connect PrProp to CCP's updateFromSat:
PrProp.defined w p— presupposition holds at w (definedness test)PrProp.holds w p— both presupposition and assertion hold (full satisfaction)
These enable structural integration with the dynamic semantics layer:
updateFromSat PrProp.holds p produces a CCP W that is eliminative,
distributive, and supports the Galois connection — all by construction.
Linguistic interpretations #
- Presupposition:
presup= presupposition holds; failure = undefined (@cite{heim-1983}, @cite{schlenker-2009}) - Conditional assertion:
presup= assertive; failure = nonassertive (@cite{belnap-1970}: "(A/B) is assertive_w just in case A is true_w") - Homogeneity:
presup= all atoms agree; failure = truth-value gap (@cite{kriz-2016})
Connective systems #
The choice of connective system (how gaps behave under ∧/∨) is orthogonal
to PrProp itself — see Truth3.GapPolicy:
- Classical (
PrProp.and): both must be defined - Filtering (
PrProp.andFilter): one can satisfy the other's presupposition - Belnap (
PrProp.andBelnap): gaps are skipped, defined operands contribute
Structural joints #
Everything in the presupposition system derives from .presup and .assertion:
- Heritage function for
p → q=(impFilter p q).presup(by construction) - CCP update =
updateFromSat PrProp.holds p(from CCP infrastructure) - Presupposition test =
updateFromSat PrProp.defined p - Accommodation = intersect context with
{w | PrProp.defined w p} - Local context satisfaction =
supportOf PrProp.defined s p
A presupposed value: a value that is only defined when its presupposition holds.
PrValue W α generalizes PrProp W (= PrValue W Bool): the
presupposition is always W → Bool, but the at-issue content can be
any type — a truth value (Bool), a degree (ℚ), a measure, etc.
Linguistic motivation: many presupposition triggers return non-boolean
values. The revised per entry (@cite{bale-schwarz-2022}, eq. 43)
returns a presupposed pure number (ℚ). Definite descriptions return
presupposed entities. PrValue handles all of these uniformly.
- presup : W → Bool
The presupposition (must hold for definedness).
- value : W → α
The at-issue content (value).
Instances For
Create a presuppositionless value (always defined).
Equations
- Core.Presupposition.PrValue.pure a = { presup := fun (x : W) => true, value := a }
Instances For
Evaluate a presuppositional proposition to three-valued truth.
Equations
Instances For
Definedness relation: presupposition holds at the evaluation point.
Argument order (w : W) (p : PrProp W) matches updateFromSat:
updateFromSat PrProp.defined p gives the presupposition test CCP.
Equations
- Core.Presupposition.PrProp.defined w p = (p.presup w = true)
Instances For
Full satisfaction relation: both presupposition and assertion hold.
updateFromSat PrProp.holds p gives the full CCP (presupposition
test + assertion filter). This CCP is automatically eliminative and
distributive via CCP's updateFromSat infrastructure.
Instances For
Filtering conjunction: antecedent can satisfy consequent's presupposition.
Equations
Instances For
Filtering implication: antecedent can satisfy consequent's presupposition.
Equations
Instances For
Filtering disjunction: disjuncts can satisfy each other's presuppositions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Exclusive disjunction: both presuppositions must hold (no filtering).
Under Strong Kleene, Truth3.xor propagates undefinedness
unconditionally (xor_indet_iff), so exclusive disjunction never
filters presupposition failure from either disjunct.
@cite{wang-davidson-2026}
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Create a presuppositionless proposition from a BProp.
Equations
- Core.Presupposition.PrProp.ofBProp p = { presup := fun (x : W) => true, assertion := p }
Instances For
Create a tautological presupposition.
Equations
Instances For
Create a contradictory presupposition.
Equations
Instances For
Create a presupposition failure (never defined).
Equations
Instances For
Strawson entailment: p entails q at worlds where p is defined and true.
Equations
Instances For
Strawson equivalence: mutual Strawson entailment.
Equations
- p.strawsonEquiv q = (p.strawsonEntails q ∧ q.strawsonEntails p)
Instances For
Flexible accommodation disjunction.
Each disjunct is evaluated only against worlds where its own presupposition holds. The overall presupposition is the disjunction of the individual presuppositions. This handles conflicting presuppositions (p ∧ q = ⊥): standard disjunction and filtering disjunction both fail for this case, but flexible accommodation correctly predicts presupposition p ∨ q and allows the disjunction to be false.
Formally, this is the static counterpart of Yagi's dynamic update: s[φ ∨ ψ] = s[χ][φ] ∪ s[ω][ψ], where s[χ] ∪ s[ω] = s When presuppositions conflict, χ = ¬q and ω = ¬p, giving pointwise: (p(w) ∧ φ(w)) ∨ (q(w) ∧ ψ(w))
Equations
Instances For
Presupposition projection: get the presupposition as a classical proposition.
Equations
- p.projectPresup = p.presup
Instances For
Assertion extraction: get the assertion as a classical proposition.
Equations
Instances For
Belnap's conditional assertion (A/B): assert B on condition A.
Assertive_w iff A is true at w; what is asserted = B. @cite{belnap-1970}, (3): "(A/B) is assertive_w just in case A is true_w. (A/B)_w = B_w."
Equations
- Core.Presupposition.PrProp.condAssert A B = { presup := A, assertion := B }
Instances For
Belnap conjunction: assertive iff at least one conjunct is assertive. What it asserts = conjunction of assertive conjuncts' content.
@cite{belnap-1970}, (8). Contrast with classical PrProp.and (both
must be defined) and filtering PrProp.andFilter (left-to-right).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Belnap disjunction: assertive iff at least one disjunct is assertive. What it asserts = disjunction of assertive disjuncts' content.
@cite{belnap-1970}, (9).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Belnap conjunction evaluates to Truth3.meetBelnap pointwise.
Belnap disjunction evaluates to Truth3.joinBelnap pointwise.
Convert a three-valued proposition to a PrProp.
Inverse of PrProp.eval: defined ↔ value ≠ indet,
assertion ↔ value = true.
Equations
- Core.Presupposition.PrProp.ofProp3 p = { presup := fun (w : W) => (p w).isDefined, assertion := fun (w : W) => (p w).toBoolOrFalse }
Instances For
Prop3 → PrProp → Prop3 round-trip is the identity.