Documentation

Linglib.Theories.Semantics.Conditionals.Counterfactual

Counterfactual Conditionals: Three Theories #

@cite{ramotowska-marty-romoli-santorio-2025} @cite{lewis-1973}

Formalization of three competing theories of counterfactual conditionals.

The Three Theories #

  1. Universal Theory (@cite{lewis-1973}/Kratzer): Universal quantification over closest A-worlds.

    • ⦃A □→ B⦄_w = ∀w' ∈ closest(w, A). B(w')
  2. Selectional Theory (Stalnaker): Selection function + supervaluation.

    • ⦃A □→ B⦄_w = B(s(w, A)) for all legitimate selection functions s
    • Indeterminate when s₁(w,A) ∈ B but s₂(w,A) ∉ B
  3. Homogeneity Theory (von Fintel, Križ): Universal + homogeneity presupposition.

    • Presupposes: all closest A-worlds agree on B
    • Asserts: they all satisfy B (given the presupposition)

Key Prediction: Quantifier Embedding #

The theories diverge when counterfactuals are embedded under quantifiers in mixed scenarios:

Universal Theory #

@cite{ramotowska-marty-romoli-santorio-2025}

The standard possible-worlds analysis: counterfactuals universally quantify over the closest antecedent-worlds.

"If A were, B would" is true at w iff every closest A-world satisfies B.

This predicts:

