l3lab/ntp-mathlib huggingface dataset:
/-- We can define `esymm σ R n` as a sum over explicit monomials -/
theorem esymm_eq_sum_monomial (n : ℕ) :
    esymm σ R n = ∑ t in powersetCard n univ, monomial (∑ i in t, Finsupp.single i 1) 1 := by
  simp_rw [monomial_sum_one]
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
⊢ esymm σ R n = ∑ x in powersetCard n univ, ∏ i in x, (monomial fun₀ | i => 1) 1

Next tactic:
rfl
@[simp]
theorem esymm_zero : esymm σ R 0 = 1 := by
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
⊢ esymm σ R 0 = 1

Next tactic:
simp only [esymm, powersetCard_zero, sum_singleton, prod_empty]
theorem map_esymm (n : ℕ) (f : R →+* S) : map f (esymm σ R n) = esymm σ S n := by
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
f : R →+* S
⊢ (map f) (esymm σ R n) = esymm σ S n

Next tactic:
simp_rw [esymm, map_sum, map_prod, map_X]
theorem rename_esymm (n : ℕ) (e : σ ≃ τ) : rename e (esymm σ R n) = esymm τ R n :=
  calc
    rename e (esymm σ R n) = ∑ x in powersetCard n univ, ∏ i in x, X (e i) := by
      

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ (rename ⇑e) (esymm σ R n) = ∑ x in powersetCard n univ, ∏ i in x, X (e i)

Next tactic:
simp_rw [esymm, map_sum, map_prod, rename_X]
theorem rename_esymm (n : ℕ) (e : σ ≃ τ) : rename e (esymm σ R n) = esymm τ R n :=
  calc
    rename e (esymm σ R n) = ∑ x in powersetCard n univ, ∏ i in x, X (e i) := by
      simp_rw [esymm, map_sum, map_prod, rename_X]
    _ = ∑ t in powersetCard n (univ.map e.toEmbedding), ∏ i in t, X i := by
      

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ x in powersetCard n univ, ∏ i in x, X (e i) =
    ∑ t in powersetCard n (Finset.map (Equiv.toEmbedding e) univ), ∏ i in t, X i

Next tactic:
simp [Finset.powersetCard_map, -Finset.map_univ_equiv]
theorem rename_esymm (n : ℕ) (e : σ ≃ τ) : rename e (esymm σ R n) = esymm τ R n :=
  calc
    rename e (esymm σ R n) = ∑ x in powersetCard n univ, ∏ i in x, X (e i) := by
      simp_rw [esymm, map_sum, map_prod, rename_X]
    _ = ∑ t in powersetCard n (univ.map e.toEmbedding), ∏ i in t, X i := by
      simp [Finset.powersetCard_map, -Finset.map_univ_equiv]
      --Porting note: Why did `mapEmbedding_apply` not work?
      

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ x in powersetCard n univ, ∏ i in x, X (e i) =
    ∑ x in powersetCard n univ, ∏ i in (mapEmbedding (Equiv.toEmbedding e)) x, X i

Next tactic:
dsimp [mapEmbedding, OrderEmbedding.ofMapLEIff]
theorem rename_esymm (n : ℕ) (e : σ ≃ τ) : rename e (esymm σ R n) = esymm τ R n :=
  calc
    rename e (esymm σ R n) = ∑ x in powersetCard n univ, ∏ i in x, X (e i) := by
      simp_rw [esymm, map_sum, map_prod, rename_X]
    _ = ∑ t in powersetCard n (univ.map e.toEmbedding), ∏ i in t, X i := by
      simp [Finset.powersetCard_map, -Finset.map_univ_equiv]
      --Porting note: Why did `mapEmbedding_apply` not work?
      dsimp [mapEmbedding, OrderEmbedding.ofMapLEIff]
      

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ x in powersetCard n univ, ∏ i in x, X (e i) =
    ∑ x in powersetCard n univ, ∏ i in Finset.map (Equiv.toEmbedding e) x, X i

Next tactic:
simp
theorem rename_esymm (n : ℕ) (e : σ ≃ τ) : rename e (esymm σ R n) = esymm τ R n :=
  calc
    rename e (esymm σ R n) = ∑ x in powersetCard n univ, ∏ i in x, X (e i) := by
      simp_rw [esymm, map_sum, map_prod, rename_X]
    _ = ∑ t in powersetCard n (univ.map e.toEmbedding), ∏ i in t, X i := by
      simp [Finset.powersetCard_map, -Finset.map_univ_equiv]
      --Porting note: Why did `mapEmbedding_apply` not work?
      dsimp [mapEmbedding, OrderEmbedding.ofMapLEIff]
      simp
    _ = ∑ t in powersetCard n univ, ∏ i in t, X i := by 

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ t in powersetCard n (Finset.map (Equiv.toEmbedding e) univ), ∏ i in t, X i =
    ∑ t in powersetCard n univ, ∏ i in t, X i

Next tactic:
rw [Finset.map_univ_equiv]
theorem esymm_isSymmetric (n : ℕ) : IsSymmetric (esymm σ R n) := by
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
⊢ IsSymmetric (esymm σ R n)

Next tactic:
intro
theorem esymm_isSymmetric (n : ℕ) : IsSymmetric (esymm σ R n) := by
  intro
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e✝ : Perm σ
⊢ (rename ⇑e✝) (esymm σ R n) = esymm σ R n

Next tactic:
rw [rename_esymm]
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
⊢ support (esymm σ R n) = Finset.biUnion (powersetCard n univ) fun t => (fun₀ | ∑ i in t, fun₀ | i => 1 => 1).support

Next tactic:
rw [esymm_eq_sum_monomial]
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
⊢ support (∑ t in powersetCard n univ, (monomial (∑ i in t, fun₀ | i => 1)) 1) =
    Finset.biUnion (powersetCard n univ) fun t => (fun₀ | ∑ i in t, fun₀ | i => 1 => 1).support

Next tactic:
simp only [← single_eq_monomial]
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
⊢ support (∑ x in powersetCard n univ, fun₀ | ∑ i in x, fun₀ | i => 1 => 1) =
    Finset.biUnion (powersetCard n univ) fun t => (fun₀ | ∑ i in t, fun₀ | i => 1 => 1).support

Next tactic:
refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
⊢ ∀ (i₁ i₂ : Finset σ),
    i₁ ≠ i₂ → Disjoint (fun₀ | ∑ i in i₁, fun₀ | i => 1 => 1).support (fun₀ | ∑ i in i₂, fun₀ | i => 1 => 1).support

Next tactic:
intro s t hst
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
⊢ Disjoint (fun₀ | ∑ i in s, fun₀ | i => 1 => 1).support (fun₀ | ∑ i in t, fun₀ | i => 1 => 1).support

Next tactic:
rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
⊢ ∀ ⦃a : σ →₀ ℕ⦄, a ∈ {∑ i in s, fun₀ | i => 1} → a ∉ (fun₀ | ∑ i in t, fun₀ | i => 1 => 1).support

Next tactic:
rw [Finsupp.support_single_ne_zero _ one_ne_zero]
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
⊢ ∀ ⦃a : σ →₀ ℕ⦄, a ∈ {∑ i in s, fun₀ | i => 1} → a ∉ {∑ i in t, fun₀ | i => 1}

Next tactic:
simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
⊢ ∀ ⦃a : σ →₀ ℕ⦄, (a = ∑ i in s, fun₀ | i => 1) → ¬a = ∑ i in t, fun₀ | i => 1

Next tactic:
rintro a h rfl
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
  rintro a h rfl
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
⊢ False

Next tactic:
have := congr_arg Finsupp.support h
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
  rintro a h rfl
  have := congr_arg Finsupp.support h
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (∑ i in t, fun₀ | i => 1).support = (∑ i in s, fun₀ | i => 1).support
⊢ False

Next tactic:
rw [Finsupp.support_sum_eq_biUnion, Finsupp.support_sum_eq_biUnion] at this
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
  rintro a h rfl
  have := congr_arg Finsupp.support h
  rw [Finsupp.support_sum_eq_biUnion, Finsupp.support_sum_eq_biUnion] at this
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (Finset.biUnion t fun i => (fun₀ | i => 1).support) = Finset.biUnion s fun i => (fun₀ | i => 1).support
⊢ False
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 τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (Finset.biUnion t fun i => (fun₀ | i => 1).support) = (∑ i in s, fun₀ | i => 1).support
⊢ ∀ (i₁ i₂ : σ), i₁ ≠ i₂ → Disjoint (fun₀ | i₁ => 1).support (fun₀ | i₂ => 1).support
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 τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (∑ i in t, fun₀ | i => 1).support = (∑ i in s, fun₀ | i => 1).support
⊢ ∀ (i₁ i₂ : σ), i₁ ≠ i₂ → Disjoint (fun₀ | i₁ => 1).support (fun₀ | i₂ => 1).support

Next tactic:
have hsingle : ∀ s : Finset σ, ∀ x : σ, x ∈ s → (Finsupp.single x 1).support = {x} := by
    intros _ x _
    rw [Finsupp.support_single_ne_zero x one_ne_zero]
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
  rintro a h rfl
  have := congr_arg Finsupp.support h
  rw [Finsupp.support_sum_eq_biUnion, Finsupp.support_sum_eq_biUnion] at this
  have hsingle : ∀ s : Finset σ, ∀ x : σ, x ∈ s → (Finsupp.single x 1).support = {x} := by
    

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (Finset.biUnion t fun i => (fun₀ | i => 1).support) = Finset.biUnion s fun i => (fun₀ | i => 1).support
⊢ ∀ (s : Finset σ), ∀ x ∈ s, (fun₀ | x => 1).support = {x}

