Theorem: SzemerediRegularity.energy_increment
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Increment.lean

tactic: calc
  _ = (∑ x ∈ P.parts.offDiag, (G.edgeDensity x.1 x.2 : ℝ) ^ 2 +
        P.parts.card ^ 2 * (ε ^ 5 / 4) : ℝ) / P.parts.card ^ 2 := by
      rw [coe_energy, add_div, mul_div_cancel_left₀]; positivity
  _ ≤ (∑ x ∈ P.parts.offDiag.attach, (∑ i ∈ distinctPairs hP G ε x,
        G.edgeDensity i.1 i.2 ^ 2 : ℝ) / 16 ^ P.parts.card) / P.parts.card ^ 2 := ?_
  _ = (∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ distinctPairs hP G ε x,
        G.edgeDensity i.1 i.2 ^ 2 : ℝ) / (increment hP G ε).parts.card ^ 2 := by
      rw [card_increment hPα hPG, coe_stepBound, mul_pow, pow_right_comm,
        div_mul_eq_div_div_swap, ← sum_div]; norm_num
  _ ≤ _ := by
      rw [coe_energy]
      gcongr
      rw [← sum_biUnion pairwiseDisjoint_distinctPairs]
      exact sum_le_sum_of_subset_of_nonneg distinctPairs_increment fun i _ _ ↦ sq_nonneg _
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ↑(P.energy G) + ε ^ 5 / 4 ≤ ↑((increment hP G ε).energy G)
state_after: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ (∑ x ∈ P.parts.offDiag, ↑(G.edgeDensity x.1 x.2) ^ 2 + ↑P.parts.card ^ 2 * (ε ^ 5 / 4)) / ↑P.parts.card ^ 2 ≤
    (∑ x ∈ P.parts.offDiag.attach,
        (∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) / 16 ^ P.parts.card) /
      ↑P.parts.card ^ 2

tactic: gcongr
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ (∑ x ∈ P.parts.offDiag, ↑(G.edgeDensity x.1 x.2) ^ 2 + ↑P.parts.card ^ 2 * (ε ^ 5 / 4)) / ↑P.parts.card ^ 2 ≤
    (∑ x ∈ P.parts.offDiag.attach,
        (∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) / 16 ^ P.parts.card) /
      ↑P.parts.card ^ 2
state_after: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag, ↑(G.edgeDensity x.1 x.2) ^ 2 + ↑P.parts.card ^ 2 * (ε ^ 5 / 4) ≤
    ∑ x ∈ P.parts.offDiag.attach,
      (∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) / 16 ^ P.parts.card

tactic: rw [Finpartition.IsUniform, not_le, mul_tsub, mul_one, ← offDiag_card] at hPG
state_before: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag, ↑(G.edgeDensity x.1 x.2) ^ 2 + ↑P.parts.card ^ 2 * (ε ^ 5 / 4) ≤
    ∑ x ∈ P.parts.offDiag.attach,
      (∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) / 16 ^ P.parts.card
state_after: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag, ↑(G.edgeDensity x.1 x.2) ^ 2 + ↑P.parts.card ^ 2 * (ε ^ 5 / 4) ≤
    ∑ x ∈ P.parts.offDiag.attach,
      (∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) / 16 ^ P.parts.card

tactic: calc
  _ ≤ ∑ x ∈ P.parts.offDiag, (edgeDensity G x.1 x.2 : ℝ) ^ 2 +
      ((nonUniforms P G ε).card * (ε ^ 4 / 3) - P.parts.offDiag.card * (ε ^ 5 / 25)) :=
      add_le_add_left ?_ _
  _ = ∑ x ∈ P.parts.offDiag, ((G.edgeDensity x.1 x.2 : ℝ) ^ 2 +
      ((if G.IsUniform ε x.1 x.2 then (0 : ℝ) else ε ^ 4 / 3) - ε ^ 5 / 25) : ℝ) := by
      rw [sum_add_distrib, sum_sub_distrib, sum_const, nsmul_eq_mul, sum_ite, sum_const_zero,
        zero_add, sum_const, nsmul_eq_mul, ← Finpartition.nonUniforms, ← add_sub_assoc,
        add_sub_right_comm]
  _ = _ := (sum_attach ..).symm
  _ ≤ _ := sum_le_sum fun i _ ↦ le_sum_distinctPairs_edgeDensity_sq i hε₁ hPα hPε
