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(algebra/smul_regular): add M-regular elements #6659

Closed
wants to merge 84 commits into from

Conversation

adomani
Copy link
Collaborator

@adomani adomani commented Mar 12, 2021

This PR extends PR #6590, that is now merged. The current PR contains the actual API to work with M-regular elements r : R, called is_smul_regular M r.

Zulip:
https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews

From the doc-string:

Action of regular elements on a module

We introduce M-regular elements, in the context of an R-module M. The corresponding
predicate is called is_smul_regular.

There are very limited typeclass assumptions on R and M, but the "mathematical" case of interest
is a commutative ring R acting an a module M. Since the properties are "multiplicative", there
is no actual requirement of having an addition, but there is a zero in both R and M.
Smultiplications involving 0 are, of course, all trivial.

The defining property is that an element a ∈ R is M-regular if the smultiplication map
M → M, defined by m ↦ a • m, is injective.

This property is the direct generalization to modules of the property is_left_regular defined in
algebra/regular. Lemma is_smul_regular.is_left_regular_iff shows that indeed the two notions
coincide.


[*] depended on: #6590 [The earlier PR introduces smul_with_zero and mul_action_with_zero.]

Open in Gitpod

Vierkantor and others added 30 commits March 8, 2021 13:50
This PR proves a few injectivity results for (scalar) multiplication
in the setting of modules and algebras over a ring.
I am really bad at choosing between `left` and `right` in lemma names :)
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@github-actions github-actions bot added the blocked-by-other-PR This PR depends on another PR which is still in the queue. A bot manages this label via PR comment. label Mar 12, 2021
@adomani adomani added the awaiting-review The author would like community review of the PR label Mar 12, 2021
bors bot pushed a commit that referenced this pull request Mar 15, 2021
…ce `mul_action_with_zero` and `M`-regular elements (#6590)

This PR has been split and there are now two separate PRs.

* #6590, this one, introducing `smul_with_zero` and `mul_action_with_zero`: two typeclasses to deal with multiplicative actions of `monoid_with_zero`, without the need to assume the presence of an addition!
* #6659, introducing `M`-regular elements, called `smul_regular`: the analogue of `is_left_regular`, but defined for an action of `monoid_with_zero` on a module `M`.


This PR is a preparation for introducing `M`-regular elements.

From the doc-string:

### Introduce `smul_with_zero`

In analogy with the usual monoid action on a Type `M`, we introduce an action of a `monoid_with_zero` on a Type with `0`.

In particular, for Types `R` and `M`, both containing `0`, we define `smul_with_zero R M` to be the typeclass where the products `r • 0` and `0 • m` vanish for all `r ∈ R` and all `m ∈ M`.

Moreover, in the case in which `R` is a `monoid_with_zero`, we introduce the typeclass `mul_action_with_zero R M`, mimicking group actions and having an absorbing `0` in `R`.  Thus, the action is required to be compatible with

* the unit of the monoid, acting as the identity;
* the zero of the monoid_with_zero, acting as zero;
* associativity of the monoid.

Next, in a separate file, I introduce `M`-regular elements for a `monoid_with_zero R` with a `mul_action_with_zero` on a module `M`.  The definition is simply to require that an element `a : R` is `M`-regular if the smultiplication `M → M`, given by `m ↦ a • m` is injective.

We also prove some basic facts about `M`-regular elements.

The PR further changes three further the files

* `data/polynomial/coeffs`;
* `topology/algebra/module.lean`;
* `analysis/normed_space/bounded_linear_maps`.

The changes are prompted by a failure in CI.  In each case, the change was tiny, mostly having to do with an exchange of a multiplication by a smultiplication or vice-versa.



Co-authored-by: Vierkantor <vierkantor@vierkantor.com>
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@github-actions github-actions bot removed the blocked-by-other-PR This PR depends on another PR which is still in the queue. A bot manages this label via PR comment. label Mar 15, 2021
Copy link
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks 🎉

bors merge

@github-actions github-actions bot added ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) and removed awaiting-review The author would like community review of the PR labels Mar 22, 2021
bors bot pushed a commit that referenced this pull request Mar 22, 2021
This PR extends PR #6590, that is now merged.  The current PR contains the actual API to work with `M`-regular elements `r : R`, called `is_smul_regular M r`.

Zulip:
https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews

From the doc-string:

### Action of regular elements on a module

