Estimation.MinimaxATE.ConstCenterHalf
Half-center constant-propensity lower-bound construction for MinimaxATE: explicit witnesses, χ² indistinguishability, Ingster-style calibration, and parametric variants.
Construction 8 core · 9 supporting This file defines the paired-cell perturbation family used for the base structure-agnostic average treatment effect lower bound. ★ validDGP_hat★ validDGP_perturbed
Base Perturbation Construction
This file defines the paired-cell perturbation family used for the base
structure-agnostic average treatment effect lower bound. The declarations signOf and Δ
encode the balanced Rademacher signs and prove the elementary facts signOf_sq, Δ_sq,
Δ_mem, Δ_le_one, and neg_one_le_Δ.
The centered nuisance functions are mhat and ghat, and the perturbed nuisances are
mPerturbed and gPerturbed. The validity lemmas denom_pos, validDGP_hat, and
validDGP_perturbed show that the null and perturbed nuisances define finite observed-data
models in the stated parameter regime.
This maps a Boolean position to its plus-or-minus-one sign.
Paired-cell Rademacher bump used to perturb the nuisance functions.
Centered propensity estimate that assigns one half to every covariate value.
Centered outcome-regression estimate that assigns one half in both treatment arms.
Perturbed propensity obtained by shifting the centered propensity along the Rademacher bump.
Definition (Lean source)
Perturbed outcome regression with an unchanged control arm and a nonlinear treated-arm shift.
The null construction's centered propensity and outcome-regression functions, both fixed at one half, define a valid finite observed-data model, i.e. take values in [0,1].
Given nonnegative bump magnitudes α and β with α + 2β ≤ 1/2, the perturbed propensity and outcome-regression functions indexed by a Rademacher sign vector lam define a valid finite observed-data model, i.e. take values in [0,1].
Formal statement
Proof (Lean source)
9 supporting declarations (lemmas, instances)
-
Δ_memtheorem — The Rademacher bump only takes the values one and minus one.Proof (Lean source)
theorem Δ_mem (lam : Fin K → Bool) (x : Fin K × Bool) : Δ lam x = 1 ∨ Δ lam x = -1 := by unfold Δ rcases signOf_mem x.2 with h2 | h2 <;> rcases signOf_mem (lam x.1) with h1 | h1 <;> simp [h2, h1] -
neg_one_le_Δtheorem — The Rademacher bump is always at least minus one. -
denom_postheorem — The treated-arm denominator in the perturbed outcome regression is positive in the valid parameter regime.hypothesesconclusion0 < 1 - 2 * β * Δ lam x
ChiSqOverlap 2 core · 2 supporting This file computes the singleton probabilities and the single-observation chi-squared overlap for the base paired-cell perturbation family. ★ chiSqOverlap_eq
Base Chi-Squared Second-Moment Overlap
This file computes the singleton probabilities and the single-observation chi-squared overlap
for the base paired-cell perturbation family. The helper obsLaw_real_singleton identifies
the real mass of a singleton observation, chiSqOverlap defines the one-observation
second-moment overlap, and obsReal_perturbed_eq gives a denominator-free formula for each
perturbed observed-data mass.
The main theorem chiSqOverlap_eq proves the closed form used by the Ingster
indistinguishability argument. "Overlap" here means the χ² second-moment overlap between two
perturbed observed-data laws relative to the null; it is not the causal positivity/overlap
assumption.
The one-observation χ² second-moment overlap of two perturbed laws relative to the null.
Definition (Lean source)
Closed form of the one-observation χ² overlap. For nonnegative bump magnitudes α and β with α + 2β ≤ 1/2, the regime keeping every perturbed nuisance in [0,1], and any two Rademacher sign vectors lam, lam' indexing perturbed laws, the one-observation χ² second-moment overlap of the two perturbed laws relative to the null equals 1 + (2(α²+2αβ+3β²)/K)·Σⱼ signOf(lam j)·signOf(lam' j).
Formal statement
Proof (Lean source)
2 supporting declarations (lemmas, instances)
-
obsLaw_real_singletontheorem — The one-observation law assigns each observed point exactly its finite observed-data mass.Proof (Lean source)
theorem obsLaw_real_singleton {C : Type*} [Fintype C] [Nonempty C] [MeasurableSpace C] [MeasurableSingletonClass C] {m : C → ℝ} {g : Bool → C → ℝ} (hv : ValidDGP m g) (z : Obs C) : (obsLaw hv).real {z} = obsReal m g z := by rw [measureReal_def, obsLaw, PMF.toMeasure_apply_singleton _ _ (measurableSet_singleton z), obsPMF, PMF.ofFintype_apply, ENNReal.toReal_ofReal (obsReal_nonneg hv z)] -
obsReal_perturbed_eqtheorem — The perturbed observed-data mass has an explicit denominator-free value at every treatment-outcome cell.hypothesesProof (Lean source)
theorem obsReal_perturbed_eq (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (lam : Fin K → Bool) (x : Fin K × Bool) (d y : Bool) : obsReal (mPerturbed β lam) (gPerturbed α β lam) (x, d, y) = (card (Fin K × Bool) : ℝ)⁻¹ * (match d, y with | true, true => (1 / 2 + α * Δ lam x) / 2 | true, false => (1 / 2 - (α + 2 * β) * Δ lam x) / 2 | false, true => (1 / 2 + β * Δ lam x) / 2 | false, false => (1 / 2 + β * Δ lam x) / 2) := by have hd : (1 - 2 * β * Δ lam x) ≠ 0 := (denom_pos hβ hαβ hα lam x).ne' unfold obsReal mPerturbed gPerturbed cases d <;> cases y <;> simp only [Bool.false_eq_true, if_false, if_true] <;> · rw [mul_assoc] refine congrArg _ ?_ field_simp try ring
ExplicitWitness 6 core · 6 supporting This file builds the baseline finite two-point witness for the structure-agnostic ATE lower bound. ★ explicit_minimax_lower_bound
Explicit Two-Point Witness
This file builds the baseline finite two-point witness for the structure-agnostic ATE lower
bound. It defines the centered null law Qfalse, the uniform sign weights signWeight, the
sign-indexed perturbed laws Qpert, and the mixed alternative Qtrue, together with their
probability-measure lemmas.
The helper real_le_minimaxMiss relates any in-class DGP's miss probability to the minimax
miss functional. The construction explicitWitness packages the null and mixed alternative
into a TwoPointWitness under a supplied total-variation bound, and
explicit_minimax_lower_bound turns that witness into the conditional finite-cell minimax lower
bound used by the chi-squared core.
The n-sample law of the centered null data-generating process.
Definition (Lean source)
Equal mixture weight on every Rademacher sign vector.
The n-sample law for one perturbed data-generating process indexed by a sign vector.
Alternative n-sample law formed by uniformly mixing over all perturbation signs.
Assemble the explicit Le Cam witness from the centered null and the uniform perturbation mixture.
Definition (Lean source)
Fix nonnegative bump magnitudes α and β with α + 2β ≤ 1/2 meeting the Rademacher perturbation budgets β² ≤ εm and (α+β)²/(1−2β)² ≤ εg for nonnegative error tolerances εg, εm, and suppose the centered null law and the uniform mixture of perturbed laws are statistically close, at total-variation distance at most 1/2. Then for any measurable estimator of the average treatment effect, the worst-case-over-class probability that it misses the true ATE by s = β(α+β)/(1−4β²) is at least 1/4.
Formal statement
Proof (Lean source)
6 supporting declarations (lemmas, instances)
-
inClass_nulltheorem — The centered null nuisance functions are in the nuisance class whenever the budgets are nonnegative.hypotheseshεg :0 ≤ εghεm :0 ≤ εm -
signWeight_sumtheorem — The uniform weights over sign vectors have total mass one.Proof (Lean source)
theorem signWeight_sum (K : ℕ) : ∑ lam : Fin K → Bool, signWeight K lam = 1 := by have hpos : (card (Fin K → Bool)) ≠ 0 := Fintype.card_ne_zero simp only [signWeight] rw [Finset.sum_const, Finset.card_univ, nsmul_eq_mul, ENNReal.mul_inv_cancel (by exact_mod_cast hpos) (ENNReal.natCast_ne_top _)] -
Qfalse_isProbtheorem — The centered null n-sample law is a probability measure.Proof (Lean source)
theorem Qfalse_isProb (K n : ℕ) [NeZero K] : IsProbabilityMeasure (Qfalse K n) := by unfold Qfalse; infer_instance -
Qpert_isProbtheorem — Each perturbed n-sample law is a probability measure in the valid parameter regime.hypothesesconclusionIsProbabilityMeasure (Qpert hα hβ hαβ n lam)Proof (Lean source)
theorem Qpert_isProb [NeZero K] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (n : ℕ) (lam : Fin K → Bool) : IsProbabilityMeasure (Qpert hα hβ hαβ n lam) := by unfold Qpert; infer_instance -
Qtrue_isProbtheorem — The uniformly mixed alternative n-sample law is a probability measure in the valid parameter regime.hypothesesconclusionIsProbabilityMeasure (Qtrue (K := K) hα hβ hαβ n)Proof (Lean source)
theorem Qtrue_isProb [NeZero K] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (n : ℕ) : IsProbabilityMeasure (Qtrue (K := K) hα hβ hαβ n) := by haveI : ∀ lam : Fin K → Bool, IsProbabilityMeasure (Qpert hα hβ hαβ n lam) := fun lam => Qpert_isProb hα hβ hαβ n lam unfold Qtrue exact mixture_isProbabilityMeasure _ (signWeight_sum K) _ -
real_le_minimaxMisstheorem — The miss probability of any in-class data-generating process is bounded by the minimax miss probability.Proof (Lean source)
theorem real_le_minimaxMiss [NeZero K] {m : Fin K × Bool → ℝ} {g : Bool → Fin K × Bool → ℝ} (hin : InClass mhat ghat εg εm m g) (est : (Fin n → Obs (Fin K × Bool)) → ℝ) (s : ℝ) : (productLaw hin.valid n).real {x | s ≤ |est x - ate g|} ≤ minimaxMiss mhat ghat εg εm n est s := by simpa [nMiss] using nMiss_le_minimaxMiss (⟨(m, g), hin⟩ : InClassDGP mhat ghat εg εm) (est := est) (s := s)
ChiSquaredCore 1 core · 8 supporting This file proves the statistical indistinguishability bound for the baseline structure-agnostic ATE construction. ★ minimax_lower_bound
Chi-Squared Core
This file proves the statistical indistinguishability bound for the baseline structure-agnostic
ATE construction. It first supplies finite-support facts such as
absolutelyContinuous_of_singleton_pos, productLaw_real_singleton, Qfalse_singleton_ne_zero,
and Qtrue_real_singleton.
The core identity one_add_chiSqDiv_Qtrue_Qfalse evaluates the mixture second moment. The
theorem chiSqDiv_Qtrue_Qfalse_le_one applies ingster_bound, and
tvDist_Qfalse_Qtrue_le_half converts that chi-squared bound into total-variation
indistinguishability. The final theorem minimax_lower_bound discharges the abstract
two-point witness and gives the unconditional finite-cell minimax lower bound.
Structure-agnostic minimax lower bound (unconditional). Fix nonnegative bump magnitudes α and β with α + 2β ≤ 1/2 meeting the Rademacher perturbation budgets β² ≤ εm and (α+β)²/(1−2β)² ≤ εg for nonnegative outcome- and propensity-error tolerances εg, εm, in the sample-size regime 2n²γ² ≤ K·log 2 with γ = α²+2αβ+3β² and 2γ ≤ 1. Then for any measurable estimator of the average treatment effect from n i.i.d. paired-cell observations, the worst-case-over-class probability that it misses the true ATE by s = β(α+β)/(1−4β²), over the structure-agnostic nuisance class centered at the constant estimates (m̂, ĝ) = (1/2, 1/2), is at least 1/4 — the doubly-robust product rate is unbeatable.
Formal statement
Proof (Lean source)
8 supporting declarations (lemmas, instances)
-
absolutelyContinuous_of_singleton_postheorem — Absolute continuity from full support. If ν charges every singleton, every measure is absolutely continuous w.r.t. ν (a ν-null set must be empty).Proof (Lean source)
theorem absolutelyContinuous_of_singleton_pos {Ω : Type*} [MeasurableSpace Ω] (μ ν : Measure Ω) (hν : ∀ x, ν {x} ≠ 0) : μ ≪ ν := by intro s hs have hempty : s = ∅ := by by_contra hne obtain ⟨x, hx⟩ := Set.nonempty_iff_ne_empty.mpr hne exact hν x (le_antisymm (hs ▸ measure_mono (Set.singleton_subset_iff.mpr hx)) zero_le) rw [hempty]; exact measure_empty -
productLaw_real_singletontheorem — The .real product point mass of an n-sample DGP law factorizes over draws.Proof (Lean source)
theorem productLaw_real_singleton [NeZero K] {m : Fin K × Bool → ℝ} {g : Bool → Fin K × Bool → ℝ} (hv : ValidDGP m g) (ω : Fin n → Obs (Fin K × Bool)) : (productLaw hv n).real {ω} = ∏ i, obsReal m g (ω i) := by rw [productLaw, pi_real_singleton] exact Finset.prod_congr rfl fun i _ => obsLaw_real_singleton hv (ω i) -
Qfalse_singleton_ne_zerotheorem — The null n-sample law charges every point (its mass is (8K)⁻ⁿ > 0).Proof (Lean source)
theorem Qfalse_singleton_ne_zero [NeZero K] (ω : Fin n → Obs (Fin K × Bool)) : Qfalse K n {ω} ≠ 0 := by have hpos : 0 < (Qfalse K n).real {ω} := by rw [Qfalse, productLaw_real_singleton] apply Finset.prod_pos intro i _ have hC : (0 : ℝ) < (card (Fin K × Bool) : ℝ) := by have := Fintype.card_pos (α := Fin K × Bool) exact_mod_cast this simp only [obsReal, mhat, ghat] rcases (ω i).2.1 with _ | _ <;> rcases (ω i).2.2 with _ | _ <;> · simp only [Bool.false_eq_true, if_false, if_true]; positivity intro h rw [Measure.real, h, ENNReal.toReal_zero] at hpos exact lt_irrefl _ hpos -
signWeight_toRealtheorem — The real-valued uniform sign weight (2^K)⁻¹.Proof (Lean source)
theorem signWeight_toReal (lam : Fin K → Bool) : (signWeight K lam).toReal = ((2 : ℝ) ^ K)⁻¹ := by have hcard : (card (Fin K → Bool) : ℝ≥0∞) = (2 : ℝ≥0∞) ^ K := by rw [Fintype.card_fun, Fintype.card_bool, Fintype.card_fin]; push_cast; ring rw [signWeight, hcard, ENNReal.toReal_inv, ENNReal.toReal_pow] norm_num -
Qtrue_real_singletontheorem — The alternative law's .real point mass: a uniform mixture over sign vectors.hypothesesconclusion= ∑ lam : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ∏ i, obsReal (mPerturbed β lam) (gPerturbed α β lam) (ω i)Proof (Lean source)
theorem Qtrue_real_singleton [NeZero K] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (ω : Fin n → Obs (Fin K × Bool)) : (Qtrue hα hβ hαβ n).real {ω} = ∑ lam : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ∏ i, obsReal (mPerturbed β lam) (gPerturbed α β lam) (ω i) := by haveI : ∀ lam : Fin K → Bool, IsProbabilityMeasure (Qpert hα hβ hαβ n lam) := fun lam => Qpert_isProb hα hβ hαβ n lam rw [Qtrue, Measure.real, mixture_apply] rw [ENNReal.toReal_sum (fun lam _ => ENNReal.mul_ne_top (by rw [signWeight]; exact ENNReal.inv_ne_top.2 (by simp)) (measure_ne_top _ _))] refine Finset.sum_congr rfl fun lam _ => ?_ rw [ENNReal.toReal_mul, signWeight_toReal] congr 1 exact productLaw_real_singleton (validDGP_perturbed hα hβ hαβ lam) ω -
one_add_chiSqDiv_Qtrue_Qfalsetheorem — Mixture second-moment identity. On the finite product space, 1 + χ²(Qtrue‖Qfalse) is the uniform average over Rademacher sign pairs of the single-observation overlap raised to the sample size n.hypothesesProof (Lean source)
theorem one_add_chiSqDiv_Qtrue_Qfalse [NeZero K] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) : 1 + chiSqDiv (Qtrue hα hβ hαβ n) (Qfalse K n) = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (chiSqOverlap α β lam lam') ^ n := by haveI : IsProbabilityMeasure (Qtrue (K := K) hα hβ hαβ n) := Qtrue_isProb hα hβ hαβ n haveI : IsProbabilityMeasure (Qfalse K n) := Qfalse_isProb K n have hac : Qtrue (K := K) hα hβ hαβ n ≪ Qfalse K n := absolutelyContinuous_of_singleton_pos _ _ Qfalse_singleton_ne_zero rw [finite_one_add_chiSqDiv (Qtrue hα hβ hαβ n) (Qfalse K n) hac] -- expand each summand have hstep : ∀ ω : Fin n → Obs (Fin K × Bool), ((Qtrue hα hβ hαβ n).real {ω}) ^ 2 / (Qfalse K n).real {ω} = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * ∏ i, (obsReal (mPerturbed β lam) (gPerturbed α β lam) (ω i) * obsReal (mPerturbed β lam') (gPerturbed α β lam') (ω i) / obsReal mhat ghat (ω i)) := by intro ω rw [Qtrue_real_singleton hα hβ hαβ ω, Qfalse, productLaw_real_singleton (validDGP_hat (K := K)) ω, sq, Finset.sum_mul_sum] rw [Finset.sum_div] refine Finset.sum_congr rfl fun lam _ => ?_ rw [Finset.sum_div] refine Finset.sum_congr rfl fun lam' _ => ?_ rw [Finset.prod_div_distrib, Finset.prod_mul_distrib] ring rw [Finset.sum_congr rfl fun ω _ => hstep ω] -- swap sums and apply Fintype.sum_pow rw [Finset.sum_comm] refine Finset.sum_congr rfl fun lam _ => ?_ rw [Finset.sum_comm] refine Finset.sum_congr rfl fun lam' _ => ?_ rw [← Finset.mul_sum] congr 1 unfold chiSqOverlap rw [Fintype.sum_pow] -
chiSqDiv_Qtrue_Qfalse_le_onetheorem — The χ² indistinguishability bound. In the regime 2n²γ² ≤ K·log 2 (with γ = α²+2αβ+3β², 2γ ≤ 1), the χ²-divergence of the alternative mixture from the null is at most 1.hypothesesProof (Lean source)
theorem chiSqDiv_Qtrue_Qfalse_le_one [NeZero K] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (hγ : 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ≤ 1) (hreg : 2 * (n : ℝ) ^ 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ^ 2 ≤ (K : ℝ) * log 2) : chiSqDiv (Qtrue hα hβ hαβ n) (Qfalse K n) ≤ 1 := by have hγ0 : 0 ≤ α ^ 2 + 2 * α * β + 3 * β ^ 2 := by positivity have hid := one_add_chiSqDiv_Qtrue_Qfalse (K := K) (n := n) hα hβ hαβ -- rewrite overlap by its closed form have hov : ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (chiSqOverlap α β lam lam') ^ n = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (1 + (2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) / (K : ℝ)) * ∑ j, signOf (lam j) * signOf (lam' j)) ^ n := by refine Finset.sum_congr rfl fun lam _ => ?_ refine Finset.sum_congr rfl fun lam' _ => ?_ rw [chiSqOverlap_eq hα hβ hαβ lam lam'] have hbound := ingster_bound K n hγ0 hγ hreg rw [← hov] at hbound rw [← hid] at hbound linarith -
tvDist_Qfalse_Qtrue_le_halftheorem — Total-variation indistinguishability. In the same regime, the null and alternative n-sample laws are statistically 1/2-close in total variation — discharging the hypothesis carried abstractly in ExplicitWitness.lean.hypothesesProof (Lean source)
theorem tvDist_Qfalse_Qtrue_le_half [NeZero K] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (hγ : 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ≤ 1) (hreg : 2 * (n : ℝ) ^ 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ^ 2 ≤ (K : ℝ) * log 2) : tvDist (Qfalse K n) (Qtrue hα hβ hαβ n) ≤ 1 / 2 := by haveI : IsProbabilityMeasure (Qtrue (K := K) hα hβ hαβ n) := Qtrue_isProb hα hβ hαβ n haveI : IsProbabilityMeasure (Qfalse K n) := Qfalse_isProb K n have hac : Qtrue (K := K) hα hβ hαβ n ≪ Qfalse K n := absolutelyContinuous_of_singleton_pos _ _ Qfalse_singleton_ne_zero have hchi := chiSqDiv_Qtrue_Qfalse_le_one (K := K) (n := n) hα hβ hαβ hγ hreg rw [tvDist_symm] calc tvDist (Qtrue hα hβ hαβ n) (Qfalse K n) ≤ (1 / 2) * sqrt (chiSqDiv (Qtrue hα hβ hαβ n) (Qfalse K n)) := tvDist_le_half_sqrt_chiSqDiv _ _ hac (Integrable.of_finite) _ ≤ (1 / 2) * sqrt 1 := by apply mul_le_mul_of_nonneg_left _ (by norm_num) exact Real.sqrt_le_sqrt hchi _ = 1 / 2 := by rw [Real.sqrt_one]; ring
ContinuousX 4 core · 6 supporting This file lifts the finite-cell structure-agnostic ATE lower bound to a continuous-covariate experiment with ancillary within-cell variation. ★ two_point_lower_bound_continuous
Continuous Covariates
This file lifts the finite-cell structure-agnostic ATE lower bound to a continuous-covariate
experiment with ancillary within-cell variation. The law ancillaryLaw models independent
within-cell draws, while QfalseCont and QtrueCont tensor that common ancillary factor with
the finite null and mixed alternative laws.
The probability-measure lemmas QfalseCont_isProb and QtrueCont_isProb set up the product
experiment. The theorem chiSqDiv_QtrueCont_QfalseCont_le_one transfers finite-cell
chi-squared indistinguishability through the common ancillary factor, and
tvDist_QfalseCont_QtrueCont_le_half gives the corresponding total-variation bound. The final
statement two_point_lower_bound_continuous is a two-hypothesis miss-probability lower bound
for estimators that observe both the finite cell data and ancillary continuous positions.
Joint law of the ancillary within-cell positions in the n-sample experiment.
Definition (Lean source)
Continuous-covariate null law, pairing the finite-cell null sample with ancillary positions.
Continuous-covariate alternative law, pairing the finite-cell mixture with ancillary positions.
Fix nonnegative bump magnitudes α and β with α + 2β ≤ 1/2, in the sample-size regime 2n²γ² ≤ K·log 2 with γ = α²+2αβ+3β² and 2γ ≤ 1. For any measurable estimator est of the average treatment effect that observes both the finite paired-cell data and n independent ancillary continuous within-cell positions drawn from an arbitrary probability space, the larger of the two miss probabilities — under the mixed alternative law and under the null law — that est misses the corresponding true ATE (2β(α+β)/(1−4β²) or 0) by β(α+β)/(1−4β²) is at least 1/4.
Formal statement
Proof (Lean source)
6 supporting declarations (lemmas, instances)
-
ancillaryLaw_isProbinstance — The ancillary n-sample law is a probability measure when the one-draw law is a probability measure.instance ancillaryLaw_isProb (ρ : Measure W) [IsProbabilityMeasure ρ] (n : ℕ) : IsProbabilityMeasure (ancillaryLaw ρ n) := by unfold ancillaryLaw; infer_instance -
QfalseCont_isProbtheorem — The continuous-covariate null law is a probability measure.Proof (Lean source)
theorem QfalseCont_isProb [NeZero K] (ρ : Measure W) [IsProbabilityMeasure ρ] : IsProbabilityMeasure (QfalseCont K n ρ) := by haveI : IsProbabilityMeasure (Qfalse K n) := Qfalse_isProb K n unfold QfalseCont; infer_instance -
QtrueCont_isProbtheorem — The continuous-covariate alternative law is a probability measure in the valid parameter regime.hypothesesconclusionIsProbabilityMeasure (QtrueCont (K := K) hα hβ hαβ n ρ)Proof (Lean source)
theorem QtrueCont_isProb [NeZero K] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (ρ : Measure W) [IsProbabilityMeasure ρ] : IsProbabilityMeasure (QtrueCont (K := K) hα hβ hαβ n ρ) := by haveI : IsProbabilityMeasure (Qtrue (K := K) hα hβ hαβ n) := Qtrue_isProb hα hβ hαβ n unfold QtrueCont; infer_instance -
chiSqDiv_QtrueCont_QfalseCont_le_onetheorem — The continuous-covariate alternative is chi-squared close to the null in the finite-cell regime.hypothesesNeZero Kρ :hα :0 ≤ αhβ :0 ≤ βhαβ :α + 2 * β ≤ 1 / 2hγ :2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ≤ 1hreg :2 * (n : ℝ) ^ 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ^ 2 ≤ (K : ℝ) * log 2conclusionProof (Lean source)
theorem chiSqDiv_QtrueCont_QfalseCont_le_one [NeZero K] (ρ : Measure W) [IsProbabilityMeasure ρ] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (hγ : 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ≤ 1) (hreg : 2 * (n : ℝ) ^ 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ^ 2 ≤ (K : ℝ) * log 2) : chiSqDiv (QtrueCont hα hβ hαβ n ρ) (QfalseCont K n ρ) ≤ 1 := by haveI : IsProbabilityMeasure (Qtrue (K := K) hα hβ hαβ n) := Qtrue_isProb hα hβ hαβ n haveI : IsProbabilityMeasure (Qfalse K n) := Qfalse_isProb K n have hac : Qtrue (K := K) hα hβ hαβ n ≪ Qfalse K n := absolutelyContinuous_of_singleton_pos _ _ Qfalse_singleton_ne_zero unfold QtrueCont QfalseCont rw [chiSqDiv_prod_ancillary (Qtrue hα hβ hαβ n) (Qfalse K n) (ancillaryLaw ρ n) hac (Integrable.of_finite)] exact chiSqDiv_Qtrue_Qfalse_le_one hα hβ hαβ hγ hreg -
integrable_sq_rnDeriv_QtrueCont_QfalseConttheorem — The squared density deviation for the continuous experiment is integrable under the null.hypothesesconclusionIntegrable (fun z => (((QtrueCont hα hβ hαβ n ρ).rnDeriv (QfalseCont K n ρ) z).toReal - 1) ^ 2) (QfalseCont K n ρ)Proof (Lean source)
theorem integrable_sq_rnDeriv_QtrueCont_QfalseCont [NeZero K] (ρ : Measure W) [IsProbabilityMeasure ρ] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) : Integrable (fun z => (((QtrueCont hα hβ hαβ n ρ).rnDeriv (QfalseCont K n ρ) z).toReal - 1) ^ 2) (QfalseCont K n ρ) := by haveI : IsProbabilityMeasure (Qtrue (K := K) hα hβ hαβ n) := Qtrue_isProb hα hβ hαβ n haveI : IsProbabilityMeasure (Qfalse K n) := Qfalse_isProb K n haveI : IsProbabilityMeasure (QfalseCont K n ρ) := QfalseCont_isProb ρ haveI : Nonempty (Fin K × Bool) := by haveI : NeZero K := ‹_›; exact ⟨(⟨0, Nat.pos_of_ne_zero (NeZero.ne K)⟩, true)⟩ haveI : Nonempty (Fin n → Obs (Fin K × Bool)) := ⟨fun _ => Classical.arbitrary _⟩ have hac : Qtrue (K := K) hα hβ hαβ n ≪ Qfalse K n := absolutelyContinuous_of_singleton_pos _ _ Qfalse_singleton_ne_zero -- The finite-cell squared deviation `g`, on the finite type `Fin n → Obs (Fin K × Bool)`. set g : (Fin n → Obs (Fin K × Bool)) → ℝ := fun x => (((Qtrue hα hβ hαβ n).rnDeriv (Qfalse K n) x).toReal - 1) ^ 2 with hg_def -- Product density factorizes: `dQtrueCont/dQfalseCont z = (dQtrue/dQfalse z.1)·(dρⁿ/dρⁿ z.2)`. have hfac : (QtrueCont hα hβ hαβ n ρ).rnDeriv (QfalseCont K n ρ) =ᵐ[QfalseCont K n ρ] fun z => (Qtrue hα hβ hαβ n).rnDeriv (Qfalse K n) z.1 * (ancillaryLaw ρ n).rnDeriv (ancillaryLaw ρ n) z.2 := by unfold QtrueCont QfalseCont exact rnDeriv_prod_eq (Qtrue hα hβ hαβ n) (Qfalse K n) (ancillaryLaw ρ n) (ancillaryLaw ρ n) hac (Measure.AbsolutelyContinuous.refl _) -- The ancillary self-density is a.e. `1`, lifted to the product via `snd`. have hself : (fun z : (Fin n → Obs (Fin K × Bool)) × (Fin n → W) => (ancillaryLaw ρ n).rnDeriv (ancillaryLaw ρ n) z.2) =ᵐ[QfalseCont K n ρ] fun _ => (1 : ℝ≥0∞) := by have hsnd : MeasureTheory.Measure.QuasiMeasurePreserving (Prod.snd : (Fin n → Obs (Fin K × Bool)) × (Fin n → W) → (Fin n → W)) (QfalseCont K n ρ) (ancillaryLaw ρ n) := by unfold QfalseCont exact Measure.quasiMeasurePreserving_snd exact hsnd.ae_eq_comp (g := fun w => (ancillaryLaw ρ n).rnDeriv (ancillaryLaw ρ n) w) (g' := fun _ => (1 : ℝ≥0∞)) (ancillaryLaw ρ n).rnDeriv_self -- Combine: the squared deviation a.e. equals `g ∘ fst`. have hae : (fun z => (((QtrueCont hα hβ hαβ n ρ).rnDeriv (QfalseCont K n ρ) z).toReal - 1) ^ 2) =ᵐ[QfalseCont K n ρ] fun z => g z.1 := by filter_upwards [hfac, hself] with z hz hz1 rw [hz, hz1, mul_one, hg_def] refine Integrable.congr ?_ hae.symm -- `g ∘ fst` is measurable. have hgmeas : Measurable g := (((Measure.measurable_rnDeriv _ _).ennreal_toReal.sub measurable_const).pow_const 2) have hmeas : AEStronglyMeasurable (fun z => g z.1) (QfalseCont K n ρ) := (hgmeas.comp measurable_fst).aestronglyMeasurable -- `g ≥ 0` (it's a square) and bounded by its finite max. obtain ⟨x₀, hx₀⟩ := Finite.exists_max g refine (integrable_const (g x₀)).mono' hmeas (Filter.Eventually.of_forall fun z => ?_) rw [Real.norm_eq_abs, abs_of_nonneg (by rw [hg_def]; positivity)] exact hx₀ z.1 -
tvDist_QfalseCont_QtrueCont_le_halftheorem — The continuous-covariate null and alternative are indistinguishable up to total variation one half.hypothesesNeZero Kρ :hα :0 ≤ αhβ :0 ≤ βhαβ :α + 2 * β ≤ 1 / 2hγ :2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ≤ 1hreg :2 * (n : ℝ) ^ 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ^ 2 ≤ (K : ℝ) * log 2conclusionProof (Lean source)
theorem tvDist_QfalseCont_QtrueCont_le_half [NeZero K] (ρ : Measure W) [IsProbabilityMeasure ρ] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (hγ : 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ≤ 1) (hreg : 2 * (n : ℝ) ^ 2 * (α ^ 2 + 2 * α * β + 3 * β ^ 2) ^ 2 ≤ (K : ℝ) * log 2) : tvDist (QfalseCont K n ρ) (QtrueCont hα hβ hαβ n ρ) ≤ 1 / 2 := by haveI : IsProbabilityMeasure (QtrueCont (K := K) hα hβ hαβ n ρ) := QtrueCont_isProb (K := K) hα hβ hαβ ρ haveI : IsProbabilityMeasure (QfalseCont K n ρ) := QfalseCont_isProb ρ have hac : QtrueCont hα hβ hαβ n ρ ≪ QfalseCont K n ρ := by unfold QtrueCont QfalseCont exact (absolutelyContinuous_of_singleton_pos _ _ Qfalse_singleton_ne_zero).prod (Measure.AbsolutelyContinuous.refl _) have hint := integrable_sq_rnDeriv_QtrueCont_QfalseCont (K := K) (n := n) ρ hα hβ hαβ have hchi := chiSqDiv_QtrueCont_QfalseCont_le_one (K := K) (n := n) ρ hα hβ hαβ hγ hreg rw [tvDist_symm] calc tvDist (QtrueCont hα hβ hαβ n ρ) (QfalseCont K n ρ) ≤ (1 / 2) * sqrt (chiSqDiv (QtrueCont hα hβ hαβ n ρ) (QfalseCont K n ρ)) := tvDist_le_half_sqrt_chiSqDiv _ _ hac hint _ ≤ (1 / 2) * sqrt 1 := by apply mul_le_mul_of_nonneg_left _ (by norm_num) exact Real.sqrt_le_sqrt hchi _ = 1 / 2 := by rw [Real.sqrt_one]; ring
Gap 2 core · 1 supporting This file computes the exact average treatment effect gap for the base paired-cell perturbation family. ★ ate_gPerturbed★ ate_gap
Base ATE Gap
This file computes the exact average treatment effect gap for the base paired-cell
perturbation family. The theorem ate_ghat records that the centered null estimate has zero
ATE. The private calculation perPair collapses the two positions in a paired cell, and
ate_gPerturbed sums those contributions to show that every sign-indexed perturbation has the
same ATE 2β(α+β)/(1−4β²).
The public theorem ate_gap packages the separation between the perturbed construction and the
null estimate; this is the ATE separation used in the finite two-point lower bound.
Exact ATE of the perturbed construction. For nonnegative bump magnitudes α and β with α + 2β ≤ 1/2 and any Rademacher sign vector lam, the average treatment effect of the perturbed construction equals 2β(α+β)/(1−4β²), independent of lam.
Formal statement
Proof (Lean source)
For nonnegative bump magnitudes α and β with α + 2β ≤ 1/2 and any Rademacher sign vector lam, the gap between the perturbed construction's average treatment effect and the null estimate's average treatment effect (which is zero) equals 2β(α+β)/(1−4β²).
Formal statement
Proof (Lean source)
1 supporting declaration (lemmas, instances)
Ingster 1 core · 0 supporting This file proves the Ingster chi-squared average bound for Rademacher sign mixtures with a common coordinate weight. ★ ingster_bound
Ingster Average Bound
This file proves the Ingster chi-squared average bound for Rademacher sign mixtures with a
common coordinate weight. The theorem ingster_bound controls the double average of
(1 + (2γ/K) S)^n over pairs of sign vectors by 2 when 0 ≤ γ, 2γ ≤ 1, and
2 n² γ² ≤ K log 2.
This analytic inequality is the step that turns the explicit one-observation overlap formula into total-variation indistinguishability for the minimax lower bound.
For a nonnegative coefficient γ with 2γ ≤ 1 satisfying the regularity budget 2n²γ² ≤ K·log 2, the uniform double average, over pairs of Rademacher sign vectors lam, lam' : Fin K → Bool, of (1 + (2γ/K)·Σⱼ signOf(lam j)·signOf(lam' j))^n is at most 2.
Formal statement
Proof (Lean source)
Membership 1 core · 4 supporting This file proves that the base paired-cell perturbation family lies inside the structure-agnostic nuisance class when the propensity and outcome-regression error budgets are satisfied. ★ inClass_perturbed
Base Class Membership
This file proves that the base paired-cell perturbation family lies inside the
structure-agnostic nuisance class when the propensity and outcome-regression error budgets are
satisfied. The supporting estimates are l2sq_mPerturbed for the exact propensity error,
l2sq_gPerturbed_false for the unchanged control arm, gPerturbed_true_sub_half for the
treated-arm pointwise deviation, and l2sq_gPerturbed_true_le for the treated-arm error bound.
The capstone inClass_perturbed connects the explicit construction to the finite minimax
lower-bound framework by producing an InClass witness under the stated budgets.
Class membership. For nonnegative bump magnitudes α and β with α + 2β ≤ 1/2 meeting the Rademacher perturbation budgets β² ≤ εm and (α+β)²/(1−2β)² ≤ εg, the perturbed data-generating process (mλ, gλ) indexed by a Rademacher sign vector lam lies in the structure-agnostic nuisance class ℱ(εg, εm) around the centered estimates (m̂, ĝ) = (1/2, 1/2).
Formal statement
Proof (Lean source)
4 supporting declarations (lemmas, instances)
-
l2sq_mPerturbedtheorem — The propensity perturbation has exact squared L² size β²: it is a Rademacher bump of magnitude β on Δ.Proof (Lean source)
theorem l2sq_mPerturbed [NeZero K] (lam : Fin K → Bool) : l2sq (mPerturbed β lam) mhat = β ^ 2 := by have hbump : (mPerturbed β lam) = (fun x => mhat x + β * (-(Δ lam x))) := by funext x simp only [mPerturbed, mhat] ring rw [hbump] exact l2sq_bump mhat β (fun x => -(Δ lam x)) (fun x => by have : (-(Δ lam x)) ^ 2 = (Δ lam x) ^ 2 := by ring rw [this, Δ_sq]) -
l2sq_gPerturbed_falsetheorem — The control outcome arm is unchanged (gλ(0,·) = 1/2 = ĝ(0,·)), so its L² error is 0.Proof (Lean source)
theorem l2sq_gPerturbed_false (lam : Fin K → Bool) : l2sq (gPerturbed α β lam false) (ghat false) = 0 := by have h : gPerturbed α β lam false = ghat false := by funext x simp only [gPerturbed, ghat, Bool.false_eq_true, if_false] rw [h, l2sq_self] -
gPerturbed_true_sub_halftheorem — The treated outcome arm: its pointwise deviation from ĝ(1) = 1/2 is (α+β)·Δ/(1 − 2β·Δ).hypothesesconclusiongPerturbed α β lam true x - 1 / 2 = (α + β) * Δ lam x / (1 - 2 * β * Δ lam x)Proof (Lean source)
theorem gPerturbed_true_sub_half (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (lam : Fin K → Bool) (x : Fin K × Bool) : gPerturbed α β lam true x - 1 / 2 = (α + β) * Δ lam x / (1 - 2 * β * Δ lam x) := by have hd := denom_pos hβ hαβ hα lam x have hd0 : (1 - 2 * β * Δ lam x) ≠ 0 := ne_of_gt hd simp only [gPerturbed, if_true] rw [div_sub', div_eq_div_iff hd0 hd0] · ring · exact hd0 -
l2sq_gPerturbed_true_letheorem — Uniform bound on the treated arm's squared L² error: every pointwise term is ≤ (α+β)²/(1 − 2β)², so the average is too.hypothesesconclusionProof (Lean source)
theorem l2sq_gPerturbed_true_le [NeZero K] (hα : 0 ≤ α) (hβ : 0 ≤ β) (hαβ : α + 2 * β ≤ 1 / 2) (lam : Fin K → Bool) : l2sq (gPerturbed α β lam true) (ghat true) ≤ (α + β) ^ 2 / (1 - 2 * β) ^ 2 := by have hβ4 : β ≤ 1 / 4 := by linarith set C := Fin K × Bool have hC : (Fintype.card C : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr Fintype.card_ne_zero have hCpos : (0 : ℝ) < (Fintype.card C : ℝ) := by rcases (Fintype.card C).eq_zero_or_pos with h | h · exact absurd (Nat.cast_eq_zero.mpr h) hC · exact_mod_cast h -- denominator `1 − 2β` is positive have hden : (0 : ℝ) < 1 - 2 * β := by linarith have hden2 : (0 : ℝ) < (1 - 2 * β) ^ 2 := by positivity -- each summand equals `(α+β)²/(1 − 2β·Δ)²` and is bounded by `(α+β)²/(1 − 2β)²` have hterm : ∀ x : C, (gPerturbed α β lam true x - ghat true x) ^ 2 ≤ (α + β) ^ 2 / (1 - 2 * β) ^ 2 := by intro x have hghat : ghat true x = (1 / 2 : ℝ) := by simp [ghat] rw [hghat, gPerturbed_true_sub_half hα hβ hαβ lam x] have hd := denom_pos hβ hαβ hα lam x have hdne : (1 - 2 * β * Δ lam x) ≠ 0 := ne_of_gt hd -- rewrite the squared term using `Δ² = 1` have hsq : ((α + β) * Δ lam x / (1 - 2 * β * Δ lam x)) ^ 2 = (α + β) ^ 2 / (1 - 2 * β * Δ lam x) ^ 2 := by rw [div_pow, mul_pow, Δ_sq, mul_one] rw [hsq] -- compare denominators: `(1 − 2β)² ≤ (1 − 2β·Δ)²` have hdenΔ : (0 : ℝ) < (1 - 2 * β * Δ lam x) ^ 2 := by positivity have hcmp : (1 - 2 * β) ^ 2 ≤ (1 - 2 * β * Δ lam x) ^ 2 := by rcases Δ_mem lam x with h | h · rw [h]; nlinarith · rw [h]; nlinarith [hβ] apply div_le_div_of_nonneg_left (by positivity) hden2 hcmp -- average of bounded terms is bounded rw [l2sq] have hsum : ∑ x : C, (gPerturbed α β lam true x - ghat true x) ^ 2 ≤ ∑ _x : C, (α + β) ^ 2 / (1 - 2 * β) ^ 2 := Finset.sum_le_sum (fun x _ => hterm x) rw [Finset.sum_const, Finset.card_univ, nsmul_eq_mul] at hsum calc (Fintype.card C : ℝ)⁻¹ * ∑ x : C, (gPerturbed α β lam true x - ghat true x) ^ 2 ≤ (Fintype.card C : ℝ)⁻¹ * ((Fintype.card C : ℝ) * ((α + β) ^ 2 / (1 - 2 * β) ^ 2)) := by apply mul_le_mul_of_nonneg_left hsum positivity _ = (α + β) ^ 2 / (1 - 2 * β) ^ 2 := by field_simp
MSE 1 core · 0 supporting This file converts the structure-agnostic average treatment effect lower bound from a probability-of-miss statement into an expected mean-squared-error statement. ★ minimax_lower_bound_mse
Mean-Squared-Error Lower Bound
This file converts the structure-agnostic average treatment effect lower bound from a
probability-of-miss statement into an expected mean-squared-error statement. The theorem
minimax_lower_bound_mse combines minimax_lower_bound with the Chebyshev bridge
nMiss_sq_le_nMSE and extracts a single in-class witness DGP from either the null law or the
uniform perturbed mixture.
The result isolates the finite-model argument showing that the doubly-robust product rate is an unavoidable expected-risk floor for some data-generating process in the nuisance class.
Structure-agnostic minimax lower bound, expected-risk (MSE) form. Fix nonnegative bump magnitudes α and β with α + 2β ≤ 1/2 meeting the Rademacher perturbation budgets β² ≤ εm and (α+β)²/(1−2β)² ≤ εg for nonnegative error tolerances εg, εm, in the sample-size regime 2n²γ² ≤ K·log 2 with γ = α²+2αβ+3β² and 2γ ≤ 1. Then for any measurable estimator of the average treatment effect, there is a data-generating process in the structure-agnostic nuisance class on which its mean-squared error is at least s²/4, with s = β(α+β)/(1−4β²) ≍ √(εg·εm) — the doubly-robust product rate is an unbeatable expected-squared-error floor. This is the weaker, (1−γ)-factored consequence (γ = 3/4) of the quantile bound, in the form used by Balakrishnan et al.
Formal statement
Proof (Lean source)
Parametric 4 core · 13 supporting This file proves the parametric component of the structure-agnostic ATE minimax lower bound. ★ parametric_lower_bound
Parametric Lower Bound
This file proves the parametric component of the structure-agnostic ATE minimax lower bound. It uses a two-point constant-nuisance experiment to show that ordinary sampling noise imposes a one-over-sample-size squared-risk floor even apart from the product-bias obstruction.
The construction fixes a constant propensity mC, a null outcome regression gNull, and a
treated-arm shift gPert. The supporting lemmas prove validity (validDGP_null,
validDGP_pert), the exact ATEs (ate_gNull, ate_gPert), class membership
(inClass_null, inClass_pert), and the single-observation and product chi-squared bounds
(one_add_chiSqDiv_obsPert_obsNull, chiSqDiv_productLaw_le_one). The public capstone
parametric_lower_bound applies the two-point reduction to show that every measurable estimator
misses by δ / 2 with probability at least 1 / 4 somewhere in the class under the stated
budget and indistinguishability conditions.
The constant propensity center m ≡ m₀.
Definition (Lean source)
The null outcome regression: g₁ on the treated arm, g₀ on the control arm.
The perturbed outcome regression: the treated arm is shifted to g₁ + δ.
Parametric Ω(1/n) minimax lower bound for structure-agnostic ATE estimation. Around a constant nuisance center (m₀, g₀, g₁) with all three coordinates strictly between 0 and 1, with a nonnegative treated-arm shift δ satisfying g₁ + δ ≤ 1 that lies inside the outcome-error budget δ² ≤ εg for a nonnegative propensity-error tolerance εm, and in the sample-size regime n·m₀δ²/(g₁(1−g₁)) ≤ log 2, for any measurable estimator of the average treatment effect the worst-case-over-class probability that it misses the true ATE by s = δ/2 is at least 1/4.
Formal statement
Proof (Lean source)
13 supporting declarations (lemmas, instances)
-
validDGP_nulltheorem — Validity of the null DGP.hypotheseshm0 :0 < m₀hm1 :m₀ < 1hg0 :0 < g₀hg0' :g₀ < 1hg1 :0 < g₁hg1' :g₁ < 1Proof (Lean source)
theorem validDGP_null (hm0 : 0 < m₀) (hm1 : m₀ < 1) (hg0 : 0 < g₀) (hg0' : g₀ < 1) (hg1 : 0 < g₁) (hg1' : g₁ < 1) : ValidDGP (C := C) (mC m₀) (gNull g₀ g₁) where m_mem _ := ⟨hm0.le, hm1.le⟩ g_mem d _ := by cases d <;> simp [gNull] <;> constructor <;> linarith -
validDGP_perttheorem — Validity of the perturbed DGP (using 0 ≤ δ and g₁ + δ ≤ 1).hypotheseshm0 :0 < m₀hm1 :m₀ < 1hg0 :0 < g₀hg0' :g₀ < 1hg1 :0 < g₁hδ :0 ≤ δhδU :g₁ + δ ≤ 1Proof (Lean source)
theorem validDGP_pert (hm0 : 0 < m₀) (hm1 : m₀ < 1) (hg0 : 0 < g₀) (hg0' : g₀ < 1) (hg1 : 0 < g₁) (hδ : 0 ≤ δ) (hδU : g₁ + δ ≤ 1) : ValidDGP (C := C) (mC m₀) (gPert g₀ g₁ δ) where m_mem _ := ⟨hm0.le, hm1.le⟩ g_mem d _ := by cases d <;> simp [gPert] <;> constructor <;> linarith -
ate_gNulltheorem — The ATE of the null DGP is g₁ − g₀.conclusionate (C := C) (gNull g₀ g₁) = g₁ - g₀ -
ate_gPerttheorem — The ATE of the perturbed DGP is (g₁ + δ) − g₀.conclusionate (C := C) (gPert g₀ g₁ δ) = (g₁ + δ) - g₀ -
l2sq_gPert_gNulltheorem — The squared L² distance between the perturbed and null treated arms is δ²; control arms agree. Hence each arm's error from gNull is ≤ εg once δ² ≤ εg.hypothesesd :Proof (Lean source)
theorem l2sq_gPert_gNull (d : Bool) : l2sq (C := C) (gPert g₀ g₁ δ d) (gNull g₀ g₁ d) = if d then δ ^ 2 else 0 := by have hC : (Fintype.card C : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr Fintype.card_ne_zero cases d · simp [l2sq, gPert, gNull] · simp only [l2sq, gPert, gNull, if_true] have : ∀ _x : C, (g₁ + δ - g₁) ^ 2 = δ ^ 2 := by intro _; ring rw [Finset.sum_congr rfl (fun x _ => this x), Finset.sum_const, Finset.card_univ, nsmul_eq_mul] field_simp -
inClass_nulltheorem — The null DGP lies in the class around (mC, gNull) (zero nuisance error).hypotheses -
inClass_perttheorem — The perturbed DGP lies in the class around (mC, gNull) when δ² ≤ εg.hypothesesProof (Lean source)
theorem inClass_pert {εg εm : ℝ} (hv : ValidDGP (C := C) (mC m₀) (gPert g₀ g₁ δ)) (hbudget : δ ^ 2 ≤ εg) (hεm : 0 ≤ εm) : InClass (mC m₀) (gNull g₀ g₁) εg εm (mC m₀) (gPert (C := C) g₀ g₁ δ) where valid := hv err_g d := by rw [l2sq_gPert_gNull] cases d · simp only [Bool.false_eq_true, ↓reduceIte]; exact le_trans (sq_nonneg δ) hbudget · simpa using hbudget err_m := by rw [l2sq_self]; exact hεm -
absolutelyContinuous_of_singleton_postheorem — Absolute continuity from full support. If ν charges every singleton, every measure is absolutely continuous w.r.t. ν.Proof (Lean source)
theorem absolutelyContinuous_of_singleton_pos {Ω : Type*} [MeasurableSpace Ω] (μ ν : Measure Ω) (hν : ∀ x, ν {x} ≠ 0) : μ ≪ ν := by intro s hs have hempty : s = ∅ := by by_contra hne obtain ⟨x, hx⟩ := Set.nonempty_iff_ne_empty.mpr hne exact hν x (le_antisymm (hs ▸ measure_mono (Set.singleton_subset_iff.mpr hx)) zero_le) rw [hempty]; exact measure_empty -
obsLaw_null_singleton_ne_zerotheorem — The null single-observation law charges every point (its mass is positive).hypothesesconclusionobsLaw hv {z} ≠ 0Proof (Lean source)
theorem obsLaw_null_singleton_ne_zero (hv : ValidDGP (C := C) (mC m₀) (gNull g₀ g₁)) (hm0 : 0 < m₀) (hm1 : m₀ < 1) (hg0 : 0 < g₀) (hg0' : g₀ < 1) (hg1 : 0 < g₁) (hg1' : g₁ < 1) (z : Obs C) : obsLaw hv {z} ≠ 0 := by have hpos : 0 < (obsLaw hv).real {z} := by rw [obsLaw_real_singleton hv z] have hC : (0 : ℝ) < (Fintype.card C : ℝ) := by have := Fintype.card_pos (α := C); exact_mod_cast this simp only [obsReal, mC, gNull] rcases z.2.1 with _ | _ <;> rcases z.2.2 with _ | _ <;> · simp only [Bool.false_eq_true, if_false, if_true] have h1 : (0:ℝ) < 1 - m₀ := by linarith have h2 : (0:ℝ) < 1 - g₀ := by linarith have h3 : (0:ℝ) < 1 - g₁ := by linarith positivity intro h rw [Measure.real, h, ENNReal.toReal_zero] at hpos exact lt_irrefl _ hpos -
one_add_chiSqDiv_obsPert_obsNulltheorem — Single-observation χ² (closed form). With μ = obsLaw pert, ν = obsLaw null, the (shifted) χ²-divergence is 1 + m₀ δ²/(g₁(1−g₁)).hypotheseshm0 :0 < m₀hm1 :m₀ < 1hg0 :0 < g₀hg0' :g₀ < 1hg1 :0 < g₁hg1' :g₁ < 1Proof (Lean source)
theorem one_add_chiSqDiv_obsPert_obsNull (hvN : ValidDGP (C := C) (mC m₀) (gNull g₀ g₁)) (hvP : ValidDGP (C := C) (mC m₀) (gPert g₀ g₁ δ)) (hm0 : 0 < m₀) (hm1 : m₀ < 1) (hg0 : 0 < g₀) (hg0' : g₀ < 1) (hg1 : 0 < g₁) (hg1' : g₁ < 1) : 1 + chiSqDiv (obsLaw hvP) (obsLaw hvN) = 1 + m₀ * δ ^ 2 / (g₁ * (1 - g₁)) := by have hC : (Fintype.card C : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr Fintype.card_ne_zero have hCpos : (0 : ℝ) < (Fintype.card C : ℝ) := by have := Fintype.card_pos (α := C); exact_mod_cast this have hg1ne : g₁ ≠ 0 := hg1.ne' have h1g1ne : (1 - g₁) ≠ 0 := by intro h; rw [sub_eq_zero] at h; linarith have hg0ne : g₀ ≠ 0 := hg0.ne' have h1g0ne : (1 - g₀) ≠ 0 := by intro h; rw [sub_eq_zero] at h; linarith have hm0ne : m₀ ≠ 0 := hm0.ne' have h1m0ne : (1 - m₀) ≠ 0 := by intro h; rw [sub_eq_zero] at h; linarith have hac : obsLaw hvP ≪ obsLaw hvN := absolutelyContinuous_of_singleton_pos _ _ (obsLaw_null_singleton_ne_zero hvN hm0 hm1 hg0 hg0' hg1 hg1') rw [finite_one_add_chiSqDiv (obsLaw hvP) (obsLaw hvN) hac] -- rewrite each singleton mass to its real form have hrw : ∀ z : Obs C, ((obsLaw hvP).real {z}) ^ 2 / ((obsLaw hvN).real {z}) = (obsReal (mC m₀) (gPert g₀ g₁ δ) z) ^ 2 / (obsReal (mC m₀) (gNull g₀ g₁) z) := by intro z; rw [obsLaw_real_singleton hvP z, obsLaw_real_singleton hvN z] rw [Finset.sum_congr rfl (fun z _ => hrw z)] -- split the sum over `C × (Bool × Bool)` rw [Fintype.sum_prod_type] have hcell : ∀ x : C, ∑ p : Bool × Bool, (obsReal (mC m₀) (gPert g₀ g₁ δ) (x, p)) ^ 2 / (obsReal (mC m₀) (gNull g₀ g₁) (x, p)) = (Fintype.card C : ℝ)⁻¹ * (1 - m₀) + (Fintype.card C : ℝ)⁻¹ * m₀ * (1 + δ ^ 2 / (g₁ * (1 - g₁))) := by intro x rw [Fintype.sum_prod_type] simp only [obsReal, mC, gNull, gPert, Fintype.sum_bool, Bool.false_eq_true, if_false, if_true] field_simp ring rw [Finset.sum_congr rfl (fun x _ => hcell x), Finset.sum_const, Finset.card_univ, nsmul_eq_mul] field_simp ring -
chiSqDiv_obsPert_obsNull_eqtheorem — The single-observation χ² is nonnegative and equals m₀ δ²/(g₁(1−g₁)).hypotheseshm0 :0 < m₀hm1 :m₀ < 1hg0 :0 < g₀hg0' :g₀ < 1hg1 :0 < g₁hg1' :g₁ < 1Proof (Lean source)
theorem chiSqDiv_obsPert_obsNull_eq (hvN : ValidDGP (C := C) (mC m₀) (gNull g₀ g₁)) (hvP : ValidDGP (C := C) (mC m₀) (gPert g₀ g₁ δ)) (hm0 : 0 < m₀) (hm1 : m₀ < 1) (hg0 : 0 < g₀) (hg0' : g₀ < 1) (hg1 : 0 < g₁) (hg1' : g₁ < 1) : chiSqDiv (obsLaw hvP) (obsLaw hvN) = m₀ * δ ^ 2 / (g₁ * (1 - g₁)) := by have h := one_add_chiSqDiv_obsPert_obsNull hvN hvP hm0 hm1 hg0 hg0' hg1 hg1' linarith -
chiSqDiv_productLaw_le_onetheorem — χ² indistinguishability of the n-sample laws. In the regime n · m₀ δ²/(g₁(1−g₁)) ≤ log 2, the χ²-divergence of the n-sample perturbed law from the null is at most 1. Proved by tensorization (one_add_chiSqDiv_pi_iid) and (1 + x)^n ≤ exp(n x) ≤ 2.hypothesesn :ℕhm0 :0 < m₀hm1 :m₀ < 1hg0 :0 < g₀hg0' :g₀ < 1hg1 :0 < g₁hg1' :g₁ < 1hreg :(n : ℝ) * (m₀ * δ ^ 2 / (g₁ * (1 - g₁))) ≤ log 2conclusionProof (Lean source)
theorem chiSqDiv_productLaw_le_one {n : ℕ} (hvN : ValidDGP (C := C) (mC m₀) (gNull g₀ g₁)) (hvP : ValidDGP (C := C) (mC m₀) (gPert g₀ g₁ δ)) (hm0 : 0 < m₀) (hm1 : m₀ < 1) (hg0 : 0 < g₀) (hg0' : g₀ < 1) (hg1 : 0 < g₁) (hg1' : g₁ < 1) (hreg : (n : ℝ) * (m₀ * δ ^ 2 / (g₁ * (1 - g₁))) ≤ log 2) : chiSqDiv (productLaw hvP n) (productLaw hvN n) ≤ 1 := by haveI : IsProbabilityMeasure (obsLaw hvP) := obsLaw_isProb hvP haveI : IsProbabilityMeasure (obsLaw hvN) := obsLaw_isProb hvN have hac : obsLaw hvP ≪ obsLaw hvN := absolutelyContinuous_of_singleton_pos _ _ (obsLaw_null_singleton_ne_zero hvN hm0 hm1 hg0 hg0' hg1 hg1') -- the single-observation χ² value `χ²₁ = m₀ δ²/(g₁(1−g₁))` set χ₁ := m₀ * δ ^ 2 / (g₁ * (1 - g₁)) with hχ₁ have hχ₁0 : 0 ≤ χ₁ := by rw [hχ₁]; apply div_nonneg (by positivity) have : (0:ℝ) < 1 - g₁ := by linarith positivity have hsingle : 1 + chiSqDiv (obsLaw hvP) (obsLaw hvN) = 1 + χ₁ := by rw [hχ₁]; exact one_add_chiSqDiv_obsPert_obsNull hvN hvP hm0 hm1 hg0 hg0' hg1 hg1' -- tensorize have htensor : 1 + chiSqDiv (productLaw hvP n) (productLaw hvN n) = (1 + χ₁) ^ n := by rw [productLaw, productLaw, one_add_chiSqDiv_pi_iid (obsLaw hvP) (obsLaw hvN) hac n, hsingle] -- `(1 + χ₁)^n ≤ exp(n χ₁) ≤ 2` have hpow : (1 + χ₁) ^ n ≤ exp ((n : ℝ) * χ₁) := by calc (1 + χ₁) ^ n ≤ (exp χ₁) ^ n := by exact pow_le_pow_left₀ (by linarith) (by linarith [Real.add_one_le_exp χ₁]) n _ = exp ((n : ℝ) * χ₁) := by rw [← Real.exp_nat_mul] have hexp2 : exp ((n : ℝ) * χ₁) ≤ 2 := by have h2 : exp (log 2) = 2 := Real.exp_log (by norm_num) calc exp ((n : ℝ) * χ₁) ≤ exp (log 2) := Real.exp_le_exp.2 (by rw [hχ₁] at hreg ⊢; exact hreg) _ = 2 := h2 linarith [htensor, hpow, hexp2] -
tvDist_productLaw_le_halftheorem — Total-variation indistinguishability of the n-sample laws.hypothesesn :ℕhm0 :0 < m₀hm1 :m₀ < 1hg0 :0 < g₀hg0' :g₀ < 1hg1 :0 < g₁hg1' :g₁ < 1hreg :(n : ℝ) * (m₀ * δ ^ 2 / (g₁ * (1 - g₁))) ≤ log 2conclusionProof (Lean source)
theorem tvDist_productLaw_le_half {n : ℕ} (hvN : ValidDGP (C := C) (mC m₀) (gNull g₀ g₁)) (hvP : ValidDGP (C := C) (mC m₀) (gPert g₀ g₁ δ)) (hm0 : 0 < m₀) (hm1 : m₀ < 1) (hg0 : 0 < g₀) (hg0' : g₀ < 1) (hg1 : 0 < g₁) (hg1' : g₁ < 1) (hreg : (n : ℝ) * (m₀ * δ ^ 2 / (g₁ * (1 - g₁))) ≤ log 2) : tvDist (productLaw hvN n) (productLaw hvP n) ≤ 1 / 2 := by haveI : IsProbabilityMeasure (productLaw hvP n) := productLaw_isProb hvP n haveI : IsProbabilityMeasure (productLaw hvN n) := productLaw_isProb hvN n have hac : obsLaw hvP ≪ obsLaw hvN := absolutelyContinuous_of_singleton_pos _ _ (obsLaw_null_singleton_ne_zero hvN hm0 hm1 hg0 hg0' hg1 hg1') have hacP : productLaw hvP n ≪ productLaw hvN n := by rw [productLaw, productLaw]; exact pi_iid_absolutelyContinuous _ _ hac n have hchi := chiSqDiv_productLaw_le_one hvN hvP hm0 hm1 hg0 hg0' hg1 hg1' hreg rw [tvDist_symm] calc tvDist (productLaw hvP n) (productLaw hvN n) ≤ (1 / 2) * sqrt (chiSqDiv (productLaw hvP n) (productLaw hvN n)) := tvDist_le_half_sqrt_chiSqDiv _ _ hacP Integrable.of_finite _ ≤ (1 / 2) * sqrt 1 := by apply mul_le_mul_of_nonneg_left _ (by norm_num); exact Real.sqrt_le_sqrt hchi _ = 1 / 2 := by rw [Real.sqrt_one]; ring