@@ -135,31 +135,27 @@ lemma frequently_mul_le (h : a < linearGrowthSup u) :
135135 le_linearGrowthSup_iff.1 (le_refl (linearGrowthSup u)) a h
136136
137137lemma _root_.Frequently.linearGrowthInf_le (h : βαΆ n : β in atTop, u n β€ a * n) :
138- linearGrowthInf u β€ a := by
139- apply linearGrowthInf_le_iff.2 fun c c_u β¦ h.mono fun n hn β¦ hn.trans ?_
140- exact mul_le_mul_of_nonneg_right c_u.le n.cast_nonneg'
138+ linearGrowthInf u β€ a :=
139+ linearGrowthInf_le_iff.2 fun c c_u β¦ h.mono fun n hn β¦ hn.trans <| by gcongr
141140
142141lemma _root_.Eventually.le_linearGrowthInf (h : βαΆ n : β in atTop, a * n β€ u n) :
143- a β€ linearGrowthInf u := by
144- apply le_linearGrowthInf_iff.2 fun c c_u β¦ h.mono fun n hn β¦ hn.trans' ?_
145- exact mul_le_mul_of_nonneg_right c_u.le n.cast_nonneg'
142+ a β€ linearGrowthInf u :=
143+ le_linearGrowthInf_iff.2 fun c c_u β¦ h.mono fun n hn β¦ hn.trans' <| by gcongr
146144
147145lemma _root_.Eventually.linearGrowthSup_le (h : βαΆ n : β in atTop, u n β€ a * n) :
148- linearGrowthSup u β€ a:= by
149- apply linearGrowthSup_le_iff.2 fun c c_u β¦ h.mono fun n hn β¦ hn.trans ?_
150- exact mul_le_mul_of_nonneg_right c_u.le n.cast_nonneg'
146+ linearGrowthSup u β€ a:=
147+ linearGrowthSup_le_iff.2 fun c c_u β¦ h.mono fun n hn β¦ hn.trans <| by gcongr
151148
152149lemma _root_.Frequently.le_linearGrowthSup (h : βαΆ n : β in atTop, a * n β€ u n) :
153- a β€ linearGrowthSup u := by
154- apply le_linearGrowthSup_iff.2 fun c c_u β¦ h.mono fun n hn β¦ hn.trans' ?_
155- exact mul_le_mul_of_nonneg_right c_u.le n.cast_nonneg'
150+ a β€ linearGrowthSup u :=
151+ le_linearGrowthSup_iff.2 fun c c_u β¦ h.mono fun n hn β¦ hn.trans' <| by gcongr
156152
157153/-! ### Special cases -/
158154
159155lemma linearGrowthSup_bot : linearGrowthSup (β₯ : β β EReal) = (β₯ : EReal) := by
160156 nth_rw 2 [β limsup_const (f := atTop (Ξ± := β)) β₯]
161- refine limsup_congr (eventually_atTop. 2 ?_)
162- exact β¨ 1 , fun n n_pos β¦ bot_div_of_pos_ne_top (Nat.cast_pos'. 2 n_pos ) (natCast_ne_top n)β©
157+ refine limsup_congr <| (eventually_gt_atTop 0 ).mono fun n n_pos β¦ ?_
158+ exact bot_div_of_pos_ne_top (by positivity ) (natCast_ne_top n)
163159
164160lemma linearGrowthInf_bot : linearGrowthInf (β₯ : β β EReal) = (β₯ : EReal) := by
165161 apply le_bot_iff.1
@@ -400,7 +396,7 @@ lemma le_linearGrowthInf_comp (hu : 0 β€αΆ [atTop] u) (hv : Tendsto v atTop atT
400396 with n b_uvn a_vn n_0
401397 replace a_vn := ((lt_div_iff (Nat.cast_pos'.2 n_0) (natCast_ne_top n)).1 a_vn).le
402398 rw [comp_apply, mul_comm a b, mul_assoc b a]
403- exact b_uvn.trans' (mul_le_mul_of_nonneg_left a_vn b_0.le)
399+ exact b_uvn.trans' <| by gcongr
404400
405401lemma linearGrowthSup_comp_le (hu : βαΆ n in atTop, 0 β€ u n)
406402 (hvβ : (linearGrowthSup fun n β¦ v n : EReal) β 0 )
@@ -418,7 +414,7 @@ lemma linearGrowthSup_comp_le (hu : βαΆ n in atTop, 0 β€ u n)
418414 with n uvn_b vn_a n_0
419415 replace vn_a := ((div_lt_iff (Nat.cast_pos'.2 n_0) (natCast_ne_top n)).1 vn_a).le
420416 rw [comp_apply, mul_comm a b, mul_assoc b a]
421- exact uvn_b.trans (mul_le_mul_of_nonneg_left vn_a b_0)
417+ exact uvn_b.trans <| by gcongr
422418
423419/-! ### Monotone sequences -/
424420
@@ -490,12 +486,12 @@ lemma _root_.Monotone.linearGrowthInf_comp_le (h : Monotone u)
490486 refine β¨k, ?_, fun vk_ak' β¦ ?_β©
491487 Β· rw [mul_comm a, β le_div_iff_mul_le a_0 a_top, EReal.div_eq_inv_mul] at aM_M'
492488 apply Nat.cast_le.1 <| aM_M'.trans <| an_k.trans' _
493- exact mul_le_mul_of_nonneg_left (Nat.cast_le. 2 n_M') (inv_nonneg_of_nonneg a_0.le)
489+ gcongr
494490 Β· rw [comp_apply, mul_comm a b, mul_assoc b a]
495491 rw [β EReal.div_eq_inv_mul, le_div_iff_mul_le a_0' (ne_top_of_lt a_a'), mul_comm] at k_an'
496492 rw [β EReal.div_eq_inv_mul, div_le_iff_le_mul a_0 a_top] at an_k
497493 have vk_n := Nat.cast_le.1 (vk_ak'.trans k_an')
498- exact (h vk_n).trans <| un_bn.trans (mul_le_mul_of_nonneg_left an_k b_0.le)
494+ exact (h vk_n).trans <| un_bn.trans <| by gcongr
499495
500496lemma _root_.Monotone.le_linearGrowthSup_comp (h : Monotone u)
501497 (hv : (linearGrowthInf fun n β¦ v n : EReal) β 0 ) :
@@ -531,12 +527,12 @@ lemma _root_.Monotone.le_linearGrowthSup_comp (h : Monotone u)
531527 refine β¨k, ?_, fun ak_vk' β¦ ?_β©
532528 Β· rw [mul_comm a', β le_div_iff_mul_le a_0' a_top', EReal.div_eq_inv_mul] at aM_M'
533529 apply Nat.cast_le.1 <| aM_M'.trans <| an_k'.trans' _
534- exact mul_le_mul_of_nonneg_left (Nat.cast_le. 2 n_M') (inv_nonneg_of_nonneg a_0'.le)
530+ gcongr
535531 Β· rw [comp_apply, mul_comm a b, mul_assoc b a]
536532 rw [β EReal.div_eq_inv_mul, div_le_iff_le_mul a_0' a_top'] at an_k'
537533 rw [β EReal.div_eq_inv_mul, le_div_iff_mul_le a_0 (ne_top_of_lt a_a'), mul_comm] at k_an
538534 have n_vk := Nat.cast_le.1 (an_k'.trans ak_vk')
539- exact (mul_le_mul_of_nonneg_left k_an b_0.le).trans <| bn_un.trans (h n_vk)
535+ exact le_trans ( by gcongr) <| bn_un.trans (h n_vk)
540536
541537lemma _root_.Monotone.linearGrowthInf_comp {a : EReal} (h : Monotone u)
542538 (hv : Tendsto (fun n β¦ (v n : EReal) / n) atTop (π a)) (ha : a β 0 ) (ha' : a β β€) :
0 commit comments