We introduce `M`-regular elements, in the context of an `R`-module `M`.  The corresponding
predicate is called `is_smul_regular`.

There are very limited typeclass assumptions on `R` and `M`, but the "mathematical" case of interest
is a commutative ring `R` acting an a module `M`. Since the properties are "multiplicative", there
is no actual requirement of having an addition, but there is a zero in both `R` and `M`.
Smultiplications involving `0` are, of course, all trivial.

The defining property is that an element `a ∈ R` is `M`-regular if the smultiplication map
`M → M`, defined by `m ↦ a • m`, is injective.

This property is the direct generalization to modules of the property `is_left_regular` defined in
`algebra/regular`.  Lemma `is_smul_regular.is_left_regular_iff` shows that indeed the two notions
coincide.




Co-authored-by: Vierkantor <vierkantor@vierkantor.com>
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@bors
Copy link

bors bot commented Mar 22, 2021

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(algebra/smul_regular): add M-regular elements [Merged by Bors] - feat(algebra/smul_regular): add M-regular elements Mar 22, 2021
@bors bors bot closed this Mar 22, 2021
@bors bors bot deleted the adomani_smul_regular branch March 22, 2021 10:12
b-mehta pushed a commit that referenced this pull request Apr 2, 2021
…ce `mul_action_with_zero` and `M`-regular elements (#6590)

This PR has been split and there are now two separate PRs.

* #6590, this one, introducing `smul_with_zero` and `mul_action_with_zero`: two typeclasses to deal with multiplicative actions of `monoid_with_zero`, without the need to assume the presence of an addition!
* #6659, introducing `M`-regular elements, called `smul_regular`: the analogue of `is_left_regular`, but defined for an action of `monoid_with_zero` on a module `M`.


This PR is a preparation for introducing `M`-regular elements.

From the doc-string:

### Introduce `smul_with_zero`

In analogy with the usual monoid action on a Type `M`, we introduce an action of a `monoid_with_zero` on a Type with `0`.

In particular, for Types `R` and `M`, both containing `0`, we define `smul_with_zero R M` to be the typeclass where the products `r • 0` and `0 • m` vanish for all `r ∈ R` and all `m ∈ M`.

Moreover, in the case in which `R` is a `monoid_with_zero`, we introduce the typeclass `mul_action_with_zero R M`, mimicking group actions and having an absorbing `0` in `R`.  Thus, the action is required to be compatible with

* the unit of the monoid, acting as the identity;
* the zero of the monoid_with_zero, acting as zero;
* associativity of the monoid.

Next, in a separate file, I introduce `M`-regular elements for a `monoid_with_zero R` with a `mul_action_with_zero` on a module `M`.  The definition is simply to require that an element `a : R` is `M`-regular if the smultiplication `M → M`, given by `m ↦ a • m` is injective.

We also prove some basic facts about `M`-regular elements.

The PR further changes three further the files

* `data/polynomial/coeffs`;
* `topology/algebra/module.lean`;
* `analysis/normed_space/bounded_linear_maps`.

The changes are prompted by a failure in CI.  In each case, the change was tiny, mostly having to do with an exchange of a multiplication by a smultiplication or vice-versa.



Co-authored-by: Vierkantor <vierkantor@vierkantor.com>
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
b-mehta pushed a commit that referenced this pull request Apr 2, 2021
This PR extends PR #6590, that is now merged.  The current PR contains the actual API to work with `M`-regular elements `r : R`, called `is_smul_regular M r`.

Zulip:
https://leanprover.zulipchat.com/#narrow/stream/144837-PR-reviews

From the doc-string:

### Action of regular elements on a module

We introduce `M`-regular elements, in the context of an `R`-module `M`.  The corresponding
predicate is called `is_smul_regular`.

There are very limited typeclass assumptions on `R` and `M`, but the "mathematical" case of interest
is a commutative ring `R` acting an a module `M`. Since the properties are "multiplicative", there
is no actual requirement of having an addition, but there is a zero in both `R` and `M`.
Smultiplications involving `0` are, of course, all trivial.

The defining property is that an element `a ∈ R` is `M`-regular if the smultiplication map
`M → M`, defined by `m ↦ a • m`, is injective.

This property is the direct generalization to modules of the property `is_left_regular` defined in
`algebra/regular`.  Lemma `is_smul_regular.is_left_regular_iff` shows that indeed the two notions
coincide.




Co-authored-by: Vierkantor <vierkantor@vierkantor.com>
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants