Estimation.Minimax­ATE.Varying­Center­Case2

Second, propensity-dominant varying-center MinimaxATE construction: perturbed sample laws, positivity algebra, class membership, χ² overlap, and lower-bound gap.

Construction 9 core · 4 supporting This file defines the second cell-varying perturbation family for the structure-agnostic average treatment effect lower bound, in the regime where the propensity-error budget is larger than the outcome-regression budget. ★ mPert2_eq★ validDGP_pert2

Propensity-Dominant Construction

This file defines the second cell-varying perturbation family for the structure-agnostic average treatment effect lower bound, in the regime where the propensity-error budget is larger than the outcome-regression budget. It proves that the constructed finite observed-data laws are valid probability models.

structure VarConstr2 reviewed
Causalean.Estimation.MinimaxATE

Second (propensity-dominant) cell-varying construction data for the same style of Rademacher perturbation as VarConstr but with the roles of the two nuisances swapped, so the propensity carries the larger deviation. It packages two bump-magnitude scalars, the larger on the propensity and the smaller on the treated outcome arm, together with a nuisance center given by the pair-indexed functions m₀, g₀ and g₁ for the propensity and the two potential-outcome regressions, plus the inequalities certifying that both bump magnitudes are nonnegative, the center is pointwise strictly inside (0,1) for m₀, g₀ and g₁, a worst-case bound forcing the perturbed treated outcome regression to stay at most one, which also keeps the perturbation denominator positive, the propensity bump coefficient not to exceed one, keeping the perturbed propensity nonnegative, and the perturbed propensity to stay at most one.

Definition (Lean source)
K :
Bump magnitude on the propensity (the *large* deviation here).
α :
Bump magnitude on the treated outcome arm (the *small* deviation here).
β :
Cell-varying propensity center `m̂`.
m₀ :
Fin K → ℝ
Cell-varying control-arm center `ĝ(0,·)`.
g₀ :
Fin K → ℝ
Cell-varying treated-arm center `ĝ(1,·)`.
g₁ :
Fin K → ℝ
:
0 ≤ α
:
0 ≤ β
hm₀0 :
∀ j, 0 < m₀ j
hm₀1 :
∀ j, m₀ j < 1
hg₀0 :
∀ j, 0 < g₀ j
hg₀1 :
∀ j, g₀ j < 1
hg₁0 :
∀ j, 0 < g₁ j
hg₁1 :
∀ j, g₁ j < 1
Worst-case upper bound keeping `gλ(1) = g₁/D ≤ 1` (equivalently `g₁ ≤ D_min`); also forces `D_min = 1 − β/g₁ − αβ > 0`, so the denominator is positive.
hgU :
∀ j, g₁ j + β / g₁ j + α * β ≤ 1
The propensity bump coefficient `κ = β/g₁ + αg₁ − α²βg₁` does not exceed `1` (keeps `mλ = m₀(1 + κΔ) ≥ 0`).
:
∀ j, β / g₁ j + α * g₁ j - α ^ 2 * β * g₁ j ≤ 1
Worst-case upper bound keeping `mλ ≤ 1`.
hmU :
∀ j, m₀ j * (1 + (β / g₁ j + α * g₁ j - α ^ 2 * β * g₁ j)) ≤ 1
def κ reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The propensity bump coefficient κⱼ = β/g₁ⱼ + α·g₁ⱼ − α²·β·g₁ⱼ.

Definition (Lean source)
noncomputable def κ (j : Fin K) : ℝ := P.β / P.g₁ j + P.α * P.g₁ j - P.α ^ 2 * P.β * P.g₁ j
def D2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The treated-arm denominator D = 1 + (β/g₁)·Δ − α·β.

Definition (Lean source)
noncomputable def D2 (lam : Fin K → Bool) (x : Fin K × Bool) : ℝ := 1 + (P.β / P.g₁ x.1) * Δ lam x - P.α * P.β
def mhat2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The cell-varying propensity center as a function of the covariate.

Definition (Lean source)
noncomputable def mhat2 : (Fin K × Bool) → ℝ := fun x => P.m₀ x.1
Causalean.Estimation.MinimaxATE.VarConstr2.mhat2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Construction.lean:138 · uses VarConstr2
def ghat2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The cell-varying outcome-regression center: g₁ j on the treated arm, g₀ j on control, where j is the pair index of the cell.

Definition (Lean source)
noncomputable def ghat2 : Bool → (Fin K × Bool) → ℝ := fun d x => if d then P.g₁ x.1 else P.g₀ x.1
Causalean.Estimation.MinimaxATE.VarConstr2.ghat2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Construction.lean:141 · uses VarConstr2
def mPert2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The perturbed propensity mλ x = m₀ x.1·(1 + α·g₁ x.1·Δ)·D.

Definition (Lean source)
noncomputable def mPert2 (lam : Fin K → Bool) : (Fin K × Bool) → ℝ := fun x => P.m₀ x.1 * ((1 + P.α * P.g₁ x.1 * Δ lam x) * P.D2 lam x)
Causalean.Estimation.MinimaxATE.VarConstr2.mPert2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Construction.lean:146 · uses VarConstr2
def gPert2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The perturbed outcome regression: control arm = g₀ x.1, treated arm gλ(1,x) = g₁ x.1 / D.

Definition (Lean source)
noncomputable def gPert2 (lam : Fin K → Bool) : Bool → (Fin K × Bool) → ℝ := fun d x => if d then P.g₁ x.1 / P.D2 lam x else P.g₀ x.1
Causalean.Estimation.MinimaxATE.VarConstr2.gPert2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Construction.lean:150 · uses VarConstr2
theorem mPert2_eq reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

Affine collapse of the propensity. For any Rademacher sign vector lam and cell x, the perturbed propensity at x equals m₀(x.1)·(1 + κ(x.1)·Δ(lam,x)), an exactly affine function of the perturbation.

Formal statement
lam :
Fin K → Bool
x :
Fin K × Bool
P.mPert2 lam x = P.m₀ x.1 * (1 + P.κ x.1 * Δ lam x)
Proof (Lean source)
theorem mPert2_eq (lam : Fin K → Bool) (x : Fin K × Bool) : P.mPert2 lam x = P.m₀ x.1 * (1 + P.κ x.1 * Δ lam x) := by have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) unfold mPert2 D2 κ -- expand and use Δ² = 1 have hsq : Δ lam x * Δ lam x = 1 := by have := Δ_sq lam x; nlinarith [this] field_simp linear_combination (P.m₀ x.1 * P.α * P.g₁ x.1 * P.β) * hsq
theorem validDGP_pert2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

