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

feat(linear_algebra/finite_dimensional): finite dimensional vector spaces #1241

Merged
merged 10 commits into from Jul 22, 2019

Conversation

ChrisHughes24
Copy link
Member

@ChrisHughes24 ChrisHughes24 commented Jul 18, 2019

Finite dimensional vector spaces and their properties. Finite dimensional is a proposition, and defined to be is_noetherian, with a more sensible constructor provided of_span_finite_eq_top.

There was some discussion about having a non Prop valued definition demanding an explicit basis. The downside to that is that there may well be diamonds, which is why I chose to make a Prop definition. Maybe the constructive version should exist as well.

Some of the proofs are very high powered. I use very general theorems about cardinals, and noetherian rings.
Even principal_ideal_domain is mentioned (the instance to prove field implies is_noetherian is via euclidean_domain and principal_ideal_domain). Not sure if this is a problem.

TO CONTRIBUTORS:

Make sure you have:

  • reviewed and applied the coding style: coding, naming
  • for tactics:
  • make sure definitions and lemmas are put in the right files
  • make sure definitions and lemmas are not redundant

If this PR is related to a discussion on Zulip, please include a link in the discussion.

For reviewers: code review check list

@ChrisHughes24 ChrisHughes24 requested a review from a team as a code owner July 18, 2019 15:01

namespace finite_dimensional

lemma finite_of_linear_independent {ι : Type w} [decidable_eq V] [decidable_eq ι]
Copy link
Member

Choose a reason for hiding this comment

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

I think something like this is true for arbitrary noetherian modules, right. How much of this file can be done in the general setting?

Copy link
Member Author

Choose a reason for hiding this comment

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

I don't think it is true, though I can't think of a counter example. Just because a submodule has a finite basis doesn't necessarily mean that every basis for that submodule is finite? Otherwise why is the definition of noetherian not just that the module is finitely generated, rather than every submodule? I'd be interested to know the counterexample.

Copy link
Member

Choose a reason for hiding this comment

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

If you have an infinite basis you can create an infinite increasing chain of submodules:
span {v_1} \subset span {v_1, v_2} \subset ...
this contradicts being noetherian.

Copy link
Member Author

Choose a reason for hiding this comment

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

Of course. This is quite a hard proof.

Copy link
Member Author

Choose a reason for hiding this comment

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

Generalized to noetherian modules

src/linear_algebra/basis.lean Show resolved Hide resolved

Definition and basic properties of finite dimensional vector spaces.

The class `finite_dimensional` is defined to be `is_noetherian`, for ease of transfer of proofs.
Copy link
Member

Choose a reason for hiding this comment

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

It might be a bit awkward at first, but shouldn't we just use is_noetherian? (Just like we shouldn't have vector_space in the first place.
@digama0 What do you think? Should this be a reducible def? Or an abbreviation? Or should it not be there at all?

Copy link
Member Author

Choose a reason for hiding this comment

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

This is slightly different than how it's done with vector spaces. It's a reducible der, so you shouldn't have to define an instance when there's already an is_noetherian instance floating around.

Copy link
Member Author

Choose a reason for hiding this comment

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

If we do use is_noetherian there definitely should be clear documentation of this somewhere, so people know where to look for finite dimensional vector spaces

@jcommelin jcommelin added the ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) label Jul 22, 2019
@mergify mergify bot merged commit 3e77fec into master Jul 22, 2019
@mergify mergify bot deleted the findim branch July 22, 2019 16:30
anrddh pushed a commit to anrddh/mathlib that referenced this pull request May 15, 2020
…aces (leanprover-community#1241)

* feat(linear_algebra/finite_dimensional): finite dimensional vector spaces

* rw `of_span_finite_eq_top` to `of_fg`

* prove infinite.nat_embedding

* generalize finite_of_linear_independent to noetherian modules

* fix build

* fix build (ring_theory/polynomial)
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

2 participants