Theorem: MvPolynomial.degrees_esymm
File: Mathlib/RingTheory/MvPolynomial/Symmetric.lean

tactic: have :
  (Finsupp.toMultiset ∘ fun t : Finset σ => ∑ i ∈ t, Finsupp.single i 1) = val := by
  funext
  simp [Finsupp.toMultiset_sum_single]
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
⊢ (esymm σ R n).degrees = univ.val
state_after: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
⊢ (esymm σ R n).degrees = univ.val

tactic: rw [degrees_def, support_esymm, sup_image, this]
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
⊢ (esymm σ R n).degrees = univ.val
state_after: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
⊢ (powersetCard n univ).sup val = univ.val

tactic: rw [← this]
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this✝ : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
this : ((powersetCard n univ).sup fun x => x).val = (powersetCard n univ).sup val
⊢ (powersetCard n univ).sup val = univ.val
state_after: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this✝ : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
this : ((powersetCard n univ).sup fun x => x).val = (powersetCard n univ).sup val
⊢ ((powersetCard n univ).sup fun x => x).val = univ.val

tactic: obtain ⟨k, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hpos.ne'
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this✝ : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
this : ((powersetCard n univ).sup fun x => x).val = (powersetCard n univ).sup val
⊢ ((powersetCard n univ).sup fun x => x).val = univ.val
state_after: case intro
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
this✝ : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
k : ℕ
hpos : 0 < k.succ
hn : k.succ ≤ Fintype.card σ
this : ((powersetCard k.succ univ).sup fun x => x).val = (powersetCard k.succ univ).sup val
⊢ ((powersetCard k.succ univ).sup fun x => x).val = univ.val

tactic: simpa using powersetCard_sup _ _ (Nat.lt_of_succ_le hn)
state_before: case intro
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
this✝ : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
k : ℕ
hpos : 0 < k.succ
hn : k.succ ≤ Fintype.card σ
this : ((powersetCard k.succ univ).sup fun x => x).val = (powersetCard k.succ univ).sup val
⊢ ((powersetCard k.succ univ).sup fun x => x).val = univ.val
state_after: no goals

tactic: funext
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
⊢ (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
state_after: case h
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
x✝ : Finset σ
⊢ (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) x✝ = x✝.val

tactic: simp [Finsupp.toMultiset_sum_single]
state_before: case h
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
x✝ : Finset σ
⊢ (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) x✝ = x✝.val
state_after: no goals

tactic: refine comp_sup_eq_sup_comp _ ?_ ?_
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
⊢ ((powersetCard n univ).sup fun x => x).val = (powersetCard n univ).sup val
state_after: case refine_1
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
⊢ ∀ (x y : Finset σ), (x ⊔ y).val = x.val ⊔ y.val

case refine_2
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
⊢ ⊥.val = ⊥

tactic: intros
state_before: case refine_1
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
⊢ ∀ (x y : Finset σ), (x ⊔ y).val = x.val ⊔ y.val
state_after: case refine_1
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
x✝ y✝ : Finset σ
⊢ (x✝ ⊔ y✝).val = x✝.val ⊔ y✝.val

tactic: simp only [union_val, sup_eq_union]
state_before: case refine_1
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
x✝ y✝ : Finset σ
⊢ (x✝ ⊔ y✝).val = x✝.val ⊔ y✝.val
state_after: case refine_1
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
x✝ y✝ : Finset σ
⊢ x✝.val ∪ y✝.val = x✝.val ⊔ y✝.val

tactic: congr
state_before: case refine_1
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
x✝ y✝ : Finset σ
⊢ x✝.val ∪ y✝.val = x✝.val ⊔ y✝.val
state_after: no goals

tactic: rfl
state_before: case refine_2
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : CommSemiring S
inst✝² : Fintype σ
inst✝¹ : Fintype τ
inst✝ : Nontrivial R
n : ℕ
hpos : 0 < n
hn : n ≤ Fintype.card σ
this : (⇑Finsupp.toMultiset ∘ fun t => ∑ i ∈ t, Finsupp.single i 1) = val
⊢ ⊥.val = ⊥
state_after: no goals