Theorem: AffineMap.pi_ext_zero
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

tactic: apply ext_linear
state_before: R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
⊢ f = g
state_after: case h₁
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
⊢ f.linear = g.linear

case h₂
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
⊢ f ?p = g ?p

case p
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
⊢ (i : ι) → φv i

tactic: apply LinearMap.pi_ext
state_before: case h₁
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
⊢ f.linear = g.linear
state_after: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
⊢ ∀ (i : ι) (x : φv i), f.linear (Pi.single i x) = g.linear (Pi.single i x)

tactic: intro i x
state_before: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
⊢ ∀ (i : ι) (x : φv i), f.linear (Pi.single i x) = g.linear (Pi.single i x)
state_after: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)

tactic: have s₁ := h i x
state_before: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)
state_after: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)

tactic: have s₂ := f.map_vadd 0 (Pi.single i x)
state_before: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)
state_after: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x +ᵥ 0) = f.linear (Pi.single i x) +ᵥ f 0
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)

tactic: have s₃ := g.map_vadd 0 (Pi.single i x)
state_before: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x +ᵥ 0) = f.linear (Pi.single i x) +ᵥ f 0
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)
state_after: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x +ᵥ 0) = f.linear (Pi.single i x) +ᵥ f 0
s₃ : g (Pi.single i x +ᵥ 0) = g.linear (Pi.single i x) +ᵥ g 0
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)

tactic: rw [vadd_eq_add, add_zero] at s₂ s₃
state_before: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x +ᵥ 0) = f.linear (Pi.single i x) +ᵥ f 0
s₃ : g (Pi.single i x +ᵥ 0) = g.linear (Pi.single i x) +ᵥ g 0
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)
state_after: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x) = f.linear (Pi.single i x) +ᵥ f 0
s₃ : g (Pi.single i x) = g.linear (Pi.single i x) +ᵥ g 0
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)

tactic: replace h₂ := h i 0
state_before: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x) = f.linear (Pi.single i x) +ᵥ f 0
s₃ : g (Pi.single i x) = g.linear (Pi.single i x) +ᵥ g 0
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)
state_after: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x) = f.linear (Pi.single i x) +ᵥ f 0
s₃ : g (Pi.single i x) = g.linear (Pi.single i x) +ᵥ g 0
h₂ : f (Pi.single i 0) = g (Pi.single i 0)
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)

tactic: simp only [Pi.single_zero] at h₂
state_before: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x) = f.linear (Pi.single i x) +ᵥ f 0
s₃ : g (Pi.single i x) = g.linear (Pi.single i x) +ᵥ g 0
h₂ : f (Pi.single i 0) = g (Pi.single i 0)
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)
state_after: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x) = f.linear (Pi.single i x) +ᵥ f 0
s₃ : g (Pi.single i x) = g.linear (Pi.single i x) +ᵥ g 0
h₂ : f 0 = g 0
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)

tactic: rwa [s₂, s₃, h₂, vadd_right_cancel_iff] at s₁
state_before: case h₁.h
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
i : ι
x : φv i
s₁ : f (Pi.single i x) = g (Pi.single i x)
s₂ : f (Pi.single i x) = f.linear (Pi.single i x) +ᵥ f 0
s₃ : g (Pi.single i x) = g.linear (Pi.single i x) +ᵥ g 0
h₂ : f 0 = g 0
⊢ f.linear (Pi.single i x) = g.linear (Pi.single i x)
state_after: no goals

tactic: exact h₂
state_before: case h₂
R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝¹⁴ : Ring k
inst✝¹³ : AddCommGroup V1
inst✝¹² : AffineSpace V1 P1
inst✝¹¹ : AddCommGroup V2
inst✝¹⁰ : AffineSpace V2 P2
inst✝⁹ : AddCommGroup V3
inst✝⁸ : AffineSpace V3 P3
inst✝⁷ : Module k V1
inst✝⁶ : Module k V2
inst✝⁵ : Module k V3
ι : Type u_9
φv : ι → Type u_10
φp : ι → Type u_11
inst✝⁴ : (i : ι) → AddCommGroup (φv i)
inst✝³ : (i : ι) → Module k (φv i)
inst✝² : (i : ι) → AffineSpace (φv i) (φp i)
fp : (i : ι) → P1 →ᵃ[k] φp i
fv : (i : ι) → P1 →ᵃ[k] φv i
f' : ι → P1 →ᵃ[k] P2
inst✝¹ : Finite ι
inst✝ : DecidableEq ι
f g : ((i : ι) → φv i) →ᵃ[k] P2
h : ∀ (i : ι) (x : φv i), f (Pi.single i x) = g (Pi.single i x)
h₂ : f 0 = g 0
⊢ f ?p = g ?p
state_after: no goals