Theorem: TensorProduct.isTensorProduct
File: Mathlib/RingTheory/IsTensorProduct.lean

tactic: delta IsTensorProduct
state_before: R : Type u_1
inst✝¹⁴ : CommRing R
M₁ : Type ?u.21721
M₂ : Type ?u.21724
M : Type u_2
M' : Type ?u.21730
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type ?u.23969
N₂ : Type ?u.23972
N : Type u_3
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
⊢ IsTensorProduct (mk R M N)

tactic: convert_to Function.Bijective (LinearMap.id : M ⊗[R] N →ₗ[R] M ⊗[R] N) using 2
state_before: R : Type u_1
inst✝¹⁴ : CommRing R
M₁ : Type ?u.21721
M₂ : Type ?u.21724
M : Type u_2
M' : Type ?u.21730
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type ?u.23969
N₂ : Type ?u.23972
N : Type u_3
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
⊢ Function.Bijective ↑(lift (mk R M N))

tactic: apply TensorProduct.ext'
state_before: case h.e'_3.h.e'_5
R : Type u_1
inst✝¹⁴ : CommRing R
M₁ : Type ?u.21721
M₂ : Type ?u.21724
M : Type u_2
M' : Type ?u.21730
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type ?u.23969
N₂ : Type ?u.23972
N : Type u_3
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
⊢ lift (mk R M N) = LinearMap.id

tactic: simp
state_before: case h.e'_3.h.e'_5.H
R : Type u_1
inst✝¹⁴ : CommRing R
M₁ : Type ?u.21721
M₂ : Type ?u.21724
M : Type u_2
M' : Type ?u.21730
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type ?u.23969
N₂ : Type ?u.23972
N : Type u_3
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
⊢ ∀ (x : M) (y : N), ↑(lift (mk R M N)) (x ⊗ₜ[R] y) = ↑LinearMap.id (x ⊗ₜ[R] y)

tactic: exact Function.bijective_id
state_before: R : Type u_1
inst✝¹⁴ : CommRing R
M₁ : Type ?u.21721
M₂ : Type ?u.21724
M : Type u_2
M' : Type ?u.21730
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type ?u.23969
N₂ : Type ?u.23972
N : Type u_3
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
⊢ Function.Bijective ↑LinearMap.id