PO.ID.Exact.Proximal
Proximal causal inference: identification through outcome- and treatment-confounding proxies via bridge functions.
Setup 17 core · 24 supporting This file defines the data layer for proximal average treatment effect identification. ★ POProximalSystem★ σ_UX_le
Proximal Setup
This file defines the data layer for proximal average treatment effect
identification. POProximalSystem records a covariate, binary treatment,
treatment-side proxy, outcome-side proxy, real-valued outcome, and latent
confounder. The namespace then supplies the factual maps X, A, Z, W,
Y, and U; the treatment-specific potential outcome YofA; tuple-valued
conditioning targets AZX, AUX, UX, and AZUX; and the generated
sigma-algebras σ_AZX, σ_AUX, σ_UX, and σ_AZUX with their ambient
sub-sigma-algebra lemmas.
Assumption bundles and the identification theorem are kept in the companion
Proximal.Assumptions and Proximal.Main files.
Proximal ATE system. Bundles six distinguished potential-outcome variables inside a potential-outcome system: an observed covariate, a binary treatment, a treatment-side proxy, an outcome-side proxy, a real-valued outcome, and a latent confounder (def:po-proximal-system).
Definition (Lean source)
The factual covariate records each unit's observed baseline covariates in the proximal system's unmanipulated regime by reading its designated covariate variable.
Definition (Lean source)
The factual binary treatment records the treatment actually received in the proximal system's observed regime by reading its designated treatment variable.
Definition (Lean source)
The factual treatment-side proxy records the observed negative-control exposure from the proximal system through its designated treatment-side proxy.
Definition (Lean source)
The factual outcome-side proxy records the observed negative-control outcome from the proximal system through its designated outcome-side proxy.
Definition (Lean source)
The factual outcome is the real response observed under the proximal system's realized treatment as read from its designated outcome variable.
Definition (Lean source)
The latent confounder records the unobserved common cause represented in the proximal system through its designated confounder variable.
Definition (Lean source)
The treatment-specific potential outcome is the response each unit would have if the proximal system intervened to set treatment to the chosen arm, using the counterfactual outcome under that intervention.
Definition (Lean source)
The observable treatment-side conditioning vector combines realized treatment, the treatment-side proxy, and baseline covariates from the proximal system in that order.
Definition (Lean source)
The latent treatment-stratum vector combines realized treatment, the latent confounder, and baseline covariates from the proximal system in that order.
Definition (Lean source)
The latent adjustment vector pairs the confounder with baseline covariates in the proximal system in that order, producing the conditioning set used by latent exchangeability.
Definition (Lean source)
The augmented proximal conditioning vector combines treatment, the treatment-side proxy, the latent confounder, and covariates from the proximal system in that order.
Definition (Lean source)
The observable treatment-side information set generated by the proximal system pulls back the product σ-algebra of treatment, the treatment-side proxy, and covariates.
Definition (Lean source)
The latent treatment-stratum information set generated by the proximal system pulls back the product σ-algebra of treatment, the confounder, and covariates.
Definition (Lean source)
The latent adjustment information set generated by the proximal system pulls back the product σ-algebra of the confounder and baseline covariates.
Definition (Lean source)
The augmented proximal information set generated by the proximal system pulls back the product σ-algebra of treatment, the treatment-side proxy, the confounder, and covariates.
Definition (Lean source)
The latent adjustment information set from the proximal system contains only ambiently measurable events, so it is a valid conditioning σ-algebra.
Formal statement
Proof (Lean source)
24 supporting declarations (lemmas, instances)
-
measurable_Xlemma — The factual covariate in the proximal system is measurable, so it can serve as an observed conditioning variable.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.XProof (Lean source)
@[fun_prop] lemma measurable_X : Measurable S.X := S.Xvar.measurable_factual -
measurable_Alemma — The realized treatment in the proximal system is measurable, making treatment-arm events observable.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.AProof (Lean source)
@[fun_prop] lemma measurable_A : Measurable S.A := S.Avar.measurable_factual -
measurable_Zlemma — The observed treatment-side proxy in the proximal system is measurable, so it may enter observable bridge moments.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.ZProof (Lean source)
@[fun_prop] lemma measurable_Z : Measurable S.Z := S.Zvar.measurable_factual -
measurable_Wlemma — The observed outcome-side proxy in the proximal system is measurable, so bridge functions may be evaluated on it.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.WProof (Lean source)
@[fun_prop] lemma measurable_W : Measurable S.W := S.Wvar.measurable_factual -
measurable_Ylemma — The observed outcome in the proximal system is measurable, hence defines observable outcome moments.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.YProof (Lean source)
@[fun_prop] lemma measurable_Y : Measurable S.Y := S.Yvar.measurable_factual -
measurable_Ulemma — The latent confounder represented by the proximal system is measurable, allowing latent conditional-expectation arguments.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.UProof (Lean source)
@[fun_prop] lemma measurable_U : Measurable S.U := S.Uvar.measurable_factual -
measurable_YofAlemma — The potential outcome under a chosen treatment arm is measurable, so its conditional means and population mean are well formed.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4a :conclusionMeasurable (S.YofA a)Proof (Lean source)
@[fun_prop] lemma measurable_YofA (a : Bool) : Measurable (S.YofA a) := S.Yvar.measurable_cfUnder S.Avar a -
measurable_AZXlemma — The observable treatment-side conditioning vector is measurable, so conditioning on treatment, proxy, and covariates is legitimate.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.AZXProof (Lean source)
@[fun_prop] lemma measurable_AZX : Measurable S.AZX := prodMk S.measurable_A (prodMk S.measurable_Z S.measurable_X) -
measurable_AUXlemma — The latent treatment-stratum vector is measurable, supporting conditional expectations given treatment, confounder, and covariates.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.AUXProof (Lean source)
@[fun_prop] lemma measurable_AUX : Measurable S.AUX := prodMk S.measurable_A (prodMk S.measurable_U S.measurable_X) -
measurable_UXlemma — The latent adjustment vector is measurable, so it generates the conditioning information used in proximal exchangeability.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.UXProof (Lean source)
@[fun_prop] lemma measurable_UX : Measurable S.UX := prodMk S.measurable_U S.measurable_X -
measurable_AZUXlemma — The augmented proximal conditioning vector is measurable, allowing joint conditioning on treatment, proxy, confounder, and covariates.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable S.AZUXProof (Lean source)
@[fun_prop] lemma measurable_AZUX : Measurable S.AZUX := prodMk S.measurable_A (prodMk S.measurable_Z (prodMk S.measurable_U S.measurable_X)) -
σ_AZX_lelemma — The sigma-algebra generated by treatment, treatment-side proxy, and covariate is a sub-sigma-algebra of the ambient space.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionS.σ_AZX ≤ (inferInstance : MeasurableSpace P.Ω)Proof (Lean source)
lemma σ_AZX_le : S.σ_AZX ≤ (inferInstance : MeasurableSpace P.Ω) := S.measurable_AZX.comap_le -
σ_AUX_lelemma — The sigma-algebra generated by treatment, latent confounder, and covariate is a sub-sigma-algebra of the ambient space.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionS.σ_AUX ≤ (inferInstance : MeasurableSpace P.Ω)Proof (Lean source)
lemma σ_AUX_le : S.σ_AUX ≤ (inferInstance : MeasurableSpace P.Ω) := S.measurable_AUX.comap_le -
σ_AZUX_lelemma — The sigma-algebra generated by treatment, treatment-side proxy, latent confounder, and covariate is a sub-sigma-algebra of the ambient space.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionS.σ_AZUX ≤ (inferInstance : MeasurableSpace P.Ω)Proof (Lean source)
lemma σ_AZUX_le : S.σ_AZUX ≤ (inferInstance : MeasurableSpace P.Ω) := S.measurable_AZUX.comap_le -
measurable_A_σ_AZXlemma — The treatment is measurable with respect to the σ-algebra generated by treatment, treatment-side proxy, and covariate, being the first coordinate of that tuple.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_AZX] S.AProof (Lean source)
@[fun_prop] lemma measurable_A_σ_AZX : Measurable[S.σ_AZX] S.A := by intro t ht refine ⟨Prod.fst ⁻¹' t, measurable_fst ht, ?_⟩ ext ω; rfl -
measurable_Z_σ_AZXlemma — The treatment-side proxy is measurable with respect to the σ-algebra generated by treatment, treatment-side proxy, and covariate, being the second coordinate of that tuple.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_AZX] S.ZProof (Lean source)
@[fun_prop] lemma measurable_Z_σ_AZX : Measurable[S.σ_AZX] S.Z := by intro t ht refine ⟨(fun p : Bool × γ_Z × γ_X => p.2.1) ⁻¹' t, (measurable_fst.comp measurable_snd) ht, ?_⟩ ext ω; rfl -
measurable_X_σ_AZXlemma — The covariate is measurable with respect to the σ-algebra generated by treatment, treatment-side proxy, and covariate, being the third coordinate of that tuple.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_AZX] S.XProof (Lean source)
@[fun_prop] lemma measurable_X_σ_AZX : Measurable[S.σ_AZX] S.X := by intro t ht refine ⟨(fun p : Bool × γ_Z × γ_X => p.2.2) ⁻¹' t, (measurable_snd.comp measurable_snd) ht, ?_⟩ ext ω; rfl -
measurable_A_σ_AUXlemma — The treatment is measurable with respect to the σ-algebra generated by treatment, latent confounder, and covariate, being the first coordinate of that tuple.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_AUX] S.AProof (Lean source)
@[fun_prop] lemma measurable_A_σ_AUX : Measurable[S.σ_AUX] S.A := by intro t ht refine ⟨Prod.fst ⁻¹' t, measurable_fst ht, ?_⟩ ext ω; rfl -
measurable_U_σ_AUXlemma — The latent confounder is measurable with respect to the σ-algebra generated by treatment, latent confounder, and covariate, being the second coordinate of that tuple.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_AUX] S.UProof (Lean source)
@[fun_prop] lemma measurable_U_σ_AUX : Measurable[S.σ_AUX] S.U := by intro t ht refine ⟨(fun p : Bool × γ_U × γ_X => p.2.1) ⁻¹' t, (measurable_fst.comp measurable_snd) ht, ?_⟩ ext ω; rfl -
measurable_X_σ_AUXlemma — The covariate is measurable with respect to the σ-algebra generated by treatment, latent confounder, and covariate, being the third coordinate of that tuple.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_AUX] S.XProof (Lean source)
@[fun_prop] lemma measurable_X_σ_AUX : Measurable[S.σ_AUX] S.X := by intro t ht refine ⟨(fun p : Bool × γ_U × γ_X => p.2.2) ⁻¹' t, (measurable_snd.comp measurable_snd) ht, ?_⟩ ext ω; rfl -
measurable_UX_σ_UXlemma — The latent-confounder-and-covariate tuple is measurable with respect to the σ-algebra it generates.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_UX] S.UXProof (Lean source)
@[fun_prop] lemma measurable_UX_σ_UX : Measurable[S.σ_UX] S.UX := fun _ ht => ⟨_, ht, rfl⟩ -
measurable_U_σ_UXlemma — The latent confounder is measurable with respect to the σ-algebra generated by the latent confounder and covariate, being the first coordinate of that tuple.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_UX] S.UProof (Lean source)
@[fun_prop] lemma measurable_U_σ_UX : Measurable[S.σ_UX] S.U := by intro t ht refine ⟨Prod.fst ⁻¹' t, measurable_fst ht, ?_⟩ ext ω; rfl -
measurable_X_σ_UXlemma — The covariate is measurable with respect to the σ-algebra generated by the latent confounder and covariate, being the second coordinate of that tuple.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_UX] S.XProof (Lean source)
@[fun_prop] lemma measurable_X_σ_UX : Measurable[S.σ_UX] S.X := by intro t ht refine ⟨Prod.snd ⁻¹' t, measurable_snd ht, ?_⟩ ext ω; rfl -
measurable_AZX_σ_AZUXlemma — The treatment, treatment-side proxy, and covariate tuple is measurable with respect to the σ-algebra generated by the larger tuple that also carries the latent confounder.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3γ_U :sharedType u_4conclusionMeasurable[S.σ_AZUX] S.AZXProof (Lean source)
@[fun_prop] lemma measurable_AZX_σ_AZUX : Measurable[S.σ_AZUX] S.AZX := by intro t ht refine ⟨(fun p : Bool × γ_Z × γ_U × γ_X => (p.1, p.2.1, p.2.2.2)) ⁻¹' t, ?_, ?_⟩ · refine prodMk measurable_fst (prodMk ?_ ?_) ht · exact measurable_fst.comp measurable_snd · exact measurable_snd.comp (measurable_snd.comp measurable_snd) · ext ω; rfl
Assumptions 2 core · 3 supporting This file states the proximal proxy assumptions for average treatment effect identification. ★ integrable_Y
Proximal Assumptions
This file states the proximal proxy assumptions for average treatment effect
identification. POProximalSystem.Assumptions bundles consistency, latent
exchangeability, outcome-side and treatment-side proxy restrictions, an outcome
bridge equation, arm positivity, a global-integrability domain condition,
completeness on that domain, and the integrability conditions needed for the
bridge representation.
The causal and proxy restrictions follow the Miao, Geng, and Tchetgen Tchetgen proximal identification setup. The global-integrability domain condition is an additional restriction required by this formalization's globally totalized conditional expectation.
Proximal ATE assumption bundle for a globally totalized conditional expectation. For a proximal system with covariate, binary treatment, treatment-side and outcome-side proxies, outcome, and latent confounder, under a sampling measure, this packages consistency (SUTVA), latent exchangeability: each potential outcome is independent of treatment given the latent confounder and covariate, the two proxy restrictions that the outcome-side proxy carries no information about the outcome beyond treatment, latent confounder, and covariate and the treatment-side proxy is independent of treatment and the outcome-side proxy given the latent confounder and covariate, a measurable outcome bridge function h satisfying the bridge equation that the outcome minus h evaluated at treatment, outcome-side proxy, and covariate has zero mean conditional on treatment, treatment-side proxy, and covariate, a positivity condition that every latent-confounder-and-covariate- measurable event of positive probability meets each treatment arm with positive probability, the requirement that any measurable latent function integrable within an arm is also globally integrable, completeness within each treatment arm for globally integrable latent functions whose bridge-conditional mean vanishes there, and integrability of the two potential outcomes, the composite h(A,W,X), and the bridge function evaluated at each fixed treatment arm.
Definition (Lean source)
Compatibility projection. Under the proximal identifying assumption bundle, and given the treatment and outcome are distinct nodes, the factual outcome Y is integrable, as a consequence of the consistency assumption together with the integrability of the two potential-outcome cells Y(0) and Y(1).
Formal statement
Proof (Lean source)
3 supporting declarations (lemmas, instances)
-
integrable_mul_indicatorlemma — The product of an integrable measurable function with a variable indicator is integrable, because the indicator only ever takes the values one and zero.hypothesesconclusionIntegrable (fun ω => f ω * a.indicator x ω) μProof (Lean source)
@[fun_prop] lemma integrable_mul_indicator {α : Type*} [MeasurableSpace α] [MeasurableSingletonClass α] (a : POVar P α) (x : α) {f : P.Ω → ℝ} (hf : Integrable f μ) (hf_meas : Measurable f) : Integrable (fun ω => f ω * a.indicator x ω) μ := by refine hf.mono (hf_meas.mul (a.measurable_indicator x (measurableSet_singleton x))).aestronglyMeasurable ?_ refine Filter.Eventually.of_forall (fun ω => ?_) rcases a.indicator_eq_one_or_zero x ω with h | h <;> simp [h] -
integrable_h_armlemma — Arm-uniform bridge integrability. The bundle records integrability of the outcome bridge evaluated at each of the two treatment arms separately; this states the same fact for a treatment arm left as a variable, which is the form every downstream side condition actually needs.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3HA :Assumptions S μa :conclusionIntegrable (fun ω => HA.h (a, S.W ω, S.X ω)) μProof (Lean source)
@[fun_prop] lemma integrable_h_arm (HA : Assumptions S μ) (a : Bool) : Integrable (fun ω => HA.h (a, S.W ω, S.X ω)) μ := by cases a · exact HA.integrable_h0WX · exact HA.integrable_h1WX -
integrable_YofAlemma — Arm-uniform potential-outcome integrability. The bundle records integrability of the potential outcome under each of the two treatment arms separately; this states the same fact for a treatment arm left as a variable.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3HA :Assumptions S μa :conclusionIntegrable (S.YofA a) μProof (Lean source)
lemma integrable_YofA (HA : Assumptions S μ) (a : Bool) : Integrable (S.YofA a) μ := by cases a · exact HA.integrable_YofA0 · exact HA.integrable_YofA1
Helpers 1 core · 10 supporting This file supplies the conditional-expectation reductions used by the proximal ATE theorem: dropping proxy or treatment coordinates under conditional independence, transporting consistency through event restrictions, and ★ consistency_event
Conditional-expectation helpers for proximal ATE
This file supplies the conditional-expectation reductions used by the proximal ATE theorem: dropping proxy or treatment coordinates under conditional independence, transporting consistency through event restrictions, and exposing both field-level and bundled forms for reuse by exact and partial proximal identification modules.
Factual-outcome bridge on the treatment-arm event. From the consistency assumption in the proximal identifying assumption bundle, and given the treatment and outcome are distinct nodes, on the event for the selected treatment arm, the conditional expectation of the factual outcome given σ(A,U,X) agrees almost surely with the conditional expectation of the potential outcome Y(a) given the same σ-algebra, since Y = Y(a) pointwise there.
Formal statement
Proof (Lean source)
10 supporting declarations (lemmas, instances)
-
condExp_drop_Z'lemma — Field-level form: from proxy_YZ : Y ⟂ Z | (A,U,X) and integrability of Y, E[Y | σ(A,Z,U,X)] =ᵐ[μ] E[Y | σ(A,U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3proxy_YZ :CondIndepFun S.σ_AUX S.σ_AUX_le S.Y S.Z μhYInt :Integrable S.Y μconclusionμ[S.Y | S.σ_AZUX] =ᵐ[μ] μ[S.Y | S.σ_AUX]Proof (Lean source)
lemma condExp_drop_Z' (proxy_YZ : CondIndepFun S.σ_AUX S.σ_AUX_le S.Y S.Z μ) (hYInt : Integrable S.Y μ) : μ[S.Y | S.σ_AZUX] =ᵐ[μ] μ[S.Y | S.σ_AUX] := by -- Show σ_AZUX = σ_AUX ⊔ comap S.Z. have hσ_eq : S.σ_AZUX = S.σ_AUX ⊔ comap S.Z inferInstance := by change comap (fun ω => (S.A ω, S.Z ω, S.U ω, S.X ω)) _ = _ rw [show (inferInstance : MeasurableSpace (Bool × γ_Z × γ_U × γ_X)) = (inferInstance : MeasurableSpace Bool).prod inferInstance from rfl, MeasurableSpace.comap_prodMk, show (inferInstance : MeasurableSpace (γ_Z × γ_U × γ_X)) = (inferInstance : MeasurableSpace γ_Z).prod inferInstance from rfl, MeasurableSpace.comap_prodMk] have hAUX : S.σ_AUX = comap S.A inferInstance ⊔ comap (fun ω => (S.U ω, S.X ω)) inferInstance := by change comap (fun ω => (S.A ω, S.U ω, S.X ω)) _ = _ rw [show (inferInstance : MeasurableSpace (Bool × γ_U × γ_X)) = (inferInstance : MeasurableSpace Bool).prod inferInstance from rfl, MeasurableSpace.comap_prodMk] rw [hAUX] ac_rfl rw [hσ_eq] exact condExp_sup_comap_eq_of_condIndep (m := S.σ_AUX) S.σ_AUX_le S.measurable_Z S.measurable_Y proxy_YZ (h := id) measurable_id (by simpa using hYInt) -
condExp_drop_Zlemma — From proxy_YZ : Y ⟂ Z | (A,U,X), conclude E[Y | σ(A,Z,U,X)] =ᵐ[μ] E[Y | σ(A,U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3HA :Assumptions S μhAY :S.Avar.v ≠ S.Yvar.vconclusionμ[S.Y | S.σ_AZUX] =ᵐ[μ] μ[S.Y | S.σ_AUX]Proof (Lean source)
lemma condExp_drop_Z (HA : Assumptions S μ) (hAY : S.Avar.v ≠ S.Yvar.v) : μ[S.Y | S.σ_AZUX] =ᵐ[μ] μ[S.Y | S.σ_AUX] := condExp_drop_Z' HA.proxy_YZ (HA.integrable_Y hAY) -
condExp_h_drop_Z'lemma — Field-level form: from proxy_WAZ : W ⟂ (A,Z) | (U,X), measurability and arm-integrability of the bridge h, conclude E[h(a,W,X) | σ(A,Z,U,X)] =ᵐ[μ] E[h(a,W,X) | σ(A,U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3h_fun :Bool × γ_W × γ_X → ℝproxy_WAZ :CondIndepFun S.σ_UX S.σ_UX_le S.W (fun ω => (S.A ω, S.Z ω)) μmeasurable_h :Measurable h_funa :h_int :Integrable (fun ω => h_fun (a, S.W ω, S.X ω)) μconclusionμ[fun ω => h_fun (a, S.W ω, S.X ω) | S.σ_AZUX]=ᵐ[μ] μ[fun ω => h_fun (a, S.W ω, S.X ω) | S.σ_AUX]Proof (Lean source)
lemma condExp_h_drop_Z' {h_fun : Bool × γ_W × γ_X → ℝ} (proxy_WAZ : CondIndepFun S.σ_UX S.σ_UX_le S.W (fun ω => (S.A ω, S.Z ω)) μ) (measurable_h : Measurable h_fun) (a : Bool) (h_int : Integrable (fun ω => h_fun (a, S.W ω, S.X ω)) μ) : μ[fun ω => h_fun (a, S.W ω, S.X ω) | S.σ_AZUX] =ᵐ[μ] μ[fun ω => h_fun (a, S.W ω, S.X ω) | S.σ_AUX] := by -- σ-algebra: σ_AZUX = σ_AUX ⊔ comap Z. have hσ_eq : S.σ_AZUX = S.σ_AUX ⊔ comap S.Z inferInstance := by change comap (fun ω => (S.A ω, S.Z ω, S.U ω, S.X ω)) _ = _ rw [show (inferInstance : MeasurableSpace (Bool × γ_Z × γ_U × γ_X)) = (inferInstance : MeasurableSpace Bool).prod inferInstance from rfl, MeasurableSpace.comap_prodMk, show (inferInstance : MeasurableSpace (γ_Z × γ_U × γ_X)) = (inferInstance : MeasurableSpace γ_Z).prod inferInstance from rfl, MeasurableSpace.comap_prodMk] have hAUX : S.σ_AUX = comap S.A inferInstance ⊔ comap (fun ω => (S.U ω, S.X ω)) inferInstance := by change comap (fun ω => (S.A ω, S.U ω, S.X ω)) _ = _ rw [show (inferInstance : MeasurableSpace (Bool × γ_U × γ_X)) = (inferInstance : MeasurableSpace Bool).prod inferInstance from rfl, MeasurableSpace.comap_prodMk] rw [hAUX] ac_rfl -- Weak union: W ⟂ (A,Z) | σ_UX ⇒ W ⟂ Z | σ_UX ⊔ comap A = σ_AUX. have hWZA : CondIndepFun S.σ_UX S.σ_UX_le S.W (fun ω => (S.Z ω, S.A ω)) μ := by have h := proxy_WAZ.comp (φ := id) (ψ := fun (p : Bool × γ_Z) => (p.2, p.1)) measurable_id (by fun_prop) simpa [Function.comp_def] using h have hWZ_AUX : CondIndepFun (S.σ_UX ⊔ comap S.A inferInstance) (sup_le S.σ_UX_le S.measurable_A.comap_le) S.W S.Z μ := condIndepFun_weak_union_of_prodMk S.σ_UX_le S.measurable_W S.measurable_Z S.measurable_A hWZA -- σ_AUX = σ_UX ⊔ comap A. have hσ_AUX : S.σ_AUX = S.σ_UX ⊔ comap S.A inferInstance := by change comap (fun ω => (S.A ω, S.U ω, S.X ω)) _ = _ rw [show (inferInstance : MeasurableSpace (Bool × γ_U × γ_X)) = (inferInstance : MeasurableSpace Bool).prod inferInstance from rfl, MeasurableSpace.comap_prodMk] exact sup_comm _ _ -- Cast hWZ_AUX to use σ_AUX. have hWZ_AUX' : CondIndepFun S.σ_AUX S.σ_AUX_le S.W S.Z μ := by convert hWZ_AUX -- X is σ_AUX-measurable. have hX_m : Measurable[S.σ_AUX] S.X := by change Measurable[comap S.AUX inferInstance] S.X intro s hs refine ⟨(fun p : Bool × γ_U × γ_X => p.2.2) ⁻¹' s, ?_, rfl⟩ exact (measurable_snd.comp measurable_snd) hs -- Lift to (W, X) ⟂ Z | σ_AUX. have hWX_Z : CondIndepFun S.σ_AUX S.σ_AUX_le (fun ω => (S.W ω, S.X ω)) S.Z μ := condIndepFun_prodMk_of_measurable_left S.σ_AUX_le S.measurable_W S.measurable_Z hX_m hWZ_AUX' let h_comb : γ_W × γ_X → ℝ := fun p => h_fun (a, p.1, p.2) have h_comb_meas : Measurable h_comb := by have : Measurable (fun p : γ_W × γ_X => (a, p.1, p.2)) := by fun_prop exact measurable_h.comp this rw [hσ_eq] exact condExp_sup_comap_eq_of_condIndep (m := S.σ_AUX) S.σ_AUX_le S.measurable_Z (prodMk S.measurable_W S.measurable_X) hWX_Z h_comb_meas h_int -
condExp_h_drop_Zlemma — From proxy_WAZ : W ⟂ (A,Z) | (U,X), for any a : Bool, E[h(a,W,X) | σ(A,Z,U,X)] =ᵐ[μ] E[h(a,W,X) | σ(A,U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3HA :Assumptions S μa :conclusionμ[fun ω => HA.h (a, S.W ω, S.X ω) | S.σ_AZUX]=ᵐ[μ] μ[fun ω => HA.h (a, S.W ω, S.X ω) | S.σ_AUX]Proof (Lean source)
lemma condExp_h_drop_Z (HA : Assumptions S μ) (a : Bool) : μ[fun ω => HA.h (a, S.W ω, S.X ω) | S.σ_AZUX] =ᵐ[μ] μ[fun ω => HA.h (a, S.W ω, S.X ω) | S.σ_AUX] := by have h_int : Integrable (fun ω => HA.h (a, S.W ω, S.X ω)) μ := by cases a · exact HA.integrable_h0WX · exact HA.integrable_h1WX exact condExp_h_drop_Z' HA.proxy_WAZ HA.measurable_h a h_int -
condExp_h_drop_A'lemma — Field-level form: from proxy_WA : W ⟂ A | (U,X), measurability and arm-integrability of the bridge h, conclude E[h(a,W,X) | σ(A,U,X)] =ᵐ[μ] E[h(a,W,X) | σ(U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3h_fun :Bool × γ_W × γ_X → ℝproxy_WA :CondIndepFun S.σ_UX S.σ_UX_le S.W S.A μmeasurable_h :Measurable h_funa :h_int :Integrable (fun ω => h_fun (a, S.W ω, S.X ω)) μconclusionμ[fun ω => h_fun (a, S.W ω, S.X ω) | S.σ_AUX]=ᵐ[μ] μ[fun ω => h_fun (a, S.W ω, S.X ω) | S.σ_UX]Proof (Lean source)
lemma condExp_h_drop_A' {h_fun : Bool × γ_W × γ_X → ℝ} (proxy_WA : CondIndepFun S.σ_UX S.σ_UX_le S.W S.A μ) (measurable_h : Measurable h_fun) (a : Bool) (h_int : Integrable (fun ω => h_fun (a, S.W ω, S.X ω)) μ) : μ[fun ω => h_fun (a, S.W ω, S.X ω) | S.σ_AUX] =ᵐ[μ] μ[fun ω => h_fun (a, S.W ω, S.X ω) | S.σ_UX] := by -- σ-algebra: σ_AUX = σ_UX ⊔ comap A. have hσ_eq : S.σ_AUX = S.σ_UX ⊔ comap S.A inferInstance := by change comap (fun ω => (S.A ω, S.U ω, S.X ω)) _ = _ rw [show (inferInstance : MeasurableSpace (Bool × γ_U × γ_X)) = (inferInstance : MeasurableSpace Bool).prod inferInstance from rfl, MeasurableSpace.comap_prodMk] exact sup_comm _ _ -- X is σ_UX-measurable. have hX_m : Measurable[S.σ_UX] S.X := by change Measurable[comap S.UX inferInstance] S.X intro s hs exact ⟨Prod.snd ⁻¹' s, measurable_snd hs, rfl⟩ -- Lift to (W, X) ⟂ A | σ_UX. have hWX_A : CondIndepFun S.σ_UX S.σ_UX_le (fun ω => (S.W ω, S.X ω)) S.A μ := condIndepFun_prodMk_of_measurable_left S.σ_UX_le S.measurable_W S.measurable_A hX_m proxy_WA let h_comb : γ_W × γ_X → ℝ := fun p => h_fun (a, p.1, p.2) have h_comb_meas : Measurable h_comb := by have : Measurable (fun p : γ_W × γ_X => (a, p.1, p.2)) := by fun_prop exact measurable_h.comp this rw [hσ_eq] exact condExp_sup_comap_eq_of_condIndep (m := S.σ_UX) S.σ_UX_le S.measurable_A (prodMk S.measurable_W S.measurable_X) hWX_A h_comb_meas h_int -
condExp_h_drop_Alemma — From proxy_WAZ : W ⟂ (A,Z) | (U,X), projecting to W ⟂ A | (U,X), E[h(a,W,X) | σ(A,U,X)] =ᵐ[μ] E[h(a,W,X) | σ(U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3HA :Assumptions S μa :conclusionμ[fun ω => HA.h (a, S.W ω, S.X ω) | S.σ_AUX]=ᵐ[μ] μ[fun ω => HA.h (a, S.W ω, S.X ω) | S.σ_UX]Proof (Lean source)
lemma condExp_h_drop_A (HA : Assumptions S μ) (a : Bool) : μ[fun ω => HA.h (a, S.W ω, S.X ω) | S.σ_AUX] =ᵐ[μ] μ[fun ω => HA.h (a, S.W ω, S.X ω) | S.σ_UX] := by -- Project proxy_WAZ to W ⟂ A | σ_UX via .comp with Prod.fst. have hWA : CondIndepFun S.σ_UX S.σ_UX_le S.W S.A μ := by have h := HA.proxy_WAZ.comp (φ := id) (ψ := fst) measurable_id measurable_fst simpa [Function.comp_def] using h have h_int : Integrable (fun ω => HA.h (a, S.W ω, S.X ω)) μ := by cases a · exact HA.integrable_h0WX · exact HA.integrable_h1WX exact condExp_h_drop_A' hWA HA.measurable_h a h_int -
latent_exch_to_condExp'lemma — Field-level form: from latent_exch a : Y(a) ⟂ A | (U,X) and integrability of Y(a), conclude E[Y(a) | σ(A,U,X)] =ᵐ[μ] E[Y(a) | σ(U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3a :latent_exch :CondIndepFun S.σ_UX S.σ_UX_le (S.YofA a) S.A μhYaInt :Integrable (S.YofA a) μconclusionμ[S.YofA a | S.σ_AUX] =ᵐ[μ] μ[S.YofA a | S.σ_UX]Proof (Lean source)
lemma latent_exch_to_condExp' (a : Bool) (latent_exch : CondIndepFun S.σ_UX S.σ_UX_le (S.YofA a) S.A μ) (hYaInt : Integrable (S.YofA a) μ) : μ[S.YofA a | S.σ_AUX] =ᵐ[μ] μ[S.YofA a | S.σ_UX] := by -- Show σ_AUX = σ_UX ⊔ comap S.A. have hσ_eq : S.σ_AUX = S.σ_UX ⊔ comap S.A inferInstance := by change comap (fun ω => (S.A ω, S.U ω, S.X ω)) _ = _ rw [show (inferInstance : MeasurableSpace (Bool × γ_U × γ_X)) = (inferInstance : MeasurableSpace Bool).prod inferInstance from rfl, MeasurableSpace.comap_prodMk] exact sup_comm _ _ rw [hσ_eq] exact condExp_sup_comap_eq_of_condIndep (m := S.σ_UX) S.σ_UX_le S.measurable_A (S.measurable_YofA a) latent_exch (h := id) measurable_id (by simpa using hYaInt) -
latent_exch_to_condExplemma — From latent_exch a : Y(a) ⟂ A | (U,X): E[Y(a) | σ(A,U,X)] =ᵐ[μ] E[Y(a) | σ(U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3HA :Assumptions S μa :conclusionμ[S.YofA a | S.σ_AUX] =ᵐ[μ] μ[S.YofA a | S.σ_UX]Proof (Lean source)
lemma latent_exch_to_condExp (HA : Assumptions S μ) (a : Bool) : μ[S.YofA a | S.σ_AUX] =ᵐ[μ] μ[S.YofA a | S.σ_UX] := by have hYaInt : Integrable (S.YofA a) μ := by cases a · exact HA.integrable_YofA0 · exact HA.integrable_YofA1 exact latent_exch_to_condExp' a (HA.latent_exch a) hYaInt -
consistency_event'lemma — Field-level form: from consistency, integrability of Y and Y(a), on {A=a} we have E[Y | σ(A,U,X)] =ᵐ[μ.restrict {A=a}] E[Y(a) | σ(A,U,X)].hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3HC :POSystem.Consistency Pa :hAY :S.Avar.v ≠ S.Yvar.vhYInt :Integrable S.Y μhYaInt :Integrable (S.YofA a) μconclusionμ[S.Y | S.σ_AUX] =ᵐ[μ.restrict {ω | S.A ω = a}] μ[S.YofA a | S.σ_AUX]Proof (Lean source)
lemma consistency_event' (HC : POSystem.Consistency P) (a : Bool) (hAY : S.Avar.v ≠ S.Yvar.v) (hYInt : Integrable S.Y μ) (hYaInt : Integrable (S.YofA a) μ) : μ[S.Y | S.σ_AUX] =ᵐ[μ.restrict {ω | S.A ω = a}] μ[S.YofA a | S.σ_AUX] := by -- Step 1: Y =ᵐ[μ.restrict {A=a}] Y(a) pointwise from consistency. have hYeq : S.Y =ᵐ[μ.restrict {ω | S.A ω = a}] S.YofA a := by have hs : MeasurableSet {ω : P.Ω | S.A ω = a} := S.measurable_A (measurableSet_singleton a) apply ae_restrict_of_forall_mem hs intro ω hω exact (POVar.cf_eq_factual_on_event HC S.Yvar S.Avar a hAY.symm hω).symm set s : Set P.Ω := {ω | S.A ω = a} have hs_in_m : MeasurableSet[S.σ_AUX] s := by refine ⟨Prod.fst ⁻¹' {a}, ?_, ?_⟩ · exact measurable_fst (measurableSet_singleton a) · ext ω; rfl have hs : MeasurableSet s := S.measurable_A (measurableSet_singleton a) let h : P.Ω → ℝ := fun ω => S.Y ω - S.YofA a ω have hint : Integrable h μ := hYInt.sub hYaInt -- s.indicator h = 0 μ-a.e. have hind_zero : s.indicator h =ᵐ[μ] 0 := by have h_zero_on_s : h =ᵐ[μ.restrict s] 0 := by filter_upwards [hYeq] with ω hω simp [h, hω] simpa using indicator_aeEq_of_aeEq_restrict hs h_zero_on_s have hh_zero_on_s : μ[h | S.σ_AUX] =ᵐ[μ.restrict s] 0 := by have hindCE_zero : s.indicator (μ[h | S.σ_AUX]) =ᵐ[μ] 0 := condExp_indicator_aeEq_zero hs_in_m hint hind_zero have hindCE_zero' : s.indicator (μ[h | S.σ_AUX]) =ᵐ[μ] s.indicator (0 : P.Ω → ℝ) := by simpa using hindCE_zero simpa using aeEq_restrict_of_indicator_aeEq hs hindCE_zero' have hCE_sub : μ[h | S.σ_AUX] =ᵐ[μ] μ[S.Y | S.σ_AUX] - μ[S.YofA a | S.σ_AUX] := by condexp_linearity have hCE_sub_restrict : μ[h | S.σ_AUX] =ᵐ[μ.restrict s] μ[S.Y | S.σ_AUX] - μ[S.YofA a | S.σ_AUX] := ae_restrict_of_ae hCE_sub have hdiff_zero : (μ[S.Y | S.σ_AUX] - μ[S.YofA a | S.σ_AUX]) =ᵐ[μ.restrict s] 0 := hCE_sub_restrict.symm.trans hh_zero_on_s filter_upwards [hdiff_zero] with ω hω have : (μ[S.Y | S.σ_AUX]) ω - (μ[S.YofA a | S.σ_AUX]) ω = 0 := by simpa [Pi.sub_apply, Pi.zero_apply] using hω linarith -
eq_zero_globally_of_eq_zero_on_armlemma — From positivity_arm a and a σ_UX-measurable function that is μ-a.e. zero on the arm {A=a}, conclude it is μ-a.e. zero globally.hypothesesγ_X :sharedType u_1γ_Z :sharedType u_2γ_W :sharedType u_3HA :Assumptions S μa :f :P.Ω → ℝhf_meas :Measurable[S.σ_UX] fhf_zero_on_arm :f =ᵐ[μ.restrict {ω | S.A ω = a}] 0conclusionf =ᵐ[μ] 0Proof (Lean source)
lemma eq_zero_globally_of_eq_zero_on_arm (HA : Assumptions S μ) (a : Bool) {f : P.Ω → ℝ} (hf_meas : Measurable[S.σ_UX] f) (hf_zero_on_arm : f =ᵐ[μ.restrict {ω | S.A ω = a}] 0) : f =ᵐ[μ] 0 := by set s : Set P.Ω := {ω | S.A ω = a} with hs_def have hs : MeasurableSet s := S.measurable_A (measurableSet_singleton a) -- Carrier B := {ω | f ω ≠ 0}, σ_UX-measurable. set B : Set P.Ω := {ω | f ω ≠ 0} with hB_def have hB_eq : B = f ⁻¹' {0}ᶜ := by ext ω; simp [B, hB_def] have hB_meas : MeasurableSet[S.σ_UX] B := by rw [hB_eq] exact hf_meas (MeasurableSet.compl (measurableSet_singleton (0 : ℝ))) -- arm hypothesis: μ(B ∩ s) = 0. have hB_meas' : MeasurableSet B := S.σ_UX_le _ hB_meas have hBs_zero : μ (B ∩ s) = 0 := by have h1 : (μ.restrict s) B = 0 := by have h := hf_zero_on_arm rw [EventuallyEq, MeasureTheory.ae_iff] at h rw [hB_def] simpa using h rwa [MeasureTheory.Measure.restrict_apply hB_meas'] at h1 -- positivity_arm gives μ B = 0, i.e. f =ᵐ[μ] 0. have hB_zero : μ B = 0 := HA.positivity_arm a B hB_meas hBs_zero rw [EventuallyEq, MeasureTheory.ae_iff] simpa [hB_def] using hB_zero
Main 2 core · 0 supporting This file proves the proximal causal identification equalities from the POProximalSystem.Assumptions bundle. ★ Eofyofa_eq_Eh★ ate_proximal
Proximal ATE Identification
This file proves the proximal causal identification equalities from the
POProximalSystem.Assumptions bundle. The theorem
Assumptions.Eofyofa_eq_Eh shows that each treatment-specific counterfactual
mean equals the corresponding bridge-function mean,
integral Y(a) = integral h(a,W,X). The theorem Assumptions.ate_proximal
then identifies the average treatment effect as
integral h(true,W,X) - integral h(false,W,X).
The proof uses the helper reductions from Proximal.Helpers, a Doob-Dynkin
factorization through (U,X), treatment-arm completeness, and arm positivity
to globalize the arm-wise bridge equality.
Proximal ATE identification (prop:po-proximal-ate step 1). Under the proximal identifying assumption bundle, including global-domain completeness within treatment level and integrability of the potential outcomes and bridge-function values, provided the treatment and outcome are distinct nodes, for the selected treatment level, the counterfactual mean outcome equals the mean of the proximal bridge function evaluated at that level: E[Y(a)] = E[h(a,W,X)].
Formal statement
Proof (Lean source)
Proximal ATE identification. Under the proximal identifying assumption bundle and given the treatment and outcome are distinct nodes, the average treatment effect E[Y(1)] − E[Y(0)] equals the bridge-function contrast E[h(1,W,X)] − E[h(0,W,X)].