PO.Core
The graph-free potential-outcome core: systems, variables, finite intervention regimes, and joint counterfactual distributions.
Regime 10 core · 21 supporting This file defines finite intervention regimes for the potential-outcome framework. ★ Regime★ ofList_target
Intervention Regimes
This file defines finite intervention regimes for the potential-outcome framework. A regime records the variables fixed by an intervention and the assigned value for each fixed variable, without assuming a graph or structural causal model.
An intervention regime specifies a finite set of targeted variables together with an assigned value in the corresponding value space for each targeted variable.
Definition (Lean source)
For a collection of variables whose identities can be compared and their value spaces, the empty intervention regime targets no variable and consequently has no substantive assignments.
Definition (Lean source)
For a collection of variables whose identities can be compared and their value spaces, two intervention regimes are disjoint exactly when no variable is targeted by both regimes.
Definition (Lean source)
For a collection of variables whose identities can be compared and their value spaces, and two intervention regimes, the left-biased union targets every variable targeted by either regime and uses the first regime's assigned value whenever both assign that variable.
Definition (Lean source)
For a collection of variables whose identities can be compared and their value spaces, two intervention regimes, and the condition that they have no target variable in common, their disjoint union is their union regime, targeting every variable targeted by either regime and using its unique component assignment.
Definition (Lean source)
For a collection of variables whose identities can be compared, their value spaces, a variable, and a value in that variable's value space, the singleton intervention regime targets exactly that variable and assigns it that value.
For a collection of variables whose identities can be compared, their value spaces, a list of variable--value assignments, and a variable occurring in that list, the list lookup result is the value assigned to that variable by the first matching list entry: the empty-list case follows from the impossible occurrence assertion, while the nonempty-list case returns the head value when its variable matches and otherwise recurses on the tail.
Definition (Lean source)
For a collection of variables whose identities can be compared, their value spaces, and a list of variable--value assignments, the left-biased list-built regime targets the variables appearing in the list and assigns each the value at its first occurrence.
For a collection of variables whose identities can be compared and their value spaces, a list of variable--value assignments, and the condition that no variable appears more than once in that list, the list-built intervention regime targets exactly the listed variables and assigns each its listed value.
Definition (Lean source)
For a duplicate-free list of variable-value assignments l, the target of the regime it determines is exactly the finite set of variables listed in l.
Formal statement
21 supporting declarations (lemmas, instances)
-
disjoint_ifflemma — Two intervention regimes are disjoint exactly when their target sets are disjoint as finite sets.hypothesesV :sharedType u_1V → Type u_2r₁ r₂ :Regime V Xconclusionr₁.Disjoint r₂ ↔ _root_.Disjoint r₁.target r₂.targetProof (Lean source)
@[causal_defs_simps] lemma disjoint_iff (r₁ r₂ : Regime V X) : r₁.Disjoint r₂ ↔ _root_.Disjoint r₁.target r₂.target := Iff.rfl -
leftBiasedUnion_targetlemma — The left-biased union of two regimes targets the union of their target sets.hypothesesV :sharedType u_1V → Type u_2r₁ r₂ :Regime V Xconclusion(r₁.leftBiasedUnion r₂).target = r₁.target ∪ r₂.targetProof (Lean source)
@[causal_defs_simps] lemma leftBiasedUnion_target (r₁ r₂ : Regime V X) : (r₁.leftBiasedUnion r₂).target = r₁.target ∪ r₂.target := rfl -
sqcup_eq_leftBiasedUnionlemma — The disjoint union of two compatible regimes is their left-biased union; disjointness makes the left bias immaterial.hypothesesconclusionr₁.sqcup r₂ h = r₁.leftBiasedUnion r₂Proof (Lean source)
@[causal_defs_simps] lemma sqcup_eq_leftBiasedUnion (r₁ r₂ : Regime V X) (h : r₁.Disjoint r₂) : r₁.sqcup r₂ h = r₁.leftBiasedUnion r₂ := rfl -
empty_disjoint_rightlemma — The empty intervention regime is disjoint from every regime on its right.hypothesesV :sharedType u_1V → Type u_2r :Regime V XProof (Lean source)
lemma empty_disjoint_right (r : Regime V X) : (empty : Regime V X).Disjoint r := by simp [causal_defs_simps] -
empty_disjoint_leftlemma — Every regime is disjoint from the empty intervention regime on its right.hypothesesV :sharedType u_1V → Type u_2r :Regime V Xconclusionr.Disjoint (empty : Regime V X)Proof (Lean source)
lemma empty_disjoint_left (r : Regime V X) : r.Disjoint (empty : Regime V X) := by simp [causal_defs_simps] -
sqcup_targetlemma — The target of the disjoint union of two regimes is the union of their target sets.hypothesesconclusion(r₁.sqcup r₂ h).target = r₁.target ∪ r₂.targetProof (Lean source)
@[simp] lemma sqcup_target (r₁ r₂ : Regime V X) (h : r₁.Disjoint r₂) : (r₁.sqcup r₂ h).target = r₁.target ∪ r₂.target := rfl -
sqcup_assign_poslemma — sqcup agrees with r₁ whenever v ∈ r₁.target.hypothesesconclusion(r₁.sqcup r₂ h).assign v (by simp [Regime.sqcup, Regime.leftBiasedUnion, h1])= r₁.assign v h1Proof (Lean source)
lemma sqcup_assign_pos (r₁ r₂ : Regime V X) (h : r₁.Disjoint r₂) (v : V) (h1 : v ∈ r₁.target) : (r₁.sqcup r₂ h).assign v (by simp [Regime.sqcup, Regime.leftBiasedUnion, h1]) = r₁.assign v h1 := by simp [Regime.sqcup, Regime.leftBiasedUnion, h1] -
sqcup_assign_neglemma — sqcup agrees with r₂ whenever v ∉ r₁.target (and hence v ∈ r₂.target).hypothesesV :sharedType u_1V → Type u_2r₁ r₂ :Regime V Xh :r₁.Disjoint r₂v :Vh1 :v ∉ r₁.targeth2 :v ∈ r₂.targetconclusion(r₁.sqcup r₂ h).assign v (by simp [Regime.sqcup, Regime.leftBiasedUnion, h2])= r₂.assign v h2Proof (Lean source)
lemma sqcup_assign_neg (r₁ r₂ : Regime V X) (h : r₁.Disjoint r₂) (v : V) (h1 : v ∉ r₁.target) (h2 : v ∈ r₂.target) : (r₁.sqcup r₂ h).assign v (by simp [Regime.sqcup, Regime.leftBiasedUnion, h2]) = r₂.assign v h2 := by simp [Regime.sqcup, Regime.leftBiasedUnion, h1] -
exttheorem — Extensionality for Regime: equal targets and pointwise-equal assignments.hypotheseshtgt :r₁.target = r₂.targethassign :∀ v (h₁ : v ∈ r₁.target) (h₂ : v ∈ r₂.target), r₁.assign v h₁ = r₂.assign v h₂conclusionr₁ = r₂ -
single_targettheorem — The singleton intervention regime targets exactly the one variable it fixes.hypothesesV :sharedType u_1V → Type u_2v :Vx :X vProof (Lean source)
@[simp, causal_defs_simps] theorem single_target (v : V) (x : X v) : (single v x : Regime V X).target = {v} := rfl -
single_assign_selftheorem — Evaluating the singleton intervention assignment at its target returns the supplied value.hypothesesV :sharedType u_1V → Type u_2v :Vx :X vconclusion(single v x : Regime V X).assign v (mem_singleton_self _) = xProof (Lean source)
theorem single_assign_self (v : V) (x : X v) : (single v x : Regime V X).assign v (mem_singleton_self _) = x := rfl -
single_disjoint_singletheorem — Singleton intervention regimes on two distinct variables are disjoint.hypothesesV :sharedType u_1V → Type u_2Vhvw :v ≠ wx :X vy :X wProof (Lean source)
theorem single_disjoint_single {v w : V} (hvw : v ≠ w) (x : X v) (y : X w) : (single v x : Regime V X).Disjoint (single w y) := by simp [causal_defs_simps, hvw] -
single_disjoint_of_not_memtheorem — A singleton intervention regime is disjoint from any regime that does not target its variable.hypothesesProof (Lean source)
theorem single_disjoint_of_not_mem {v : V} (x : X v) (r : Regime V X) (h : v ∉ r.target) : (single v x : Regime V X).Disjoint r := by simp [causal_defs_simps, Finset.disjoint_singleton_left, h] -
disjoint_single_of_not_memtheorem — Any regime that does not target a variable is disjoint from the singleton intervention on that variable.hypothesesconclusionr.Disjoint (single v x : Regime V X)Proof (Lean source)
theorem disjoint_single_of_not_mem {v : V} (x : X v) (r : Regime V X) (h : v ∉ r.target) : r.Disjoint (single v x : Regime V X) := by simp [causal_defs_simps, Finset.disjoint_singleton_right, h] -
ofListLeftBiased_targetlemma — The regime built from a list of assignments by taking the first listed value for each variable targets exactly the finite set of listed variables.hypothesesV :sharedType u_1V → Type u_2l :List ((v : V) × X v) -
ofList_eq_ofListLeftBiasedlemma — On a duplicate-free list of assignments, the regime it determines is the left-biased list-built regime; the duplicate-freeness makes the left bias immaterial.hypothesesconclusion(ofList l h : Regime V X) = ofListLeftBiased lProof (Lean source)
@[causal_defs_simps] lemma ofList_eq_ofListLeftBiased (l : List ((v : V) × X v)) (h : (l.map fst).Nodup) : (ofList l h : Regime V X) = ofListLeftBiased l := rfl -
ofList_cons_targettheorem — The target of a regime built from a nonempty list inserts the head variable into the target from the tail.hypotheses -
listLookup_cons_selftheorem — Looking up the head variable of a dependent assignment list returns the head value.hypothesesconclusionlistLookup (⟨v, x⟩ :: rest) v (by simp) = xProof (Lean source)
theorem listLookup_cons_self {v : V} {x : X v} {rest : List ((v : V) × X v)} : listLookup (⟨v, x⟩ :: rest) v (by simp) = x := by simp [listLookup] -
listLookup_cons_of_netheorem — Looking up a different variable skips the head of a dependent assignment list and continues in the tail.hypothesesV :sharedType u_1V → Type u_2Vx :X wrest :List ((v : V) × X v)hvw :v ≠ whv' :v ∈ rest.map fstconclusionlistLookup (⟨w, x⟩ :: rest) v (by simp [hv']) = listLookup rest v hv'Proof (Lean source)
theorem listLookup_cons_of_ne {v w : V} {x : X w} {rest : List ((v : V) × X v)} (hvw : v ≠ w) (hv' : v ∈ rest.map fst) : listLookup (⟨w, x⟩ :: rest) v (by simp [hv']) = listLookup rest v hv' := by simp [listLookup, hvw]
System 5 core · 5 supporting This file defines a graph-free potential-outcome system, its coordinate-level potential outcomes, subset-valued potential outcomes, and the induced pushforward law of a subset under a regime. ★ POSystem★ measurable_component
Potential Outcome Systems
This file defines a graph-free potential-outcome system, its coordinate-level potential outcomes, subset-valued potential outcomes, and the induced pushforward law of a subset under a regime. These are the base objects used by the counterfactual and identification layers of the library.
A potential-outcome system consists of a finite set of variables, a measurable value space for each variable, a measurable sample space carrying a probability measure, and, for every intervention regime and sample point, a jointly measurable assignment of potential-outcome values to all variables.
Definition (Lean source)
For a potential-outcome system, an intervention regime, and a variable, the coordinate potential outcome assigns to each unit the value that variable would take under that intervention.
For an intervention regime r and a variable v, the coordinate potential outcome of v under r is a measurable function of the unit.
Formal statement
Proof (Lean source)
For a potential-outcome system, an intervention regime, and a finite set of variables, the joint potential outcome assigns to each unit the vector of values that all variables in the set would take under that intervention.
For a potential-outcome system, an intervention regime, and a finite set of variables, the potential-outcome law is the distribution of those variables' joint potential outcome under that intervention, induced by the system's probability measure.
5 supporting declarations (lemmas, instances)
-
component_applylemma — At a given unit, the coordinate potential outcome of a variable under a regime is the system's world evaluation of that variable at that unit under that regime.hypothesesconclusionP.component r v ω = P.eval r ω vProof (Lean source)
@[causal_defs_simps] lemma component_apply (r : Regime P.V P.X) (v : P.V) (ω : P.Ω) : P.component r v ω = P.eval r ω v := rfl -
poVariable_applylemma — Reading off one coordinate of the joint potential outcome of a finite variable set under a regime gives the system's world evaluation of that coordinate's variable, at the same unit and under the same regime.hypothesesconclusionP.poVariable r Y ω v = P.eval r ω v.valProof (Lean source)
@[causal_defs_simps] lemma poVariable_apply (r : Regime P.V P.X) (Y : Finset P.V) (ω : P.Ω) (v : {w : P.V // w ∈ Y}) : P.poVariable r Y ω v = P.eval r ω v.val := rfl -
measurable_poVariablelemma — The joint potential outcome for any finite set of variables under any intervention regime is measurable.hypothesesconclusionMeasurable (P.poVariable r Y)Proof (Lean source)
@[fun_prop] lemma measurable_poVariable (r : Regime P.V P.X) (Y : Finset P.V) : Measurable (P.poVariable r Y) := by refine measurable_pi_lambda _ ?_ intro v exact (measurable_pi_apply v.val).comp (P.measurable_eval r) -
poOperator_eqlemma — The potential-outcome law of a finite variable set under a regime is the pushforward of the system's probability measure along the joint potential outcome for that set and regime.hypothesesconclusionP.poOperator r Y = (P.μ).map (P.poVariable r Y)Proof (Lean source)
@[causal_defs_simps] lemma poOperator_eq (r : Regime P.V P.X) (Y : Finset P.V) : P.poOperator r Y = (P.μ).map (P.poVariable r Y) := rfl -
instIsProbabilityMeasureValuesOnVXPoOperatorinstance — For a potential-outcomes system, an intervention regime, and a finite set of variables, the distribution of those variables' joint potential outcome under that regime is a probability measure.parametersinstancegiven byby simp only [causal_defs_simps] exact isProbabilityMeasure_map (P.measurable_poVariable r Y).aemeasurable
Counterfactual 3 core · 4 supporting This file constructs finite joint distributions of potential outcomes evaluated under possibly different intervention regimes. ★ counterfactualDist_marginal
Cross-World Counterfactual Distributions
This file constructs finite joint distributions of potential outcomes evaluated under possibly different intervention regimes. It supplies the cross-world evaluation map, its pushforward law, and the basic marginal reading of that law.
For a potential-outcome system and a finite ordered list of queries, each consisting of an intervention regime and a finite variable set, the cross-world evaluation map assigns to every unit the tuple whose th component is the joint potential outcome for the th query.
For a potential-outcome system and a finite ordered list of counterfactual queries, the joint counterfactual distribution is the probability measure induced by applying the cross-world evaluation map to a random unit drawn from the system's probability measure.
For a finite list of counterfactual queries qs and an index i into that list, the i-th coordinate marginal of the joint counterfactual distribution over all queries equals the potential-outcome law for query i alone.
Formal statement
Proof (Lean source)
4 supporting declarations (lemmas, instances)
-
crossWorldEval_applylemma — Reading off the i-th coordinate of the cross-world evaluation of a unit returns the joint potential outcome of the i-th query's variable set under the i-th query's regime, at that same unit.hypothesesconclusionP.crossWorldEval qs ω i = P.poVariable (qs[i].1) (qs[i].2) ω -
measurable_crossWorldEvallemma — The cross-world evaluation map for a finite list of counterfactual queries is measurable.hypothesesconclusionMeasurable (P.crossWorldEval qs)Proof (Lean source)
@[fun_prop] lemma measurable_crossWorldEval (qs : List (Regime P.V P.X × Finset P.V)) : Measurable (P.crossWorldEval qs) := by refine measurable_pi_lambda _ ?_ intro i exact P.measurable_poVariable _ _ -
counterfactualDist_eqlemma — The joint counterfactual law of a finite list of queries is the pushforward of the system's probability measure along the cross-world evaluation map for those queries.hypothesesconclusionP.counterfactualDist qs = P.μ.map (P.crossWorldEval qs)Proof (Lean source)
@[causal_defs_simps] lemma counterfactualDist_eq (qs : List (Regime P.V P.X × Finset P.V)) : P.counterfactualDist qs = P.μ.map (P.crossWorldEval qs) := rfl -
instIsProbabilityMeasureForallValuesOnVSndRegimeXFinsetGetElemListProdFinLengthLtNatValCounterfactualDistinstance — For a potential-outcomes system and a finite ordered list of counterfactual queries, each consisting of an intervention regime and a finite variable set, the joint cross-world counterfactual distribution for that list is a probability measure.parametersinstanceinstIsProbabilityMeasureForallValuesOnVSndRegimeXFinsetGetElemListProdFinLengthLtNatValCounterfactualDist P qs :IsProbabilityMeasure (P.counterfactualDist qs)given byby simp only [causal_defs_simps] exact isProbabilityMeasure_map (P.measurable_crossWorldEval qs).aemeasurable
Variable 11 core · 22 supporting This file packages a variable of a potential-outcome system together with a common measurable value space, so that factual and counterfactual realizations can be handled uniformly. ★ POVar★ indicator_eq_event_indicator★ RegimedVar
Potential-Outcome Variables
This file packages a variable of a potential-outcome system together with a common measurable value space, so that factual and counterfactual realizations can be handled uniformly. It also provides event indicators and variables paired with intervention regimes for counterfactual independence statements.
The main public objects are POVar, its factual and counterfactual value maps
factual, cf, and cfUnder, the factual-event indicator API, and
RegimedVar for bundling a variable with the regime under which it is evaluated.
A potential-outcome variable records a system variable together with a measurable relabeling of its native value space into a chosen analysis scale α.
Definition (Lean source)
For a potential-outcome system, a measurable analysis scale, a potential-outcome variable, and an intervention regime, the counterfactual value function maps every sample-space unit to that variable's potential outcome under the regime, expressed on the analysis scale.
For a potential-outcome system, a measurable analysis scale, and a potential-outcome variable, the factual value function maps every sample-space unit to the variable's potential outcome under the empty intervention regime, expressed on the analysis scale.
For a potential-outcome system, a measurable analysis scale, a potential-outcome variable, and a value on that scale, the factual-value event is the set of all sample-space units whose factual value of the variable equals that value.
For a potential-outcome system, a measurable outcome scale, a measurable intervention-variable scale, an outcome variable, an intervention variable, and a value of that intervention variable, the single-intervention counterfactual value function maps every sample-space unit to the outcome variable's potential outcome when the intervention variable is set to that value.
For a potential-outcome system, a measurable analysis scale, a potential-outcome variable, and a value on that scale, the factual-value indicator maps each sample-space unit to one when the variable's factual value equals that value and to zero otherwise.
For a potential-outcome variable a and a value x in its range, the real-valued factual indicator a.indicator x equals the set-indicator of the factual event {a = x}.
Formal statement
Proof (Lean source)
A regimed variable pairs a potential-outcome variable with the intervention regime under which it should be evaluated.
Definition (Lean source)
For a potential-outcome system, a measurable analysis scale, and a variable paired with an intervention regime, the regimed-variable value function maps every sample-space unit to the paired variable's potential outcome under its paired regime.
Definition (Lean source)
For a potential-outcome system, a measurable analysis scale, and a potential-outcome variable, the factual bundle pairs that variable with the empty intervention regime.
Definition (Lean source)
For a potential-outcome system, a measurable analysis scale, a potential-outcome variable, a system variable, and a value in that variable's native value space, the single-intervention bundle pairs the potential-outcome variable with the regime that fixes the system variable to that value.
Definition (Lean source)
22 supporting declarations (lemmas, instances)
-
cf_applylemma — At a given unit, the counterfactual value of a variable under a regime is the system's world evaluation of that variable at that unit under that regime, carried over to the analysis scale by the variable's measurable equivalence.hypothesesconclusiona.cf r ω = a.equiv (P.eval r ω a.v) -
factual_eqlemma — The factual value function of a variable is its counterfactual value function under the empty intervention regime.hypothesesconclusiona.factual = a.cf Regime.emptyProof (Lean source)
-
measurable_cflemma — The counterfactual-value function of a potential-outcome variable under any intervention regime is measurable.hypothesesconclusionMeasurable (a.cf r)Proof (Lean source)
@[fun_prop] lemma measurable_cf (a : POVar P α) (r : Regime P.V P.X) : Measurable (a.cf r) := a.equiv.measurable.comp ((measurable_pi_apply _).comp (P.measurable_eval r)) -
measurable_factuallemma — The factual-value function of a potential-outcome variable is measurable.Proof (Lean source)
-
event_eqlemma — The factual-value event of a variable at a value is the preimage, under the variable's factual value function, of the one-point set at that value.hypothesesconclusiona.event x = a.factual ⁻¹' {x} -
measurableSet_eventlemma — The event that a potential-outcome variable's factual value equals a given singleton-measurable value is measurable.hypothesesconclusionMeasurableSet (a.event x)Proof (Lean source)
@[measurability] lemma measurableSet_event (a : POVar P α) (x : α) (hx : MeasurableSet ({x} : Set α)) : MeasurableSet (a.event x) := a.measurable_factual hx -
cfUnder_eqlemma — The single-intervention counterfactual value function of an outcome variable at a treatment value is its counterfactual value function under the singleton regime that fixes the treatment variable to that value, read back through the treatment variable's measurable equivalence.hypothesesconclusiony.cfUnder w d = y.cf (Regime.single w.v (w.equiv.symm d))Proof (Lean source)
@[causal_defs_simps] lemma cfUnder_eq {β : Type*} [MeasurableSpace β] (y : POVar P α) (w : POVar P β) (d : β) : y.cfUnder w d = y.cf (Regime.single w.v (w.equiv.symm d)) := rfl -
measurable_cfUnderlemma — The single-intervention counterfactual-value function is measurable.hypothesesconclusionMeasurable (y.cfUnder w d)Proof (Lean source)
@[fun_prop] lemma measurable_cfUnder {β : Type*} [MeasurableSpace β] (y : POVar P α) (w : POVar P β) (d : β) : Measurable (y.cfUnder w d) := y.measurable_cf _ -
indicator_apply_eq_onelemma — Pointwise: a.indicator x ω = 1 on {a = x}.hypothesesconclusiona.indicator x ω = 1Proof (Lean source)
@[indicator_simps] lemma indicator_apply_eq_one (a : POVar P α) {x : α} {ω : P.Ω} (hω : a.factual ω = x) : a.indicator x ω = 1 := by simp only [causal_defs_simps] exact Set.indicator_of_mem (show ω ∈ a.event x from hω) _ -
indicator_apply_eq_zerolemma — Pointwise: a.indicator x ω = 0 off {a = x}.hypothesesconclusiona.indicator x ω = 0Proof (Lean source)
@[indicator_simps] lemma indicator_apply_eq_zero (a : POVar P α) {x : α} {ω : P.Ω} (hω : a.factual ω ≠ x) : a.indicator x ω = 0 := by simp only [causal_defs_simps] exact Set.indicator_of_notMem (show ω ∉ a.event x from hω) _ -
measurable_indicatorlemma — a.indicator x is measurable.hypothesesconclusionMeasurable (a.indicator x)Proof (Lean source)
@[fun_prop] lemma measurable_indicator (a : POVar P α) (x : α) (hx : MeasurableSet ({x} : Set α)) : Measurable (a.indicator x) := by simp only [causal_defs_simps] exact ((measurable_const : Measurable (fun _ : P.Ω => (1 : ℝ)))).indicator (a.measurableSet_event x hx) -
stronglyMeasurable_indicator_comaplemma — a.indicator x is strongly measurable w.r.t. the σ-algebra generated by a.factual.hypothesesconclusionProof (Lean source)
@[fun_prop] lemma stronglyMeasurable_indicator_comap (a : POVar P α) (x : α) (hx : MeasurableSet ({x} : Set α)) : StronglyMeasurable[MeasurableSpace.comap a.factual inferInstance] (a.indicator x) := by letI : MeasurableSpace P.Ω := MeasurableSpace.comap a.factual inferInstance have hev : MeasurableSet[MeasurableSpace.comap a.factual inferInstance] (a.event x) := ⟨{x}, hx, rfl⟩ have hmeas : Measurable[MeasurableSpace.comap a.factual inferInstance] (a.indicator x) := by simp only [causal_defs_simps] exact (measurable_const).indicator hev exact hmeas.stronglyMeasurable -
integrable_indicatorlemma — a.indicator x is integrable under any finite measure (bounded by 1).hypothesesconclusionIntegrable (a.indicator x) μProof (Lean source)
@[fun_prop] lemma integrable_indicator {μ : Measure P.Ω} [IsFiniteMeasure μ] (a : POVar P α) (x : α) (hx : MeasurableSet ({x} : Set α)) : Integrable (a.indicator x) μ := by refine MeasureTheory.Integrable.of_bound (a.measurable_indicator x hx).aestronglyMeasurable 1 (Filter.Eventually.of_forall ?_) intro ω unfold POVar.indicator by_cases hω : ω ∈ a.event x · simp [Set.indicator_of_mem hω] · simp [Set.indicator_of_notMem hω] -
stronglyMeasurable_indicatorlemma — The real-valued factual indicator of a potential-outcome variable at a singleton-measurable value is strongly measurable on the sample space.hypothesesconclusionStronglyMeasurable (a.indicator x)Proof (Lean source)
@[fun_prop] lemma stronglyMeasurable_indicator (a : POVar P α) (x : α) (hx : MeasurableSet ({x} : Set α)) : StronglyMeasurable (a.indicator x) := (a.measurable_indicator x hx).stronglyMeasurable -
measurable_indicator_of_singletonlemma — On a value space whose one-point sets are measurable, the factual indicator of a potential-outcome variable at any value is a measurable function of the unit.hypothesesconclusionMeasurable (a.indicator x)Proof (Lean source)
@[fun_prop] lemma measurable_indicator_of_singleton [MeasurableSingletonClass α] (a : POVar P α) (x : α) : Measurable (a.indicator x) := a.measurable_indicator x (MeasurableSet.singleton x) -
stronglyMeasurable_indicator_of_singletonlemma — On a value space whose one-point sets are measurable, the factual indicator of a potential-outcome variable at any value is strongly measurable on the sample space.hypothesesconclusionStronglyMeasurable (a.indicator x)Proof (Lean source)
@[fun_prop] lemma stronglyMeasurable_indicator_of_singleton [MeasurableSingletonClass α] (a : POVar P α) (x : α) : StronglyMeasurable (a.indicator x) := (a.measurable_indicator x (MeasurableSet.singleton x)).stronglyMeasurable -
stronglyMeasurable_indicator_comap_of_singletonlemma — On a value space whose one-point sets are measurable, the factual indicator of a potential-outcome variable at any value is strongly measurable with respect to the information carried by that variable's factual value.hypothesesconclusionProof (Lean source)
@[fun_prop] lemma stronglyMeasurable_indicator_comap_of_singleton [MeasurableSingletonClass α] (a : POVar P α) (x : α) : StronglyMeasurable[comap a.factual inferInstance] (a.indicator x) := a.stronglyMeasurable_indicator_comap x (MeasurableSet.singleton x) -
integrable_indicator_of_singletonlemma — On a value space whose one-point sets are measurable, the factual indicator of a potential-outcome variable at any value is integrable under every finite measure on the sample space.Proof (Lean source)
@[fun_prop] lemma integrable_indicator_of_singleton [MeasurableSingletonClass α] {μ : Measure P.Ω} [IsFiniteMeasure μ] (a : POVar P α) (x : α) : Integrable (a.indicator x) μ := a.integrable_indicator x (MeasurableSet.singleton x) -
indicator_eq_one_or_zerolemma — a.indicator x ω is always 0 or 1.hypothesesconclusiona.indicator x ω = 1 ∨ a.indicator x ω = 0Proof (Lean source)
lemma indicator_eq_one_or_zero (a : POVar P α) (x : α) (ω : P.Ω) : a.indicator x ω = 1 ∨ a.indicator x ω = 0 := by unfold POVar.indicator by_cases hω : ω ∈ a.event x · exact inl (by simp [Set.indicator_of_mem hω]) · exact inr (by simp [Set.indicator_of_notMem hω]) -
indicator_add_indicator_notlemma — Binary case: a.indicator true ω + a.indicator false ω = 1.hypothesesProof (Lean source)
lemma indicator_add_indicator_not (a : POVar P Bool) (ω : P.Ω) : a.indicator true ω + a.indicator false ω = 1 := by unfold POVar.indicator by_cases hT : a.factual ω = true · have hT_t : ω ∈ a.event true := hT have hT_f : ω ∉ a.event false := by change a.factual ω ≠ false; rw [hT]; decide simp [Set.indicator_of_mem hT_t, Set.indicator_of_notMem hT_f] · have hF : a.factual ω = false := by cases h : a.factual ω <;> simp_all have hT_t : ω ∉ a.event true := hT have hT_f : ω ∈ a.event false := hF simp [Set.indicator_of_notMem hT_t, Set.indicator_of_mem hT_f] -
value_eqlemma — The value function of a regimed variable is the counterfactual value function of its underlying variable under its bundled regime.hypothesesconclusionrv.value = rv.var.cf rv.regimeProof (Lean source)
-
measurable_valuelemma — The value function of a regimed variable is measurable.hypothesesconclusionMeasurable rv.valueProof (Lean source)
@[fun_prop] lemma measurable_value (rv : RegimedVar P α) : Measurable rv.value := rv.var.measurable_cf _