state_before: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag, ↑(G.edgeDensity x.1 x.2) ^ 2 + ↑P.parts.card ^ 2 * (ε ^ 5 / 4) ≤
    ∑ x ∈ P.parts.offDiag.attach,
      (∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) / 16 ^ P.parts.card
state_after: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ↑P.parts.card ^ 2 * (ε ^ 5 / 4) ≤ ↑(P.nonUniforms G ε).card * (ε ^ 4 / 3) - ↑P.parts.offDiag.card * (ε ^ 5 / 25)

tactic: rw [coe_energy, add_div, mul_div_cancel_left₀]
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ↑(P.energy G) + ε ^ 5 / 4 =
    (∑ x ∈ P.parts.offDiag, ↑(G.edgeDensity x.1 x.2) ^ 2 + ↑P.parts.card ^ 2 * (ε ^ 5 / 4)) / ↑P.parts.card ^ 2
state_after: case ha
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ↑P.parts.card ^ 2 ≠ 0

tactic: positivity
state_before: case ha
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ↑P.parts.card ^ 2 ≠ 0
state_after: no goals

tactic: rw [card_increment hPα hPG, coe_stepBound, mul_pow, pow_right_comm,
  div_mul_eq_div_div_swap, ← sum_div]
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ (∑ x ∈ P.parts.offDiag.attach,
        (∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) / 16 ^ P.parts.card) /
      ↑P.parts.card ^ 2 =
    (∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) /
      ↑(increment hP G ε).parts.card ^ 2
state_after: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ (∑ i ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε i, ↑(G.edgeDensity i.1 i.2) ^ 2) /
        16 ^ P.parts.card /
      ↑P.parts.card ^ 2 =
    (∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) /
        (4 ^ 2) ^ P.parts.card /
      ↑P.parts.card ^ 2

tactic: norm_num
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ (∑ i ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε i, ↑(G.edgeDensity i.1 i.2) ^ 2) /
        16 ^ P.parts.card /
      ↑P.parts.card ^ 2 =
    (∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) /
        (4 ^ 2) ^ P.parts.card /
      ↑P.parts.card ^ 2
state_after: no goals

tactic: rw [coe_energy]
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ (∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) /
      ↑(increment hP G ε).parts.card ^ 2 ≤
    ↑((increment hP G ε).energy G)
state_after: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ (∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) /
      ↑(increment hP G ε).parts.card ^ 2 ≤
    (∑ uv ∈ (increment hP G ε).parts.offDiag, ↑(G.edgeDensity uv.1 uv.2) ^ 2) / ↑(increment hP G ε).parts.card ^ 2

tactic: gcongr
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ (∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2) /
      ↑(increment hP G ε).parts.card ^ 2 ≤
    (∑ uv ∈ (increment hP G ε).parts.offDiag, ↑(G.edgeDensity uv.1 uv.2) ^ 2) / ↑(increment hP G ε).parts.card ^ 2
state_after: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2 ≤
    ∑ uv ∈ (increment hP G ε).parts.offDiag, ↑(G.edgeDensity uv.1 uv.2) ^ 2

tactic: rw [← sum_biUnion pairwiseDisjoint_distinctPairs]
state_before: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag.attach, ∑ i ∈ SzemerediRegularity.distinctPairs hP G ε x, ↑(G.edgeDensity i.1 i.2) ^ 2 ≤
    ∑ uv ∈ (increment hP G ε).parts.offDiag, ↑(G.edgeDensity uv.1 uv.2) ^ 2
state_after: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag.attach.biUnion (SzemerediRegularity.distinctPairs hP G ε), ↑(G.edgeDensity x.1 x.2) ^ 2 ≤
    ∑ uv ∈ (increment hP G ε).parts.offDiag, ↑(G.edgeDensity uv.1 uv.2) ^ 2

tactic: exact sum_le_sum_of_subset_of_nonneg distinctPairs_increment fun i _ _ ↦ sq_nonneg _
state_before: case hab
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ¬P.IsUniform G ε
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag.attach.biUnion (SzemerediRegularity.distinctPairs hP G ε), ↑(G.edgeDensity x.1 x.2) ^ 2 ≤
    ∑ uv ∈ (increment hP G ε).parts.offDiag, ↑(G.edgeDensity uv.1 uv.2) ^ 2
state_after: no goals

