@cite{lewis-1973-causation}: Causation #
@cite{lewis-1973-causation}
Formalization of Lewis's counterfactual analysis of causation against the V2 SEM substrate.
Three Key Concepts #
Causal dependence (p. 563): e depends causally on c iff the counterfactual "if c had not occurred, e would not have occurred" holds — the but-for test.
Causation (p. 563): the transitive closure of causal dependence. c causes e iff there exists a causal chain from c to e where each consecutive pair is a causal dependence. Defined via mathlib's
Relation.TransGen.Epiphenomena asymmetry (p. 565): intervention-based counterfactuals correctly distinguish genuine causes from mere correlates. The barometer does not cause the storm, even though they are correlated via atmospheric pressure.
Bridge to Linglib Infrastructure #
Lewis's causal dependence corresponds to the simple but-for test in our
V2 SEM framework. For exogenous causes, lewisButFor is structurally
identical to ¬ BoolSEM.causallySufficient with the alternative cause-value.
The key difference from @cite{nadathur-2024} Def 10b (causallyNecessary):
Lewis's but-for operates on the actual world via minimal intervention,
while Def 10b quantifies over consistent supersituations. For simple models
they agree; for complex models with alternative pathways, Def 10b is
strictly stronger. Bridge theorems comparing Lewis to Nadathur 2024 await
the Necessity hub migration to V2.
Limitations #
@cite{lewis-1973-causation} acknowledges two limitations:
- Overdetermination (fn. 12): symmetric overdetermination cases are excluded — neither overdetermining cause passes the but-for test.
- Late preemption: the transitive closure mechanism handles early preemption but struggles with late preemption.
Lewis's but-for counterfactual: setting cause to false (the absent
value) prevents the effect under developDetOn.
"If c had not occurred, e would not have occurred." Polymorphic over the vertex type W so each scenario can use its own enum.
Equations
- Lewis1973.lewisButFor M vs bg cause effect = ¬(Core.Causal.SEM.developDetOn M vs 1 (bg.extend cause false)).hasValue effect true
Instances For
Equations
- Lewis1973.instDecidableLewisButFor M vs bg cause effect = Classical.dec (Lewis1973.lewisButFor M vs bg cause effect)
Lewis's causal dependence (@cite{lewis-1973-causation} p. 563).
Three conjuncts: cause develops, effect develops, and without cause the effect does not developDet.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lewis1973.instDecidableLewisDependence M vs bg cause effect = Classical.dec (Lewis1973.lewisDependence M vs bg cause effect)
Lewis's causation: transitive closure of causal dependence
(@cite{lewis-1973-causation} p. 563), via Relation.TransGen.
Equations
- Lewis1973.lewisCausation M vs bg cause effect = Relation.TransGen (Lewis1973.lewisDependence M vs bg) cause effect
Instances For
Causal dependence implies causation (one-step chain).
Equations
- Lewis1973.SimpleCause.instDecidableEqV x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lewis1973.SimpleCause.instReprV = { reprPrec := Lewis1973.SimpleCause.instReprV.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Equations
Instances For
Lewis's but-for holds for a simple cause.
Lewis's causal dependence holds for a simple cause.
Lewis's causation holds (trivially, one-step chain).
Equations
- Lewis1973.Chain.instDecidableEqV x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Lewis1973.Chain.instFintypeV = { elems := { val := ↑Lewis1973.Chain.V.enumList, nodup := Lewis1973.Chain.V.enumList_nodup }, complete := Lewis1973.Chain.instFintypeV._proof_1 }
Equations
- Lewis1973.Chain.instReprV = { reprPrec := Lewis1973.Chain.instReprV.repr }
Equations
- Lewis1973.Chain.instReprV.repr Lewis1973.Chain.V.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Lewis1973.Chain.V.a")).group prec✝
- Lewis1973.Chain.instReprV.repr Lewis1973.Chain.V.b prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Lewis1973.Chain.V.b")).group prec✝
- Lewis1973.Chain.instReprV.repr Lewis1973.Chain.V.c prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Lewis1973.Chain.V.c")).group prec✝
Instances For
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.
Equations
Instances For
In the chain A→B→C, removing A prevents C.
Lewis's causation via the full chain A→B→C.
@cite{lewis-1973-causation} p. 565: barometer reading (B) and storm (S) are both effects of atmospheric pressure (P). The counterfactual analysis correctly identifies P as the common cause and rejects spurious "barometer causes storm" inference.
Equations
- Lewis1973.Epiphenomena.instDecidableEqV x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lewis1973.Epiphenomena.instReprV = { reprPrec := Lewis1973.Epiphenomena.instReprV.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Equations
Instances For
Pressure causes the barometer reading.
Pressure causes the storm.
The barometer does NOT cause the storm.
@cite{lewis-1973-causation} p. 565: intervention on the barometer (do(B=false)) cuts B's incoming law (P→B) but leaves P→S intact. P still causes S regardless of B.
The storm does NOT cause the barometer.
@cite{lewis-1973-causation} fn. 12: symmetric overdetermination cases are excluded — neither overdetermining factor passes the but-for test.
Model: A ∨ B → E. With both present, neither is necessary.
Equations
- Lewis1973.Overdetermination.instDecidableEqV x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
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
Equations
- One or more equations did not get rendered due to their size.
Both causes present.
Equations
Instances For
Neither overdetermining cause passes the but-for test (B alive when A removed; A alive when B removed).
Neither overdetermining cause is a Lewis causal dependent.