Documentation

Linglib.Semantics.Presupposition.Basic

Canonical operations on partial propositions #

The canonical connectives, entailment relations, and combinators on PartialProp. References: [Hei83], [Sch09a], [vF99a], [Kar73], [Pet79], [Boc37].

Main declarations #

The rival trivalent connective families (Strong Kleene, Belnap / flexible accommodation, symmetric K&P, positive-antecedent) live in Semantics.Presupposition.Trivalent; quantified projection lives in Semantics.Presupposition.Quantified.

Implementation notes #

The choice of connective system (how gaps behave under ∧/∨) is orthogonal to the representation type — see Trivalent.GapPolicy. Connectives are paired with eval_* bridge theorems mapping each to the corresponding Trivalent operator on the evaluation.

Classical connectives #

Classical (internal / choice) negation: a hole. Lets the presupposition through unchanged.

Equations
Instances For

    Bochvar's truth operator t: a plug-as-affirmation ([Boc37]). Always defined; maps presupposition failure to False. [Kar73] §10 fn 18: t(A) has truth-table T → T, F → F, # → F. Composing classical negation with t yields external negation: negExt p = neg (truthOp p).

    Equations
    Instances For

      Bochvar external (exclusion) negation: a plug. Always defined; true when p is false or undefined, false only when p is true. Equals neg (truthOp p) per [Kar73] §10 fn 18: ⌜¬A⌝ ≡ ⌜~t(A)⌝.

      Equations
      Instances For

        Classical conjunction: both presuppositions must hold. This is also Weak Kleene conjunction ([Kle52]: indet is absorbing).

        Equations
        Instances For

          Classical disjunction: both presuppositions must hold. This is also Weak Kleene disjunction ([Kle52]: indet is absorbing) — see eval_or.

          Equations
          Instances For

            Classical implication: both presuppositions must hold.

            Equations
            Instances For

              Exclusive disjunction: both presuppositions must hold (no filtering).

              Under Strong Kleene, Trivalent.xor propagates undefinedness unconditionally (xor_indet_iff), so exclusive disjunction never filters presupposition failure from either disjunct. [WD26]

              Equations
              Instances For

                Filtering connectives (Karttunen) #

                Filtering conjunction ([Kar73], [Pet79]): the first conjunct can satisfy the second's presupposition.

                Equations
                Instances For

                  Filtering implication ([Kar73], [Pet79]): the antecedent can satisfy the consequent's presupposition.

                  Equations
                  Instances For

                    Filtering disjunction (asymmetric, [Kar73]): the negation of the first disjunct can satisfy the second's presupposition — Either there is no bathroom or the bathroom is upstairs is defined because the second disjunct's bathroom presupposition is required only at worlds where the first disjunct is false.

                    Generalizes disjFilterLeft to a presuppositional first disjunct (orFilter_ofProp). The symmetric K&P variant is PartialProp.orKPSymmetric; the positive-antecedent variant is PartialProp.orPositive (Semantics.Presupposition.Trivalent).

                    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

                            Entailment relations #

                            Strawson entailment ([vF99a]): p entails q at every world where both presuppositions hold. The conclusion q's presupposition is a premise added to the entailment, not something the entailment delivers. The same notion on bilateral-update denotations is ElliottSudo2025.strawsonEntails.

                            Equations
                            Instances For

                              Strawson entailment is not transitive — an undefined middle term discharges both premises vacuously, the well-known failure of [vF99a]'s notion — so strawsonEntails supports no Preorder instance.

                              Strong (Strawson-projecting) entailment: at every world where p is defined and true, q is both defined and true. Stronger than strawsonEntails: this variant also requires that q's presupposition projects from p's satisfaction (so it embeds a presupposition-projection burden the canonical von Fintel form exempts).

                              Equations
                              Instances For

                                Strawson equivalence: mutual Strawson entailment (AntisymmRel of strawsonEntails).

                                Equations
                                Instances For

                                  Negation theorems #

                                  @[simp]

                                  Negation preserves presupposition.

                                  Double negation restores assertion (classical).

                                  @[simp]

                                  Double negation identity.

                                  @[simp]

                                  The truth operator is always defined (it's a plug).

                                  @[simp]

                                  External negation is always defined (it's a plug).

                                  Internal and external negation agree on assertion when the presupposition holds. They diverge only at presupposition failure: neg p is undefined, negExt p is true. [Kar73] §10 fn 18.

                                  External negation has the dual assertion to the truth operator at every world: negExt = ¬truthOp extensionally, by definition (negExt = neg ∘ truthOp and neg is ¬ on assertion).

                                  Karttunen §10 fn 18 truth table for external negation, presup-failure case: when p's presupposition fails, negExt p is true (the plug behavior).

                                  Filtering theorems #

                                  theorem Semantics.Presupposition.PartialProp.impFilter_eliminates_presup {W : Type u_1} (p q : PartialProp W) (h : ∀ (w : W), p.assertion wq.presup w) :

                                  Filtering implication eliminates presupposition when antecedent entails it.

                                  When A(p) = P(q), filtering implication has trivial presupposition.

                                  The filtering presupposition of impFilter and andFilter are identical. This is the formal content of [Kar73] §8: the filtering rules for if A then B and A and B coincide because both reduce to p.presup ∧ (p.assertion → q.presup).

                                  Evaluation theorems #

                                  theorem Semantics.Presupposition.PartialProp.eval_neg {W : Type u_1} (p : PartialProp W) (w : W) :
                                  p.neg.eval w = (p.eval w).neg

                                  Negation evaluation.

                                  theorem Semantics.Presupposition.PartialProp.eval_and {W : Type u_1} (p q : PartialProp W) (w : W) (hp : p.presup w) (hq : q.presup w) :
                                  (p.and q).eval w = min (p.eval w) (q.eval w)

                                  Classical conjunction evaluation (both defined).

                                  theorem Semantics.Presupposition.PartialProp.eval_or {W : Type u_1} (p q : PartialProp W) (w : W) :
                                  (p.or q).eval w = (p.eval w).joinWeak (q.eval w)

                                  or evaluates to Trivalent.joinWeak pointwise (classical disjunction is Weak Kleene).

                                  Filtering implication when antecedent false: result is true.

                                  theorem Semantics.Presupposition.PartialProp.eval_impFilter_antecedent_true {W : Type u_1} (p q : PartialProp W) (w : W) (hp : p.presup w) (ha : p.assertion w) (hq : q.presup w) :

                                  Filtering implication when antecedent true: depends on consequent.

                                  theorem Semantics.Presupposition.PartialProp.eval_andFilter {W : Type u_1} (p q : PartialProp W) (w : W) :
                                  (p.andFilter q).eval w = (p.eval w).meetMiddle (q.eval w)

                                  Karttunen filtering conjunction is Peters' middle Kleene ([Pet79]): andFilter evaluates to the asymmetric Trivalent.meetMiddle on both dimensions, unconditionally.

                                  theorem Semantics.Presupposition.PartialProp.eval_orFilter {W : Type u_1} (p q : PartialProp W) (w : W) :
                                  (p.orFilter q).eval w = (p.eval w).joinMiddle (q.eval w)

                                  Karttunen filtering disjunction is Peters' middle Kleene ([Pet79]): orFilter evaluates to the asymmetric Trivalent.joinMiddle on both dimensions, unconditionally.

                                  theorem Semantics.Presupposition.PartialProp.eval_xor {W : Type u_1} (p q : PartialProp W) (w : W) (hp : p.presup w) (hq : q.presup w) :
                                  (p.xor q).eval w = (p.eval w).xor (q.eval w)

                                  Exclusive disjunction evaluation matches Trivalent.xor when both defined.

                                  theorem Semantics.Presupposition.PartialProp.eval_xor_no_filter {W : Type u_1} (p q : PartialProp W) (w : W) (hq : ¬q.presup w) :

                                  Exclusive disjunction never filters: when either presupposition fails, the result is undefined. [WD26]

                                  Embedding combinators ([Hei92], [Kar73], [DPBS24]) #

                                  def Semantics.Presupposition.PartialProp.disjFilterLeft {W : Type u_1} (firstDisjunct : WProp) (second : PartialProp W) :

                                  Asymmetric filtering disjunction: plain proposition ∨ PartialProp.

                                  For "A ∨ B_ψ" where only B carries a presupposition ψ, the overall presupposition is ¬A → ψ (Karttunen's generalization for disjunction). The assertion is A ∨ B.

                                  This is the standard projection rule for presuppositions in the second disjunct of a disjunction. [Kar73], [Hei83]

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For

                                    orFilter with a presuppositionless first disjunct is disjFilterLeft.

                                    def Semantics.Presupposition.PartialProp.negFactive {W : Type u_1} (complement : PartialProp W) (believes : (WProp)WProp) :

                                    Embedding under a negative factive (e.g., "is unaware that").

                                    "x is unaware that p" presupposes p and asserts ¬Bel_x(p).

                                    The choice of complement.holds (presupposition AND assertion) for the factive's presupposition is the [DPBS24] treatment, where projection-through-factive requires both the trigger's presupposition and the at-issue complement to be carried. The [Hei92] standard for atomic complements is complement.assertion alone; the two coincide when complement itself carries no presupposition but diverge when the complement contains its own embedded presupposition trigger (the case Del Pinal-Bassi-Sauerland use to handle presupposed free choice).

                                    Equations
                                    Instances For
                                      theorem Semantics.Presupposition.PartialProp.disjFilterLeft_recovers {W : Type u_1} (firstDisjunct : WProp) (sp : PartialProp W) (w : W) (hFirst : ¬firstDisjunct w) (hFiltered : holds w (disjFilterLeft firstDisjunct sp)) :
                                      holds w sp

                                      When the first disjunct is false, disjFilterLeft recovers full satisfaction of the second disjunct.

                                      theorem Semantics.Presupposition.PartialProp.disjFilterLeft_eliminates_presup_when_neg_entails {W : Type u_1} (A : WProp) (q : PartialProp W) (h : ∀ (w : W), ¬A wq.presup w) :
                                      (disjFilterLeft A q).presup = fun (x : W) => True

                                      When ¬A entails q's presupposition pointwise, disjFilterLeft A q is presuppositionless (the filtering condition is satisfied at every world). The substrate-side fact behind [Kar73]'s asymmetric disjunction filtering rule (24b), p. 181: "A or B" carries no residual presupposition from B when ¬A entails it.

                                      theorem Semantics.Presupposition.PartialProp.negFactive_presup_eq {W : Type u_1} (complement : PartialProp W) (believes : (WProp)WProp) :
                                      (complement.negFactive believes).presup = fun (w : W) => holds w complement

                                      Presupposition of negFactive is full satisfaction of the complement.

                                      Definite-description combinator #

                                      def Semantics.Presupposition.PartialProp.presupOfReferent {W : Type u_1} {E : Type u_2} (referent : WOption E) (scope : EWProp) :

                                      The canonical definite-description combinator. Given:

                                      • referent : W → Option E — a partial selector returning the referent at each world (or none when no unique referent is determined),
                                      • scope : E → W → Prop — what is asserted of the chosen referent,

                                      build the PartialProp that presupposes referent definedness and asserts the scope of the referent. This is the single source of truth for all definite denotations in the library: uniqueness-based (russellIotaList domain R), familiarity-based (russellIotaList dc.salient R), anaphoric (russellIotaList domain (R ∧ Q)), and Donnellan's attributive (attributiveContent domain R) all instantiate the selector slot.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        @[simp]
                                        theorem Semantics.Presupposition.PartialProp.presupOfReferent_presup {W : Type u_1} {E : Type u_2} (referent : WOption E) (scope : EWProp) (w : W) :
                                        (presupOfReferent referent scope).presup w = ((referent w).isSome = true)

                                        presupOfReferent is defined iff a referent is selected at w.

                                        theorem Semantics.Presupposition.PartialProp.presupOfReferent_assertion_some {W : Type u_1} {E : Type u_2} (referent : WOption E) (scope : EWProp) (w : W) (e : E) (h : referent w = some e) :
                                        (presupOfReferent referent scope).assertion w = scope e w

                                        When a referent is selected, the assertion is the scope applied to it.

                                        theorem Semantics.Presupposition.PartialProp.presupOfReferent_assertion_none {W : Type u_1} {E : Type u_2} (referent : WOption E) (scope : EWProp) (w : W) (h : referent w = none) :
                                        (presupOfReferent referent scope).assertion w = False

                                        Without a referent, the assertion is False.