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: define reflexive modules and prove basics of perfect pairings #4989

Closed
wants to merge 9 commits into from

Conversation

ocfnash
Copy link
Contributor

@ocfnash ocfnash commented Jun 12, 2023


Open in Gitpod

@ocfnash ocfnash added the awaiting-review The author would like community review of the PR label Jun 12, 2023
@ocfnash ocfnash added the new-feature Add features not present in Mathlib 3 label Jun 12, 2023
@j-loreaux
Copy link
Collaborator

j-loreaux commented Jul 25, 2023

@ocfnash It would be really cool if we could generalize the statement of IsReflexive so that it is also applicable to Banach spaces (or LCTVSs more generally), but (a) I don't immediately see how to do that, and (b) it's not absolutely necessary, especially not for this PR. However, I'm mentioning it in case you see an immediately obvious idea.

Maybe something like this, but it's not fully fleshed out:

class IsSemireflexive {R M : Type _} [Semiring R] [AddCommMonoid M] [Module R M]
    {D : Type _ → Type _ → Type _} [AddCommMonoid (D R (D R M))] [Module R (D R (D R M))]
    (dual_eval : M →ₗ[R] D R (D R M)) : Prop where
  bijective_dual_eval' := Function.Bijective dual_eval

Note that, in functional analysis, the condition you provided for IsReflexive is called "semi-reflexive" (i.e., bijectivity of the double dual map, using the strong dual), and "reflexive" is used to mean this map is an isomorphism (for Banach spaces, these conditions are equivalent). Maybe this warrants a rename, but perhaps not if it's going to be focused solely on the algebraic dual.

@ocfnash ocfnash changed the title feat(LinearAlgebra/{Dual,PerfectPairing}): define reflexive modules and prove basics of perfect pairings feat: define reflexive modules and prove basics of perfect pairings Jul 25, 2023
@ocfnash
Copy link
Contributor Author

ocfnash commented Jul 25, 2023

@j-loreaux Thanks for the remarks, I like the idea but I don't see an easy way to implement it (I had actually thought a bit about this while making this PR).

For me the issue is that I don't see an easy way to abstract over the type of dual we're talking about.

For example, the type D : Type _ → Type _ → Type _ in your sketch won't work because D would also need to take various typeclass parameters. For example, the type of Module.Dual is:

(R : Type u_1) → (M : Type u_2) → [CommSemiring R] → [AddCommMonoid M] → [Module R M] → Type (max u_2 u_1)

I expect we could unify things using our category theory library but I don't think it would be worth it.

I think it is better just to have separate theories for this purely algebraic concept (which is called reflexive) and the analytic versions (with lemmas connecting them in, say, finite dimensions). This is also what we do elsewhere, e.g., we have purely algebraic tensor products.

This branch is quite old so probably a good idea to merge.
@ocfnash ocfnash added the t-algebra Algebra (groups, rings, fields etc) label Aug 1, 2023
Copy link
Member

@eric-wieser eric-wieser left a comment

Choose a reason for hiding this comment

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

bors d+

I gave up on ULift because I think we're missing some machinery, and it's not interesting enough to bother with here.

@bors
Copy link

bors bot commented Aug 1, 2023

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

@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added delegated and removed awaiting-review The author would like community review of the PR labels Aug 1, 2023
@ocfnash
Copy link
Contributor Author

ocfnash commented Aug 2, 2023

bors merge

@github-actions github-actions bot added the ready-to-merge This PR has been sent to bors. label Aug 2, 2023
bors bot pushed a commit that referenced this pull request Aug 2, 2023
@bors
Copy link

bors bot commented Aug 2, 2023

Pull request successfully merged into master.

Build succeeded!

The publicly hosted instance of bors-ng is deprecated and will go away soon.

If you want to self-host your own instance, instructions are here.
For more help, visit the forum.

If you want to switch to GitHub's built-in merge queue, visit their help page.

@bors bors bot changed the title feat: define reflexive modules and prove basics of perfect pairings [Merged by Bors] - feat: define reflexive modules and prove basics of perfect pairings Aug 2, 2023
@bors bors bot closed this Aug 2, 2023
@bors bors bot deleted the ocfnash/feat_perfect_pairings branch August 2, 2023 08:13
semorrison pushed a commit that referenced this pull request Aug 2, 2023
semorrison pushed a commit that referenced this pull request Aug 3, 2023
semorrison pushed a commit that referenced this pull request Aug 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
delegated new-feature Add features not present in Mathlib 3 ready-to-merge This PR has been sent to bors. t-algebra Algebra (groups, rings, fields etc)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants