Theorem: AlternatingMap.domCoprod.summand_add_swap_smul_eq_zero
File: Mathlib/LinearAlgebra/Alternating.lean

tactic: refine Quotient.inductionOn' σ fun σ => ?_
state_before: R : Type ?u.925959
inst✝²¹ : Semiring R
M : Type ?u.925965
inst✝²⁰ : AddCommMonoid M
inst✝¹⁹ : Module R M
N : Type ?u.925997
inst✝¹⁸ : AddCommMonoid N
inst✝¹⁷ : Module R N
P : Type ?u.926027
inst✝¹⁶ : AddCommMonoid P
inst✝¹⁵ : Module R P
M' : Type ?u.926057
inst✝¹⁴ : AddCommGroup M'
inst✝¹³ : Module R M'
N' : Type ?u.926445
inst✝¹² : AddCommGroup N'
inst✝¹¹ : Module R N'
ι : Type ?u.926833
ι' : Type ?u.926836
ι'' : Type ?u.926839
ιa : Type u_4
ιb : Type u_6
inst✝¹⁰ : Fintype ιa
inst✝⁹ : Fintype ιb
R' : Type u_1
Mᵢ : Type u_2
N₁ : Type u_3
N₂ : Type u_5
inst✝⁸ : CommSemiring R'
inst✝⁷ : AddCommGroup N₁
inst✝⁶ : Module R' N₁
inst✝⁵ : AddCommGroup N₂
inst✝⁴ : Module R' N₂
inst✝³ : AddCommMonoid Mᵢ
inst✝² : Module R' Mᵢ
inst✝¹ : DecidableEq ιa
inst✝ : DecidableEq ιb
a : AlternatingMap R' Mᵢ N₁ ιa
b : AlternatingMap R' Mᵢ N₂ ιb
σ : Perm.ModSumCongr ιa ιb
v : ιa ⊕ ιb → Mᵢ
i j : ιa ⊕ ιb
hv : v i = v j
hij : i ≠ j
⊢ ↑(summand a b σ) v + ↑(summand a b (swap i j • σ)) v = 0

tactic: dsimp only [Quotient.liftOn'_mk'', Quotient.map'_mk'', MulAction.Quotient.smul_mk,
  domCoprod.summand]
state_before: R : Type ?u.925959
inst✝²¹ : Semiring R
M : Type ?u.925965
inst✝²⁰ : AddCommMonoid M
inst✝¹⁹ : Module R M
N : Type ?u.925997
inst✝¹⁸ : AddCommMonoid N
inst✝¹⁷ : Module R N
P : Type ?u.926027
inst✝¹⁶ : AddCommMonoid P
inst✝¹⁵ : Module R P
M' : Type ?u.926057
inst✝¹⁴ : AddCommGroup M'
inst✝¹³ : Module R M'
N' : Type ?u.926445
inst✝¹² : AddCommGroup N'
inst✝¹¹ : Module R N'
ι : Type ?u.926833
ι' : Type ?u.926836
ι'' : Type ?u.926839
ιa : Type u_4
ιb : Type u_6
inst✝¹⁰ : Fintype ιa
inst✝⁹ : Fintype ιb
R' : Type u_1
Mᵢ : Type u_2
N₁ : Type u_3
N₂ : Type u_5
inst✝⁸ : CommSemiring R'
inst✝⁷ : AddCommGroup N₁
inst✝⁶ : Module R' N₁
inst✝⁵ : AddCommGroup N₂
inst✝⁴ : Module R' N₂
inst✝³ : AddCommMonoid Mᵢ
inst✝² : Module R' Mᵢ
inst✝¹ : DecidableEq ιa
inst✝ : DecidableEq ιb
a : AlternatingMap R' Mᵢ N₁ ιa
b : AlternatingMap R' Mᵢ N₂ ιb
σ✝ : Perm.ModSumCongr ιa ιb
v : ιa ⊕ ιb → Mᵢ
i j : ιa ⊕ ιb
hv : v i = v j
hij : i ≠ j
σ : Perm (ιa ⊕ ιb)
⊢ ↑(summand a b (Quotient.mk'' σ)) v + ↑(summand a b (swap i j • Quotient.mk'' σ)) v = 0

