@@ -106,19 +106,24 @@ variable {R p}
106106@[simp]
107107theorem coeff_mk (f : ℕ → R) (hf) (n : ℕ) : coeff R p n ⟨f, hf⟩ = f n := rfl
108108
109+ @[simp]
109110theorem coeff_pthRoot (f : Ring.Perfection R p) (n : ℕ) :
110111 coeff R p n (pthRoot R p f) = coeff R p (n + 1 ) f := rfl
111112
113+ @[simp]
112114theorem coeff_pow_p (f : Ring.Perfection R p) (n : ℕ) :
113115 coeff R p (n + 1 ) (f ^ p) = coeff R p n f := by rw [RingHom.map_pow]; exact f.2 n
114116
117+ @[simp]
115118theorem coeff_pow_p' (f : Ring.Perfection R p) (n : ℕ) : coeff R p (n + 1 ) f ^ p = coeff R p n f :=
116119 f.2 n
117120
121+ @[simp]
118122theorem coeff_frobenius (f : Ring.Perfection R p) (n : ℕ) :
119123 coeff R p (n + 1 ) (frobenius _ p f) = coeff R p n f := by apply coeff_pow_p f n
120124
121125-- `coeff_pow_p f n` also works but is slow!
126+ @[simp]
122127theorem coeff_iterate_frobenius (f : Ring.Perfection R p) (n m : ℕ) :
123128 coeff R p (n + m) ((frobenius _ p)^[m] f) = coeff R p n f :=
124129 Nat.recOn m rfl fun m ih => by
@@ -128,10 +133,12 @@ theorem coeff_iterate_frobenius' (f : Ring.Perfection R p) (n m : ℕ) (hmn : m
128133 coeff R p n ((frobenius _ p)^[m] f) = coeff R p (n - m) f :=
129134 Eq.symm <| (coeff_iterate_frobenius _ _ m).symm.trans <| (tsub_add_cancel_of_le hmn).symm ▸ rfl
130135
136+ @[simp]
131137theorem pthRoot_frobenius : (pthRoot R p).comp (frobenius _ p) = RingHom.id _ :=
132138 RingHom.ext fun x =>
133139 ext fun n => by rw [RingHom.comp_apply, RingHom.id_apply, coeff_pthRoot, coeff_frobenius]
134140
141+ @[simp]
135142theorem frobenius_pthRoot : (frobenius _ p).comp (pthRoot R p) = RingHom.id _ :=
136143 RingHom.ext fun x =>
137144 ext fun n => by
@@ -149,14 +156,31 @@ theorem coeff_ne_zero_of_le {f : Ring.Perfection R p} {m n : ℕ} (hfm : coeff R
149156 let ⟨k, hk⟩ := Nat.exists_eq_add_of_le hmn
150157 hk.symm ▸ coeff_add_ne_zero hfm k
151158
152- variable (R p)
153-
159+ variable (R p) in
154160instance perfectRing : PerfectRing (Ring.Perfection R p) p where
155161 bijective_frobenius := Function.bijective_iff_has_inverse.mpr
156162 ⟨pthRoot R p,
157163 DFunLike.congr_fun <| @frobenius_pthRoot R _ p _ _,
158164 DFunLike.congr_fun <| @pthRoot_frobenius R _ p _ _⟩
159165
166+ @[simp]
167+ theorem coeff_frobeniusEquiv_symm (f : Ring.Perfection R p) (n : ℕ) :
168+ Perfection.coeff R p n ((frobeniusEquiv (Ring.Perfection R p) p).symm f) =
169+ Perfection.coeff R p (n + 1 ) f := by
170+ nth_rw 2 [← frobenius_apply_frobeniusEquiv_symm _ p f]
171+ rw [coeff_frobenius]
172+
173+ @[simp]
174+ theorem coeff_iterate_frobeniusEquiv_symm (f : Ring.Perfection R p) (n m : ℕ) :
175+ Perfection.coeff _ p n ((frobeniusEquiv _ p).symm ^[m] f) =
176+ Perfection.coeff _ p (n + m) f := by
177+ induction m generalizing f n with
178+ | zero => simp
179+ | succ m ih =>
180+ simp [ih, ← add_assoc]
181+
182+ variable (R p)
183+
160184/-- Given rings `R` and `S` of characteristic `p`, with `R` being perfect,
161185any homomorphism `R →+* S` can be lifted to a homomorphism `R →+* Perfection S p`. -/
162186@[simps]
@@ -323,7 +347,7 @@ section ModP
323347variable (O : Type u₂) [CommRing O] (p : ℕ)
324348
325349/-- `O/(p)` for `O`, ring of integers of `K`. -/
326- def ModP :=
350+ abbrev ModP :=
327351 O ⧸ (Ideal.span {(p : O)} : Ideal O)
328352
329353namespace ModP
@@ -456,6 +480,37 @@ instance : CommRing (PreTilt O p) :=
456480instance : CharP (PreTilt O p) p :=
457481 Perfection.charP (ModP O p) p
458482
483+ instance : PerfectRing (PreTilt O p) p :=
484+ Perfection.perfectRing (ModP O p) p
485+
486+ section coeff
487+
488+ @[simp]
489+ theorem coeff_frobenius (n : ℕ) (x : PreTilt O p) :
490+ ((Perfection.coeff (ModP O p) p (n + 1 )) (((frobenius (PreTilt O p) p)) x)) =
491+ ((Perfection.coeff (ModP O p) p n) x):= by
492+ simp [PreTilt]
493+
494+ @[simp]
495+ theorem coeff_frobenius_pow (m n : ℕ) (x : PreTilt O p) :
496+ ((Perfection.coeff (ModP O p) p (m + n)) (((frobenius (PreTilt O p) p) ^[n]) x)) =
497+ ((Perfection.coeff (ModP O p) p m) x):= by
498+ simp [PreTilt]
499+
500+ @[simp]
501+ theorem coeff_frobeniusEquiv_symm (n : ℕ) (x : PreTilt O p) :
502+ ((Perfection.coeff (ModP O p) p n) (((frobeniusEquiv (PreTilt O p) p).symm) x)) =
503+ ((Perfection.coeff (ModP O p) p (n + 1 )) x):= by
504+ simp [PreTilt]
505+
506+ @[simp]
507+ theorem coeff_iterate_frobeniusEquiv_symm (m n : ℕ) (x : PreTilt O p) :
508+ ((Perfection.coeff (ModP O p) p m) (((frobeniusEquiv (PreTilt O p) p).symm ^[n]) x)) =
509+ ((Perfection.coeff (ModP O p) p (m + n)) x):= by
510+ simp [PreTilt]
511+
512+ end coeff
513+
459514section Classical
460515
461516open Perfection
0 commit comments