Theorem: Rel.abs_edgeDensity_sub_edgeDensity_le_two_mul_sub_sq
File: Mathlib/Combinatorics/SimpleGraph/Density.lean

tactic: have hδ' : 0 ≤ 2 * δ - δ ^ 2 := by
  rw [sub_nonneg, sq]
  gcongr
  exact hδ₁.le.trans (by norm_num)
state_before: 𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁ : δ < 1
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
⊢ abs (↑(edgeDensity r s₂ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: rw [← sub_pos] at hδ₁
state_before: 𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁ : δ < 1
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
⊢ abs (↑(edgeDensity r s₂ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: obtain rfl | hs₂' := s₂.eq_empty_or_nonempty
state_before: 𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
⊢ abs (↑(edgeDensity r s₂ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: obtain rfl | ht₂' := t₂.eq_empty_or_nonempty
state_before: case inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
⊢ abs (↑(edgeDensity r s₂ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: have hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ) := by ring
state_before: case inr.inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
⊢ abs (↑(edgeDensity r s₂ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: rw [hr]
state_before: case inr.inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
⊢ abs (↑(edgeDensity r s₂ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: norm_cast
state_before: case inr.inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
⊢ abs (↑(edgeDensity r s₂ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 1 - (1 - δ) * (1 - δ)

tactic: refine'
  (Rat.cast_le.2 <| abs_edgeDensity_sub_edgeDensity_le_one_sub_mul r hs ht hs₂' ht₂').trans _
state_before: case inr.inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
⊢ ↑(abs (edgeDensity r s₂ t₂ - edgeDensity r s₁ t₁)) ≤ 1 - (1 - δ) * (1 - δ)

tactic: push_cast
state_before: case inr.inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
⊢ ↑(1 - ↑(card s₂) / ↑(card s₁) * (↑(card t₂) / ↑(card t₁))) ≤ 1 - (1 - δ) * (1 - δ)

tactic: have h₁ := hs₂'.mono hs
state_before: case inr.inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
⊢ 1 - ↑(card s₂) / ↑(card s₁) * (↑(card t₂) / ↑(card t₁)) ≤ 1 - (1 - δ) * (1 - δ)

tactic: have h₂ := ht₂'.mono ht
state_before: case inr.inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
h₁ : Finset.Nonempty s₁
⊢ 1 - ↑(card s₂) / ↑(card s₁) * (↑(card t₂) / ↑(card t₁)) ≤ 1 - (1 - δ) * (1 - δ)

tactic: gcongr
state_before: case inr.inr
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
h₁ : Finset.Nonempty s₁
h₂ : Finset.Nonempty t₁
⊢ 1 - ↑(card s₂) / ↑(card s₁) * (↑(card t₂) / ↑(card t₁)) ≤ 1 - (1 - δ) * (1 - δ)

tactic: rw [sub_nonneg, sq]
state_before: 𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁ : δ < 1
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
⊢ 0 ≤ 2 * δ - δ ^ 2

tactic: gcongr
state_before: 𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁ : δ < 1
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
⊢ δ * δ ≤ 2 * δ

tactic: exact hδ₁.le.trans (by norm_num)
state_before: case h
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁ : δ < 1
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
⊢ δ ≤ 2

tactic: norm_num
state_before: 𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁ : δ < 1
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
⊢ 1 ≤ 2

tactic: rw [Finset.card_empty, Nat.cast_zero] at hs₂
state_before: case inl
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs : ∅ ⊆ s₁
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card ∅)
⊢ abs (↑(edgeDensity r ∅ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: simpa [edgeDensity, (nonpos_of_mul_nonpos_right hs₂ hδ₁).antisymm (Nat.cast_nonneg _)] using hδ'
state_before: case inl
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs : ∅ ⊆ s₁
hs₂ : (1 - δ) * ↑(card s₁) ≤ 0
⊢ abs (↑(edgeDensity r ∅ t₂) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: rw [Finset.card_empty, Nat.cast_zero] at ht₂
state_before: case inr.inl
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht : ∅ ⊆ t₁
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card ∅)
⊢ abs (↑(edgeDensity r s₂ ∅) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: simpa [edgeDensity, (nonpos_of_mul_nonpos_right ht₂ hδ₁).antisymm (Nat.cast_nonneg _)] using hδ'
state_before: case inr.inl
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht : ∅ ⊆ t₁
ht₂ : (1 - δ) * ↑(card t₁) ≤ 0
⊢ abs (↑(edgeDensity r s₂ ∅) - ↑(edgeDensity r s₁ t₁)) ≤ 2 * δ - δ ^ 2

tactic: ring
state_before: 𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
⊢ 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)

tactic: refine' (le_div_iff _).2 hs₂
state_before: case inr.inr.h.h₁
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
h₁ : Finset.Nonempty s₁
h₂ : Finset.Nonempty t₁
⊢ 1 - δ ≤ ↑(card s₂) / ↑(card s₁)

tactic: exact_mod_cast h₁.card_pos
state_before: case inr.inr.h.h₁
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
h₁ : Finset.Nonempty s₁
h₂ : Finset.Nonempty t₁
⊢ 0 < ↑(card s₁)

tactic: refine' (le_div_iff _).2 ht₂
state_before: case inr.inr.h.h₂
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
h₁ : Finset.Nonempty s₁
h₂ : Finset.Nonempty t₁
⊢ 1 - δ ≤ ↑(card t₂) / ↑(card t₁)

tactic: exact_mod_cast h₂.card_pos
state_before: case inr.inr.h.h₂
𝕜 : Type u_3
ι : Type ?u.39508
κ : Type ?u.39511
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hδ₀ : 0 ≤ δ
hδ₁✝ : δ < 1
hδ₁ : 0 < 1 - δ
hs₂ : (1 - δ) * ↑(card s₁) ≤ ↑(card s₂)
ht₂ : (1 - δ) * ↑(card t₁) ≤ ↑(card t₂)
hδ' : 0 ≤ 2 * δ - δ ^ 2
hs₂' : Finset.Nonempty s₂
ht₂' : Finset.Nonempty t₂
hr : 2 * δ - δ ^ 2 = 1 - (1 - δ) * (1 - δ)
h₁ : Finset.Nonempty s₁
h₂ : Finset.Nonempty t₁
⊢ 0 < ↑(card t₁)