For any Rademacher sign vector lam indexing the perturbation, the perturbed propensity and outcome-regression functions define a valid finite observed-data model, i.e. take values in [0,1].

Formal statement
lam :
Fin K → Bool
ValidDGP (P.mPert2 lam) (P.gPert2 lam)
Proof (Lean source)
theorem validDGP_pert2 (lam : Fin K → Bool) : ValidDGP (P.mPert2 lam) (P.gPert2 lam) := by refine ⟨fun x => ?_, fun d x => ?_⟩ · -- propensity `m₀·(1 + κ·Δ) ∈ [0,1]` rw [P.mPert2_eq lam x] have hm0 := P.hm₀0 x.1 have hm1 := P.hm₀1 x.1 have hκ0 := P.κ_nonneg x.1 have hκ1 := P.hκ x.1 have hmU := P.hmU x.1 have hκeq : P.κ x.1 = P.β / P.g₁ x.1 + P.α * P.g₁ x.1 - P.α ^ 2 * P.β * P.g₁ x.1 := rfl rw [← hκeq] at hκ1 hmU constructor · rcases Δ_mem lam x with h | h · rw [h]; nlinarith · rw [h]; nlinarith · rcases Δ_mem lam x with h | h · rw [h]; nlinarith · rw [h]; nlinarith · -- outcome `gλ(d,·) ∈ [0,1]` have hd := P.D2_pos lam x rcases d with _ | _ · simp only [gPert2, Bool.false_eq_true, if_false]; exact ⟨(P.hg₀0 x.1).le, (P.hg₀1 x.1).le⟩ · simp only [gPert2, if_true] have hg10 := P.hg₁0 x.1 have hgU := P.hgU x.1 have hr := P.ratio_nonneg x.1 refine ⟨div_nonneg hg10.le hd.le, ?_⟩ rw [div_le_one hd] -- need g₁ ≤ D = 1 + (β/g₁)Δ − αβ; worst case Δ = −1 covered by hgU unfold D2 rcases Δ_mem lam x with h | h · rw [h]; nlinarith · rw [h]; nlinarith
4 supporting declarations (lemmas, instances)
  • ratio_nonneg theorem — 0 ≤ β/g₁ j.
    j :
    Fin K
    0 ≤ P.β / P.g₁ j
    Proof (Lean source)
    theorem ratio_nonneg (j : Fin K) : 0 ≤ P.β / P.g₁ j := div_nonneg P.hβ (P.hg₁0 j).le
    Causalean.Estimation.MinimaxATE.VarConstr2.ratio_nonneg · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Construction.lean:109
  • κ_nonneg theorem — 0 ≤ κⱼ.
    j :
    Fin K
    0 ≤ P.κ j
    Proof (Lean source)
    theorem κ_nonneg (j : Fin K) : 0 ≤ P.κ j := by have hg10 := P.hg₁0 j have hg11 := P.hg₁1 j have hαβ : P.α * P.β ≤ 1 := by have := P.hgU j; have := P.ratio_nonneg j; nlinarith [hg10] have hr := P.ratio_nonneg j have hαg : 0 ≤ P.α * P.g₁ j := mul_nonneg P.hα hg10.le unfold κ -- κ = β/g₁ + α g₁ (1 − αβ) ≥ 0 have : P.α * P.g₁ j - P.α ^ 2 * P.β * P.g₁ j = P.α * P.g₁ j * (1 - P.α * P.β) := by ring rw [show P.β / P.g₁ j + P.α * P.g₁ j - P.α ^ 2 * P.β * P.g₁ j = P.β / P.g₁ j + P.α * P.g₁ j * (1 - P.α * P.β) by ring] have h1 : 0 ≤ P.α * P.g₁ j * (1 - P.α * P.β) := by apply mul_nonneg hαg; linarith linarith
    Causalean.Estimation.MinimaxATE.VarConstr2.κ_nonneg · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Construction.lean:112
  • D2_pos theorem — The denominator D = 1 + (β/g₁)·Δ − αβ is positive (at least g₁ > 0).
    lam :
    Fin K → Bool
    x :
    Fin K × Bool
    0 < P.D2 lam x
    Proof (Lean source)
    theorem D2_pos (lam : Fin K → Bool) (x : Fin K × Bool) : 0 < P.D2 lam x := by have hg10 := P.hg₁0 x.1 have hgU := P.hgU x.1 have hr := P.ratio_nonneg x.1 unfold D2 rcases Δ_mem lam x with h | h · rw [h]; nlinarith · rw [h]; nlinarith
    Causalean.Estimation.MinimaxATE.VarConstr2.D2_pos · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Construction.lean:128
  • validDGP_hat2 theorem — The null DGP (m̂, ĝ) is valid.
    ValidDGP (C := Fin K × Bool) P.mhat2 P.ghat2
    Proof (Lean source)
    theorem validDGP_hat2 : ValidDGP (C := Fin K × Bool) P.mhat2 P.ghat2 := by refine ⟨fun x => ?_, fun d x => ?_⟩ · simp only [mhat2]; exact ⟨(P.hm₀0 x.1).le, (P.hm₀1 x.1).le⟩ · simp only [ghat2]; cases d · exact ⟨(P.hg₀0 x.1).le, (P.hg₀1 x.1).le⟩ · exact ⟨(P.hg₁0 x.1).le, (P.hg₁1 x.1).le⟩
    Causalean.Estimation.MinimaxATE.VarConstr2.validDGP_hat2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Construction.lean:169
Chi­Sq­Overlap 3 core · 2 supporting This file computes the single-observation chi-squared overlap for the second cell-varying perturbation family. ★ chiSqOverlap_eq2

Propensity-Dominant Chi-Squared Second-Moment Overlap

This file computes the single-observation chi-squared overlap for the second cell-varying perturbation family. The closed form produces the per-pair coefficients used by the non-uniform Ingster bound in the propensity-dominant lower-bound assembly. This overlap is a χ² second-moment quantity for the lower-bound construction, not the causal positivity/overlap assumption.

def ΓV2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The per-pair χ²-overlap coefficient (second construction).

