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(measure_theory/*): refactor integral to allow non second-countable target space #12942

Closed
wants to merge 82 commits into from

Conversation

sgouezel
Copy link
Collaborator

@sgouezel sgouezel commented Mar 25, 2022

Currently, the Bochner integral in mathlib only allows second-countable target spaces. This is an issue, since many constructions in spectral theory require integrals, and spaces of operators are typically not second-countable. The most general definition of the Bochner integral requires functions that may take values in non second-countable spaces, but which are still pointwise limits of a sequence of simple functions (so-called strongly measurable functions) -- equivalently, they are measurable and with second-countable range.

This PR refactors the Bochner integral, working with strongly measurable functions (or rather, almost everywhere strongly measurable functions, i.e., functions which coincide almost everywhere with a strongly measurable function). There are some prerequisistes (topological facts, and a good enough theory of almost everywhere strongly measurable functions) that have been PRed separately, but the remaining part of the change has to be done in one PR, as once one changes the basic definition of the integral one has to change all the files that depend on it.

Once the change is done, in many files the fix is just to remove [measurable_space E] [borel_space E] [second_countable_topology E] to make the linter happy, and see that everything still compiles. (Well, sometimes it is also much more painful, of course :-). For end users using integrable, nothing has to be changed, but if you need to prove integrability by hand, instead of checking ae_measurable you need to check ae_strongly_measurable. In second-countable spaces, the two of them are equivalent (and you can use ae_strongly_measurable.ae_measurable and ae_measurable.ae_strongly_measurable to go between the two of them).

The main changes are the following:

  • change ae_eq_fun to base it on equivalence classes of ae strongly measurable functions
  • fix everything that depends on this definition, including lp_space, set_to_L1, the Bochner integral and conditional expectation
  • fix everything that depends on these, notably complex analysis (removing second-countability and measurability assumptions all over the place)
  • A notion that involves a measurable function taking values in a normed space should probably better be rephrased in terms of strongly_measurable or ae_strongly_measurable. So, change a few definitions like measurable_at_filter (to strongly_measurable_at_filter) or martingale.

Open in Gitpod

@leanprover-community-bot-assistant leanprover-community-bot-assistant added blocked-by-other-PR This PR depends on another PR which is still in the queue. A bot manages this label via PR comment. and removed blocked-by-other-PR This PR depends on another PR which is still in the queue. A bot manages this label via PR comment. labels Mar 27, 2022
@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 Mar 28, 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 Mar 28, 2022
@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 Mar 28, 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 Mar 28, 2022
@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 Mar 29, 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 Mar 29, 2022
@bryangingechen bryangingechen added the awaiting-review The author would like community review of the PR label Mar 29, 2022
@sgouezel sgouezel removed the awaiting-review The author would like community review of the PR label Mar 29, 2022
@sgouezel sgouezel added the awaiting-review The author would like community review of the PR label Mar 29, 2022
@urkud
Copy link
Member

urkud commented Mar 30, 2022

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 30, 2022
bors bot pushed a commit that referenced this pull request Mar 30, 2022
…le target space (#12942)

Currently, the Bochner integral in mathlib only allows second-countable target spaces. This is an issue, since many constructions in spectral theory require integrals, and spaces of operators are typically not second-countable. The most general definition of the Bochner integral requires functions that may take values in non second-countable spaces, but which are still pointwise limits of a sequence of simple functions (so-called strongly measurable functions) -- equivalently, they are measurable and with second-countable range.

This PR refactors the Bochner integral, working with strongly measurable functions (or rather, almost everywhere strongly measurable functions, i.e., functions which coincide almost everywhere with a strongly measurable function). There are some prerequisistes (topological facts, and a good enough theory of almost everywhere strongly measurable functions) that have been PRed separately, but the remaining part of the change has to be done in one PR, as once one changes the basic definition of the integral one has to change all the files that depend on it.

Once the change is done, in many files the fix is just to remove `[measurable_space E] [borel_space E] [second_countable_topology E]` to make the linter happy, and see that everything still compiles. (Well, sometimes it is also much more painful, of course :-). For end users using `integrable`, nothing has to be changed, but if you need to prove integrability by hand, instead of checking `ae_measurable` you need to check `ae_strongly_measurable`. In second-countable spaces, the two of them are equivalent (and you can use `ae_strongly_measurable.ae_measurable` and `ae_measurable.ae_strongly_measurable` to go between the two of them).

The main changes are the following:
* change `ae_eq_fun` to base it on equivalence classes of ae strongly measurable functions
* fix everything that depends on this definition, including lp_space, set_to_L1, the Bochner integral and conditional expectation
* fix everything that depends on these, notably complex analysis (removing second-countability and measurability assumptions all over the place)
* A notion that involves a measurable function taking values in a normed space should probably better be rephrased in terms of strongly_measurable or ae_strongly_measurable. So, change a few definitions like `measurable_at_filter` (to `strongly_measurable_at_filter`) or `martingale`.
@bors
Copy link

bors bot commented Mar 30, 2022

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(measure_theory/*): refactor integral to allow non second-countable target space [Merged by Bors] - feat(measure_theory/*): refactor integral to allow non second-countable target space Mar 30, 2022
@bors bors bot closed this Mar 30, 2022
@bors bors bot deleted the integral_refactor branch March 30, 2022 03:19
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

4 participants