Lewis (1973): Causation #
This file formalizes the counterfactual analysis of causation of [Lew73a] on
deterministic Boolean structural equation models. An event depends causally on another when,
had the cause not occurred, the effect would not have occurred (lewisButFor,
lewisDependence), and causation is the ancestral of causal dependence, a chain of
stepwise dependences (lewisCausation, via Relation.TransGen). Four scenarios exercise the
analysis: a single cause, a chain, in which the distal cause is a cause through two steps
(Chain.chain_causation), the common-cause case of the barometer and the storm, where
neither effect depends on the other (Epiphenomena.barometer_not_causes_storm), and
symmetric overdetermination, where neither of two sufficient causes passes the but-for test
(Overdetermination.overdetermination_no_dependence_a), the limitation the paper concedes.
Implementation notes #
The actual world is a context of a causal model, and the counterfactual is an intervention
setting the cause to false in that context (CausalModel.solve), so the analysis is the but-for
test of the model rather than a similarity ordering over worlds; the two agree on these
deterministic scenarios. The paper's treatment of preemption is not represented.
References #
The but-for counterfactual holds when, had the cause not occurred, the effect would not have
occurred, the counterfactual being an intervention setting the cause to false in the actual
context u.
Equations
- Lewis1973.lewisButFor M u cause effect = (M.solve (Function.update ⊥ cause ↑false) u effect ≠ true)
Instances For
The effect depends causally on the cause (p. 562) when both occur and the effect would not have occurred without the cause.
Equations
- Lewis1973.lewisDependence M u cause effect = (M.solve ⊥ u cause = true ∧ M.solve ⊥ u effect = true ∧ Lewis1973.lewisButFor M u cause effect)
Instances For
Equations
- Lewis1973.instDecidableLewisButForOfFintype M u cause effect = { decide := !decide (M.solve (Function.update ⊥ cause ↑false) u effect = true), reflects_decide := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Causation is the ancestral of causal dependence (p. 563).
Equations
- Lewis1973.lewisCausation M u cause effect = Relation.TransGen (Lewis1973.lewisDependence M u) cause effect
Instances For
Causal dependence is causation through a chain of one step.
An effect does not depend on an event from which no directed path reaches it, since intervening on the event leaves the effect as it was.
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
A single cause passes the but-for test.
The effect depends on its single cause.
A single cause is a cause.
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.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
Equations
- Lewis1973.Chain.instReprV = { reprPrec := Lewis1973.Chain.instReprV.repr }
Equations
Instances For
In a chain the distal cause passes the but-for test for the final effect.
The middle event depends on the first.
The final event depends on the middle one.
The first event causes the last through the chain.
The barometer reading and the storm are both effects of atmospheric pressure (pp. 561 and 564–565): the analysis makes the pressure the cause of each and neither effect a cause of the other.
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
The pressure bears on the barometer and on the storm.
Equations
Instances For
The context settles the pressure.
- pressure : Bool
Instances For
The barometer and the storm both follow the pressure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pressure causes the barometer reading.
Pressure causes the storm.
The barometer does not cause the storm. No path runs from the barometer to the storm, so intervening on the barometer leaves the pressure, and so the storm, in place.
The storm does not cause the barometer reading.
Symmetric overdetermination (fn. 12): with two sufficient causes both present, neither is necessary, so neither passes the but-for test.
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
- One or more equations did not get rendered due to their size.
Instances For
Equations
Both causes bear on the effect.
Equations
Instances For
The context settles the two causes.
- a : Bool
- b : Bool
Instances For
The effect occurs when either cause does.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Neither overdetermining cause passes the but-for test, both being present.
Neither overdetermining cause is one the effect depends on.