Theorem: Finpartition.IsEquipartition.sum_nonUniforms_lt
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

tactic: calc
  _ ≤ ∑ i ∈ P.nonUniforms G ε, (i.1.card * i.2.card : 𝕜) := by
      norm_cast; simp_rw [← card_product]; exact card_biUnion_le
  _ < _ := hP.sum_nonUniforms_lt' hA hε hG
  _ ≤ ε * (A.card + A.card) ^ 2 := by gcongr; exact P.card_parts_le_card
  _ = _ := by ring
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ ↑((P.nonUniforms G ε).biUnion fun x =>
          match x with
          | (U, V) => U ×ˢ V).card <
    4 * ε * ↑A.card ^ 2
state_after: no goals

tactic: norm_cast
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ ↑((P.nonUniforms G ε).biUnion fun x =>
          match x with
          | (U, V) => U ×ˢ V).card ≤
    ∑ i ∈ P.nonUniforms G ε, ↑i.1.card * ↑i.2.card
state_after: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ ((P.nonUniforms G ε).biUnion fun x =>
        match x with
        | (U, V) => U ×ˢ V).card ≤
    ∑ x ∈ P.nonUniforms G ε, x.1.card * x.2.card

tactic: simp_rw [← card_product]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ ((P.nonUniforms G ε).biUnion fun x =>
        match x with
        | (U, V) => U ×ˢ V).card ≤
    ∑ x ∈ P.nonUniforms G ε, x.1.card * x.2.card
state_after: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ ((P.nonUniforms G ε).biUnion fun x => x.1 ×ˢ x.2).card ≤ ∑ x ∈ P.nonUniforms G ε, (x.1 ×ˢ x.2).card

tactic: exact card_biUnion_le
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ ((P.nonUniforms G ε).biUnion fun x => x.1 ×ˢ x.2).card ≤ ∑ x ∈ P.nonUniforms G ε, (x.1 ×ˢ x.2).card
state_after: no goals

tactic: gcongr
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ ε * (↑A.card + ↑P.parts.card) ^ 2 ≤ ε * (↑A.card + ↑A.card) ^ 2
state_after: case h.hab.bc.h
α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ P.parts.card ≤ A.card

tactic: exact P.card_parts_le_card
state_before: case h.hab.bc.h
α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ P.parts.card ≤ A.card
state_after: no goals

tactic: ring
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v s t : Finset α
hA : A.Nonempty
hε : 0 < ε
hP : P.IsEquipartition
hG : P.IsUniform G ε
⊢ ε * (↑A.card + ↑A.card) ^ 2 = 4 * ε * ↑A.card ^ 2
state_after: no goals