PO.ID.Partial.BalkePearl.Attainment
This module collects the explicit latent tables witnessing that each of the sixteen Balke-Pearl closed-form expressions is achieved by an observationally equivalent model, on the region of observed distributions where th
Basic 1 core · 1 supporting Observed cell probabilities form a distribution per instrument value ★ sum_cellProb_eq_one
Observed cell probabilities form a distribution per instrument value
Under the Balke-Pearl IV base assumptions, for every instrument value z, the four observed outcome-treatment cell probabilities sum to one.
Formal statement
Proof (Lean source)
1 supporting declaration (lemmas, instances)
-
cellProb_nonneglemma — Observed cell probabilities are nonnegative.Proof (Lean source)
lemma cellProb_nonneg (y d z : Bool) : 0 ≤ S.cellProb y d z := div_nonneg ENNReal.toReal_nonneg ENNReal.toReal_nonneg
Lower 15 core · 16 supporting Witnesses attaining the Balke-Pearl lower expressions ★ bpLower_mem_BPIdentifiedInterval
Witnesses attaining the Balke-Pearl lower expressions
Free-variable choice t in the witness attaining bpLowerTerm 0.
Latent table attaining bpLowerTerm 0.
Definition (Lean source)
Free-variable choice v in the witness attaining bpLowerTerm 1.
Latent table attaining bpLowerTerm 1.
Definition (Lean source)
Free-variable choice u in the witness attaining bpLowerTerm 2.
Free-variable choice v in the witness attaining bpLowerTerm 2.
Latent table attaining bpLowerTerm 2.
Definition (Lean source)
Free-variable choice u in the witness attaining bpLowerTerm 3.
Free-variable choice v in the witness attaining bpLowerTerm 3.
Latent table attaining bpLowerTerm 3.
Definition (Lean source)
Latent table attaining bpLowerTerm 4.
Definition (Lean source)
Latent table attaining bpLowerTerm 5.
Definition (Lean source)
Latent table attaining bpLowerTerm 6.
Definition (Lean source)
Latent table attaining bpLowerTerm 7.
Definition (Lean source)
Under the Balke-Pearl IV base assumptions, the closed-form Balke-Pearl lower bound, computed from the observed cell probabilities, is itself attained as the average treatment effect of some feasible latent treatment-response table — it lies in the Balke-Pearl identified interval.
Formal statement
Proof (Lean source)
16 supporting declarations (lemmas, instances)
-
bpLowerWitness0_feasibletheorem — The witness for bpLowerTerm 0 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpLowerWitness0Proof (Lean source)
theorem bpLowerWitness0_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpLowerTerm j ≤ S.bpLowerTerm 0) : BPFeasible S hA S.bpLowerWitness0 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpLowerTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 rcases max_cases (0:ℝ) (S.cellProb false false true + S.cellProb false true true - S.cellProb false false false - S.cellProb true false false ) with ⟨hmx0, hmc0⟩ | ⟨hmx0, hmc0⟩ all_goals refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness0, bpAux0t, hmx0] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpLowerWitness0, bpAux0t, hmx0, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness0, bpAux0t, hmx0, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpLowerWitness0_objectivetheorem — The witness for bpLowerTerm 0 attains it.Proof (Lean source)
theorem bpLowerWitness0_objective (hA : S.BaseAssumptions) : BPObjective S.bpLowerWitness0 = S.bpLowerTerm 0 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpLowerWitness0, bpAux0t, bpLowerTerm, Fintype.sum_bool, boolToReal] linarith -
bpLowerWitness1_feasibletheorem — The witness for bpLowerTerm 1 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpLowerWitness1Proof (Lean source)
theorem bpLowerWitness1_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpLowerTerm j ≤ S.bpLowerTerm 1) : BPFeasible S hA S.bpLowerWitness1 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpLowerTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 rcases max_cases (0:ℝ) (S.cellProb false false false - S.cellProb false false true + S.cellProb false true false - S.cellProb true false true ) with ⟨hmx0, hmc0⟩ | ⟨hmx0, hmc0⟩ all_goals refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness1, bpAux1v, hmx0] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpLowerWitness1, bpAux1v, hmx0, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness1, bpAux1v, hmx0, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpLowerWitness1_objectivetheorem — The witness for bpLowerTerm 1 attains it.Proof (Lean source)
theorem bpLowerWitness1_objective (hA : S.BaseAssumptions) : BPObjective S.bpLowerWitness1 = S.bpLowerTerm 1 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpLowerWitness1, bpAux1v, bpLowerTerm, Fintype.sum_bool, boolToReal] linarith -
bpLowerWitness2_feasibletheorem — The witness for bpLowerTerm 2 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpLowerWitness2Proof (Lean source)
theorem bpLowerWitness2_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpLowerTerm j ≤ S.bpLowerTerm 2) : BPFeasible S hA S.bpLowerWitness2 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpLowerTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 rcases max_cases (0:ℝ) (S.cellProb false true true - S.cellProb false true false - S.cellProb true false false + S.cellProb true false true ) with ⟨hmx0, hmc0⟩ | ⟨hmx0, hmc0⟩ all_goals rcases max_cases (0:ℝ) (S.cellProb false true true - S.cellProb true false false ) with ⟨hmx1, hmc1⟩ | ⟨hmx1, hmc1⟩ all_goals refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness2, bpAux2u, bpAux2v, hmx0, hmx1] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpLowerWitness2, bpAux2u, bpAux2v, hmx0, hmx1, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness2, bpAux2u, bpAux2v, hmx0, hmx1, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpLowerWitness2_objectivetheorem — The witness for bpLowerTerm 2 attains it.Proof (Lean source)
theorem bpLowerWitness2_objective (hA : S.BaseAssumptions) : BPObjective S.bpLowerWitness2 = S.bpLowerTerm 2 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpLowerWitness2, bpAux2u, bpAux2v, bpLowerTerm, Fintype.sum_bool, boolToReal] linarith -
bpLowerWitness3_feasibletheorem — The witness for bpLowerTerm 3 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpLowerWitness3Proof (Lean source)
theorem bpLowerWitness3_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpLowerTerm j ≤ S.bpLowerTerm 3) : BPFeasible S hA S.bpLowerWitness3 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpLowerTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 rcases max_cases (0:ℝ) (S.cellProb false true false - S.cellProb false true true + S.cellProb true false false - S.cellProb true false true ) with ⟨hmx0, hmc0⟩ | ⟨hmx0, hmc0⟩ all_goals rcases max_cases (0:ℝ) (S.cellProb false true false - S.cellProb true false true ) with ⟨hmx1, hmc1⟩ | ⟨hmx1, hmc1⟩ all_goals refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness3, bpAux3u, bpAux3v, hmx0, hmx1] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpLowerWitness3, bpAux3u, bpAux3v, hmx0, hmx1, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness3, bpAux3u, bpAux3v, hmx0, hmx1, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpLowerWitness3_objectivetheorem — The witness for bpLowerTerm 3 attains it.Proof (Lean source)
theorem bpLowerWitness3_objective (hA : S.BaseAssumptions) : BPObjective S.bpLowerWitness3 = S.bpLowerTerm 3 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpLowerWitness3, bpAux3u, bpAux3v, bpLowerTerm, Fintype.sum_bool, boolToReal] linarith -
bpLowerWitness4_feasibletheorem — The witness for bpLowerTerm 4 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpLowerWitness4Proof (Lean source)
theorem bpLowerWitness4_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpLowerTerm j ≤ S.bpLowerTerm 4) : BPFeasible S hA S.bpLowerWitness4 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpLowerTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness4] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpLowerWitness4, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness4, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpLowerWitness4_objectivetheorem — The witness for bpLowerTerm 4 attains it.Proof (Lean source)
theorem bpLowerWitness4_objective (hA : S.BaseAssumptions) : BPObjective S.bpLowerWitness4 = S.bpLowerTerm 4 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpLowerWitness4, bpLowerTerm, Fintype.sum_bool, boolToReal] linarith -
bpLowerWitness5_feasibletheorem — The witness for bpLowerTerm 5 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpLowerWitness5Proof (Lean source)
theorem bpLowerWitness5_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpLowerTerm j ≤ S.bpLowerTerm 5) : BPFeasible S hA S.bpLowerWitness5 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpLowerTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness5] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpLowerWitness5, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness5, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpLowerWitness5_objectivetheorem — The witness for bpLowerTerm 5 attains it.Proof (Lean source)
theorem bpLowerWitness5_objective (hA : S.BaseAssumptions) : BPObjective S.bpLowerWitness5 = S.bpLowerTerm 5 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpLowerWitness5, bpLowerTerm, Fintype.sum_bool, boolToReal] linarith -
bpLowerWitness6_feasibletheorem — The witness for bpLowerTerm 6 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpLowerWitness6Proof (Lean source)
theorem bpLowerWitness6_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpLowerTerm j ≤ S.bpLowerTerm 6) : BPFeasible S hA S.bpLowerWitness6 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpLowerTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness6] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpLowerWitness6, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness6, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpLowerWitness6_objectivetheorem — The witness for bpLowerTerm 6 attains it.Proof (Lean source)
theorem bpLowerWitness6_objective (hA : S.BaseAssumptions) : BPObjective S.bpLowerWitness6 = S.bpLowerTerm 6 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpLowerWitness6, bpLowerTerm, Fintype.sum_bool, boolToReal] linarith -
bpLowerWitness7_feasibletheorem — The witness for bpLowerTerm 7 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpLowerWitness7Proof (Lean source)
theorem bpLowerWitness7_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpLowerTerm j ≤ S.bpLowerTerm 7) : BPFeasible S hA S.bpLowerWitness7 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpLowerTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness7] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpLowerWitness7, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpLowerWitness7, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpLowerWitness7_objectivetheorem — The witness for bpLowerTerm 7 attains it.Proof (Lean source)
theorem bpLowerWitness7_objective (hA : S.BaseAssumptions) : BPObjective S.bpLowerWitness7 = S.bpLowerTerm 7 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpLowerWitness7, bpLowerTerm, Fintype.sum_bool, boolToReal] linarith
Upper 15 core · 16 supporting Witnesses attaining the Balke-Pearl upper expressions ★ bpUpper_mem_BPIdentifiedInterval
Witnesses attaining the Balke-Pearl upper expressions
Free-variable choice in the witness attaining bpUpperTerm 0.
Latent table attaining bpUpperTerm 0.
Definition (Lean source)
Free-variable choice in the witness attaining bpUpperTerm 1.
Latent table attaining bpUpperTerm 1.
Definition (Lean source)
Free-variable choice in the witness attaining bpUpperTerm 2.
Free-variable choice in the witness attaining bpUpperTerm 2.
Latent table attaining bpUpperTerm 2.
Definition (Lean source)
Free-variable choice in the witness attaining bpUpperTerm 3.
Free-variable choice in the witness attaining bpUpperTerm 3.
Latent table attaining bpUpperTerm 3.
Definition (Lean source)
Latent table attaining bpUpperTerm 4.
Definition (Lean source)
Latent table attaining bpUpperTerm 5.
Definition (Lean source)
Latent table attaining bpUpperTerm 6.
Definition (Lean source)
Latent table attaining bpUpperTerm 7.
Definition (Lean source)
Under the Balke-Pearl IV base assumptions, the closed-form Balke-Pearl upper bound, computed from the observed cell probabilities, is itself attained as the average treatment effect of some feasible latent treatment-response table — it lies in the Balke-Pearl identified interval.
Formal statement
Proof (Lean source)
16 supporting declarations (lemmas, instances)
-
bpUpperWitness0_feasibletheorem — The witness for bpUpperTerm 0 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpUpperWitness0Proof (Lean source)
theorem bpUpperWitness0_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpUpperTerm 0 ≤ S.bpUpperTerm j) : BPFeasible S hA S.bpUpperWitness0 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpUpperTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 rcases max_cases (0:ℝ) (-S.cellProb false false false - S.cellProb false false true - S.cellProb false true true - S.cellProb true false false + 1) with ⟨hmx0, hmc0⟩ | ⟨hmx0, hmc0⟩ all_goals refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness0, bpUAux0u, hmx0] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpUpperWitness0, bpUAux0u, hmx0, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness0, bpUAux0u, hmx0, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpUpperWitness0_objectivetheorem — The witness for bpUpperTerm 0 attains it.Proof (Lean source)
theorem bpUpperWitness0_objective (hA : S.BaseAssumptions) : BPObjective S.bpUpperWitness0 = S.bpUpperTerm 0 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpUpperWitness0, bpUAux0u, bpUpperTerm, Fintype.sum_bool, boolToReal] linarith -
bpUpperWitness1_feasibletheorem — The witness for bpUpperTerm 1 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpUpperWitness1Proof (Lean source)
theorem bpUpperWitness1_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpUpperTerm 1 ≤ S.bpUpperTerm j) : BPFeasible S hA S.bpUpperWitness1 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpUpperTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 rcases max_cases (0:ℝ) (-S.cellProb false false false - S.cellProb false false true - S.cellProb false true false - S.cellProb true false true + 1) with ⟨hmx0, hmc0⟩ | ⟨hmx0, hmc0⟩ all_goals refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness1, bpUAux1u, hmx0] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpUpperWitness1, bpUAux1u, hmx0, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness1, bpUAux1u, hmx0, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpUpperWitness1_objectivetheorem — The witness for bpUpperTerm 1 attains it.Proof (Lean source)
theorem bpUpperWitness1_objective (hA : S.BaseAssumptions) : BPObjective S.bpUpperWitness1 = S.bpUpperTerm 1 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpUpperWitness1, bpUAux1u, bpUpperTerm, Fintype.sum_bool, boolToReal] linarith -
bpUpperWitness2_feasibletheorem — The witness for bpUpperTerm 2 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpUpperWitness2Proof (Lean source)
theorem bpUpperWitness2_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpUpperTerm 2 ≤ S.bpUpperTerm j) : BPFeasible S hA S.bpUpperWitness2 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpUpperTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 rcases max_cases (0:ℝ) (S.cellProb false true false - S.cellProb false true true + S.cellProb true false false - S.cellProb true false true ) with ⟨hmx0, hmc0⟩ | ⟨hmx0, hmc0⟩ all_goals rcases max_cases (0:ℝ) (-S.cellProb false false false - S.cellProb false false true - S.cellProb false true false - S.cellProb true false false + 1) with ⟨hmx1, hmc1⟩ | ⟨hmx1, hmc1⟩ all_goals refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness2, bpUAux2u, bpUAux2v, hmx0, hmx1] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpUpperWitness2, bpUAux2u, bpUAux2v, hmx0, hmx1, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness2, bpUAux2u, bpUAux2v, hmx0, hmx1, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpUpperWitness2_objectivetheorem — The witness for bpUpperTerm 2 attains it.Proof (Lean source)
theorem bpUpperWitness2_objective (hA : S.BaseAssumptions) : BPObjective S.bpUpperWitness2 = S.bpUpperTerm 2 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpUpperWitness2, bpUAux2u, bpUAux2v, bpUpperTerm, Fintype.sum_bool, boolToReal] linarith -
bpUpperWitness3_feasibletheorem — The witness for bpUpperTerm 3 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpUpperWitness3Proof (Lean source)
theorem bpUpperWitness3_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpUpperTerm 3 ≤ S.bpUpperTerm j) : BPFeasible S hA S.bpUpperWitness3 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpUpperTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 rcases max_cases (0:ℝ) (-S.cellProb false true false + S.cellProb false true true - S.cellProb true false false + S.cellProb true false true ) with ⟨hmx0, hmc0⟩ | ⟨hmx0, hmc0⟩ all_goals rcases max_cases (0:ℝ) (-S.cellProb false false false - S.cellProb false false true - S.cellProb false true true - S.cellProb true false true + 1) with ⟨hmx1, hmc1⟩ | ⟨hmx1, hmc1⟩ all_goals refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness3, bpUAux3u, bpUAux3v, hmx0, hmx1] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpUpperWitness3, bpUAux3u, bpUAux3v, hmx0, hmx1, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness3, bpUAux3u, bpUAux3v, hmx0, hmx1, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpUpperWitness3_objectivetheorem — The witness for bpUpperTerm 3 attains it.Proof (Lean source)
theorem bpUpperWitness3_objective (hA : S.BaseAssumptions) : BPObjective S.bpUpperWitness3 = S.bpUpperTerm 3 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpUpperWitness3, bpUAux3u, bpUAux3v, bpUpperTerm, Fintype.sum_bool, boolToReal] linarith -
bpUpperWitness4_feasibletheorem — The witness for bpUpperTerm 4 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpUpperWitness4Proof (Lean source)
theorem bpUpperWitness4_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpUpperTerm 4 ≤ S.bpUpperTerm j) : BPFeasible S hA S.bpUpperWitness4 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpUpperTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness4] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpUpperWitness4, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness4, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpUpperWitness4_objectivetheorem — The witness for bpUpperTerm 4 attains it.Proof (Lean source)
theorem bpUpperWitness4_objective (hA : S.BaseAssumptions) : BPObjective S.bpUpperWitness4 = S.bpUpperTerm 4 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpUpperWitness4, bpUpperTerm, Fintype.sum_bool, boolToReal] linarith -
bpUpperWitness5_feasibletheorem — The witness for bpUpperTerm 5 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpUpperWitness5Proof (Lean source)
theorem bpUpperWitness5_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpUpperTerm 5 ≤ S.bpUpperTerm j) : BPFeasible S hA S.bpUpperWitness5 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpUpperTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness5] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpUpperWitness5, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness5, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpUpperWitness5_objectivetheorem — The witness for bpUpperTerm 5 attains it.Proof (Lean source)
theorem bpUpperWitness5_objective (hA : S.BaseAssumptions) : BPObjective S.bpUpperWitness5 = S.bpUpperTerm 5 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpUpperWitness5, bpUpperTerm, Fintype.sum_bool, boolToReal] linarith -
bpUpperWitness6_feasibletheorem — The witness for bpUpperTerm 6 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpUpperWitness6Proof (Lean source)
theorem bpUpperWitness6_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpUpperTerm 6 ≤ S.bpUpperTerm j) : BPFeasible S hA S.bpUpperWitness6 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpUpperTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness6] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpUpperWitness6, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness6, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpUpperWitness6_objectivetheorem — The witness for bpUpperTerm 6 attains it.Proof (Lean source)
theorem bpUpperWitness6_objective (hA : S.BaseAssumptions) : BPObjective S.bpUpperWitness6 = S.bpUpperTerm 6 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpUpperWitness6, bpUpperTerm, Fintype.sum_bool, boolToReal] linarith -
bpUpperWitness7_feasibletheorem — The witness for bpUpperTerm 7 is feasible on its optimality region.hypothesesconclusionBPFeasible S hA S.bpUpperWitness7Proof (Lean source)
theorem bpUpperWitness7_feasible (hA : S.BaseAssumptions) {π₀ : Bool → Bool → Bool → Bool → ℝ} (h₀ : BPFeasible S hA π₀) (hreg : ∀ j, S.bpUpperTerm 7 ≤ S.bpUpperTerm j) : BPFeasible S hA S.bpUpperWitness7 := by have hs := h₀.sum_one have hn := h₀.nonneg have n0 := hn false false false false have n1 := hn false false false true have n2 := hn false false true false have n3 := hn false false true true have n4 := hn false true false false have n5 := hn false true false true have n6 := hn false true true false have n7 := hn false true true true have n8 := hn true false false false have n9 := hn true false false true have n10 := hn true false true false have n11 := hn true false true true have n12 := hn true true false false have n13 := hn true true false true have n14 := hn true true true false have n15 := hn true true true true have hm := h₀.marginal have e000 := hm false false false have e100 := hm true false false have e010 := hm false true false have e110 := hm true true false have e001 := hm false false true have e101 := hm true false true have e011 := hm false true true have e111 := hm true true true simp only [Fintype.sum_bool, dArm, yArm] at hs e000 e100 e010 e110 e001 e101 e011 e111 norm_num at hs e000 e100 e010 e110 e001 e101 e011 e111 have r0 := hreg 0; have r1 := hreg 1; have r2 := hreg 2; have r3 := hreg 3 have r4 := hreg 4; have r5 := hreg 5; have r6 := hreg 6; have r7 := hreg 7 simp only [bpUpperTerm] at r0 r1 r2 r3 r4 r5 r6 r7 simp only [e000, e100, e010, e110, e001, e101, e011, e111] at r0 r1 r2 r3 r4 r5 r6 r7 refine ⟨?_, ?_, ?_⟩ · rintro (_|_) (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness7] <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith · simp only [bpUpperWitness7, Fintype.sum_bool] try simp only [e000, e100, e010, e110, e001, e101, e011, e111] linarith · rintro (_|_) (_|_) (_|_) <;> simp only [bpUpperWitness7, dArm, yArm, Fintype.sum_bool] <;> norm_num <;> try simp only [e000, e100, e010, e110, e001, e101, e011, e111] all_goals linarith -
bpUpperWitness7_objectivetheorem — The witness for bpUpperTerm 7 attains it.Proof (Lean source)
theorem bpUpperWitness7_objective (hA : S.BaseAssumptions) : BPObjective S.bpUpperWitness7 = S.bpUpperTerm 7 := by have h0 := S.sum_cellProb_eq_one hA false have h1 := S.sum_cellProb_eq_one hA true simp only [Fintype.sum_bool] at h0 h1 simp only [BPObjective, bpUpperWitness7, bpUpperTerm, Fintype.sum_bool, boolToReal] linarith