tactic: rw [smul_eq_mul, Perm.sign_mul, Perm.sign_swap hij]
state_before: R : Type ?u.925959
inst✝²¹ : Semiring R
M : Type ?u.925965
inst✝²⁰ : AddCommMonoid M
inst✝¹⁹ : Module R M
N : Type ?u.925997
inst✝¹⁸ : AddCommMonoid N
inst✝¹⁷ : Module R N
P : Type ?u.926027
inst✝¹⁶ : AddCommMonoid P
inst✝¹⁵ : Module R P
M' : Type ?u.926057
inst✝¹⁴ : AddCommGroup M'
inst✝¹³ : Module R M'
N' : Type ?u.926445
inst✝¹² : AddCommGroup N'
inst✝¹¹ : Module R N'
ι : Type ?u.926833
ι' : Type ?u.926836
ι'' : Type ?u.926839
ιa : Type u_4
ιb : Type u_6
inst✝¹⁰ : Fintype ιa
inst✝⁹ : Fintype ιb
R' : Type u_1
Mᵢ : Type u_2
N₁ : Type u_3
N₂ : Type u_5
inst✝⁸ : CommSemiring R'
inst✝⁷ : AddCommGroup N₁
inst✝⁶ : Module R' N₁
inst✝⁵ : AddCommGroup N₂
inst✝⁴ : Module R' N₂
inst✝³ : AddCommMonoid Mᵢ
inst✝² : Module R' Mᵢ
inst✝¹ : DecidableEq ιa
inst✝ : DecidableEq ιb
a : AlternatingMap R' Mᵢ N₁ ιa
b : AlternatingMap R' Mᵢ N₂ ιb
σ✝ : Perm.ModSumCongr ιa ιb
v : ιa ⊕ ιb → Mᵢ
i j : ιa ⊕ ιb
hv : v i = v j
hij : i ≠ j
σ : Perm (ιa ⊕ ιb)
⊢ ↑(↑Perm.sign σ • MultilinearMap.domDomCongr σ (MultilinearMap.domCoprod ↑a ↑b)) v +
      ↑(↑Perm.sign (swap i j • σ) • MultilinearMap.domDomCongr (swap i j • σ) (MultilinearMap.domCoprod ↑a ↑b)) v =
    0

tactic: simp only [one_mul, neg_mul, Function.comp_apply, Units.neg_smul, Perm.coe_mul, Units.val_neg,
  MultilinearMap.smul_apply, MultilinearMap.neg_apply, MultilinearMap.domDomCongr_apply,
  MultilinearMap.domCoprod_apply]
state_before: R : Type ?u.925959
inst✝²¹ : Semiring R
M : Type ?u.925965
inst✝²⁰ : AddCommMonoid M
inst✝¹⁹ : Module R M
N : Type ?u.925997
inst✝¹⁸ : AddCommMonoid N
inst✝¹⁷ : Module R N
P : Type ?u.926027
inst✝¹⁶ : AddCommMonoid P
inst✝¹⁵ : Module R P
M' : Type ?u.926057
inst✝¹⁴ : AddCommGroup M'
inst✝¹³ : Module R M'
N' : Type ?u.926445
inst✝¹² : AddCommGroup N'
inst✝¹¹ : Module R N'
ι : Type ?u.926833
ι' : Type ?u.926836
ι'' : Type ?u.926839
ιa : Type u_4
ιb : Type u_6
inst✝¹⁰ : Fintype ιa
inst✝⁹ : Fintype ιb
R' : Type u_1
Mᵢ : Type u_2
N₁ : Type u_3
N₂ : Type u_5
inst✝⁸ : CommSemiring R'
inst✝⁷ : AddCommGroup N₁
inst✝⁶ : Module R' N₁
inst✝⁵ : AddCommGroup N₂
inst✝⁴ : Module R' N₂
inst✝³ : AddCommMonoid Mᵢ
inst✝² : Module R' Mᵢ
inst✝¹ : DecidableEq ιa
inst✝ : DecidableEq ιb
a : AlternatingMap R' Mᵢ N₁ ιa
b : AlternatingMap R' Mᵢ N₂ ιb
σ✝ : Perm.ModSumCongr ιa ιb
v : ιa ⊕ ιb → Mᵢ
i j : ιa ⊕ ιb
hv : v i = v j
hij : i ≠ j
σ : Perm (ιa ⊕ ιb)
⊢ ↑(↑Perm.sign σ • MultilinearMap.domDomCongr σ (MultilinearMap.domCoprod ↑a ↑b)) v +
      ↑((-1 * ↑Perm.sign σ) • MultilinearMap.domDomCongr (swap i j * σ) (MultilinearMap.domCoprod ↑a ↑b)) v =
    0

