-
Notifications
You must be signed in to change notification settings - Fork 297
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
Conversation
Co-authored-by: Johan Commelin <johan@commelin.net>
/-- 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 } |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
.
src/ring_theory/perfection.lean
Outdated
/-- 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] |
There was a problem hiding this comment.
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
?
There was a problem hiding this comment.
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:
mathlib/src/field_theory/perfect_closure.lean
Lines 382 to 383 in 39ecd1a
def lift (L : Type v) [field L] [char_p L p] [perfect_field L p] : | |
(K →+* L) ≃ (perfect_closure K p →+* L) := |
There was a problem hiding this comment.
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...
There was a problem hiding this comment.
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Like Greenland and Iceland.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks 🎉
bors merge
…ection (#5386) Name changes: - `perfect_field` --> `perfect_ring` (generalization) - `semiring.perfection` --> `ring.perfection` - Original `ring.perfection` deleted.
Canceled. |
@@ -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) := |
There was a problem hiding this comment.
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+
✌️ kckennylau can now approve this pull request. To approve and merge a pull request, simply reply with |
…ection (#5386) Name changes: - `perfect_field` --> `perfect_ring` (generalization) - `semiring.perfection` --> `ring.perfection` - Original `ring.perfection` deleted.
Pull request successfully merged into master. Build succeeded: |
Name changes:
perfect_field
-->perfect_ring
(generalization)semiring.perfection
-->ring.perfection
ring.perfection
deleted.