Documentation

Linglib.Theories.Pragmatics.DecisionTheoretic.Core

Decision-Theoretic Semantics: Core #

@cite{merin-1999}

Core definitions for Merin's Decision-Theoretic Semantics (DTS). Meaning is explicated through signed relevance — the Bayes factor P(E|H)/P(E|¬H) — relative to a dichotomic issue {H, ¬H}.

Predicates over worlds are Set W; arithmetic operations carry [DecidablePred] constraints at use sites following the mathlib idiom.

Key Definitions #

Main Results #

inductive DTS.World4 :

4-world example type. Used by xor_not_necessarily_positive and consumers in this directory.

Instances For
    @[implicit_reducible]
    instance DTS.instDecidableEqWorld4 :
    DecidableEq World4
    Equations
    def DTS.instReprWorld4.repr :
    World4Std.Format
    Equations
    Instances For
      @[implicit_reducible]
      instance DTS.instReprWorld4 :
      Repr World4
      Equations
      @[implicit_reducible]
      instance DTS.instInhabitedWorld4 :
      Inhabited World4
      Equations
      @[implicit_reducible]
      instance DTS.instFintypeWorld4 :
      Fintype World4
      Equations
      structure DTS.DTSContext (W : Type u_1) :
      Type u_1

      A DTS context: a dichotomic hypothesis topic (the proposition H, with ¬H implicit) plus a prior probability distribution.

      Following mathlib's Filter.principal pattern, the polar interrogative {H, ¬H} is not packaged as a separate wrapper type — the topic is stored directly, and the inquisitive view is recovered on demand via DTSContext.toCoreIssue.

      • topic : Set W

        The hypothesis H. The dichotomic issue {H, ¬H} is recovered as Core.Question.polar topic.

      • topicDec : DecidablePred fun (x : W) => x self.topic

        Decidability of topic — required so that arithmetic over finite worlds (probSum, condProb) is well-defined without invoking Classical.propDecidable at every use site.

      • prior : W

        Prior probability distribution over worlds (rational-valued).

      Instances For
        def DTS.swapIssue {W : Type u_1} (ctx : DTSContext W) :

        Swap the issue: replace H with ¬H.

        Equations
        Instances For

          Forgetful projection from a DTS context to the general Core.Question lattice via the polar interrogative content of the topic proposition. The two representations agree on the underlying question semantics: a DTS dichotomy {H, ¬H} is exactly the polar interrogative of H, with two alternatives ⟦H⟧ and ⟦¬H⟧.

          Equations
          Instances For
            @[simp]
            theorem DTS.DTSContext.toCoreIssue_info {W : Type u_1} (ctx : DTSContext W) :
            ctx.toCoreIssue.info = Set.univ

            Every DTS dichotomic issue is non-informative (info = univ): the question {H, ¬H} itself rules out no worlds; only an answer to it does. Inherited from Core.Question.info_polar.

            theorem DTS.DTSContext.toCoreIssue_isInquisitive_iff {W : Type u_1} (ctx : DTSContext W) :
            ctx.toCoreIssue.isInquisitive {w : W | ctx.topic w} {w : W | ctx.topic w} Set.univ

            A DTS dichotomy is genuinely inquisitive (raises an unsettled question over the universal info state) iff its topic is non-trivial: neither everything nor nothing satisfies H. Inherited from Core.Question.isInquisitive_polar_iff.

            def DTS.probSum {W : Type u_1} [Fintype W] (prior : W) (p : Set W) [DecidablePred fun (x : W) => x p] :

            Sum of prior probabilities over worlds satisfying a predicate.

            Equations
            • DTS.probSum prior p = w : W, if w p then prior w else 0
            Instances For
              def DTS.condProb {W : Type u_1} [Fintype W] (prior : W) (e h : Set W) [DecidablePred fun (x : W) => x e] [DecidablePred fun (x : W) => x h] :

              Conditional probability P(E|H) = P(E∧H) / P(H).

              Returns 0 when P(H) = 0 (undefined conditioning).

              Equations
              Instances For
                def DTS.bayesFactor {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] :

                Bayes factor: P(E|H) / P(E|¬H).

                The pre-log ratio that determines relevance sign and magnitude. Division-by-zero convention follows ArgumentativeStrength.bayesFactor:

                • P(E|¬H) = 0, P(E|H) > 0 → 1000 (effectively +∞)
                • P(E|¬H) = 0, P(E|H) = 0 → 1 (neutral)
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def DTS.posRelevant {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] :

                  E is positively relevant to H: BF > 1 (E confirms H).

                  Equations
                  Instances For
                    @[implicit_reducible]
                    instance DTS.instDecidablePosRelevant {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] :
                    Decidable (posRelevant ctx e)
                    Equations
                    def DTS.negRelevant {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] :

                    E is negatively relevant to H: BF < 1 (E disconfirms H).

                    Equations
                    Instances For
                      @[implicit_reducible]
                      instance DTS.instDecidableNegRelevant {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] :
                      Decidable (negRelevant ctx e)
                      Equations
                      def DTS.irrelevant {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] :

                      E is irrelevant to H: BF = 1 (E neither confirms nor disconfirms).

                      Equations
                      Instances For
                        @[implicit_reducible]
                        instance DTS.instDecidableIrrelevant {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] :
                        Decidable (irrelevant ctx e)
                        Equations
                        def DTS.hContrary {W : Type u_1} [Fintype W] (ctx : DTSContext W) (a b : Set W) [DecidablePred fun (x : W) => x a] [DecidablePred fun (x : W) => x b] :

                        A and B have opposite relevance signs w.r.t. H.

                        Merin's "contrariness": one supports H while the other supports ¬H.

                        Equations
                        Instances For
                          def DTS.CIP {W : Type u_1} [Fintype W] (ctx : DTSContext W) (a b : Set W) [DecidablePred fun (x : W) => x a] [DecidablePred fun (x : W) => x b] :

                          Conditional Independence Presumption (CIP, Merin's Def. 6): A and B are conditionally independent given both H and ¬H.

                          P(A∧B|H) = P(A|H)·P(B|H) and P(A∧B|¬H) = P(A|¬H)·P(B|¬H).

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[implicit_reducible]
                            instance DTS.Set.symmDiff.decidablePred {α : Type u_1} (a b : Set α) [DecidablePred fun (x : α) => x a] [DecidablePred fun (x : α) => x b] :
                            DecidablePred fun (x : α) => x symmDiff a b

                            Decidability of membership in a symmetric difference, given decidability of membership in each component. Not in mathlib for Set α; added here so posRelevant ctx (a ∆ b) resolves.

                            Equations
                            theorem DTS.probSum_nonneg {W : Type u_1} [Fintype W] (prior : W) (hP : ∀ (w : W), prior w 0) (p : Set W) [DecidablePred fun (x : W) => x p] :
                            probSum prior p 0

                            probSum is non-negative when prior is non-negative.

                            theorem DTS.probSum_partition {W : Type u_1} [Fintype W] (prior : W) (e h : Set W) [DecidablePred fun (x : W) => x e] [DecidablePred fun (x : W) => x h] :
                            probSum prior e = probSum prior (e h) + probSum prior (e h)

                            Partition: P(e) = P(e ∩ h) + P(e ∩ hᶜ) for any decidable conditioning set h. The DTS-side mirror of PMF.probOfSet_partition.

                            theorem DTS.probSum_compl {W : Type u_1} [Fintype W] (prior : W) (h : Set W) [DecidablePred fun (x : W) => x h] :
                            probSum prior h + probSum prior h = probSum prior Set.univ

                            Total mass: P(h) + P(hᶜ) = P(univ). With normalization P(univ) = 1, yields P(hᶜ) = 1 − P(h). The DTS-side mirror of PMF.probOfSet_compl_add.

                            noncomputable def DTS.priorAsPMF {W : Type u_1} [Fintype W] (prior : W) (hNonneg : ∀ (w : W), prior w 0) (hSum : w : W, prior w = 1) :
                            PMF W

                            Lift a non-negative ℚ-valued prior summing to 1 over a finite type to a mathlib PMF. Per 0.230.500 audit, this is the bridge constructor for incremental DTS→PMF migration: any DTS theorem can opt into mathlib's PMF.probOfSet/PMF.condProbSet lemmas via priorAsPMF without forcing all sibling theorems to migrate.

                            Equations
                            • DTS.priorAsPMF prior hNonneg hSum = PMF.ofFintype (fun (w : W) => ENNReal.ofReal (prior w))
                            Instances For
                              @[simp]
                              theorem DTS.priorAsPMF_apply {W : Type u_1} [Fintype W] (prior : W) (hNonneg : ∀ (w : W), prior w 0) (hSum : w : W, prior w = 1) (w : W) :
                              (priorAsPMF prior hNonneg hSum) w = ENNReal.ofReal (prior w)

                              Bridge lemma: each individual mass under priorAsPMF is the ENNReal coercion of the original ℚ prior.

                              theorem DTS.probSum_toReal_eq_probOfSet {W : Type u_1} [Fintype W] (prior : W) (hNonneg : ∀ (w : W), prior w 0) (hSum : w : W, prior w = 1) (s : Set W) [DecidablePred fun (x : W) => x s] :
                              (probSum prior s) = ((priorAsPMF prior hNonneg hSum).probOfSet s).toReal

                              Bridge lemma: probSum (ℚ) and PMF.probOfSet (ENNReal) agree after coercion through /ENNReal. The toReal direction is the practical one — most consumers want ℚ-valued probabilities.

                              theorem DTS.sign_reversal_qual {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] (hEH : condProb ctx.prior e ctx.topic > 0) (hENotH : condProb ctx.prior e ctx.topic > 0) :

                              Corollary 3 (qualitative sign reversal): E is positively relevant to H iff E is negatively relevant to ¬H.

                              The ordinal content of r_H(E) = −r_{¬H}(E).

                              theorem DTS.sign_reversal {W : Type u_1} [Fintype W] (ctx : DTSContext W) (e : Set W) [DecidablePred fun (x : W) => x e] (hENotH : condProb ctx.prior e ctx.topic 0) (hEH : condProb ctx.prior e ctx.topic 0) :
                              bayesFactor ctx e * bayesFactor (swapIssue ctx) e = 1

                              Corollary 3 (quantitative): BF_H(E) · BF_{¬H}(E) = 1.

                              Exact when conditional probabilities are nonzero.

                              Fact 2: Relationship between relevance and conditional informativeness.

                              r_H(E) = inf(E, H) − inf(E, ¬H) where inf(E,X) = −log P(E|X). That is, relevance is the differential of conditional informativeness.

                              Not provable in ℚ (requires logarithm properties).

                              theorem DTS.bayes_factor_multiplicative_under_cip {W : Type u_1} [Fintype W] (ctx : DTSContext W) (a b : Set W) [DecidablePred fun (x : W) => x a] [DecidablePred fun (x : W) => x b] (hcip : CIP ctx a b) (hNotH : condProb ctx.prior a ctx.topic 0) (hNotH' : condProb ctx.prior b ctx.topic 0) (hABNotH : condProb ctx.prior (a b) ctx.topic 0) :
                              bayesFactor ctx (a b) = bayesFactor ctx a * bayesFactor ctx b

                              Fact 5: Under CIP, Bayes factor is multiplicative over conjunction.

                              BF(A∧B) = BF(A) · BF(B) when A and B are conditionally independent given both H and ¬H.

                              theorem DTS.conjunction_dominates_conjuncts {W : Type u_1} [Fintype W] (ctx : DTSContext W) (a b : Set W) [DecidablePred fun (x : W) => x a] [DecidablePred fun (x : W) => x b] (hcip : CIP ctx a b) (hPosA : posRelevant ctx a) (hPosB : posRelevant ctx b) (hNonzero : condProb ctx.prior a ctx.topic 0) (hNonzero' : condProb ctx.prior b ctx.topic 0) (hABNonzero : condProb ctx.prior (a b) ctx.topic 0) :
                              bayesFactor ctx (a b) > max (bayesFactor ctx a) (bayesFactor ctx b)

                              Theorem 6a (part 1): Under CIP with both A,B positively relevant, conjunction dominates both conjuncts: BF(A∧B) > max(BF(A), BF(B)).

                              theorem DTS.conjunction_dominates_disjunction {W : Type u_1} [Fintype W] (ctx : DTSContext W) (a b : Set W) [DecidablePred fun (x : W) => x a] [DecidablePred fun (x : W) => x b] (hcip : CIP ctx a b) (hPosA : posRelevant ctx a) (hPosB : posRelevant ctx b) (hNonzero : condProb ctx.prior a ctx.topic 0) (hNonzero' : condProb ctx.prior b ctx.topic 0) (hABNonzero : condProb ctx.prior (a b) ctx.topic 0) (hPrior : ∀ (w : W), ctx.prior w 0) :
                              bayesFactor ctx (a b) > max (bayesFactor ctx a) (bayesFactor ctx b) max (bayesFactor ctx a) (bayesFactor ctx b) > bayesFactor ctx (a b) bayesFactor ctx (a b) > 1

                              Theorem 6a (full): Under CIP with both A,B positively relevant, BF(A∧B) > max(BF(A), BF(B)) > BF(A∨B) > 1.

                              The disjunction ordering requires inclusion-exclusion on conditional probabilities: P(A∨B|X) = P(A|X) + P(B|X) - P(A∧B|X).

                              theorem DTS.probSupports_implies_posRelevant_binary {W : Type u_1} [Fintype W] (prior : W) (topic : Set W) [DecidablePred fun (x : W) => x topic] (evidence : Set W) [DecidablePred fun (x : W) => x evidence] (hH_pos : probSum prior topic > 0) (hNH_pos : probSum prior topic > 0) (_hS_pos : probSum prior evidence > 0) (hNonneg : ∀ (w : W), prior w 0) (hNorm : probSum prior Set.univ = 1) (hSupp : condProb prior evidence topic > probSum prior evidence) :
                              posRelevant { topic := topic, topicDec := inferInstance, prior := prior } evidence

                              Probabilistic support implies DTS positive relevance for binary issues. The Bayes-theorem bridge: P(H|E) > P(E)BF_H(E) > 1.

                              Discharged via the DTS-side partition law (probSum_partition) plus the normalization P(H) + P(¬H) = 1 (probSum_compl + hNorm). Edge case P(E ∩ ¬H) = 0 is handled separately: the if-branches in bayesFactor's definition return 1000 when P(E|¬H) = 0 and P(E|H) > 0, both established from the partition.

                              Promoted from the IKW2025 Part II "Bayesian-to-DTS bridge" in 0.230.502 — pure DTS-internal content (no IKW dependency), belongs in DTS Core.

                              theorem DTS.negRelevant_implies_not_probSupports {W : Type u_1} [Fintype W] (prior : W) (topic : Set W) [DecidablePred fun (x : W) => x topic] (evidence : Set W) [DecidablePred fun (x : W) => x evidence] (hH_pos : probSum prior topic > 0) (hNH_pos : probSum prior topic > 0) (hS_pos : probSum prior evidence > 0) (hNonneg : ∀ (w : W), prior w 0) (hNorm : probSum prior Set.univ = 1) (hNeg : negRelevant { topic := topic, topicDec := inferInstance, prior := prior } evidence) :
                              ¬condProb prior evidence topic > probSum prior evidence

                              Negative relevance (DTS) implies non-support (probabilistic).

                              Contrapositive of probSupports_implies_posRelevant_binary. Promoted from IKW2025 Part II in 0.230.502.

                              theorem DTS.xor_not_necessarily_positive :
                              ∃ (ctx : DTSContext World4) (a : Set World4) (b : Set World4) (x : DecidablePred fun (x : World4) => x a) (x_1 : DecidablePred fun (x : World4) => x b), posRelevant ctx a posRelevant ctx b ¬posRelevant ctx (symmDiff a b)

                              Theorem 6b: XOR of two positively relevant propositions is not necessarily positively relevant.

                              Counterexample on World4: H={w0}, A={w0,w1}, B={w0,w2}, uniform prior. BF(A) = 3, BF(B) = 3, but A⊕B = {w1,w2} has BF = 0 (not pos relevant).

                              TODO: Reconstruct the concrete counterexample in the new Prop-based formulation. The mathematical content is unchanged from the Bool-era formulation: the World4 witnesses still work, but threading the DecidablePred instances through decide requires care.