R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
⊢ ∃ a, ↑(funLeft R M f) a = g
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
⊢ Surjective ↑(funLeft R M f)
intro g
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
⊢ (↑(funLeft R M f) fun x => if h : ∃ y, f y = x then g (Exists.choose h) else 0) = g
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
⊢ ∃ a, ↑(funLeft R M f) a = g
refine' ⟨fun x => if h : ∃ y, f y = x then g h.choose else 0, _⟩
case h
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
⊢ ↑(funLeft R M f) (fun x => if h : ∃ y, f y = x then g (Exists.choose h) else 0) x✝ = g x✝
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
⊢ (↑(funLeft R M f) fun x => if h : ∃ y, f y = x then g (Exists.choose h) else 0) = g
ext
case h
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
⊢ (if h : ∃ y, f y = f x✝ then g (Exists.choose h) else 0) = g x✝
case h
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
⊢ ↑(funLeft R M f) (fun x => if h : ∃ y, f y = x then g (Exists.choose h) else 0) x✝ = g x✝
dsimp only [funLeft_apply]
case h.inl
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
w : ∃ y, f y = f x✝
⊢ g (Exists.choose w) = g x✝

case h.inr
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
w : ¬∃ y, f y = f x✝
⊢ 0 = g x✝
case h
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
⊢ (if h : ∃ y, f y = f x✝ then g (Exists.choose h) else 0) = g x✝
split_ifs with w
case h.inl.e_a
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
w : ∃ y, f y = f x✝
⊢ Exists.choose w = x✝
case h.inl
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
w : ∃ y, f y = f x✝
⊢ g (Exists.choose w) = g x✝
congr
no goals
case h.inl.e_a
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
w : ∃ y, f y = f x✝
⊢ Exists.choose w = x✝
exact hf w.choose_spec
no goals
case h.inr
R : Type u_4
R₁ : Type ?u.2320959
R₂ : Type ?u.2320962
R₃ : Type ?u.2320965
R₄ : Type ?u.2320968
S : Type ?u.2320971
K : Type ?u.2320974
K₂ : Type ?u.2320977
M : Type u_3
M' : Type ?u.2320983
M₁ : Type ?u.2320986
M₂ : Type ?u.2320989
M₃ : Type ?u.2320992
M₄ : Type ?u.2320995
N : Type ?u.2320998
N₂ : Type ?u.2321001
ι : Type ?u.2321004
V : Type ?u.2321007
V₂ : Type ?u.2321010
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : Type u_1
n : Type u_2
p : Type ?u.2321051
f : m → n
hf : Injective f
g : m → M
x✝ : m
w : ¬∃ y, f y = f x✝
⊢ 0 = g x✝
simp only [not_true, exists_apply_eq_apply] at w