Theorem: MultilinearMap.domDomRestrict_aux
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

Proof steps:
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹³ : Semiring R
inst✝¹² : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝¹¹ : (i : ι) → AddCommMonoid (M₁ i)
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : (i : Fin n.succ) → Module R (M i)
inst✝⁶ : (i : ι) → Module R (M₁ i)
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
f f' : MultilinearMap R M₁ M₂
inst✝² : DecidableEq ι
P : ι → Prop
inst✝¹ : DecidablePred P
inst✝ : DecidableEq { a // P a }
x : (i : { a // P a }) → M₁ ↑i
z : (i : { a // ¬P a }) → M₁ ↑i
i : { a // P a }
c : M₁ ↑i
⊢ (fun j => if h : P j then update x i c ⟨j, h⟩ else z ⟨j, h⟩) =
    update (fun j => if h : P j then x ⟨j, h⟩ else z ⟨j, h⟩) (↑i) c
state_after: case h
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹³ : Semiring R
inst✝¹² : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝¹¹ : (i : ι) → AddCommMonoid (M₁ i)
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : (i : Fin n.succ) → Module R (M i)
inst✝⁶ : (i : ι) → Module R (M₁ i)
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
f f' : MultilinearMap R M₁ M₂
inst✝² : DecidableEq ι
P : ι → Prop
inst✝¹ : DecidablePred P
inst✝ : DecidableEq { a // P a }
x : (i : { a // P a }) → M₁ ↑i
z : (i : { a // ¬P a }) → M₁ ↑i
i : { a // P a }
c : M₁ ↑i
j : ι
⊢ (if h : P j then update x i c ⟨j, h⟩ else z ⟨j, h⟩) =
    update (fun j => if h : P j then x ⟨j, h⟩ else z ⟨j, h⟩) (↑i) c j
tactic: ext j
state_before: case h
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹³ : Semiring R
inst✝¹² : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝¹¹ : (i : ι) → AddCommMonoid (M₁ i)
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : (i : Fin n.succ) → Module R (M i)
inst✝⁶ : (i : ι) → Module R (M₁ i)
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
f f' : MultilinearMap R M₁ M₂
inst✝² : DecidableEq ι
P : ι → Prop
inst✝¹ : DecidablePred P
inst✝ : DecidableEq { a // P a }
x : (i : { a // P a }) → M₁ ↑i
z : (i : { a // ¬P a }) → M₁ ↑i
i : { a // P a }
c : M₁ ↑i
j : ι
⊢ (if h : P j then update x i c ⟨j, h⟩ else z ⟨j, h⟩) =
    update (fun j => if h : P j then x ⟨j, h⟩ else z ⟨j, h⟩) (↑i) c j
state_after: case pos
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹³ : Semiring R
inst✝¹² : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝¹¹ : (i : ι) → AddCommMonoid (M₁ i)
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : (i : Fin n.succ) → Module R (M i)
inst✝⁶ : (i : ι) → Module R (M₁ i)
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
f f' : MultilinearMap R M₁ M₂
inst✝² : DecidableEq ι
P : ι → Prop
inst✝¹ : DecidablePred P
inst✝ : DecidableEq { a // P a }
x : (i : { a // P a }) → M₁ ↑i
z : (i : { a // ¬P a }) → M₁ ↑i
i : { a // P a }
c : M₁ ↑i
j : ι
h : j = ↑i
⊢ (if h : P j then update x i c ⟨j, h⟩ else z ⟨j, h⟩) =
    update (fun j => if h : P j then x ⟨j, h⟩ else z ⟨j, h⟩) (↑i) c j

case neg
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹³ : Semiring R
inst✝¹² : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝¹¹ : (i : ι) → AddCommMonoid (M₁ i)
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : (i : Fin n.succ) → Module R (M i)
inst✝⁶ : (i : ι) → Module R (M₁ i)
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
f f' : MultilinearMap R M₁ M₂
inst✝² : DecidableEq ι
P : ι → Prop
inst✝¹ : DecidablePred P
inst✝ : DecidableEq { a // P a }
x : (i : { a // P a }) → M₁ ↑i
z : (i : { a // ¬P a }) → M₁ ↑i
i : { a // P a }
c : M₁ ↑i
j : ι
h : ¬j = ↑i
⊢ (if h : P j then update x i c ⟨j, h⟩ else z ⟨j, h⟩) =
    update (fun j => if h : P j then x ⟨j, h⟩ else z ⟨j, h⟩) (↑i) c j
tactic: by_cases h : j = i