Definition (Lean source)
noncomputable def ΓV2 (j : Fin K) : ℝ := P.m₀ j * P.α ^ 2 * P.g₁ j ^ 3 + P.m₀ j * (P.β / P.g₁ j + P.α * P.g₁ j * (1 - P.g₁ j) - P.α ^ 2 * P.β * P.g₁ j) ^ 2 / (1 - P.g₁ j) + P.m₀ j ^ 2 * P.κ j ^ 2 / (1 - P.m₀ j)
Causalean.Estimation.MinimaxATE.VarConstr2.ΓV2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/ChiSqOverlap.lean:47 · uses VarConstr2
def chiSqOverlapV2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The single-observation χ² second-moment overlap of two perturbed laws relative to the null.

Definition (Lean source)
noncomputable def chiSqOverlapV2 (lam lam' : Fin K → Bool) : ℝ := ∑ z : Obs (Fin K × Bool), obsReal (P.mPert2 lam) (P.gPert2 lam) z * obsReal (P.mPert2 lam') (P.gPert2 lam') z / obsReal P.mhat2 P.ghat2 z
Causalean.Estimation.MinimaxATE.VarConstr2.chiSqOverlapV2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/ChiSqOverlap.lean:66 · uses VarConstr2
theorem chiSqOverlap_eq2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

For any two Rademacher sign vectors lam and lam' indexing perturbed data-generating processes, the single-observation χ² overlap between them equals one plus the sum over pairs j of the propensity-dominant coefficient ΓV2 j / K times the sign agreement between lam and lam' at pair j.

Formal statement
lam lam' :
Fin K → Bool
P.chiSqOverlapV2 lam lam'
= 1 + ∑ j, (P.ΓV2 j / (K : ℝ)) * (signOf (lam j) * signOf (lam' j))
Proof (Lean source)
theorem chiSqOverlap_eq2 [NeZero K] (lam lam' : Fin K → Bool) : P.chiSqOverlapV2 lam lam' = 1 + ∑ j, (P.ΓV2 j / (K : ℝ)) * (signOf (lam j) * signOf (lam' j)) := by have hK : (K : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr (NeZero.ne K) have hcard : (card (Fin K × Bool) : ℝ) = 2 * K := by rw [Fintype.card_prod, Fintype.card_fin, Fintype.card_bool]; push_cast; ring -- Rewrite the overlap as a per-pair sum. have hsum : P.chiSqOverlapV2 lam lam' = ∑ j : Fin K, (1 / (K : ℝ)) * (1 + P.ΓV2 j * (signOf (lam j) * signOf (lam' j))) := by unfold chiSqOverlapV2 rw [Fintype.sum_prod_type, Fintype.sum_prod_type] refine Finset.sum_congr rfl fun j _ => ?_ simp only [Fintype.sum_prod_type, Fintype.sum_bool] simp only [obsReal_pert2_eq, D2] simp only [obsReal, mhat2, ghat2, Bool.false_eq_true, if_false, if_true] have e1 : Δ lam (j, true) = signOf (lam j) := by simp [Δ] have e2 : Δ lam (j, false) = -signOf (lam j) := by simp [Δ] have e3 : Δ lam' (j, true) = signOf (lam' j) := by simp [Δ] have e4 : Δ lam' (j, false) = -signOf (lam' j) := by simp [Δ] simp only [e1, e2, e3, e4] rw [hcard] have hg₁ne : P.g₁ j ≠ 0 := ne_of_gt (P.hg₁0 j) have hm₀ne : P.m₀ j ≠ 0 := ne_of_gt (P.hm₀0 j) have hg₀ne : P.g₀ j ≠ 0 := ne_of_gt (P.hg₀0 j) have h1g₁ : (1 : ℝ) - P.g₁ j ≠ 0 := by have := P.hg₁1 j; intro hc; linarith have h1m₀ : (1 : ℝ) - P.m₀ j ≠ 0 := by have := P.hm₀1 j; intro hc; linarith have h1g₀ : (1 : ℝ) - P.g₀ j ≠ 0 := by have := P.hg₀1 j; intro hc; linarith rcases signOf_mem (lam j) with h | h <;> rcases signOf_mem (lam' j) with h' | h' <;> rw [h, h'] <;> · simp only [ΓV2, κ] field_simp ring rw [hsum] have hsplit : ∀ j : Fin K, (1 / (K : ℝ)) * (1 + P.ΓV2 j * (signOf (lam j) * signOf (lam' j))) = 1 / (K : ℝ) + P.ΓV2 j / (K : ℝ) * (signOf (lam j) * signOf (lam' j)) := by intro j; ring rw [Finset.sum_congr rfl (fun j _ => hsplit j), Finset.sum_add_distrib, Finset.sum_const, Finset.card_univ, Fintype.card_fin, nsmul_eq_mul] field_simp
2 supporting declarations (lemmas, instances)
  • ΓV2_nonneg theorem — Γⱼ ≥ 0.
    j :
    Fin K
    0 ≤ P.ΓV2 j
    Proof (Lean source)
    theorem ΓV2_nonneg (j : Fin K) : 0 ≤ P.ΓV2 j := by have h1 := P.hm₀0 j; have h2 := P.hm₀1 j; have h3 := P.hg₁0 j; have h4 := P.hg₁1 j unfold ΓV2 have t1 : 0 ≤ P.m₀ j * P.α ^ 2 * P.g₁ j ^ 3 := by positivity have t2 : 0 ≤ P.m₀ j * (P.β / P.g₁ j + P.α * P.g₁ j * (1 - P.g₁ j) - P.α ^ 2 * P.β * P.g₁ j) ^ 2 / (1 - P.g₁ j) := by apply div_nonneg (by positivity); linarith have t3 : 0 ≤ P.m₀ j ^ 2 * P.κ j ^ 2 / (1 - P.m₀ j) := by apply div_nonneg (by positivity); linarith linarith
    Causalean.Estimation.MinimaxATE.VarConstr2.ΓV2_nonneg · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/ChiSqOverlap.lean:54
  • obsReal_pert2_eq theorem — Denominator-free value of the perturbed observed mass at the four (d, y).
    lam :
    Fin K → Bool
    x :
    Fin K × Bool
    d y :
    obsReal (P.mPert2 lam) (P.gPert2 lam) (x, d, y)
    = (card (Fin K × Bool) : ℝ)⁻¹ * (match d, y with | true, true => P.m₀ x.1 * (P.g₁ x.1 + P.α * P.g₁ x.1 ^ 2 * Δ lam x) | true, false => P.m₀ x.1 * (1 + P.α * P.g₁ x.1 * Δ lam x) * (P.D2 lam x - P.g₁ x.1) | false, true => (1 - P.m₀ x.1 - P.m₀ x.1 * P.κ x.1 * Δ lam x) * P.g₀ x.1 | false, false => (1 - P.m₀ x.1 - P.m₀ x.1 * P.κ x.1 * Δ lam x) * (1 - P.g₀ x.1))
    Proof (Lean source)
    theorem obsReal_pert2_eq (lam : Fin K → Bool) (x : Fin K × Bool) (d y : Bool) : obsReal (P.mPert2 lam) (P.gPert2 lam) (x, d, y) = (card (Fin K × Bool) : ℝ)⁻¹ * (match d, y with | true, true => P.m₀ x.1 * (P.g₁ x.1 + P.α * P.g₁ x.1 ^ 2 * Δ lam x) | true, false => P.m₀ x.1 * (1 + P.α * P.g₁ x.1 * Δ lam x) * (P.D2 lam x - P.g₁ x.1) | false, true => (1 - P.m₀ x.1 - P.m₀ x.1 * P.κ x.1 * Δ lam x) * P.g₀ x.1 | false, false => (1 - P.m₀ x.1 - P.m₀ x.1 * P.κ x.1 * Δ lam x) * (1 - P.g₀ x.1)) := by have hDne : P.D2 lam x ≠ 0 := ne_of_gt (P.D2_pos lam x) have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) have hmeq := P.mPert2_eq lam x unfold obsReal cases d <;> cases y <;> simp only [Bool.false_eq_true, if_false, if_true] · -- (false, false): (1 − mλ)·(1 − g₀) rw [hmeq]; simp only [gPert2, Bool.false_eq_true, if_false] rw [mul_assoc]; refine congrArg _ ?_; unfold κ; ring · -- (false, true): (1 − mλ)·g₀ rw [hmeq]; simp only [gPert2, Bool.false_eq_true, if_false] rw [mul_assoc]; refine congrArg _ ?_; unfold κ; ring · -- (true, false): mλ·(1 − gλ(1)) simp only [mPert2, gPert2, if_true] rw [mul_assoc]; refine congrArg _ ?_; field_simp · -- (true, true): mλ·gλ(1) simp only [mPert2, gPert2, if_true] rw [mul_assoc]; refine congrArg _ ?_; field_simp
    Causalean.Estimation.MinimaxATE.VarConstr2.obsReal_pert2_eq · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/ChiSqOverlap.lean:73
Gap 2 core · 7 supporting This file computes the exact average treatment effect gap for the second cell-varying perturbation family. ★ ate_gPert2★ ate_gap2

Propensity-Dominant ATE Gap

This file computes the exact average treatment effect gap for the second cell-varying perturbation family. The calculation shows that the perturbed average treatment effect is independent of the Rademacher sign vector and has the product order required by the lower-bound construction.

theorem ate_gPert2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

Exact ATE of the perturbed construction. For any Rademacher sign vector lam, the average treatment effect of the perturbed outcome regression equals the average over pairs j of 2g₁ⱼ³(1−αβ)/(g₁ⱼ²(1−αβ)²−β²) − 2g₀ⱼ, independent of lam.

Formal statement
lam :
Fin K → Bool
ate (P.gPert2 lam)
= (card (Fin K × Bool) : ℝ)⁻¹ * ∑ j : Fin K, (2 * P.g₁ j ^ 3 * (1 - P.α * P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2) - 2 * P.g₀ j)
Proof (Lean source)
theorem ate_gPert2 [NeZero K] (lam : Fin K → Bool) : ate (P.gPert2 lam) = (card (Fin K × Bool) : ℝ)⁻¹ * ∑ j : Fin K, (2 * P.g₁ j ^ 3 * (1 - P.α * P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2) - 2 * P.g₀ j) := by rw [ate, Fintype.sum_prod_type] congr 1 refine Finset.sum_congr rfl fun j _ => ?_ rw [Fintype.sum_bool] have := P.perPair2 lam j linarith [this]
Causalean.Estimation.MinimaxATE.VarConstr2.ate_gPert2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:146 · uses VarConstr2 , gPert2 , ate
theorem ate_gap2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

For any Rademacher sign vector lam, the gap between the perturbed construction's ATE and the null estimate's ATE equals 2β/(2K) times the sum over pairs j of g₁ⱼ(αg₁ⱼ²(1−αβ) + β)/(g₁ⱼ²(1−αβ)² − β²).

Formal statement
lam :
Fin K → Bool
ate (P.gPert2 lam) - ate (P.ghat2 (K := K))
= (card (Fin K × Bool) : ℝ)⁻¹ * (2 * P.β) * ∑ j : Fin K, P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2)
Proof (Lean source)
theorem ate_gap2 [NeZero K] (lam : Fin K → Bool) : ate (P.gPert2 lam) - ate (P.ghat2 (K := K)) = (card (Fin K × Bool) : ℝ)⁻¹ * (2 * P.β) * ∑ j : Fin K, P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2) := by rw [P.ate_gPert2 lam, P.ate_ghat2, ← mul_sub, ← Finset.sum_sub_distrib, mul_assoc] congr 1 rw [Finset.mul_sum] refine Finset.sum_congr rfl fun j _ => ?_ have hg₁ne : P.g₁ j ≠ 0 := ne_of_gt (P.hg₁0 j) have hE := P.denomE_pos j have hEne : P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2 ≠ 0 := ne_of_gt hE field_simp ring
Causalean.Estimation.MinimaxATE.VarConstr2.ate_gap2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:161 · uses VarConstr2 , gPert2 , ghat2 , ate
7 supporting declarations (lemmas, instances)
  • alphabeta_le_one theorem — αβ ≤ 1 (a consequence of hgU and g₁ⱼ > 0).
    j :
    Fin K
    P.α * P.β ≤ 1
    Proof (Lean source)
    theorem alphabeta_le_one (j : Fin K) : P.α * P.β ≤ 1 := by have := P.hgU j; have := P.ratio_nonneg j; have := P.hg₁0 j; nlinarith
    Causalean.Estimation.MinimaxATE.VarConstr2.alphabeta_le_one · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:42
  • g1_one_sub_ab_sub_beta theorem — g₁ⱼ(1 − αβ) − β ≥ g₁ⱼ² > 0: clearing hgU by g₁ⱼ.
    j :
    Fin K
    P.g₁ j ^ 2 ≤ P.g₁ j * (1 - P.α * P.β) - P.β
    Proof (Lean source)
    theorem g1_one_sub_ab_sub_beta (j : Fin K) : P.g₁ j ^ 2 ≤ P.g₁ j * (1 - P.α * P.β) - P.β := by have hg1 := P.hg₁0 j have hh : (P.β / P.g₁ j) * P.g₁ j = P.β := div_mul_cancel₀ _ (ne_of_gt hg1) have hkey := P.hgU j -- multiply hgU by g₁ⱼ > 0 have : (P.g₁ j + P.β / P.g₁ j + P.α * P.β) * P.g₁ j ≤ 1 * P.g₁ j := mul_le_mul_of_nonneg_right hkey hg1.le rw [add_mul, add_mul] at this rw [hh] at this nlinarith [this]
    Causalean.Estimation.MinimaxATE.VarConstr2.g1_one_sub_ab_sub_beta · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:46
  • denomE_pos theorem — The pair denominator Eⱼ = g₁ⱼ²(1 − αβ)² − β² > 0.
    j :
    Fin K
    0 < P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2
    Proof (Lean source)
    theorem denomE_pos (j : Fin K) : 0 < P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2 := by have hg1 := P.hg₁0 j have hlin := P.g1_one_sub_ab_sub_beta j have hβ := P.hβ -- E = (g₁(1−αβ) − β)(g₁(1−αβ) + β); first factor ≥ g₁² > 0, second ≥ β ≥ 0 have h1 : 0 < P.g₁ j * (1 - P.α * P.β) - P.β := by nlinarith [hg1] have h2 : 0 < P.g₁ j * (1 - P.α * P.β) + P.β := by nlinarith [hg1] nlinarith [mul_pos h1 h2]
    Causalean.Estimation.MinimaxATE.VarConstr2.denomE_pos · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:59
  • gPert2_true_eq2 theorem — Cleared treated arm. gλ(1,x) = g₁ x.1² / (g₁ x.1·(1 − αβ) + β·Δ) — no nested fractions, so field_simp can clear it given the (positive) denominator.
    lam :
    Fin K → Bool
    x :
    Fin K × Bool
    P.gPert2 lam true x = P.g₁ x.1 ^ 2 / (P.g₁ x.1 * (1 - P.α * P.β) + P.β * Δ lam x)
    Proof (Lean source)
    theorem gPert2_true_eq2 (lam : Fin K → Bool) (x : Fin K × Bool) : P.gPert2 lam true x = P.g₁ x.1 ^ 2 / (P.g₁ x.1 * (1 - P.α * P.β) + P.β * Δ lam x) := by have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) have hD := P.D2_pos lam x have hdc : P.g₁ x.1 * (1 - P.α * P.β) + P.β * Δ lam x = P.g₁ x.1 * P.D2 lam x := by unfold D2; field_simp; ring simp only [gPert2, if_true] rw [hdc, sq, mul_div_mul_left _ _ hg₁ne]
    Causalean.Estimation.MinimaxATE.VarConstr2.gPert2_true_eq2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:69
  • clearedDenom_pos theorem — The cleared denominator g₁ⱼ(1 − αβ) + β·σ is positive.
    j :
    Fin K
    σ :
    :
    σ = 1 ∨ σ = -1
    0 < P.g₁ j * (1 - P.α * P.β) + P.β * σ
    Proof (Lean source)
    theorem clearedDenom_pos (j : Fin K) (σ : ℝ) (hσ : σ = 1 ∨ σ = -1) : 0 < P.g₁ j * (1 - P.α * P.β) + P.β * σ := by have hg1 := P.hg₁0 j have hlin := P.g1_one_sub_ab_sub_beta j have hβ := P.hβ rcases hσ with h | h · rw [h]; nlinarith [hg1] · rw [h]; nlinarith [hg1]
    Causalean.Estimation.MinimaxATE.VarConstr2.clearedDenom_pos · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:81
  • ate_ghat2 theorem — The null estimate ĝ has ATE (1/2K) Σⱼ 2(g₁ⱼ − g₀ⱼ).
    ate (P.ghat2 (K := K))
    = (card (Fin K × Bool) : ℝ)⁻¹ * ∑ j : Fin K, 2 * (P.g₁ j - P.g₀ j)
    Proof (Lean source)
    theorem ate_ghat2 : ate (P.ghat2 (K := K)) = (card (Fin K × Bool) : ℝ)⁻¹ * ∑ j : Fin K, 2 * (P.g₁ j - P.g₀ j) := by rw [ate] have hpt : ∀ x : Fin K × Bool, P.ghat2 true x - P.ghat2 false x = P.g₁ x.1 - P.g₀ x.1 := by intro x; simp [ghat2] rw [Finset.sum_congr rfl (fun x _ => hpt x), Fintype.sum_prod_type] congr 1 refine Finset.sum_congr rfl fun j _ => ?_ rw [Fintype.sum_bool] change (P.g₁ j - P.g₀ j) + (P.g₁ j - P.g₀ j) = 2 * (P.g₁ j - P.g₀ j) ring
    Causalean.Estimation.MinimaxATE.VarConstr2.ate_ghat2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:91
  • ate_gap2_nonneg theorem — The ATE gap is nonnegative.
    lam :
    Fin K → Bool
    0 ≤ ate (P.gPert2 lam) - ate (P.ghat2 (K := K))
    Proof (Lean source)
    theorem ate_gap2_nonneg [NeZero K] (lam : Fin K → Bool) : 0 ≤ ate (P.gPert2 lam) - ate (P.ghat2 (K := K)) := by rw [P.ate_gap2 lam] have hcard : (0 : ℝ) ≤ (card (Fin K × Bool) : ℝ)⁻¹ := by positivity have hβ := P.hβ; have hα := P.hα have h2β : (0 : ℝ) ≤ 2 * P.β := by positivity have hsum : 0 ≤ ∑ j : Fin K, P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2) := by refine sum_nonneg fun j _ => ?_ have hg1 := P.hg₁0 j have hE := P.denomE_pos j have hab := P.alphabeta_le_one j have hnum : 0 ≤ P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) := by have : 0 ≤ P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) := by apply mul_nonneg (by positivity); linarith have : 0 ≤ P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β := by linarith exact mul_nonneg hg1.le this exact div_nonneg hnum hE.le positivity
    Causalean.Estimation.MinimaxATE.VarConstr2.ate_gap2_nonneg · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Gap.lean:179
Lower­Bound 4 core · 11 supporting This file assembles the second cell-varying perturbation family into a two-point testing witness for the structure-agnostic average treatment effect minimax lower bound. ★ minimax_lower_bound_var2

Propensity-Dominant Lower Bound

This file assembles the second cell-varying perturbation family into a two-point testing witness for the structure-agnostic average treatment effect minimax lower bound. Under the stated per-cell budgets and chi-squared regularity conditions, it shows that every estimator has nontrivial miss probability at the induced separation.

def Qfalse2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The null n-sample law P̂^⊗n.

Definition (Lean source)
noncomputable def Qfalse2 (P : VarConstr2 K) (n : ℕ) [NeZero K] : Measure (Fin n → Obs (Fin K × Bool)) := productLaw (P.validDGP_hat2 (K := K)) n
Causalean.Estimation.MinimaxATE.VarConstr2.Qfalse2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/LowerBound.lean:59 · uses Obs , VarConstr2
def Qpert2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The perturbed n-sample law Qλ^⊗n.

Definition (Lean source)
noncomputable def Qpert2 (P : VarConstr2 K) (n : ℕ) [NeZero K] (lam : Fin K → Bool) : Measure (Fin n → Obs (Fin K × Bool)) := productLaw (P.validDGP_pert2 lam) n
Causalean.Estimation.MinimaxATE.VarConstr2.Qpert2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/LowerBound.lean:64 · uses Obs , VarConstr2
def Qtrue2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

The alternative n-sample law: the uniform Rademacher mixture of the perturbed laws.

Definition (Lean source)
noncomputable def Qtrue2 (P : VarConstr2 K) (n : ℕ) [NeZero K] : Measure (Fin n → Obs (Fin K × Bool)) := mixture (signWeight K) (fun lam => Qpert2 P n lam)
Causalean.Estimation.MinimaxATE.VarConstr2.Qtrue2 · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/LowerBound.lean:69 · uses Obs , VarConstr2
theorem minimax_lower_bound_var2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

Structure-agnostic minimax lower bound (second / propensity-dominant construction). Fix a cell-varying nuisance center P, sample size n, and nuisance-error budgets εg, εm, and suppose the treated-arm outcome bump magnitude is strictly positive. If the perturbed propensity's squared deviation from its center is at most εm in every cell, the perturbed treated-arm outcome regression's squared deviation from its center is at most εg in every cell, εm is nonnegative, εg is nonnegative, the normalized per-pair χ² coefficients sum to at most 1, and n²/2 times the sum of their squares is at most log 2, then for every measurable estimator, the worst-case-over-class probability that the estimator's error exceeds half of the displayed strictly positive separation gap is at least 1/4.

Formal statement
P :
n :
εg εm :
hβpos :
0 < P.β
hm :
∀ j, (P.m₀ j * P.κ j) ^ 2 ≤ εm
hg :
∀ j, P.β ^ 2 * (P.α * P.g₁ j + 1) ^ 2 / (1 - P.β / P.g₁ j - P.α * P.β) ^ 2 ≤ εg
hεg :
0 ≤ εg
hεm :
0 ≤ εm
hΓsum :
∑ j, P.ΓV2 j / (K : ℝ) ≤ 1
hreg :
(n : ℝ) ^ 2 / 2 * ∑ j, (P.ΓV2 j / (K : ℝ)) ^ 2 ≤ log 2
est :
(Fin n → Obs (Fin K × Bool)) → ℝ
hest :
1 / 4
minimaxMiss P.mhat2 P.ghat2 εg εm n est ((card (Fin K × Bool) : ℝ)⁻¹ * (2 * P.β) * (∑ j : Fin K, P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2)) / 2)
Proof (Lean source)
theorem minimax_lower_bound_var2 (P : VarConstr2 K) {n : ℕ} [NeZero K] {εg εm : ℝ} (hβpos : 0 < P.β) (hm : ∀ j, (P.m₀ j * P.κ j) ^ 2 ≤ εm) (hg : ∀ j, P.β ^ 2 * (P.α * P.g₁ j + 1) ^ 2 / (1 - P.β / P.g₁ j - P.α * P.β) ^ 2 ≤ εg) (hεg : 0 ≤ εg) (hεm : 0 ≤ εm) (hΓsum : ∑ j, P.ΓV2 j / (K : ℝ) ≤ 1) (hreg : (n : ℝ) ^ 2 / 2 * ∑ j, (P.ΓV2 j / (K : ℝ)) ^ 2 ≤ log 2) {est : (Fin n → Obs (Fin K × Bool)) → ℝ} (hest : Measurable est) : 1 / 4 ≤ minimaxMiss P.mhat2 P.ghat2 εg εm n est ((card (Fin K × Bool) : ℝ)⁻¹ * (2 * P.β) * (∑ j : Fin K, P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2)) / 2) := by set gap := (card (Fin K × Bool) : ℝ)⁻¹ * (2 * P.β) * ∑ j : Fin K, P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2) with hgap have hgap_pos : 0 < gap := by have hcard : 0 < (card (Fin K × Bool) : ℝ)⁻¹ := by have hcard_nat : 0 < card (Fin K × Bool) := Fintype.card_pos exact inv_pos.mpr (by exact_mod_cast hcard_nat) have h2β : 0 < 2 * P.β := by positivity have hsum_pos : 0 < ∑ j : Fin K, P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2) := by apply Finset.sum_pos · intro j _ have hg1 := P.hg₁0 j have hE := P.denomE_pos j have hab := P.alphabeta_le_one j have hinner : 0 < P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β := by have hnonneg : 0 ≤ P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) := by apply mul_nonneg (mul_nonneg P.hα (sq_nonneg _)) linarith linarith exact div_pos (mul_pos hg1 hinner) hE · exact Finset.univ_nonempty rw [hgap] exact mul_pos (mul_pos hcard h2β) hsum_pos set s := gap / 2 with hs set θ0 := ate (P.ghat2 (K := K)) with hθ0 -- the two-point witness let W : TwoPointWitness (Fin K × Bool) n P.mhat2 P.ghat2 εg εm := { s := s c := 1 / 2 Q := fun j => cond j (Qtrue2 P n) (Qfalse2 P n) prob := by intro j; cases j · exact Qfalse2_isProb P n · exact Qtrue2_isProb P n θ := fun j => cond j (θ0 + gap) θ0 sep := by change 2 * s ≤ |(θ0 + gap) - θ0| rw [add_sub_cancel_left, abs_of_pos hgap_pos, hs]; linarith tvBound := by simpa using P.tvDist_Qfalse2_Qtrue2_le_half (n := n) hΓsum hreg dominated := by intro est' j cases j · -- null branch change (Qfalse2 P n).real {x | s ≤ |est' x - θ0|} ≤ minimaxMiss P.mhat2 P.ghat2 εg εm n est' s have hb := P.real2_le_minimaxMiss (n := n) (inClass_null2 P hεg hεm) est' s rw [hθ0] exact hb · -- mixture branch change (Qtrue2 P n).real {x | s ≤ |est' x - (θ0 + gap)|} ≤ minimaxMiss P.mhat2 P.ghat2 εg εm n est' s haveI : ∀ lam : Fin K → Bool, IsProbabilityMeasure (Qpert2 P n lam) := fun lam => Qpert2_isProb P n lam unfold Qtrue2 refine mixtureReal_le (signWeight K) (signWeight_sum K) (fun lam => Qpert2 P n lam) _ _ ?_ intro lam have hb := P.real2_le_minimaxMiss (n := n) (P.inClass2 hm hg hεg lam) est' s have hkey : ate (P.gPert2 lam) = θ0 + gap := by have := P.ate_gap2 lam rw [hθ0, hgap]; linarith [this] rw [hkey] at hb exact hb } exact twoPointWitness_quarter W (le_refl _) hest
11 supporting declarations (lemmas, instances)
Membership 1 core · 4 supporting This file proves that the second cell-varying perturbation family belongs to the finite structure-agnostic nuisance class when the propensity and outcome-regression budgets hold. ★ inClass2

Propensity-Dominant Class Membership

This file proves that the second cell-varying perturbation family belongs to the finite structure-agnostic nuisance class when the propensity and outcome-regression budgets hold. The estimates cover the regime in which the propensity perturbation is the larger error component.

theorem inClass2 reviewed
Causalean.Estimation.MinimaxATE.VarConstr2

Class membership. Fix a sign pattern lam and nuisance-error budgets εg, εm. If the squared quantity (m₀ⱼ·κⱼ)² is at most εm at every cell j, the worst-case squared deviation of the perturbed treated-arm outcome regression is at most εg at every cell j, and εg is nonnegative, then the perturbed propensity and outcome-regression pair (mλ, gλ) lies in the structure-agnostic nuisance class ℱ(εg, εm) around the cell-varying center (m̂, ĝ).

Formal statement
εg εm :
hm :
∀ j, (P.m₀ j * P.κ j) ^ 2 ≤ εm
hg :
∀ j, P.β ^ 2 * (P.α * P.g₁ j + 1) ^ 2 / (1 - P.β / P.g₁ j - P.α * P.β) ^ 2 ≤ εg
hεg :
0 ≤ εg
lam :
Fin K → Bool
InClass (P.mhat2 (K := K)) P.ghat2 εg εm (P.mPert2 lam) (P.gPert2 lam)
Proof (Lean source)
theorem inClass2 [NeZero K] {εg εm : ℝ} (hm : ∀ j, (P.m₀ j * P.κ j) ^ 2 ≤ εm) (hg : ∀ j, P.β ^ 2 * (P.α * P.g₁ j + 1) ^ 2 / (1 - P.β / P.g₁ j - P.α * P.β) ^ 2 ≤ εg) (hεg : 0 ≤ εg) (lam : Fin K → Bool) : InClass (P.mhat2 (K := K)) P.ghat2 εg εm (P.mPert2 lam) (P.gPert2 lam) := by refine ⟨P.validDGP_pert2 lam, ?_, ?_⟩ · intro d cases d with | false => rw [P.l2sq_gPert2_false lam]; exact hεg | true => exact P.l2sq_gPert2_true_le hg lam · exact P.l2sq_mPert2_le hm lam
4 supporting declarations (lemmas, instances)
  • l2sq_mPert2_le theorem — The propensity perturbation's squared L² error is exactly the average of (m₀ⱼ·κⱼ)², hence ≤ εm whenever every pair satisfies (m₀ⱼ·κⱼ)² ≤ εm.
    εm :
    hm :
    ∀ j, (P.m₀ j * P.κ j) ^ 2 ≤ εm
    lam :
    Fin K → Bool
    l2sq (P.mPert2 lam) (P.mhat2 (K := K)) ≤ εm
    Proof (Lean source)
    theorem l2sq_mPert2_le [NeZero K] {εm : ℝ} (hm : ∀ j, (P.m₀ j * P.κ j) ^ 2 ≤ εm) (lam : Fin K → Bool) : l2sq (P.mPert2 lam) (P.mhat2 (K := K)) ≤ εm := by set C := Fin K × Bool have hC : (Fintype.card C : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr Fintype.card_ne_zero have hterm : ∀ x : C, (P.mPert2 lam x - P.mhat2 x) ^ 2 ≤ εm := by intro x have hdiff : P.mPert2 lam x - P.mhat2 x = (P.m₀ x.1 * P.κ x.1) * Δ lam x := by rw [P.mPert2_eq lam x]; simp only [mhat2]; ring rw [hdiff, mul_pow, Δ_sq lam x, mul_one] exact hm x.1 rw [l2sq] have hsum : ∑ x : C, (P.mPert2 lam x - P.mhat2 x) ^ 2 ≤ ∑ _x : C, εm := 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, (P.mPert2 lam x - P.mhat2 x) ^ 2 ≤ (Fintype.card C : ℝ)⁻¹ * ((Fintype.card C : ℝ) * εm) := by apply mul_le_mul_of_nonneg_left hsum; positivity _ = εm := by field_simp
    Causalean.Estimation.MinimaxATE.VarConstr2.l2sq_mPert2_le · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Membership.lean:42
  • l2sq_gPert2_false theorem — The control outcome arm is unchanged, so its L² error is 0.
    lam :
    Fin K → Bool
    l2sq (P.gPert2 lam false) (P.ghat2 false) = 0
    Proof (Lean source)
    theorem l2sq_gPert2_false (lam : Fin K → Bool) : l2sq (P.gPert2 lam false) (P.ghat2 false) = 0 := by have h : P.gPert2 lam false = P.ghat2 false := by funext x; simp only [gPert2, ghat2, Bool.false_eq_true, if_false] rw [h, l2sq_self]
    Causalean.Estimation.MinimaxATE.VarConstr2.l2sq_gPert2_false · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Membership.lean:64
  • gPert2_true_sub theorem — The treated arm's pointwise deviation from ĝ(1,x) = g₁ x.1 is β·(α g₁ x.1 − Δ)/D.
    lam :
    Fin K → Bool
    x :
    Fin K × Bool
    P.gPert2 lam true x - P.g₁ x.1 = P.β * (P.α * P.g₁ x.1 - Δ lam x) / P.D2 lam x
    Proof (Lean source)
    theorem gPert2_true_sub (lam : Fin K → Bool) (x : Fin K × Bool) : P.gPert2 lam true x - P.g₁ x.1 = P.β * (P.α * P.g₁ x.1 - Δ lam x) / P.D2 lam x := by have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) have hd := P.D2_pos lam x simp only [gPert2, if_true] rw [eq_div_iff (ne_of_gt hd), sub_mul, div_mul_cancel₀ _ (ne_of_gt hd)] unfold D2 field_simp ring
    Causalean.Estimation.MinimaxATE.VarConstr2.gPert2_true_sub · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Membership.lean:71
  • l2sq_gPert2_true_le theorem — The treated arm's squared L² error is ≤ εg whenever every pair satisfies β²·(α g₁ⱼ + 1)²/(1 − β/g₁ⱼ − αβ)² ≤ εg.
    εg :
    hg :
    ∀ j, P.β ^ 2 * (P.α * P.g₁ j + 1) ^ 2 / (1 - P.β / P.g₁ j - P.α * P.β) ^ 2 ≤ εg
    lam :
    Fin K → Bool
    l2sq (P.gPert2 lam true) (P.ghat2 true) ≤ εg
    Proof (Lean source)
    theorem l2sq_gPert2_true_le [NeZero K] {εg : ℝ} (hg : ∀ j, P.β ^ 2 * (P.α * P.g₁ j + 1) ^ 2 / (1 - P.β / P.g₁ j - P.α * P.β) ^ 2 ≤ εg) (lam : Fin K → Bool) : l2sq (P.gPert2 lam true) (P.ghat2 true) ≤ εg := by set C := Fin K × Bool have hC : (Fintype.card C : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr Fintype.card_ne_zero have hterm : ∀ x : C, (P.gPert2 lam true x - P.ghat2 true x) ^ 2 ≤ εg := by intro x have hghat : P.ghat2 true x = P.g₁ x.1 := by simp [ghat2] have hg10 := P.hg₁0 x.1 have hα := P.hα; have hβ := P.hβ -- D_min = 1 − β/g₁ − αβ is positive (and ≤ D) have hDmin : 0 < 1 - P.β / P.g₁ x.1 - P.α * P.β := by have hgU := P.hgU x.1; have hr := P.ratio_nonneg x.1; nlinarith have hDmin2 : 0 < (1 - P.β / P.g₁ x.1 - P.α * P.β) ^ 2 := by positivity have hD := P.D2_pos lam x have hD2 : 0 < (P.D2 lam x) ^ 2 := by positivity rw [hghat, P.gPert2_true_sub lam x] have hsq : (P.β * (P.α * P.g₁ x.1 - Δ lam x) / P.D2 lam x) ^ 2 = P.β ^ 2 * (P.α * P.g₁ x.1 - Δ lam x) ^ 2 / (P.D2 lam x) ^ 2 := by rw [div_pow, mul_pow] rw [hsq] refine le_trans ?_ (hg x.1) -- numerator: (α g₁ − Δ)² ≤ (α g₁ + 1)²; denominator: D² ≥ D_min² have hnum : P.β ^ 2 * (P.α * P.g₁ x.1 - Δ lam x) ^ 2 ≤ P.β ^ 2 * (P.α * P.g₁ x.1 + 1) ^ 2 := by apply mul_le_mul_of_nonneg_left _ (by positivity) have hαg : 0 ≤ P.α * P.g₁ x.1 := mul_nonneg hα hg10.le rcases Δ_mem lam x with h | h · rw [h]; nlinarith · rw [h]; nlinarith have hden : (1 - P.β / P.g₁ x.1 - P.α * P.β) ^ 2 ≤ (P.D2 lam x) ^ 2 := by unfold D2 have hr := P.ratio_nonneg x.1 rcases Δ_mem lam x with h | h · rw [h]; nlinarith [hDmin] · rw [h]; nlinarith [hDmin] calc P.β ^ 2 * (P.α * P.g₁ x.1 - Δ lam x) ^ 2 / (P.D2 lam x) ^ 2 ≤ P.β ^ 2 * (P.α * P.g₁ x.1 + 1) ^ 2 / (P.D2 lam x) ^ 2 := by exact (div_le_div_iff_of_pos_right hD2).mpr hnum _ ≤ P.β ^ 2 * (P.α * P.g₁ x.1 + 1) ^ 2 / (1 - P.β / P.g₁ x.1 - P.α * P.β) ^ 2 := by apply div_le_div_of_nonneg_left (by positivity) hDmin2 hden rw [l2sq] have hsum : ∑ x : C, (P.gPert2 lam true x - P.ghat2 true x) ^ 2 ≤ ∑ _x : C, εg := 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, (P.gPert2 lam true x - P.ghat2 true x) ^ 2 ≤ (Fintype.card C : ℝ)⁻¹ * ((Fintype.card C : ℝ) * εg) := by apply mul_le_mul_of_nonneg_left hsum; positivity _ = εg := by field_simp
    Causalean.Estimation.MinimaxATE.VarConstr2.l2sq_gPert2_true_le · Causalean/Estimation/MinimaxATE/VaryingCenterCase2/Membership.lean:84