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(ring_theory/perfection): define characteristic predicate of perfection #5386

Closed
wants to merge 9 commits into from

Conversation

kckennylau
Copy link
Collaborator

@kckennylau kckennylau commented Dec 16, 2020

Name changes:

  • perfect_field --> perfect_ring (generalization)
  • semiring.perfection --> ring.perfection
  • Original ring.perfection deleted.

@kckennylau kckennylau changed the title Perfection feat(ring_theory/perfection): define characteristic predicate of perfection Dec 16, 2020
src/field_theory/perfect_closure.lean Show resolved Hide resolved
src/field_theory/perfect_closure.lean Show resolved Hide resolved
src/field_theory/perfect_closure.lean Show resolved Hide resolved
src/field_theory/perfect_closure.lean Show resolved Hide resolved
src/field_theory/perfect_closure.lean Show resolved Hide resolved
src/ring_theory/perfection.lean Outdated Show resolved Hide resolved
src/ring_theory/perfection.lean Outdated Show resolved Hide resolved
kckennylau and others added 2 commits December 16, 2020 18:15
Co-authored-by: Johan Commelin <johan@commelin.net>
Comment on lines -49 to -55
/-- The perfection of a ring `R` with characteristic `p`,
defined to be the projective limit of `R` using the Frobenius maps `R → R`
indexed by the natural numbers, implemented as `{ f : ℕ → R | ∀ n, f (n + 1) ^ p = f n }`. -/
def ring.perfection (R : Type u₁) [comm_ring R] (p : ℕ) [hp : fact p.prime] [char_p R p] :
subring (ℕ → R) :=
{ neg_mem' := λ f hf n, (frobenius_neg R p _).trans $ congr_arg _ (hf n),
.. semiring.perfection R p }
Copy link
Member

@eric-wieser eric-wieser Dec 16, 2020

Choose a reason for hiding this comment

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

What was the rationale for removing this? Is there any other way to obtain this subring without having to repeat the proof here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The subring isn't important, I just want the type with the ring instance.

Copy link
Member

Choose a reason for hiding this comment

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

But you construct the subring in the other files anyway, don't you?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

No, I just prove that the subsemiring is a ring.

@bryangingechen bryangingechen added the awaiting-author A reviewer has asked the author a question or requested changes label Dec 16, 2020
@kckennylau kckennylau 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 Dec 18, 2020
/-- Given rings `R` and `S` of characteristic `p`, with `R` being perfect,
any homomorphism `R →+* S` can be extended to a homomorphism `R →+* P`,
where `P` is any perfection of `S`. -/
@[simps] noncomputable def extend [perfect_ring R p] (S : Type u₂) [comm_semiring S] [char_p S p]
Copy link
Member

Choose a reason for hiding this comment

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

Should this be called lift?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I don't know any more. its neighbour (K →+* L) ≃ (perfect_closure K p →+* L) is called lift, so I figured this one should be called extend just for the sake of it:

def lift (L : Type v) [field L] [char_p L p] [perfect_field L p] :
(K →+* L) ≃ (perfect_closure K p →+* L) :=

Copy link
Member

Choose a reason for hiding this comment

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

Hmm, I would rather call perfect_closure.lift an example of extending something...

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yeah so I figured that we do a switcheroo in Leanspeak

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Like Greenland and Iceland.

src/ring_theory/perfection.lean Show resolved Hide resolved
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 Dec 21, 2020
bors bot pushed a commit that referenced this pull request Dec 21, 2020
…ection (#5386)

Name changes:
- `perfect_field` --> `perfect_ring` (generalization)
- `semiring.perfection` --> `ring.perfection`
- Original `ring.perfection` deleted.
@bors
Copy link

bors bot commented Dec 21, 2020

Canceled.

@jcommelin jcommelin added awaiting-author A reviewer has asked the author a question or requested changes and removed ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) labels Dec 21, 2020
@@ -186,7 +186,7 @@ lemma of : perfection_map p (perfection.coeff R p 0) :=
mk' (ring_equiv.refl _) $ (equiv.apply_eq_iff_eq_symm_apply _).2 rfl

/-- For a perfect ring, it itself is the perfection. -/
def id [perfect_ring R p] : perfection_map p (ring_hom.id R) :=
lemma id [perfect_ring R p] : perfection_map p (ring_hom.id R) :=
Copy link
Collaborator

Choose a reason for hiding this comment

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

Maybe perfection_map should be renamed to is_perfection_map (in another PR) to make it more clear that it's Prop-valued.

Anyways, the linter is happy now, so let's try again.

bors r+

And just in case...
bors d+

@bors
Copy link

bors bot commented Dec 21, 2020

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

@bryangingechen bryangingechen 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-author A reviewer has asked the author a question or requested changes labels Dec 21, 2020
bors bot pushed a commit that referenced this pull request Dec 21, 2020
…ection (#5386)

Name changes:
- `perfect_field` --> `perfect_ring` (generalization)
- `semiring.perfection` --> `ring.perfection`
- Original `ring.perfection` deleted.
@bors
Copy link

bors bot commented Dec 21, 2020

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(ring_theory/perfection): define characteristic predicate of perfection [Merged by Bors] - feat(ring_theory/perfection): define characteristic predicate of perfection Dec 21, 2020
@bors bors bot closed this Dec 21, 2020
@bors bors bot deleted the perfection branch December 21, 2020 17:48
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