tactic: rw [sum_add_distrib, sum_sub_distrib, sum_const, nsmul_eq_mul, sum_ite, sum_const_zero,
  zero_add, sum_const, nsmul_eq_mul, ← Finpartition.nonUniforms, ← add_sub_assoc,
  add_sub_right_comm]
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ∑ x ∈ P.parts.offDiag, ↑(G.edgeDensity x.1 x.2) ^ 2 +
      (↑(P.nonUniforms G ε).card * (ε ^ 4 / 3) - ↑P.parts.offDiag.card * (ε ^ 5 / 25)) =
    ∑ x ∈ P.parts.offDiag,
      (↑(G.edgeDensity x.1 x.2) ^ 2 + ((if G.IsUniform ε x.1 x.2 then 0 else ε ^ 4 / 3) - ε ^ 5 / 25))
state_after: no goals

tactic: ring
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ↑P.parts.card ^ 2 * (ε ^ 5 / 4) = 6 / 7 * ↑P.parts.card ^ 2 * ε ^ 5 * (7 / 24)
state_after: no goals

tactic: gcongr ?_ * _ * ?_
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 / 7 * ↑P.parts.card ^ 2 * ε ^ 5 * (7 / 24) ≤ ↑P.parts.offDiag.card * ε ^ 5 * (22 / 75)
state_after: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 / 7 * ↑P.parts.card ^ 2 ≤ ↑P.parts.offDiag.card

case h₂
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 7 / 24 ≤ 22 / 75

tactic: rw [← mul_div_right_comm, div_le_iff (by norm_num), offDiag_card]
state_before: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 / 7 * ↑P.parts.card ^ 2 ≤ ↑P.parts.offDiag.card
state_after: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 * ↑P.parts.card ^ 2 ≤ ↑(P.parts.card * P.parts.card - P.parts.card) * 7

tactic: norm_cast
state_before: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 * ↑P.parts.card ^ 2 ≤ ↑(P.parts.card * P.parts.card - P.parts.card) * 7
state_after: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 * P.parts.card ^ 2 ≤ (P.parts.card * P.parts.card - P.parts.card) * 7

tactic: rw [tsub_mul]
state_before: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 * P.parts.card ^ 2 ≤ (P.parts.card * P.parts.card - P.parts.card) * 7
state_after: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 * P.parts.card ^ 2 ≤ P.parts.card * P.parts.card * 7 - P.parts.card * 7

tactic: refine le_tsub_of_add_le_left ?_
state_before: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 6 * P.parts.card ^ 2 ≤ P.parts.card * P.parts.card * 7 - P.parts.card * 7
state_after: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ P.parts.card * 7 + 6 * P.parts.card ^ 2 ≤ P.parts.card * P.parts.card * 7

tactic: nlinarith
state_before: case h₁.h
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ P.parts.card * 7 + 6 * P.parts.card ^ 2 ≤ P.parts.card * P.parts.card * 7
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
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 0 < 7
state_after: no goals

tactic: norm_num
state_before: case h₂
α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ 7 / 24 ≤ 22 / 75
state_after: no goals

tactic: ring
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ↑P.parts.offDiag.card * ε ^ 5 * (22 / 75) =
    ↑P.parts.offDiag.card * ε * (ε ^ 4 / 3) - ↑P.parts.offDiag.card * (ε ^ 5 / 25)
state_after: no goals

tactic: gcongr
state_before: α : Type u_1
inst✝³ : Fintype α
inst✝² : DecidableEq α
P : Finpartition univ
hP✝ : P.IsEquipartition
G : SimpleGraph α
inst✝¹ : DecidableRel G.Adj
ε : ℝ
inst✝ : Nonempty α
hP : P.IsEquipartition
hP₇ : 7 ≤ P.parts.card
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
hPα : P.parts.card * 16 ^ P.parts.card ≤ Fintype.card α
hPG : ↑P.parts.offDiag.card * ε < ↑(P.nonUniforms G ε).card
hε₀ : 0 ≤ ε
hε₁ : ε ≤ 1
⊢ ↑P.parts.offDiag.card * ε * (ε ^ 4 / 3) - ↑P.parts.offDiag.card * (ε ^ 5 / 25) ≤
    ↑(P.nonUniforms G ε).card * (ε ^ 4 / 3) - ↑P.parts.offDiag.card * (ε ^ 5 / 25)
state_after: no goals