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/star/self_adjoint): define normal elements of a star monoid #11991

Closed
wants to merge 18 commits into from

Conversation

dupuisf
Copy link
Collaborator

@dupuisf dupuisf commented Feb 12, 2022

In this PR, we define the normal elements of a star monoid, i.e. those elements x
that commute with star x. This is defined as the prop type class is_star_normal.

This was formalized as part of the semilinear maps paper.


Open in Gitpod

@dupuisf dupuisf added the awaiting-review The author would like community review of the PR label Feb 12, 2022
@dupuisf dupuisf changed the title feat(algebra/star/self_adjoint): define normal elements of a star additive group feat(algebra/star/self_adjoint): define normal elements of a star monoid Feb 12, 2022
@dupuisf dupuisf added the RFC Request for comment label Feb 12, 2022
@dupuisf
Copy link
Collaborator Author

dupuisf commented Feb 12, 2022

What do people think of making this a type class?

@j-loreaux
Copy link
Collaborator

What do you want the instances to be? I guess selfadjoints, unitaries and in more specialized settings, diagonal operators and multiplication operators? Would the point be that if you had an instance [is_star_normal x] you could, for example, automatically conclude that the star subring generated by x is commutative? If so, that could be useful, but at the moment I'm not clear about the utility of making it a type class.

@dupuisf
Copy link
Collaborator Author

dupuisf commented Feb 13, 2022

Yeah, for now the obvious ones are self-adjoints, unitaries, one, zero, and anything with [has_trivial_star R]. And yes, that was indeed one of the applications I had in mind; another one would be that we could get a diagonalization of an operator without constantly having to pass this as an explicit parameter.

@dupuisf
Copy link
Collaborator Author

dupuisf commented Feb 16, 2022

I just changed it to a type class in the end. I think it will be very useful when we defining the functional calculus to have it as a type class, so we don't have to pass this around all the time as a parameter; the same goes for the spectral theorem. I can't really picture it causing serious type class inference problems, since it's anyway a prop and we probably won't be adding too many more instances than the few I just added here.

@leanprover-community-bot-assistant leanprover-community-bot-assistant added the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Feb 16, 2022
@dupuisf dupuisf added WIP Work in progress and removed awaiting-review The author would like community review of the PR labels Feb 16, 2022
@leanprover-community-bot-assistant leanprover-community-bot-assistant removed the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Feb 17, 2022
dupuisf and others added 2 commits February 16, 2022 21:48
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@dupuisf dupuisf added awaiting-review The author would like community review of the PR and removed WIP Work in progress RFC Request for comment labels Feb 17, 2022
@ocfnash
Copy link
Collaborator

ocfnash commented Feb 21, 2022

What do people think of making this a type class?

I'm dubious about making this a class. I confess that my doubts stem mostly from the fact that it is not very Mathlib-idiomatic rather than a specific worry.

How about we make this a def and if / when the day comes that the manual parameter-passing becomes a pain we consider upgrading then?

@leanprover-community-bot-assistant leanprover-community-bot-assistant removed the merge-conflict Please `git merge origin/master` then a bot will remove this label. label Feb 22, 2022
@dupuisf dupuisf added awaiting-review The author would like community review of the PR and removed awaiting-author A reviewer has asked the author a question or requested changes labels Feb 22, 2022
@j-loreaux
Copy link
Collaborator

I have thought more about this, and I think making it a type class is the way to go. Unlike some other important classes of operators like selfadjoints or unitaries, star normal elements don't have a nice "substructure" (addition or multiplication of normal elements is not normal in general, really it is only closed under the star involution). Thus, while you could bundle star normal elements into a subtype, doing so only really buys you headaches. However, for many applications, we will be passing this condition around a lot, and it would be nice to package it by making it into a type class.

@eric-wieser
Copy link
Member

Is there a typeclass in another part of the library that you're using as a template here?

I'd argue you should not make it a typeclass in this PR, and then ask for typeclass opinions in a follow-up PR from the authors of filter.ne_bot (a typeclass) vs is_unit (not a typeclass) vs ...

@dupuisf
Copy link
Collaborator Author

dupuisf commented Feb 25, 2022

I think we might as well just have this discussion on Zulip right now, instead of possibly having to rewrite a lot of code. I just started a thread there.

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.

The Zulip discussion seems to have converged on a typeclass approach. Let's try it out!

bors merge

@leanprover-community-bot-assistant leanprover-community-bot-assistant 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 3, 2022
bors bot pushed a commit that referenced this pull request Mar 3, 2022
…oid (#11991)

In this PR, we define the normal elements of a star monoid, i.e. those elements `x`
that commute with `star x`. This is defined as the prop type class `is_star_normal`.

This was formalized as part of the semilinear maps paper.



Co-authored-by: Frédéric Dupuis <31101893+dupuisf@users.noreply.github.com>
@bors
Copy link

bors bot commented Mar 3, 2022

Build failed (retrying...):

bors bot pushed a commit that referenced this pull request Mar 3, 2022
…oid (#11991)

In this PR, we define the normal elements of a star monoid, i.e. those elements `x`
that commute with `star x`. This is defined as the prop type class `is_star_normal`.

This was formalized as part of the semilinear maps paper.



Co-authored-by: Frédéric Dupuis <31101893+dupuisf@users.noreply.github.com>
@bors
Copy link

bors bot commented Mar 3, 2022

Build failed (retrying...):

@eric-wieser
Copy link
Member

bors r-

Can you merge master?

bors d+

@bors
Copy link

bors bot commented Mar 3, 2022

✌️ dupuisf can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

@bors
Copy link

bors bot commented Mar 3, 2022

Canceled.

@github-actions github-actions bot added the delegated The PR author may merge after reviewing final suggestions. label Mar 3, 2022
@dupuisf
Copy link
Collaborator Author

dupuisf commented Mar 3, 2022

bors r+

bors bot pushed a commit that referenced this pull request Mar 3, 2022
…oid (#11991)

In this PR, we define the normal elements of a star monoid, i.e. those elements `x`
that commute with `star x`. This is defined as the prop type class `is_star_normal`.

This was formalized as part of the semilinear maps paper.



Co-authored-by: Frédéric Dupuis <31101893+dupuisf@users.noreply.github.com>
@bors
Copy link

bors bot commented Mar 4, 2022

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(algebra/star/self_adjoint): define normal elements of a star monoid [Merged by Bors] - feat(algebra/star/self_adjoint): define normal elements of a star monoid Mar 4, 2022
@bors bors bot closed this Mar 4, 2022
@bors bors bot deleted the dupuisf/semilinear-paper-star-normal branch March 4, 2022 00:54
bors bot pushed a commit that referenced this pull request Mar 6, 2022
…of a star normal element is its norm (#12249)

In a C⋆-algebra over ℂ, the spectral radius of any star normal element is its norm. This extends the corresponding result for selfadjoint elements.

- [x] depends on: #12211 
- [x] depends on: #11991
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
delegated The PR author may merge after reviewing final suggestions. 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

6 participants