Theorem: SzemerediRegularity.one_sub_eps_mul_card_nonuniformWitness_le_card_star
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Chunk.lean

tactic: have hP₁ : 0 < P.parts.card := Finset.card_pos.2 ⟨_, hU⟩
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
⊢ (1 - ε / 10) * ↑(G.nonuniformWitness ε U V).card ≤ ↑((star hP G ε hU V).biUnion id).card
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ (1 - ε / 10) * ↑(G.nonuniformWitness ε U V).card ≤ ↑((star hP G ε hU V).biUnion id).card

tactic: rw [← div_div, div_le_iff']
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * ↑m / ↑U.card ≤ ε * (ε / 10)

α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 0 < ε

tactic: swap
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * ↑m / ↑U.card ≤ ε * (ε / 10)

α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 0 < ε
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 0 < ε

α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * ↑m / ↑U.card ≤ ε * (ε / 10)

tactic: refine le_of_mul_le_mul_left ?_ (pow_pos zero_lt_two P.parts.card)
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * ↑m / ↑U.card ≤ ε * (ε / 10)
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * (2 ^ P.parts.card * ↑m / ↑U.card) ≤ 2 ^ P.parts.card * (ε * (ε / 10))

tactic: calc
  ↑2 ^ P.parts.card * ((↑2 ^ P.parts.card * m : ℝ) / U.card) =
      ((2 : ℝ) * 2) ^ P.parts.card * m / U.card := by
    rw [mul_pow, ← mul_div_assoc, mul_assoc]
  _ = ↑4 ^ P.parts.card * m / U.card := by norm_num
  _ ≤ 1 := div_le_one_of_le (pow_mul_m_le_card_part hP hU) (cast_nonneg _)
  _ ≤ ↑2 ^ P.parts.card * ε ^ 2 / 10 := by
    refine (one_le_sq_iff <| by positivity).1 ?_
    rw [div_pow, mul_pow, pow_right_comm, ← pow_mul ε,
      one_le_div (sq_pos_of_ne_zero <| by norm_num)]
    calc
      (↑10 ^ 2) = 100 := by norm_num
      _ ≤ ↑4 ^ P.parts.card * ε ^ 5 := hPε
      _ ≤ ↑4 ^ P.parts.card * ε ^ 4 :=
        (mul_le_mul_of_nonneg_left (pow_le_pow_of_le_one (by sz_positivity) hε₁ <| le_succ _)
          (by positivity))
      _ = (↑2 ^ 2) ^ P.parts.card * ε ^ (2 * 2) := by norm_num
  _ = ↑2 ^ P.parts.card * (ε * (ε / 10)) := by rw [mul_div_assoc, sq, mul_div_assoc]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * (2 ^ P.parts.card * ↑m / ↑U.card) ≤ 2 ^ P.parts.card * (ε * (ε / 10))
state_after: no goals

tactic: sz_positivity
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 0 < ε
state_after: no goals

tactic: rw [mul_pow, ← mul_div_assoc, mul_assoc]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * (2 ^ P.parts.card * ↑m / ↑U.card) = (2 * 2) ^ P.parts.card * ↑m / ↑U.card
state_after: no goals

tactic: norm_num
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ (2 * 2) ^ P.parts.card * ↑m / ↑U.card = 4 ^ P.parts.card * ↑m / ↑U.card
state_after: no goals

tactic: refine (one_le_sq_iff <| by positivity).1 ?_
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 1 ≤ 2 ^ P.parts.card * ε ^ 2 / 10
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 1 ≤ (2 ^ P.parts.card * ε ^ 2 / 10) ^ 2

tactic: rw [div_pow, mul_pow, pow_right_comm, ← pow_mul ε,
  one_le_div (sq_pos_of_ne_zero <| by norm_num)]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 1 ≤ (2 ^ P.parts.card * ε ^ 2 / 10) ^ 2
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 10 ^ 2 ≤ (2 ^ 2) ^ P.parts.card * ε ^ (2 * 2)

tactic: calc
  (↑10 ^ 2) = 100 := by norm_num
  _ ≤ ↑4 ^ P.parts.card * ε ^ 5 := hPε
  _ ≤ ↑4 ^ P.parts.card * ε ^ 4 :=
    (mul_le_mul_of_nonneg_left (pow_le_pow_of_le_one (by sz_positivity) hε₁ <| le_succ _)
      (by positivity))
  _ = (↑2 ^ 2) ^ P.parts.card * ε ^ (2 * 2) := by norm_num
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 10 ^ 2 ≤ (2 ^ 2) ^ P.parts.card * ε ^ (2 * 2)
state_after: no goals

tactic: positivity
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 0 ≤ 2 ^ P.parts.card * ε ^ 2 / 10
state_after: no goals

tactic: norm_num
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 10 ≠ 0
state_after: no goals

tactic: norm_num
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 10 ^ 2 = 100
state_after: no goals

tactic: sz_positivity
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 0 ≤ ε
state_after: no goals

tactic: positivity
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 0 ≤ 4 ^ P.parts.card
state_after: no goals

tactic: norm_num
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 4 ^ P.parts.card * ε ^ 4 = (2 ^ 2) ^ P.parts.card * ε ^ (2 * 2)
state_after: no goals

tactic: rw [mul_div_assoc, sq, mul_div_assoc]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
⊢ 2 ^ P.parts.card * ε ^ 2 / 10 = 2 ^ P.parts.card * (ε * (ε / 10))
state_after: no goals

tactic: rw [sub_mul, one_mul]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
⊢ (1 - 2 ^ P.parts.card * ↑m / (↑U.card * ε)) * ↑(G.nonuniformWitness ε U V).card =
    ↑(G.nonuniformWitness ε U V).card - 2 ^ P.parts.card * ↑m / (↑U.card * ε) * ↑(G.nonuniformWitness ε U V).card
state_after: no goals

tactic: refine sub_le_sub_left ?_ _
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
⊢ ↑(G.nonuniformWitness ε U V).card - 2 ^ P.parts.card * ↑m / (↑U.card * ε) * ↑(G.nonuniformWitness ε U V).card ≤
    ↑(G.nonuniformWitness ε U V).card - 2 ^ (P.parts.card - 1) * ↑m
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
⊢ 2 ^ (P.parts.card - 1) * ↑m ≤ 2 ^ P.parts.card * ↑m / (↑U.card * ε) * ↑(G.nonuniformWitness ε U V).card

tactic: have : (2 : ℝ) ^ P.parts.card = ↑2 ^ (P.parts.card - 1) * 2 := by
  rw [← _root_.pow_succ, tsub_add_cancel_of_le (succ_le_iff.2 hP₁)]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
⊢ 2 ^ (P.parts.card - 1) * ↑m ≤ 2 ^ P.parts.card * ↑m / (↑U.card * ε) * ↑(G.nonuniformWitness ε U V).card
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ 2 ^ (P.parts.card - 1) * ↑m ≤ 2 ^ P.parts.card * ↑m / (↑U.card * ε) * ↑(G.nonuniformWitness ε U V).card

tactic: rw [← mul_div_right_comm, this, mul_right_comm _ (2 : ℝ), mul_assoc, le_div_iff]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ 2 ^ (P.parts.card - 1) * ↑m ≤ 2 ^ P.parts.card * ↑m / (↑U.card * ε) * ↑(G.nonuniformWitness ε U V).card
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ 2 ^ (P.parts.card - 1) * ↑m * (↑U.card * ε) ≤ 2 ^ (P.parts.card - 1) * ↑m * (2 * ↑(G.nonuniformWitness ε U V).card)

α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ 0 < ↑U.card * ε

tactic: have := Finset.card_pos.mpr (P.nonempty_of_mem_parts hU)
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ 0 < ↑U.card * ε
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝¹ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this✝ : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
this : 0 < U.card
⊢ 0 < ↑U.card * ε

tactic: sz_positivity
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝¹ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this✝ : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
this : 0 < U.card
⊢ 0 < ↑U.card * ε
state_after: no goals

tactic: rw [← _root_.pow_succ, tsub_add_cancel_of_le (succ_le_iff.2 hP₁)]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
⊢ 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
state_after: no goals

tactic: refine mul_le_mul_of_nonneg_left ?_ (by positivity)
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ 2 ^ (P.parts.card - 1) * ↑m * (↑U.card * ε) ≤ 2 ^ (P.parts.card - 1) * ↑m * (2 * ↑(G.nonuniformWitness ε U V).card)
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ ↑U.card * ε ≤ 2 * ↑(G.nonuniformWitness ε U V).card

tactic: exact (G.le_card_nonuniformWitness hunif).trans
  (le_mul_of_one_le_left (cast_nonneg _) one_le_two)
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ ↑U.card * ε ≤ 2 * ↑(G.nonuniformWitness ε U V).card
state_after: no goals

tactic: positivity
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this✝ : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
this : 2 ^ P.parts.card = 2 ^ (P.parts.card - 1) * 2
⊢ 0 ≤ 2 ^ (P.parts.card - 1) * ↑m
state_after: no goals

tactic: rw [sub_le_comm, ←
  cast_sub (card_le_card <| biUnion_star_subset_nonuniformWitness hP G ε hU V), ←
  card_sdiff (biUnion_star_subset_nonuniformWitness hP G ε hU V)]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
⊢ ↑(G.nonuniformWitness ε U V).card - 2 ^ (P.parts.card - 1) * ↑m ≤ ↑((star hP G ε hU V).biUnion id).card
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
⊢ ↑(G.nonuniformWitness ε U V \ (star hP G ε hU V).biUnion id).card ≤ 2 ^ (P.parts.card - 1) * ↑m

tactic: exact mod_cast card_nonuniformWitness_sdiff_biUnion_star hV hUV hunif
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hV : V ∈ P.parts
hUV : U ≠ V
hunif : ¬G.IsUniform ε U V
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hε₁ : ε ≤ 1
hP₁ : 0 < P.parts.card
this : 2 ^ P.parts.card * ↑m / (↑U.card * ε) ≤ ε / 10
⊢ ↑(G.nonuniformWitness ε U V \ (star hP G ε hU V).biUnion id).card ≤ 2 ^ (P.parts.card - 1) * ↑m
state_after: no goals