def Semantics.Conditionals.Counterfactual.universalCounterfactual {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :

Universal counterfactual semantics (@cite{lewis-1973}/Kratzer).

True at w iff all closest A-worlds satisfy B.

Equations
Instances For
    @[implicit_reducible]
    instance Semantics.Conditionals.Counterfactual.universalCounterfactual_decidable {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :
    Decidable (universalCounterfactual sim A B w)
    Equations

    Selectional Theory #

    Stalnaker's approach with supervaluation over ties:

    1. A selection function picks THE closest antecedent-world
    2. When multiple worlds are equally close (ties), supervaluate over all choices

    Three-valued semantics:

    This predicts:

    def Semantics.Conditionals.Counterfactual.selectionalCounterfactual {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :

    Selectional counterfactual semantics (Stalnaker + supervaluation).

    Returns a three-valued truth value based on agreement across selection functions.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Semantics.Conditionals.Counterfactual.selectionalCounterfactual_eq_dist {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :
      selectionalCounterfactual sim A B w = Core.Duality.dist (sim.closestWorlds w (Finset.filter A Finset.univ)) B

      selectionalCounterfactual IS Fine super-truth (Core.Duality.dist) on the Finset of closest worlds with the consequent as Boolean predicate.

      Bridge documenting the equivalence — keeps the bespoke 3-way if-chain body for proof-script compatibility (cem_selectional and many Stalnaker1981 consumers case-split on the structure) while making the canonical-classifier connection explicit.

      theorem Semantics.Conditionals.Counterfactual.cem_selectional {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :
      have φ := selectionalCounterfactual sim A B w; have ψ := selectionalCounterfactual sim A (fun (x : W) => ¬B x) w; max φ ψ Core.Duality.Truth3.false

      Conditional Excluded Middle (CEM) holds for selectional semantics.

      (A □→ B) ∨ (A □→ ¬B) is always true or gap, never false.

      Proof sketch:

      1. Empty closest: both vacuously true → or = true
      2. All B: φ = true → or = true
      3. All ¬B: ψ = true → or = true
      4. Mixed: both gap → or = gap

      Homogeneity Theory #

      Universal quantification PLUS a homogeneity presupposition:

      When the presupposition fails (mixed closest worlds), the sentence is neither true nor false (presupposition failure).

      This predicts:

      Presupposition status.

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

          Result of evaluating a sentence with presuppositions.

          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
                def Semantics.Conditionals.Counterfactual.homogeneityCounterfactual {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :

                Homogeneity counterfactual semantics.

                Presupposes that all closest A-worlds agree on B.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem Semantics.Conditionals.Counterfactual.presup_preserved_homogeneity {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) (h : (homogeneityCounterfactual sim A B w).presupposition = PresupStatus.satisfied) :

                  Presupposition Preservation for homogeneity semantics.

                  If the presupposition is satisfied for (A □→ B), it's also satisfied for (A □→ ¬B). This is because homogeneity for B (all true or all false) implies homogeneity for ¬B.

                  theorem Semantics.Conditionals.Counterfactual.negation_swap_homogeneity_nonvacuous {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) (h_presup : (homogeneityCounterfactual sim A B w).presupposition = PresupStatus.satisfied) (h_nonvac : (sim.closestWorlds w (Finset.filter A Finset.univ)).Nonempty) :
                  Option.map (fun (x : Bool) => !x) (homogeneityCounterfactual sim A B w).assertion = (homogeneityCounterfactual sim A (fun (x : W) => ¬B x) w).assertion

                  Negation Swap holds for homogeneity semantics in the non-vacuous case.

                  When closest worlds are non-empty and presupposition is satisfied: assertion(A □→ B).map (¬·) = assertion(A □→ ¬B)

                  Grounding Selection Functions in Causal Models #

                  The selection function s(w, A) can be grounded via causal intervention:

                  s(w, A) = the world that results from intervening to make A true at w

                  This connects to @cite{nadathur-lauer-2020}: developDet M (s.extend A true) gives the counterfactual A-world (or, Pearl-style, (M.intervene A true).developDet s). Counterfactual dependence (necessity) corresponds to selection-based conditionals.

                  The intervention-based counterfactual primitive lives in Core/Causal/V2/SEM/Counterfactual.lean as causallySufficient (which is exactly "extending with antecedent then developing produces consequent"). The full formalization of @cite{lewis-1973-causation}'s causal dependence appears as a paper-replication study under Phenomena/Causation/Studies/Lewis1973.lean.

                  The selectional counterfactual is literally supervaluation (@cite{fine-1975}) over closest worlds. Each closest world is a specification point — a legitimate resolution of the selection-function tie. When all closest worlds agree on B, the counterfactual is definite; when they disagree, it is indefinite.

                  Now that both `selectionalCounterfactual` and `superTrue` use `Finset`,
                  the connection is immediate — they are the same `∀/∃` structure over
                  the same finite set. 
                  
                  theorem Semantics.Conditionals.Counterfactual.selectional_as_supervaluation {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) (hne : (sim.closestWorlds w (Finset.filter A Finset.univ)).Nonempty) :
                  selectionalCounterfactual sim A B w = Supervaluation.superTrue B { admissible := sim.closestWorlds w (Finset.filter A Finset.univ), nonempty := hne }

                  Selectional counterfactual = supervaluation over closest worlds. When the closest-worlds set is non-empty, the selectional semantics equals superTrue B over the closest worlds as a specification space.

                  This makes explicit that Stalnaker's "supervaluate over ties" IS Fine's supervaluation with Spec = W and admissible = closest(w, A). Now that superTrue takes Prop-valued evaluators directly (post Bool→Prop substrate migration), the bridge is Iff.rfl-thin on the underlying / checks.

                  Connection to Aggregation Pushforward #

                  projectTruthValues delegates directly to Core.Duality.aggregate, so embeddedSelectional_determinate and strength_determines_pattern (in QuantifierEmbedding.lean) are thin wrappers around Duality.aggregate_map_ofBool_ne_indet and Duality.aggregate_map_ofBool_mixed respectively.

                  The companion fact aggregate_replicate_indet (also in Duality.lean) captures the homogeneity theory's architecture: when all inputs are gaps, both existential and universal aggregation return gap — strength is invisible.

                  The selectional theory's strength-effect prediction is an instance of the global aggregation pattern: mixed Bool inputs split duality types.

                  Might Counterfactuals #

                  @cite{stalnaker-1981}

                  The Lewis–Stalnaker debate turns on the analysis of might counterfactuals.

                  Lewis's definition: "if A, might B" =_df ¬(A □→ ¬B). On this view, might is an idiom — the negation of the corresponding would not.

                  Stalnaker's objection: Under CEM, Lewis's definition makes "if A, might B" equivalent to "if A, would B" — collapsing the might/would distinction. Stalnaker treats might as a genuine possibility operator that takes scope over the conditional: ◇(A □→ B).

                  The three-valued selectional semantics naturally distinguishes them:

                  def Semantics.Conditionals.Counterfactual.lewisMight {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :

                  Lewis's might counterfactual: ¬(A □→ ¬B).

                  Defined as the negation of the universal counterfactual with negated consequent: "it is not the case that if A were, B would not be."

                  Equations
                  Instances For
                    @[implicit_reducible]
                    instance Semantics.Conditionals.Counterfactual.lewisMight_decidable {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :
                    Decidable (lewisMight sim A B w)
                    Equations
                    def Semantics.Conditionals.Counterfactual.selectionalMight {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :

                    Selectional might counterfactual: true on at least one precisification.

                    "If A, might B" is true iff the selectional counterfactual is not determinately false — i.e., at least one legitimate selection function picks a B-world. This is the existential dual of the universal would.

                    Derived from selectionalCounterfactual rather than inlining closestWorlds, making the supervaluation connection structural.

                    Equations
                    Instances For
                      @[implicit_reducible]
                      instance Semantics.Conditionals.Counterfactual.selectionalMight_decidable {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) :
                      Decidable (selectionalMight sim A B w)
                      Equations
                      theorem Semantics.Conditionals.Counterfactual.lewis_might_eq_would_singleton {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) (h_singleton : (sim.closestWorlds w (Finset.filter A Finset.univ)).card = 1) :
                      lewisMight sim A B w universalCounterfactual sim A B w

                      CEM collapses Lewis's might into would.

                      When the closest-worlds set is a singleton (uniqueness holds), Lewis's might = ¬(all closest satisfy ¬B) = some closest satisfies B = all closest satisfy B = would. The uniqueness assumption makes ¬∀¬ equivalent to ∀.

                      This is the problematic consequence that @cite{stalnaker-1981} argues against: "if A, might B" should be weaker than "if A, would B", but under uniqueness they collapse.

                      theorem Semantics.Conditionals.Counterfactual.lewis_might_eq_would_cem {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) (h_nonempty : (sim.closestWorlds w (Finset.filter A Finset.univ)).Nonempty) (h_cem : universalCounterfactual sim A B w universalCounterfactual sim A (fun (x : W) => ¬B x) w) :
                      lewisMight sim A B w universalCounterfactual sim A B w

                      CEM implies Lewis's might = would (the general collapse).

                      @cite{stalnaker-1981}'s central observation: if CEM holds for the universal theory at a world (which it does whenever closest worlds are a singleton, but also in other cases), then Lewis's definition of might as ¬(would ¬B) collapses into would.

                      theorem Semantics.Conditionals.Counterfactual.selectional_might_weaker :
                      ∃ (W : Type) (x : DecidableEq W) (x_1 : Fintype W) (sim : Core.Order.SimilarityOrdering W) (A : WProp) (B : WProp) (x_2 : DecidablePred A) (x_3 : DecidablePred B) (w : W), selectionalMight sim A B w selectionalCounterfactual sim A B w = Core.Duality.Truth3.indet

                      Selectional might is genuinely weaker than would.

                      There exist worlds where might B holds but would B does not: when the closest-worlds set is mixed (some satisfy B, some don't), the existential might is true but the universal would is indeterminate.

                      Distribution Principle #

                      @cite{stalnaker-1981}

                      On Lewis's analysis, conditional antecedents act like necessity operators, quantifying universally over closest A-worlds. The distribution principle

                      (A □→ (B ∨ C)) ⊃ ((A □→ B) ∨ (A □→ C))
                      

                      fails for universal semantics (∀ distributes over ∧ but not ∨) but holds trivially for selectional semantics (one world, so B∨C at that world means B or C at that world).

                      theorem Semantics.Conditionals.Counterfactual.distribution_selectional {W : Type u_1} [DecidableEq W] [Fintype W] (sim : Core.Order.SimilarityOrdering W) (A B C : WProp) [DecidablePred A] [DecidablePred B] [DecidablePred C] (w : W) (_h_unique : (sim.closestWorlds w (Finset.filter A Finset.univ)).card 1) (h : selectionalCounterfactual sim A (fun (w : W) => B w C w) w = Core.Duality.Truth3.true) :

                      Distribution holds for selectional semantics.

                      If the selected A-world satisfies B ∨ C, then either it satisfies B (so A □→ B) or it satisfies C (so A □→ C).

                      theorem Semantics.Conditionals.Counterfactual.distribution_fails_universal :
                      ∃ (W : Type) (x : DecidableEq W) (x_1 : Fintype W) (sim : Core.Order.SimilarityOrdering W) (A : WProp) (B : WProp) (C : WProp) (x_2 : DecidablePred A) (x_3 : DecidablePred B) (x_4 : DecidablePred C) (w : W), universalCounterfactual sim A (fun (w : W) => B w C w) w ¬universalCounterfactual sim A B w ¬universalCounterfactual sim A C w

                      Distribution fails for universal semantics.

                      Counterexample: two closest A-worlds, one satisfying B (not C), the other satisfying C (not B). Then A □→ (B∨C) is true (both satisfy B∨C) but neither A □→ B nor A □→ C is true.

                      Single-Selection-Function Variant #

                      @cite{stalnaker-1968}

                      Stalnaker's original counterfactual analysis used a single Stalnakerian selection function — picking THE closest A-world — without supervaluation over ties. This is the same Semantics.Conditionals.SelectionFunction infrastructure that @cite{cariani-santorio-2018} reuse for will (see Theories/Semantics/Modality/Selectional.lean); the mechanism is identical, only the temporal/modal target differs.

                      The supervaluation variant (selectionalCounterfactual above) generalises this to handle ties: each "legitimate" selection function corresponds to a choice point, and we supervaluate over them. The bridge below shows that when the supervaluation's closest-worlds set is the singleton chosen by a selection function, the supervaluation analysis (Truth3) reduces to the single-function analysis (Bool) under Truth3.ofBool.

                      Stalnaker's single-selection-function counterfactual @cite{stalnaker-1968}. A □→ B is true at w iff B holds at s(w, ‖A‖). This reuses the same Semantics.Conditionals.SelectionFunction infrastructure that @cite{cariani-santorio-2018} apply to will — the mechanism is identical across the two papers.

                      Equations
                      Instances For
                        theorem Semantics.Conditionals.Counterfactual.stalnaker_eq_selectional_singleton {W : Type u_1} [DecidableEq W] [Fintype W] (s : SelectionFunction W) (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) (h_singleton : sim.closestWorlds w (Finset.filter A Finset.univ) = {s.sel w {w' : W | A w'}}) :

                        Bridge: Stalnaker = supervaluation when closest is a singleton.

                        When the supervaluation's closest-worlds set is the singleton {s.sel w ‖A‖}, the supervaluation analysis (Truth3) reduces to the single-selection-function analysis (Bool) under Truth3.ofBool. The supervaluation gap arises only with ties; once ties are resolved by the selection function, both analyses coincide.

                        Bridge: Stalnaker counterfactual = will-conditional over the universe #

                        @cite{cariani-santorio-2018} §5.3.2 + §5.3.1 unify will, would, will-conditionals, and Stalnaker counterfactuals under a single Semantics.Conditionals.SelectionFunction substrate. Each operator differs only in its modal parameter f:

                        The bridge below makes this explicit: a Stalnaker counterfactual is exactly a will-conditional whose ambient parameter is Set.univ. The if-clause then restricts the universe down to the antecedent's truth set, recovering Stalnaker's s(w, ‖A‖).

                        Stalnaker counterfactual = will-conditional over the universe.

                        @cite{cariani-santorio-2018} §5.3.2 + §5.3.1: when the modal parameter of the will-conditional is taken to be Set.univ, the Kratzer restriction Set.univ ∩ ‖A‖ = ‖A‖ recovers Stalnaker's selection target. The Bool-valued stalnakerCounterfactual and the Prop-valued willConditional thus coincide modulo the · = true reflection.

                        This is the formal payoff of the unification: bare will (willSem), will-conditionals (willConditional), Stalnaker counterfactuals, and would-conditionals (wouldConditional) all derive from one Semantics.Conditionals.SelectionFunction mechanism, differing only in which modal parameter the tense morphology supplies.

                        Stalnaker counterfactual = would-conditional over the universe.

                        The same identity restated in would-conditional terms, exercising the morphological identity wouldConditional = willConditional. The counterfactual is, on the C&S analysis, a past-tense (would-) form, so the would-conditional reading is the more natural surface gloss.

                        theorem Semantics.Conditionals.Counterfactual.selectional_eq_wouldConditional_singleton_universe {W : Type u_1} [DecidableEq W] [Fintype W] (s : SelectionFunction W) (sim : Core.Order.SimilarityOrdering W) (A B : WProp) [DecidablePred A] [DecidablePred B] (w : W) (h_singleton : sim.closestWorlds w (Finset.filter A Finset.univ) = {s.sel w {w' : W | A w'}}) :

                        Truth3 ↔ would-conditional bridge @cite{cariani-santorio-2018} §5.3.1 + §5.3.2: composing stalnaker_eq_selectional_singleton (Truth3 ↔ Bool stalnakerCounterfactual under singleton-closest) with stalnakerCounterfactual_eq_wouldConditional_universe (Bool ↔ Prop would-conditional under universe parameter) gives a direct bridge from the supervaluation-valued selectionalCounterfactual to the Prop-valued would-conditional of WillConditional.

                        Under the same h_singleton hypothesis that resolves the Truth3 gap (the closest-worlds set is exactly Stalnaker's selected world), the supervaluation analysis lands at .true iff the would-conditional holds. The two layers — Truth3 supervaluation over Finset and Prop selection-function over Set — collapse to the same content.

                        theorem Semantics.Conditionals.Counterfactual.stalnaker_lewis_would_diverge :
                        ∃ (sim : Core.Order.SimilarityOrdering (Fin 3)) (A : Fin 3Prop) (B : Fin 3Prop) (x : DecidablePred A) (x_1 : DecidablePred B) (w : Fin 3), stalnakerCounterfactual Semantics.Conditionals.Counterfactual.divergeSel✝ A B w ¬universalCounterfactual sim A B w

                        Stalnaker–Lewis would divergence @cite{cariani-santorio-2018} §5.3.2 motivation: there exist a world model, a selection function, a similarity ordering, an antecedent A and a consequent B such that the Stalnakerian would (single-selection-function reading) is true while the Lewisian would (universal over closest A-worlds) is false.

                        Construction: three worlds with everyone equally close (closer ≡ true), antecedent A = {1, 2}, consequent B = {1}. Lewis's closestWorlds for A is the whole of A = {1, 2}, and the universal ∀ w ∈ {1, 2}. B w fails at w = 2. Stalnaker's selection (divergeSel) picks 1, where B holds. The same structural source — single-valuedness of selection vs. universal quantification over a non-trivial closest set — drives the C&S will / universalWill split in Semantics.Modality.Selectional.