Theorem: RingTheory.Sequence.IsWeaklyRegular.isWeaklyRegular_rTensor
File: Mathlib/RingTheory/Regular/RegularSequence.lean

tactic: induction h with
| nil N => exact nil R (N ⊗[R] M₂)
| @cons N _ _ r rs' h1 _ ih =>
  let e := quotSMulTopTensorEquivQuotSMulTop r M₂ N
  exact ((e.isWeaklyRegular_congr rs').mp ih).cons (h1.rTensor M₂)
state_before: R : Type u_1
S : Type u_2
M : Type u_3
M₂ : Type u_4
M₃ : Type u_5
M₄ : Type u_6
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R M₂
inst✝² : Module R M₃
inst✝¹ : Module R M₄
inst✝ : Module.Flat R M₂
rs : List R
h : IsWeaklyRegular M rs
⊢ IsWeaklyRegular (M ⊗[R] M₂) rs
state_after: no goals

tactic: exact nil R (N ⊗[R] M₂)
state_before: case nil
R : Type u_1
S : Type u_2
M : Type u_3
M₂ : Type u_4
M₃ : Type u_5
M₄ : Type u_6
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M₄
inst✝⁶ : Module R M
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M₄
inst✝² : Module.Flat R M₂
rs : List R
N : Type u_3
inst✝¹ : AddCommGroup N
inst✝ : Module R N
⊢ IsWeaklyRegular (N ⊗[R] M₂) []
state_after: no goals

tactic: let e := quotSMulTopTensorEquivQuotSMulTop r M₂ N
state_before: case cons
R : Type u_1
S : Type u_2
M : Type u_3
M₂ : Type u_4
M₃ : Type u_5
M₄ : Type u_6
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M₄
inst✝⁶ : Module R M
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M₄
inst✝² : Module.Flat R M₂
rs : List R
N : Type u_3
inst✝¹ : AddCommGroup N
inst✝ : Module R N
r : R
rs' : List R
h1 : IsSMulRegular N r
h2✝ : IsWeaklyRegular (QuotSMulTop r N) rs'
ih : IsWeaklyRegular (QuotSMulTop r N ⊗[R] M₂) rs'
⊢ IsWeaklyRegular (N ⊗[R] M₂) (r :: rs')
state_after: case cons
R : Type u_1
S : Type u_2
M : Type u_3
M₂ : Type u_4
M₃ : Type u_5
M₄ : Type u_6
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M₄
inst✝⁶ : Module R M
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M₄
inst✝² : Module.Flat R M₂
rs : List R
N : Type u_3
inst✝¹ : AddCommGroup N
inst✝ : Module R N
r : R
rs' : List R
h1 : IsSMulRegular N r
h2✝ : IsWeaklyRegular (QuotSMulTop r N) rs'
ih : IsWeaklyRegular (QuotSMulTop r N ⊗[R] M₂) rs'
e : QuotSMulTop r N ⊗[R] M₂ ≃ₗ[R] QuotSMulTop r (N ⊗[R] M₂) := quotSMulTopTensorEquivQuotSMulTop r M₂ N
⊢ IsWeaklyRegular (N ⊗[R] M₂) (r :: rs')

tactic: exact ((e.isWeaklyRegular_congr rs').mp ih).cons (h1.rTensor M₂)
state_before: case cons
R : Type u_1
S : Type u_2
M : Type u_3
M₂ : Type u_4
M₃ : Type u_5
M₄ : Type u_6
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M₄
inst✝⁶ : Module R M
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M₄
inst✝² : Module.Flat R M₂
rs : List R
N : Type u_3
inst✝¹ : AddCommGroup N
inst✝ : Module R N
r : R
rs' : List R
h1 : IsSMulRegular N r
h2✝ : IsWeaklyRegular (QuotSMulTop r N) rs'
ih : IsWeaklyRegular (QuotSMulTop r N ⊗[R] M₂) rs'
e : QuotSMulTop r N ⊗[R] M₂ ≃ₗ[R] QuotSMulTop r (N ⊗[R] M₂) := quotSMulTopTensorEquivQuotSMulTop r M₂ N
⊢ IsWeaklyRegular (N ⊗[R] M₂) (r :: rs')
state_after: no goals