/-- The increment partition has a prescribed (very big) size in terms of the original partition. -/
theorem card_increment (hPα : P.parts.card * 16 ^ P.parts.card ≤ card α) (hPG : ¬P.IsUniform G ε) :
    (increment hP G ε).parts.card = stepBound P.parts.card := by
  have hPα' : stepBound P.parts.card ≤ card α :=
    (mul_le_mul_left' (pow_le_pow_left' (by norm_num) _) _).trans hPα
  have hPpos : 0 < stepBound P.parts.card := stepBound_pos (nonempty_of_not_uniform hPG).card_pos
  rw [increment, card_bind]
  simp_rw [chunk, apply_dite Finpartition.parts, apply_dite card, sum_dite]
  rw [sum_const_nat, sum_const_nat, card_attach, card_attach]; rotate_left
  

Proof state:
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ℕ
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ℕ
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ℕ
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ℕ
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ∀
    x ∈
      attach
        (filter
          (fun x =>
            ¬Finset.card ↑x =
                m * 4 ^ Finset.card P.parts + (Fintype.card α / Finset.card P.parts - m * 4 ^ Finset.card P.parts))
          (attach P.parts)),
    Finset.card
        (equitabilise
            (_ :
              (4 ^ Finset.card P.parts - (Fintype.card α / Finset.card P.parts - m * 4 ^ Finset.card P.parts + 1)) * m +
                  (Fintype.card α / Finset.card P.parts - m * 4 ^ Finset.card P.parts + 1) * (m + 1) =
                Finset.card ↑↑x)).parts =
      ?m.205439
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ℕ
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ℕ
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ∀
    x ∈
      attach
        (filter
          (fun x =>
            Finset.card ↑x =
              m * 4 ^ Finset.card P.parts + (Fintype.card α / Finset.card P.parts - m * 4 ^ Finset.card P.parts))
          (attach P.parts)),
    Finset.card
        (equitabilise
            (_ :
              (4 ^ Finset.card P.parts - (Fintype.card α / Finset.card P.parts - m * 4 ^ Finset.card P.parts)) * m +
                  (Fintype.card α / Finset.card P.parts - m * 4 ^ Finset.card P.parts) * (m + 1) =
                Finset.card ↑↑x)).parts =
      ?m.205381
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ ℕ
α : Type u_1
inst✝ : Fintype α
P : Finpartition univ
hP : IsEquipartition P
G : SimpleGraph α
ε : ℝ
hPα : Finset.card P.parts * 16 ^ Finset.card P.parts ≤ Fintype.card α
hPG : ¬Finpartition.IsUniform P G ε
hPα' : stepBound (Finset.card P.parts) ≤ Fintype.card α
hPpos : 0 < stepBound (Finset.card P.parts)
⊢ Finset.card
          (filter
            (fun x =>
              Finset.card ↑x =
                m * 4 ^ Finset.card P.parts + (Fintype.card α / Finset.card P.parts - m * 4 ^ Finset.card P.parts))
            (attach P.parts)) *
        ?m.205381 +
      Finset.card
          (filter
            (fun x =>
              ¬Finset.card ↑x =
                  m * 4 ^ Finset.card P.parts + (Fintype.card α / Finset.card P.parts - m * 4 ^ Finset.card P.parts))
            (attach P.parts)) *
        ?m.205439 =
    stepBound (Finset.card P.parts)

Next tactic:
any_goals exact fun x hx => card_parts_equitabilise _ _ (Nat.div_pos hPα' hPpos).ne'