Next tactic:
intros _ x _
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
  rintro a h rfl
  have := congr_arg Finsupp.support h
  rw [Finsupp.support_sum_eq_biUnion, Finsupp.support_sum_eq_biUnion] at this
  have hsingle : ∀ s : Finset σ, ∀ x : σ, x ∈ s → (Finsupp.single x 1).support = {x} := by
    intros _ x _
    

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (Finset.biUnion t fun i => (fun₀ | i => 1).support) = Finset.biUnion s fun i => (fun₀ | i => 1).support
s✝ : Finset σ
x : σ
a✝ : x ∈ s✝
⊢ (fun₀ | x => 1).support = {x}

Next tactic:
rw [Finsupp.support_single_ne_zero x one_ne_zero]
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
  rintro a h rfl
  have := congr_arg Finsupp.support h
  rw [Finsupp.support_sum_eq_biUnion, Finsupp.support_sum_eq_biUnion] at this
  have hsingle : ∀ s : Finset σ, ∀ x : σ, x ∈ s → (Finsupp.single x 1).support = {x} := by
    intros _ x _
    rw [Finsupp.support_single_ne_zero x one_ne_zero]
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (Finset.biUnion t fun i => (fun₀ | i => 1).support) = Finset.biUnion s fun i => (fun₀ | i => 1).support
hsingle : ∀ (s : Finset σ), ∀ x ∈ s, (fun₀ | x => 1).support = {x}
⊢ False
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 τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (Finset.biUnion t fun i => (fun₀ | i => 1).support) = (∑ i in s, fun₀ | i => 1).support
⊢ ∀ (i₁ i₂ : σ), i₁ ≠ i₂ → Disjoint (fun₀ | i₁ => 1).support (fun₀ | i₂ => 1).support
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 τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (∑ i in t, fun₀ | i => 1).support = (∑ i in s, fun₀ | i => 1).support
⊢ ∀ (i₁ i₂ : σ), i₁ ≠ i₂ → Disjoint (fun₀ | i₁ => 1).support (fun₀ | i₂ => 1).support

Next tactic:
have hs := biUnion_congr (of_eq_true (eq_self s)) (hsingle s)
theorem support_esymm'' (n : ℕ) [DecidableEq σ] [Nontrivial R] :
    (esymm σ R n).support =
      (powersetCard n (univ : Finset σ)).biUnion fun t =>
        (Finsupp.single (∑ i : σ in t, Finsupp.single i 1) (1 : R)).support := by
  rw [esymm_eq_sum_monomial]
  simp only [← single_eq_monomial]
  refine' Finsupp.support_sum_eq_biUnion (powersetCard n (univ : Finset σ)) _
  intro s t hst
  rw [Finset.disjoint_left, Finsupp.support_single_ne_zero _ one_ne_zero]
  rw [Finsupp.support_single_ne_zero _ one_ne_zero]
  simp only [one_ne_zero, mem_singleton, Finsupp.mem_support_iff]
  rintro a h rfl
  have := congr_arg Finsupp.support h
  rw [Finsupp.support_sum_eq_biUnion, Finsupp.support_sum_eq_biUnion] at this
  have hsingle : ∀ s : Finset σ, ∀ x : σ, x ∈ s → (Finsupp.single x 1).support = {x} := by
    intros _ x _
    rw [Finsupp.support_single_ne_zero x one_ne_zero]
  have hs := biUnion_congr (of_eq_true (eq_self s)) (hsingle s)
  

Proof state:
σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝⁵ : CommSemiring R
inst✝⁴ : CommSemiring S
inst✝³ : Fintype σ
inst✝² : Fintype τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (Finset.biUnion t fun i => (fun₀ | i => 1).support) = Finset.biUnion s fun i => (fun₀ | i => 1).support
hsingle : ∀ (s : Finset σ), ∀ x ∈ s, (fun₀ | x => 1).support = {x}
hs : (Finset.biUnion s fun a => (fun₀ | a => 1).support) = Finset.biUnion s fun a => {a}
⊢ False
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 τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (Finset.biUnion t fun i => (fun₀ | i => 1).support) = (∑ i in s, fun₀ | i => 1).support
⊢ ∀ (i₁ i₂ : σ), i₁ ≠ i₂ → Disjoint (fun₀ | i₁ => 1).support (fun₀ | i₂ => 1).support
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 τ
n : ℕ
inst✝¹ : DecidableEq σ
inst✝ : Nontrivial R
s t : Finset σ
hst : s ≠ t
h : (∑ i in t, fun₀ | i => 1) = ∑ i in s, fun₀ | i => 1
this : (∑ i in t, fun₀ | i => 1).support = (∑ i in s, fun₀ | i => 1).support
⊢ ∀ (i₁ i₂ : σ), i₁ ≠ i₂ → Disjoint (fun₀ | i₁ => 1).support (fun₀ | i₂ => 1).support

Next tactic:
have ht := biUnion_congr (of_eq_true (eq_self t)) (hsingle t)