tactic: ext k
state_before: case h.e'_2.h.e'_6.h.e'_3.h.e'_6.h.e'_10.h.e'_6
R : Type ?u.925959
inst✝²¹ : Semiring R
M : Type ?u.925965
inst✝²⁰ : AddCommMonoid M
inst✝¹⁹ : Module R M
N : Type ?u.925997
inst✝¹⁸ : AddCommMonoid N
inst✝¹⁷ : Module R N
P : Type ?u.926027
inst✝¹⁶ : AddCommMonoid P
inst✝¹⁵ : Module R P
M' : Type ?u.926057
inst✝¹⁴ : AddCommGroup M'
inst✝¹³ : Module R M'
N' : Type ?u.926445
inst✝¹² : AddCommGroup N'
inst✝¹¹ : Module R N'
ι : Type ?u.926833
ι' : Type ?u.926836
ι'' : Type ?u.926839
ιa : Type u_4
ιb : Type u_6
inst✝¹⁰ : Fintype ιa
inst✝⁹ : Fintype ιb
R' : Type u_1
Mᵢ : Type u_2
N₁ : Type u_3
N₂ : Type u_5
inst✝⁸ : CommSemiring R'
inst✝⁷ : AddCommGroup N₁
inst✝⁶ : Module R' N₁
inst✝⁵ : AddCommGroup N₂
inst✝⁴ : Module R' N₂
inst✝³ : AddCommMonoid Mᵢ
inst✝² : Module R' Mᵢ
inst✝¹ : DecidableEq ιa
inst✝ : DecidableEq ιb
a : AlternatingMap R' Mᵢ N₁ ιa
b : AlternatingMap R' Mᵢ N₂ ιb
σ✝ : Perm.ModSumCongr ιa ιb
v : ιa ⊕ ιb → Mᵢ
i j : ιa ⊕ ιb
hv : v i = v j
hij : i ≠ j
σ : Perm (ιa ⊕ ιb)
⊢ (fun i_1 => v (↑(swap i j) (↑σ (Sum.inr i_1)))) = fun i => v (↑σ (Sum.inr i))

tactic: rw [Equiv.apply_swap_eq_self hv]
state_before: case h.e'_2.h.e'_6.h.e'_3.h.e'_6.h.e'_10.h.e'_6.h
R : Type ?u.925959
inst✝²¹ : Semiring R
M : Type ?u.925965
inst✝²⁰ : AddCommMonoid M
inst✝¹⁹ : Module R M
N : Type ?u.925997
inst✝¹⁸ : AddCommMonoid N
inst✝¹⁷ : Module R N
P : Type ?u.926027
inst✝¹⁶ : AddCommMonoid P
inst✝¹⁵ : Module R P
M' : Type ?u.926057
inst✝¹⁴ : AddCommGroup M'
inst✝¹³ : Module R M'
N' : Type ?u.926445
inst✝¹² : AddCommGroup N'
inst✝¹¹ : Module R N'
ι : Type ?u.926833
ι' : Type ?u.926836
ι'' : Type ?u.926839
ιa : Type u_4
ιb : Type u_6
inst✝¹⁰ : Fintype ιa
inst✝⁹ : Fintype ιb
R' : Type u_1
Mᵢ : Type u_2
N₁ : Type u_3
N₂ : Type u_5
inst✝⁸ : CommSemiring R'
inst✝⁷ : AddCommGroup N₁
inst✝⁶ : Module R' N₁
inst✝⁵ : AddCommGroup N₂
inst✝⁴ : Module R' N₂
inst✝³ : AddCommMonoid Mᵢ
inst✝² : Module R' Mᵢ
inst✝¹ : DecidableEq ιa
inst✝ : DecidableEq ιb
a : AlternatingMap R' Mᵢ N₁ ιa
b : AlternatingMap R' Mᵢ N₂ ιb
σ✝ : Perm.ModSumCongr ιa ιb
v : ιa ⊕ ιb → Mᵢ
i j : ιa ⊕ ιb
hv : v i = v j
hij : i ≠ j
σ : Perm (ιa ⊕ ιb)
k : ιb
⊢ v (↑(swap i j) (↑σ (Sum.inr k))) = v (↑σ (Sum.inr k))