Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - feat(RingTheory/Morita/Basic): Define Morita Equivalence #20640

Closed
wants to merge 42 commits into from
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
ca351a7
basic
Whysoserioushah Jan 10, 2025
b5b09d2
fix build
Whysoserioushah Jan 10, 2025
60c47ac
apply suggestions
jjaassoonn Jan 10, 2025
de69322
inline
Jan 10, 2025
6af581c
add todo
Jan 10, 2025
a66deb6
add 1
Jan 13, 2025
ab44429
change
Jan 13, 2025
2e80c78
Update Mathlib/RingTheory/Morita/Basic.lean
jjaassoonn Jan 13, 2025
90c9112
shorten line
Jan 15, 2025
f8bb3f4
Merge remote-tracking branch 'origin/master' into morita
Whysoserioushah Jan 16, 2025
273aaa7
generalize
Jan 18, 2025
13696f4
test
Jan 18, 2025
7d58c66
fix?
Jan 18, 2025
f79a4f2
fix
Jan 18, 2025
d7d9043
Update Mathlib/RingTheory/Morita/Basic.lean
jjaassoonn Jan 22, 2025
d1f7a09
Update Mathlib/RingTheory/Morita/Basic.lean
Whysoserioushah Jan 24, 2025
8a33222
Update Mathlib/RingTheory/Morita/Basic.lean
Whysoserioushah Jan 24, 2025
68ba2a3
Update Mathlib/RingTheory/Morita/Basic.lean
Whysoserioushah Jan 24, 2025
f0552fe
Update Mathlib/RingTheory/Morita/Basic.lean
Whysoserioushah Jan 25, 2025
2344c2a
Update Mathlib/RingTheory/Morita/Basic.lean
Whysoserioushah Jan 25, 2025
d2f7b46
Update Mathlib/Algebra/Category/ModuleCat/Basic.lean
jjaassoonn Jan 25, 2025
961d207
Merge remote-tracking branch 'origin/master' into morita
Whysoserioushah Feb 3, 2025
5ded14d
junyan suggestion
Whysoserioushah Feb 3, 2025
99a4bf2
Update Mathlib/RingTheory/Morita/Basic.lean
jjaassoonn Feb 3, 2025
6c34832
Update Mathlib/RingTheory/Morita/Basic.lean
jjaassoonn Feb 3, 2025
dffcf77
Update Mathlib/RingTheory/Morita/Basic.lean
jjaassoonn Feb 3, 2025
54cac5f
apply suggestions from @alreadydone
Feb 3, 2025
c7b5292
Remove Functor.Additive from def of Functor.Linear
alreadydone Feb 3, 2025
e556403
unused arguments
alreadydone Feb 4, 2025
47ce0e0
golf `restrictScalarsEquivalenceOfRingEquiv_linear`
alreadydone Feb 4, 2025
50cb794
Update Mathlib/RingTheory/Morita/Basic.lean
jjaassoonn Feb 4, 2025
bf8230e
remove ext
Feb 4, 2025
dde0e8b
Merge branch 'morita' of https://github.com/leanprover-community/math…
Feb 4, 2025
d046381
revert
Feb 4, 2025
e914cb1
Update Mathlib/RingTheory/Morita/Basic.lean
Whysoserioushah Feb 5, 2025
8717ed5
Update Mathlib/RingTheory/Morita/Basic.lean
Whysoserioushah Feb 5, 2025
e1f07fb
Merge remote-tracking branch 'origin/master' into morita
Whysoserioushah Feb 8, 2025
6244abb
Merge branch 'morita' of https://github.com/leanprover-community/math…
Whysoserioushah Feb 8, 2025
d3807df
apply kevin's suggestion
Whysoserioushah Feb 8, 2025
eb6ad79
apply andrew advice
Whysoserioushah Feb 12, 2025
fb51470
fix?
Whysoserioushah Feb 12, 2025
84846a1
fix large import
Whysoserioushah Feb 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -4552,6 +4552,7 @@ import Mathlib.RingTheory.Localization.NumDen
import Mathlib.RingTheory.Localization.Submodule
import Mathlib.RingTheory.MatrixAlgebra
import Mathlib.RingTheory.MaximalSpectrum
import Mathlib.RingTheory.Morita.Basic
import Mathlib.RingTheory.Multiplicity
import Mathlib.RingTheory.MvPolynomial
import Mathlib.RingTheory.MvPolynomial.Basic
Expand Down
67 changes: 67 additions & 0 deletions Mathlib/RingTheory/Morita/Basic.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/-
Copyright (c) 2025 Jujian Zhang. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jujian Zhang, Yunzhou Xie
-/
import Mathlib.Algebra.Category.ModuleCat.Basic
import Mathlib.Algebra.Category.ModuleCat.ChangeOfRings

/-!
# Morita equivalence

We say that `R` and `S` are Morita equivalent if the categories of modules over `R` and `S` are
equivalent. In this file, we prove that Morita equivalence is an equivalence relation and that
isomorphic rings are Morita equivalent.

# Main definitions

- `IsMoritaEquivalent R S`: a predicate asserting that `R` and `S` are Morita equivalent.

## TODO

- For any ring `R`, `R` and `Matₙ(R)` are Morita equivalent.
- Morita equivalence in terms of projective generators.
- Morita equivalence in terms of full idempotents.
Whysoserioushah marked this conversation as resolved.
Show resolved Hide resolved
- If `R ≈ S`, then `R` is simple iff `S` is simple.
jjaassoonn marked this conversation as resolved.
Show resolved Hide resolved

## References

* [Nathan Jacobson, *Basic Algebra II*][jacobson1989]

## Tags

Morita Equivalence, Category Theory, Noncommutative Ring, Module Theory

-/

universe u₁ u₂ u₃

open CategoryTheory

/--
Two rings are Morita equivalent if their module categories are equivalent.
jjaassoonn marked this conversation as resolved.
Show resolved Hide resolved
-/
structure IsMoritaEquivalent (R : Type u₁) [Ring R] (S : Type u₂) [Ring S] : Prop where
cond : Nonempty <| ModuleCat.{max u₁ u₂} R ≌ ModuleCat.{max u₁ u₂} S

namespace IsMoritaEquivalent

variable {R : Type u₁} [Ring R] {S : Type u₂} [Ring S] {T : Type u₃} [Ring T]

lemma refl : IsMoritaEquivalent R R where
cond := ⟨.refl⟩

lemma symm (h : IsMoritaEquivalent R S) : IsMoritaEquivalent S R where
cond := h.cond.map .symm

-- TODO: We have restricted universe here, but if we have more Mortia Equivalence in terms full
-- idempotents, we could remove the restriction.
Whysoserioushah marked this conversation as resolved.
Show resolved Hide resolved
lemma trans {R S T : Type u₁} [Ring R] [Ring S] [Ring T]
(h : IsMoritaEquivalent R S) (h' : IsMoritaEquivalent S T) :
IsMoritaEquivalent R T where
cond := Nonempty.map2 .trans h.cond h'.cond

lemma of_ringEquiv (f : R ≃+* S) : IsMoritaEquivalent R S where
cond := ⟨ModuleCat.restrictScalarsEquivalenceOfRingEquiv f.symm⟩

end IsMoritaEquivalent
Loading