Theorem: Submodule.map₂_span_span
File: Mathlib/Algebra/Module/Submodule/Bilinear.lean

tactic: apply le_antisymm
state_before: ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ map₂ f (span R s) (span R t) = span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: rw [map₂_le]
state_before: case a
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ map₂ f (span R s) (span R t) ≤ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: apply @span_induction' R M _ _ _ s
state_before: case a
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (m : M), m ∈ span R s → ∀ (n : N), n ∈ span R t → ↑(↑f m) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: intro a ha
state_before: case a.Hs
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (x : M), x ∈ s → ∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H0
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (n : N), n ∈ span R t → ↑(↑f 0) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H1
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (x : M),
    x ∈ span R s →
      ∀ (y : M),
        y ∈ span R s →
          (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
            (∀ (n : N), n ∈ span R t → ↑(↑f y) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
              ∀ (n : N), n ∈ span R t → ↑(↑f (x + y)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (a : R) (x : M),
    x ∈ span R s →
      (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
        ∀ (n : N), n ∈ span R t → ↑(↑f (a • x)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: apply @span_induction' R N _ _ _ t
state_before: case a.Hs
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ∀ (n : N), n ∈ span R t → ↑(↑f a) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H0
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (n : N), n ∈ span R t → ↑(↑f 0) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H1
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (x : M),
    x ∈ span R s →
      ∀ (y : M),
        y ∈ span R s →
          (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
            (∀ (n : N), n ∈ span R t → ↑(↑f y) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
              ∀ (n : N), n ∈ span R t → ↑(↑f (x + y)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (a : R) (x : M),
    x ∈ span R s →
      (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
        ∀ (n : N), n ∈ span R t → ↑(↑f (a • x)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: intro b hb
state_before: case a.Hs.Hs
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ∀ (x : N), x ∈ t → ↑(↑f a) x ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.Hs.H0
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ↑(↑f a) 0 ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.Hs.H1
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ∀ (x : N),
    x ∈ span R t →
      ∀ (y : N),
        y ∈ span R t →
          ↑(↑f a) x ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
            ↑(↑f a) y ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
              ↑(↑f a) (x + y) ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.Hs.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ∀ (a_1 : R) (x : N),
    x ∈ span R t →
      ↑(↑f a) x ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
        ↑(↑f a) (a_1 • x) ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H0
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (n : N), n ∈ span R t → ↑(↑f 0) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H1
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (x : M),
    x ∈ span R s →
      ∀ (y : M),
        y ∈ span R s →
          (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
            (∀ (n : N), n ∈ span R t → ↑(↑f y) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
              ∀ (n : N), n ∈ span R t → ↑(↑f (x + y)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (a : R) (x : M),
    x ∈ span R s →
      (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
        ∀ (n : N), n ∈ span R t → ↑(↑f (a • x)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: exact subset_span ⟨_, _, ‹_›, ‹_›, rfl⟩
state_before: case a.Hs.Hs
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
b : N
hb : b ∈ t
⊢ ↑(↑f a) b ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.Hs.H0
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ↑(↑f a) 0 ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.Hs.H1
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ∀ (x : N),
    x ∈ span R t →
      ∀ (y : N),
        y ∈ span R t →
          ↑(↑f a) x ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
            ↑(↑f a) y ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
              ↑(↑f a) (x + y) ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.Hs.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ∀ (a_1 : R) (x : N),
    x ∈ span R t →
      ↑(↑f a) x ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
        ↑(↑f a) (a_1 • x) ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H0
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (n : N), n ∈ span R t → ↑(↑f 0) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H1
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (x : M),
    x ∈ span R s →
      ∀ (y : M),
        y ∈ span R s →
          (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
            (∀ (n : N), n ∈ span R t → ↑(↑f y) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
              ∀ (n : N), n ∈ span R t → ↑(↑f (x + y)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (a : R) (x : M),
    x ∈ span R s →
      (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
        ∀ (n : N), n ∈ span R t → ↑(↑f (a • x)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: all_goals intros; simp only [*, add_mem, smul_mem, zero_mem, _root_.map_zero, map_add,
                             LinearMap.zero_apply, LinearMap.add_apply, LinearMap.smul_apply,
                             SMulHomClass.map_smul]
state_before: case a.Hs.H0
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ↑(↑f a) 0 ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.Hs.H1
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ∀ (x : N),
    x ∈ span R t →
      ∀ (y : N),
        y ∈ span R t →
          ↑(↑f a) x ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
            ↑(↑f a) y ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
              ↑(↑f a) (x + y) ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.Hs.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
ha : a ∈ s
⊢ ∀ (a_1 : R) (x : N),
    x ∈ span R t →
      ↑(↑f a) x ∈ span R (image2 (fun m n => ↑(↑f m) n) s t) →
        ↑(↑f a) (a_1 • x) ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H0
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (n : N), n ∈ span R t → ↑(↑f 0) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H1
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (x : M),
    x ∈ span R s →
      ∀ (y : M),
        y ∈ span R s →
          (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
            (∀ (n : N), n ∈ span R t → ↑(↑f y) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
              ∀ (n : N), n ∈ span R t → ↑(↑f (x + y)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

case a.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (a : R) (x : M),
    x ∈ span R s →
      (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
        ∀ (n : N), n ∈ span R t → ↑(↑f (a • x)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: intros
state_before: case a.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ ∀ (a : R) (x : M),
    x ∈ span R s →
      (∀ (n : N), n ∈ span R t → ↑(↑f x) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)) →
        ∀ (n : N), n ∈ span R t → ↑(↑f (a • x)) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: simp only [*, add_mem, smul_mem, zero_mem, _root_.map_zero, map_add,
           LinearMap.zero_apply, LinearMap.add_apply, LinearMap.smul_apply,
           SMulHomClass.map_smul]
state_before: case a.H2
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a✝² : R
x✝ : M
hx✝ : x✝ ∈ span R s
a✝¹ : ∀ (n : N), n ∈ span R t → ↑(↑f x✝) n ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)
n✝ : N
a✝ : n✝ ∈ span R t
⊢ ↑(↑f (a✝² • x✝)) n✝ ∈ span R (image2 (fun m n => ↑(↑f m) n) s t)

tactic: rw [span_le]
state_before: case a
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ span R (image2 (fun m n => ↑(↑f m) n) s t) ≤ map₂ f (span R s) (span R t)

tactic: rintro _ ⟨a, b, ha, hb, rfl⟩
state_before: case a
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
⊢ image2 (fun m n => ↑(↑f m) n) s t ⊆ ↑(map₂ f (span R s) (span R t))

tactic: exact apply_mem_map₂ _ (subset_span ha) (subset_span hb)
state_before: case a.intro.intro.intro.intro
ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Set M
t : Set N
a : M
b : N
ha : a ∈ s
hb : b ∈ t
⊢ (fun m n => ↑(↑f m) n) a b ∈ ↑(map₂ f (span R s) (span R t))