@@ -110,15 +110,12 @@ end OrderedAddCommMonoid
110110
111111section OrderedCancelAddCommMonoid
112112variable [AddCommMonoid α] [PartialOrder α] [IsOrderedCancelAddMonoid α] [Module ℚ≥0 α]
113- {a : α} {s : Finset ι} {f g : ι → α}
114- section PosSMulStrictMono
115- variable [PosSMulStrictMono ℚ≥0 α]
113+ [PosSMulStrictMono ℚ≥0 α] {s : Finset ι} {f g : ι → α} {a : α}
116114
117- lemma expect_lt_expect (hle : ∀ i ∈ s, f i ≤ g i) (hlt : ∃ i ∈ s, f i < g i) :
118- 𝔼 i ∈ s, f i < 𝔼 i ∈ s, g i := by
119- apply smul_lt_smul_of_pos_left (sum_lt_sum hle hlt)
120- rw [inv_pos, Nat.cast_pos, card_pos]
121- exact hlt.imp (fun _ => And.left)
115+ lemma expect_lt_expect (hfg : ∀ i ∈ s, f i ≤ g i) (hfg' : ∃ i ∈ s, f i < g i) :
116+ 𝔼 i ∈ s, f i < 𝔼 i ∈ s, g i :=
117+ smul_lt_smul_of_pos_left (sum_lt_sum hfg hfg')
118+ (by obtain ⟨i, hi, -⟩ := hfg'; have : s.Nonempty := ⟨i, hi⟩; simpa)
122119
123120lemma expect_lt (hle : ∀ x ∈ s, f x ≤ a) (hlt : ∃ x ∈ s, f x < a) :
124121 𝔼 i ∈ s, f i < a := by
@@ -130,10 +127,12 @@ lemma lt_expect (hle : ∀ x ∈ s, a ≤ f x) (hlt : ∃ x ∈ s, a < f x) :
130127 rw [← expect_const (hlt.imp (fun _ => And.left)) a]
131128 exact expect_lt_expect hle hlt
132129
130+ lemma expect_pos' (h : ∀ i ∈ s, 0 ≤ f i) (hs : ∃ i ∈ s, 0 < f i) : 0 < 𝔼 i ∈ s, f i :=
131+ (expect_const_zero _).symm.trans_lt <| expect_lt_expect h hs
132+
133133lemma expect_pos (hf : ∀ i ∈ s, 0 < f i) (hs : s.Nonempty) : 0 < 𝔼 i ∈ s, f i :=
134134 smul_pos (inv_pos.2 <| mod_cast hs.card_pos) <| sum_pos hf hs
135135
136- end PosSMulStrictMono
137136end OrderedCancelAddCommMonoid
138137
139138section LinearOrderedAddCommMonoid
@@ -235,7 +234,7 @@ meta def evalFinsetExpect : PositivityExt where eval {u α} zα pα e := do
235234 assumeInstancesCommute
236235 let pr : Q(∀ i, 0 < $f i) ← mkLambdaFVars #[i] pbody
237236 return some
238- q(@expect_pos $ι $α $instα $pα $pα' $instmod $s $f $instαordsmul (fun i _ ↦ $pr i) $ps))
237+ q(@expect_pos $ι $α $instα $pα $pα' $instmod $instαordsmul $s $f (fun i _ ↦ $pr i) $ps))
239238 -- Try to show that the sum is positive
240239 if let some p_pos := p_pos then
241240 return .positive p_pos
0 commit comments