Theorem: Holor.cprankMax_sum
File: Mathlib/Data/Holor.lean

tactic: simp [CPRankMax.zero]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
⊢ (∀ (x : β), x ∈ ∅ → CPRankMax n (f x)) → CPRankMax (Finset.card ∅ * n) (∑ x in ∅, f x)

tactic: intro x s(h_x_notin_s : x ∉ s)ih h_cprank
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
⊢ ∀ ⦃a : β⦄ {s : Finset β},
    ¬a ∈ s →
      ((∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)) →
        (∀ (x : β), x ∈ insert a s → CPRankMax n (f x)) →
          CPRankMax (Finset.card (insert a s) * n) (∑ x in insert a s, f x)

tactic: simp only [Finset.sum_insert h_x_notin_s, Finset.card_insert_of_not_mem h_x_notin_s]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s✝ : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
x : β
s : Finset β
h_x_notin_s : ¬x ∈ s
ih : (∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)
h_cprank : ∀ (x_1 : β), x_1 ∈ insert x s → CPRankMax n (f x_1)
⊢ CPRankMax (Finset.card (insert x s) * n) (∑ x in insert x s, f x)

tactic: rw [Nat.right_distrib]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s✝ : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
x : β
s : Finset β
h_x_notin_s : ¬x ∈ s
ih : (∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)
h_cprank : ∀ (x_1 : β), x_1 ∈ insert x s → CPRankMax n (f x_1)
⊢ CPRankMax ((Finset.card s + 1) * n) (f x + ∑ x in s, f x)

tactic: simp only [Nat.one_mul, Nat.add_comm]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s✝ : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
x : β
s : Finset β
h_x_notin_s : ¬x ∈ s
ih : (∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)
h_cprank : ∀ (x_1 : β), x_1 ∈ insert x s → CPRankMax n (f x_1)
⊢ CPRankMax (Finset.card s * n + 1 * n) (f x + ∑ x in s, f x)

tactic: have ih' : CPRankMax (Finset.card s * n) (∑ x in s, f x) := by
  apply ih
  intro (x : β)(h_x_in_s : x ∈ s)
  simp only [h_cprank, Finset.mem_insert_of_mem, h_x_in_s]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s✝ : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
x : β
s : Finset β
h_x_notin_s : ¬x ∈ s
ih : (∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)
h_cprank : ∀ (x_1 : β), x_1 ∈ insert x s → CPRankMax n (f x_1)
⊢ CPRankMax (n + Finset.card s * n) (f x + ∑ x in s, f x)

tactic: exact cprankMax_add (h_cprank x (Finset.mem_insert_self x s)) ih'
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s✝ : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
x : β
s : Finset β
h_x_notin_s : ¬x ∈ s
ih : (∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)
h_cprank : ∀ (x_1 : β), x_1 ∈ insert x s → CPRankMax n (f x_1)
ih' : CPRankMax (Finset.card s * n) (∑ x in s, f x)
⊢ CPRankMax (n + Finset.card s * n) (f x + ∑ x in s, f x)

tactic: apply ih
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s✝ : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
x : β
s : Finset β
h_x_notin_s : ¬x ∈ s
ih : (∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)
h_cprank : ∀ (x_1 : β), x_1 ∈ insert x s → CPRankMax n (f x_1)
⊢ CPRankMax (Finset.card s * n) (∑ x in s, f x)

tactic: intro (x : β)(h_x_in_s : x ∈ s)
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s✝ : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
x : β
s : Finset β
h_x_notin_s : ¬x ∈ s
ih : (∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)
h_cprank : ∀ (x_1 : β), x_1 ∈ insert x s → CPRankMax n (f x_1)
⊢ ∀ (x : β), x ∈ s → CPRankMax n (f x)

tactic: simp only [h_cprank, Finset.mem_insert_of_mem, h_x_in_s]
state_before: α : Type
d : ℕ
ds ds₁ ds₂ ds₃ : List ℕ
inst✝ : Ring α
β : Type u_1
n : ℕ
s✝ : Finset β
f : β → Holor α ds
this : DecidableEq β := Classical.decEq β
x✝ : β
s : Finset β
h_x_notin_s : ¬x✝ ∈ s
ih : (∀ (x : β), x ∈ s → CPRankMax n (f x)) → CPRankMax (Finset.card s * n) (∑ x in s, f x)
h_cprank : ∀ (x : β), x ∈ insert x✝ s → CPRankMax n (f x)
x : β
h_x_in_s : x ∈ s
⊢ CPRankMax n (f x)