File: Mathlib/RingTheory/Perfection.lean

full_name: Monoid.perfection
code: /-- The perfection of a monoid `M`, defined to be the projective limit of `M`
using the `p`-th power maps `M → M` indexed by the natural numbers, implemented as
`{ f : ℕ → M | ∀ n, f (n + 1) ^ p = f n }`. -/
def Monoid.perfection (M : Type u₁) [CommMonoid M] (p : ℕ) : Submonoid (ℕ → M) 
goal: Submonoid (ℕ → M)

full_name: Ring.perfectionSubsemiring
code: /-- The perfection of a ring `R` with characteristic `p`, as a subsemiring,
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.perfectionSubsemiring (R : Type u₁) [CommSemiring R] (p : ℕ) [hp : Fact p.Prime]
    [CharP R p] : Subsemiring (ℕ → R) 
goal: Subsemiring (ℕ → R)

full_name: Ring.perfectionSubring
code: /-- The perfection of a ring `R` with characteristic `p`, as a subring,
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.perfectionSubring (R : Type u₁) [CommRing R] (p : ℕ) [hp : Fact p.Prime] [CharP R p] :
    Subring (ℕ → R) 
goal: Subring (ℕ → R)

full_name: Ring.Perfection
code: /-- 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₁) [CommSemiring R] (p : ℕ) : Type u₁ 
goal: Type u₁

full_name: Perfection.commSemiring
code: instance commSemiring : CommSemiring (Ring.Perfection R p) 
goal: CommSemiring (Ring.Perfection R p)

full_name: Perfection.charP
code: instance charP : CharP (Ring.Perfection R p) p 
goal: CharP (Ring.Perfection R p) p

full_name: Perfection.ring
code: instance ring (R : Type u₁) [CommRing R] [CharP R p] : Ring (Ring.Perfection R p) 
goal: Ring (Ring.Perfection R p)

full_name: Perfection.commRing
code: instance commRing (R : Type u₁) [CommRing R] [CharP R p] : CommRing (Ring.Perfection R p) 
goal: CommRing (Ring.Perfection R p)

full_name: Perfection.instInhabitedPerfection
code: instance : Inhabited (Ring.Perfection R p) 
goal: Inhabited (Ring.Perfection R p)

full_name: Perfection.coeff
code: /-- The `n`-th coefficient of an element of the perfection. -/
def coeff (n : ℕ) : Ring.Perfection R p →+* R 
goal: Ring.Perfection R p →+* R

full_name: Perfection.ext
code: @[ext]
theorem ext {f g : Ring.Perfection R p} (h : ∀ n, coeff R p n f = coeff R p n g) : f = g 
goal: f = g

full_name: Perfection.pthRoot
code: /-- The `p`-th root of an element of the perfection. -/
def pthRoot : Ring.Perfection R p →+* Ring.Perfection R p 
goal: Ring.Perfection R p →+* Ring.Perfection R p

full_name: Perfection.coeff_mk
code: @[simp]
theorem coeff_mk (f : ℕ → R) (hf) (n : ℕ) : coeff R p n ⟨f, hf⟩ = f n 
goal: (Perfection.coeff R p n) ⟨f, hf⟩ = f n

full_name: Perfection.coeff_pthRoot
code: theorem coeff_pthRoot (f : Ring.Perfection R p) (n : ℕ) :
    coeff R p n (pthRoot R p f) = coeff R p (n + 1) f 
goal: (Perfection.coeff R p n) ((Perfection.pthRoot R p) f) = (Perfection.coeff R p (n + 1)) f

full_name: Perfection.coeff_pow_p
code: theorem coeff_pow_p (f : Ring.Perfection R p) (n : ℕ) :
    coeff R p (n + 1) (f ^ p) = coeff R p n f 
goal: (Perfection.coeff R p (n + 1)) (f ^ p) = (Perfection.coeff R p n) f

full_name: Perfection.coeff_pow_p'
code: theorem coeff_pow_p' (f : Ring.Perfection R p) (n : ℕ) : coeff R p (n + 1) f ^ p = coeff R p n f 
goal: (Perfection.coeff R p (n + 1)) f ^ p = (Perfection.coeff R p n) f

full_name: Perfection.coeff_frobenius
code: theorem coeff_frobenius (f : Ring.Perfection R p) (n : ℕ) :
    coeff R p (n + 1) (frobenius _ p f) = coeff R p n f 
goal: (Perfection.coeff R p (n + 1)) ((frobenius (Ring.Perfection R p) p) f) = (Perfection.coeff R p n) f

full_name: Perfection.coeff_iterate_frobenius
code: theorem coeff_iterate_frobenius (f : Ring.Perfection R p) (n m : ℕ) :
    coeff R p (n + m) ((frobenius _ p)^[m] f) = coeff R p n f 
goal: (Perfection.coeff R p (n + m)) ((⇑(frobenius (Ring.Perfection R p) p))^[m] f) = (Perfection.coeff R p n) f

full_name: Perfection.coeff_iterate_frobenius'
code: theorem coeff_iterate_frobenius' (f : Ring.Perfection R p) (n m : ℕ) (hmn : m ≤ n) :
    coeff R p n ((frobenius _ p)^[m] f) = coeff R p (n - m) f 
goal: (Perfection.coeff R p n) ((⇑(frobenius (Ring.Perfection R p) p))^[m] f) = (Perfection.coeff R p (n - m)) f

full_name: Perfection.pthRoot_frobenius
code: theorem pthRoot_frobenius : (pthRoot R p).comp (frobenius _ p) = RingHom.id _ 
goal: (Perfection.pthRoot R p).comp (frobenius (Ring.Perfection R p) p) = RingHom.id (Ring.Perfection R p)

full_name: Perfection.frobenius_pthRoot
code: theorem frobenius_pthRoot : (frobenius _ p).comp (pthRoot R p) = RingHom.id _ 
goal: (frobenius (Ring.Perfection R p) p).comp (Perfection.pthRoot R p) = RingHom.id (Ring.Perfection R p)

full_name: Perfection.coeff_add_ne_zero
code: theorem coeff_add_ne_zero {f : Ring.Perfection R p} {n : ℕ} (hfn : coeff R p n f ≠ 0) (k : ℕ) :
    coeff R p (n + k) f ≠ 0 
goal: (Perfection.coeff R p (n + k)) f ≠ 0

full_name: Perfection.coeff_ne_zero_of_le
code: theorem coeff_ne_zero_of_le {f : Ring.Perfection R p} {m n : ℕ} (hfm : coeff R p m f ≠ 0)
    (hmn : m ≤ n) : coeff R p n f ≠ 0 
goal: (Perfection.coeff R p n) f ≠ 0

full_name: Perfection.perfectRing
code: instance perfectRing : PerfectRing (Ring.Perfection R p) p 
goal: PerfectRing (Ring.Perfection R p) p

full_name: Perfection.lift_symm_apply
code: /-- Given rings `R` and `S` of characteristic `p`, with `R` being perfect,
any homomorphism `R →+* S` can be lifted to a homomorphism `R →+* Perfection S p`. -/
@[simps]
noncomputable def lift (R : Type u₁) [CommSemiring R] [CharP R p] [PerfectRing R p]
    (S : Type u₂) [CommSemiring S] [CharP S p] : (R →+* S) ≃ (R →+* Ring.Perfection S p) 
goal: (Perfection.lift p R S).symm f = (Perfection.coeff S p 0).comp f

full_name: Perfection.lift
code: /-- Given rings `R` and `S` of characteristic `p`, with `R` being perfect,
any homomorphism `R →+* S` can be lifted to a homomorphism `R →+* Perfection S p`. -/
@[simps]
noncomputable def lift (R : Type u₁) [CommSemiring R] [CharP R p] [PerfectRing R p]
    (S : Type u₂) [CommSemiring S] [CharP S p] : (R →+* S) ≃ (R →+* Ring.Perfection S p) 
goal: (R →+* S) ≃ (R →+* Ring.Perfection S p)

full_name: Perfection.lift_apply_apply_coe
code: /-- Given rings `R` and `S` of characteristic `p`, with `R` being perfect,
any homomorphism `R →+* S` can be lifted to a homomorphism `R →+* Perfection S p`. -/
@[simps]
noncomputable def lift (R : Type u₁) [CommSemiring R] [CharP R p] [PerfectRing R p]
    (S : Type u₂) [CommSemiring S] [CharP S p] : (R →+* S) ≃ (R →+* Ring.Perfection S p) 
goal: ↑(((Perfection.lift p R S) f) r) n = f ((⇑↑(frobeniusEquiv R p).symm)^[n] r)

full_name: Perfection.hom_ext
code: theorem hom_ext {R : Type u₁} [CommSemiring R] [CharP R p] [PerfectRing R p] {S : Type u₂}
    [CommSemiring S] [CharP S p] {f g : R →+* Ring.Perfection S p}
    (hfg : ∀ x, coeff S p 0 (f x) = coeff S p 0 (g x)) : f = g 
goal: f = g

full_name: Perfection.map_apply_coe
code: /-- A ring homomorphism `R →+* S` induces `Perfection R p →+* Perfection S p`. -/
@[simps]
def map (φ : R →+* S) : Ring.Perfection R p →+* Ring.Perfection S p 
goal: ↑((Perfection.map p φ) f) n = φ ((Perfection.coeff R p n) f)

full_name: Perfection.map
code: /-- A ring homomorphism `R →+* S` induces `Perfection R p →+* Perfection S p`. -/
@[simps]
def map (φ : R →+* S) : Ring.Perfection R p →+* Ring.Perfection S p 
goal: Ring.Perfection R p →+* Ring.Perfection S p

full_name: Perfection.coeff_map
code: theorem coeff_map (φ : R →+* S) (f : Ring.Perfection R p) (n : ℕ) :
    coeff S p n (map p φ f) = φ (coeff R p n f) 
goal: (Perfection.coeff S p n) ((Perfection.map p φ) f) = φ ((Perfection.coeff R p n) f)

full_name: PerfectionMap.surjective
code: /-- A perfection map to a ring of characteristic `p` is a map that is isomorphic
to its perfection. -/
-- @[nolint has_nonempty_instance] -- Porting note(#5171): This linter does not exist yet.
structure PerfectionMap (p : ℕ) [Fact p.Prime] {R : Type u₁} [CommSemiring R] [CharP R p]
    {P : Type u₂} [CommSemiring P] [CharP P p] [PerfectRing P p] (π : P →+* R) : Prop where
  injective : ∀ ⦃x y : P⦄,
    (∀ n, π (((frobeniusEquiv P p).symm)^[n] x) = π (((frobeniusEquiv P p).symm)^[n] y)) → x = y
  surjective : ∀ f : ℕ → R, (∀ n, f (n + 1) ^ p = f n) → ∃ x : P, ∀ n,
    π (((frobeniusEquiv P p).symm)^[n] x) = f n
goal: (∀ (n : ℕ), f (n + 1) ^ p = f n) → ∃ x, ∀ (n : ℕ), π ((⇑(frobeniusEquiv P p).symm)^[n] x) = f n

full_name: PerfectionMap
code: /-- A perfection map to a ring of characteristic `p` is a map that is isomorphic
to its perfection. -/
-- @[nolint has_nonempty_instance] -- Porting note(#5171): This linter does not exist yet.
structure PerfectionMap (p : ℕ) [Fact p.Prime] {R : Type u₁} [CommSemiring R] [CharP R p]
    {P : Type u₂} [CommSemiring P] [CharP P p] [PerfectRing P p] (π : P →+* R) : Prop where
  injective : ∀ ⦃x y : P⦄,
    (∀ n, π (((frobeniusEquiv P p).symm)^[n] x) = π (((frobeniusEquiv P p).symm)^[n] y)) → x = y
  surjective : ∀ f : ℕ → R, (∀ n, f (n + 1) ^ p = f n) → ∃ x : P, ∀ n,
    π (((frobeniusEquiv P p).symm)^[n] x) = f n
goal: Prop

full_name: PerfectionMap.injective
code: /-- A perfection map to a ring of characteristic `p` is a map that is isomorphic
to its perfection. -/
-- @[nolint has_nonempty_instance] -- Porting note(#5171): This linter does not exist yet.
structure PerfectionMap (p : ℕ) [Fact p.Prime] {R : Type u₁} [CommSemiring R] [CharP R p]
    {P : Type u₂} [CommSemiring P] [CharP P p] [PerfectRing P p] (π : P →+* R) : Prop where
  injective : ∀ ⦃x y : P⦄,
    (∀ n, π (((frobeniusEquiv P p).symm)^[n] x) = π (((frobeniusEquiv P p).symm)^[n] y)) → x = y
  surjective : ∀ f : ℕ → R, (∀ n, f (n + 1) ^ p = f n) → ∃ x : P, ∀ n,
    π (((frobeniusEquiv P p).symm)^[n] x) = f n
goal: (∀ (n : ℕ), π ((⇑(frobeniusEquiv P p).symm)^[n] x) = π ((⇑(frobeniusEquiv P p).symm)^[n] y)) → x = y

full_name: PerfectionMap.mk'
code: /-- Create a `PerfectionMap` from an isomorphism to the perfection. -/
@[simps]
theorem mk' {f : P →+* R} (g : P ≃+* Ring.Perfection R p) (hfg : Perfection.lift p P R f = g) :
    PerfectionMap p f 
goal: PerfectionMap p f

full_name: PerfectionMap.of
code: /-- The canonical perfection map from the perfection of a ring. -/
theorem of : PerfectionMap p (Perfection.coeff R p 0) 
goal: PerfectionMap p (Perfection.coeff R p 0)

full_name: PerfectionMap.id
code: /-- For a perfect ring, it itself is the perfection. -/
theorem id [PerfectRing R p] : PerfectionMap p (RingHom.id R) 
goal: PerfectionMap p (RingHom.id R)

full_name: PerfectionMap.equiv
code: /-- A perfection map induces an isomorphism to the perfection. -/
noncomputable def equiv {π : P →+* R} (m : PerfectionMap p π) : P ≃+* Ring.Perfection R p 
goal: P ≃+* Ring.Perfection R p

full_name: PerfectionMap.equiv_apply
code: theorem equiv_apply {π : P →+* R} (m : PerfectionMap p π) (x : P) :
    m.equiv x = Perfection.lift p P R π x 
goal: m.equiv x = ((Perfection.lift p P R) π) x

full_name: PerfectionMap.comp_equiv
code: theorem comp_equiv {π : P →+* R} (m : PerfectionMap p π) (x : P) :
    Perfection.coeff R p 0 (m.equiv x) = π x 
goal: (Perfection.coeff R p 0) (m.equiv x) = π x

full_name: PerfectionMap.comp_equiv'
code: theorem comp_equiv' {π : P →+* R} (m : PerfectionMap p π) :
    (Perfection.coeff R p 0).comp ↑m.equiv = π 
goal: (Perfection.coeff R p 0).comp ↑m.equiv = π

full_name: PerfectionMap.comp_symm_equiv
code: theorem comp_symm_equiv {π : P →+* R} (m : PerfectionMap p π) (f : Ring.Perfection R p) :
    π (m.equiv.symm f) = Perfection.coeff R p 0 f 
goal: π (m.equiv.symm f) = (Perfection.coeff R p 0) f

full_name: PerfectionMap.comp_symm_equiv'
code: theorem comp_symm_equiv' {π : P →+* R} (m : PerfectionMap p π) :
    π.comp ↑m.equiv.symm = Perfection.coeff R p 0 
goal: π.comp ↑m.equiv.symm = Perfection.coeff R p 0

full_name: PerfectionMap.lift_apply
code: /-- Given rings `R` and `S` of characteristic `p`, with `R` being perfect,
any homomorphism `R →+* S` can be lifted to a homomorphism `R →+* P`,
where `P` is any perfection of `S`. -/
@[simps]
noncomputable def lift [PerfectRing R p] (S : Type u₂) [CommSemiring S] [CharP S p] (P : Type u₃)
    [CommSemiring P] [CharP P p] [PerfectRing P p] (π : P →+* S) (m : PerfectionMap p π) :
    (R →+* S) ≃ (R →+* P) 
goal: (PerfectionMap.lift p R S P π m) f = (↑m.equiv.symm).comp ((Perfection.lift p R S) f)

full_name: PerfectionMap.lift
code: /-- Given rings `R` and `S` of characteristic `p`, with `R` being perfect,
any homomorphism `R →+* S` can be lifted to a homomorphism `R →+* P`,
where `P` is any perfection of `S`. -/
@[simps]
noncomputable def lift [PerfectRing R p] (S : Type u₂) [CommSemiring S] [CharP S p] (P : Type u₃)
    [CommSemiring P] [CharP P p] [PerfectRing P p] (π : P →+* S) (m : PerfectionMap p π) :
    (R →+* S) ≃ (R →+* P) 
goal: (R →+* S) ≃ (R →+* P)

full_name: PerfectionMap.lift_symm_apply
code: /-- Given rings `R` and `S` of characteristic `p`, with `R` being perfect,
any homomorphism `R →+* S` can be lifted to a homomorphism `R →+* P`,
where `P` is any perfection of `S`. -/
@[simps]
noncomputable def lift [PerfectRing R p] (S : Type u₂) [CommSemiring S] [CharP S p] (P : Type u₃)
    [CommSemiring P] [CharP P p] [PerfectRing P p] (π : P →+* S) (m : PerfectionMap p π) :
    (R →+* S) ≃ (R →+* P) 
goal: (PerfectionMap.lift p R S P π m).symm f = π.comp f

full_name: PerfectionMap.hom_ext
code: theorem hom_ext [PerfectRing R p] {S : Type u₂} [CommSemiring S] [CharP S p] {P : Type u₃}
    [CommSemiring P] [CharP P p] [PerfectRing P p] (π : P →+* S) (m : PerfectionMap p π)
    {f g : R →+* P} (hfg : ∀ x, π (f x) = π (g x)) : f = g 
goal: f = g

full_name: PerfectionMap.map
code: /-- A ring homomorphism `R →+* S` induces `P →+* Q`, a map of the respective perfections. -/
@[nolint unusedArguments]
noncomputable def map {π : P →+* R} (_ : PerfectionMap p π) {σ : Q →+* S} (n : PerfectionMap p σ)
    (φ : R →+* S) : P →+* Q 
goal: PerfectionMap p π → {σ : Q →+* S} → PerfectionMap p σ → (R →+* S) → P →+* Q

full_name: PerfectionMap.comp_map
code: theorem comp_map {π : P →+* R} (m : PerfectionMap p π) {σ : Q →+* S} (n : PerfectionMap p σ)
    (φ : R →+* S) : σ.comp (map p m n φ) = φ.comp π 
goal: σ.comp (PerfectionMap.map p m n φ) = φ.comp π

full_name: PerfectionMap.map_map
code: theorem map_map {π : P →+* R} (m : PerfectionMap p π) {σ : Q →+* S} (n : PerfectionMap p σ)
    (φ : R →+* S) (x : P) : σ (map p m n φ x) = φ (π x) 
goal: σ ((PerfectionMap.map p m n φ) x) = φ (π x)

full_name: PerfectionMap.map_eq_map
code: theorem map_eq_map (φ : R →+* S) : map p (of p R) (of p S) φ = Perfection.map p φ 
goal: PerfectionMap.map p ⋯ ⋯ φ = Perfection.map p φ

full_name: ModP
code: /-- `O/(p)` for `O`, ring of integers of `K`. -/
@[nolint unusedArguments] -- Porting note(#5171): removed `nolint has_nonempty_instance`
def ModP (K : Type u₁) [Field K] (v : Valuation K ℝ≥0) (O : Type u₂) [CommRing O] [Algebra O K]
    (_ : v.Integers O) (p : ℕ) 
goal: v.Integers O → ℕ → Type u₂

full_name: ModP.commRing
code: instance commRing : CommRing (ModP K v O hv p) 
goal: CommRing (ModP K v O hv p)

full_name: ModP.charP
code: instance charP : CharP (ModP K v O hv p) p 
goal: CharP (ModP K v O hv p) p

full_name: ModP.instNontrivial
code: instance : Nontrivial (ModP K v O hv p) 
goal: Nontrivial (ModP K v O hv p)

full_name: ModP.preVal
code: /-- For a field `K` with valuation `v : K → ℝ≥0` and ring of integers `O`,
a function `O/(p) → ℝ≥0` that sends `0` to `0` and `x + (p)` to `v(x)` as long as `x ∉ (p)`. -/
noncomputable def preVal (x : ModP K v O hv p) : ℝ≥0 
goal: ℝ≥0

full_name: ModP.preVal_mk
code: theorem preVal_mk {x : O} (hx : (Ideal.Quotient.mk _ x : ModP K v O hv p) ≠ 0) :
    preVal K v O hv p (Ideal.Quotient.mk _ x) = v (algebraMap O K x) 
goal: ModP.preVal K v O hv p ((Ideal.Quotient.mk (Ideal.span {↑p})) x) = v ((algebraMap O K) x)

full_name: ModP.preVal_zero
code: theorem preVal_zero : preVal K v O hv p 0 = 0 
goal: ModP.preVal K v O hv p 0 = 0

full_name: ModP.preVal_mul
code: theorem preVal_mul {x y : ModP K v O hv p} (hxy0 : x * y ≠ 0) :
    preVal K v O hv p (x * y) = preVal K v O hv p x * preVal K v O hv p y 
goal: ModP.preVal K v O hv p (x * y) = ModP.preVal K v O hv p x * ModP.preVal K v O hv p y

full_name: ModP.preVal_add
code: theorem preVal_add (x y : ModP K v O hv p) :
    preVal K v O hv p (x + y) ≤ max (preVal K v O hv p x) (preVal K v O hv p y) 
goal: ModP.preVal K v O hv p (x + y) ≤ max (ModP.preVal K v O hv p x) (ModP.preVal K v O hv p y)

full_name: ModP.v_p_lt_preVal
code: theorem v_p_lt_preVal {x : ModP K v O hv p} : v p < preVal K v O hv p x ↔ x ≠ 0 
goal: v ↑p < ModP.preVal K v O hv p x ↔ x ≠ 0

full_name: ModP.preVal_eq_zero
code: theorem preVal_eq_zero {x : ModP K v O hv p} : preVal K v O hv p x = 0 ↔ x = 0 
goal: ModP.preVal K v O hv p x = 0 ↔ x = 0

full_name: ModP.v_p_lt_val
code: theorem v_p_lt_val {x : O} :
    v p < v (algebraMap O K x) ↔ (Ideal.Quotient.mk _ x : ModP K v O hv p) ≠ 0 
goal: v ↑p < v ((algebraMap O K) x) ↔ (Ideal.Quotient.mk (Ideal.span {↑p})) x ≠ 0

full_name: ModP.mul_ne_zero_of_pow_p_ne_zero
code: theorem mul_ne_zero_of_pow_p_ne_zero {x y : ModP K v O hv p} (hx : x ^ p ≠ 0) (hy : y ^ p ≠ 0) :
    x * y ≠ 0 
goal: x * y ≠ 0

full_name: PreTilt
code: /-- Perfection of `O/(p)` where `O` is the ring of integers of `K`. -/
-- @[nolint has_nonempty_instance] -- Porting note(#5171): This linter does not exist yet.
def PreTilt 
goal: Type u₂

full_name: PreTilt.instCommRing
code: instance : CommRing (PreTilt K v O hv p) 
goal: CommRing (PreTilt K v O hv p)

full_name: PreTilt.instCharP
code: instance : CharP (PreTilt K v O hv p) p 
goal: CharP (PreTilt K v O hv p) p

full_name: PreTilt.valAux
code: /-- The valuation `Perfection(O/(p)) → ℝ≥0` as a function.
Given `f ∈ Perfection(O/(p))`, if `f = 0` then output `0`;
otherwise output `preVal(f(n))^(p^n)` for any `n` such that `f(n) ≠ 0`. -/
noncomputable def valAux (f : PreTilt K v O hv p) : ℝ≥0 
goal: ℝ≥0

full_name: PreTilt.coeff_nat_find_add_ne_zero
code: theorem coeff_nat_find_add_ne_zero {f : PreTilt K v O hv p} {h : ∃ n, coeff _ _ n f ≠ 0} (k : ℕ) :
    coeff _ _ (Nat.find h + k) f ≠ 0 
goal: (Perfection.coeff (ModP K v O hv p) p (Nat.find h + k)) f ≠ 0

full_name: PreTilt.valAux_eq
code: theorem valAux_eq {f : PreTilt K v O hv p} {n : ℕ} (hfn : coeff _ _ n f ≠ 0) :
    valAux K v O hv p f = ModP.preVal K v O hv p (coeff _ _ n f) ^ p ^ n 
goal: PreTilt.valAux K v O hv p f = ModP.preVal K v O hv p ((Perfection.coeff (ModP K v O hv p) p n) f) ^ p ^ n

full_name: PreTilt.valAux_zero
code: theorem valAux_zero : valAux K v O hv p 0 = 0 
goal: PreTilt.valAux K v O hv p 0 = 0

full_name: PreTilt.valAux_one
code: theorem valAux_one : valAux K v O hv p 1 = 1 
goal: PreTilt.valAux K v O hv p 1 = 1

full_name: PreTilt.valAux_mul
code: theorem valAux_mul (f g : PreTilt K v O hv p) :
    valAux K v O hv p (f * g) = valAux K v O hv p f * valAux K v O hv p g 
goal: PreTilt.valAux K v O hv p (f * g) = PreTilt.valAux K v O hv p f * PreTilt.valAux K v O hv p g

full_name: PreTilt.valAux_add
code: theorem valAux_add (f g : PreTilt K v O hv p) :
    valAux K v O hv p (f + g) ≤ max (valAux K v O hv p f) (valAux K v O hv p g) 
goal: PreTilt.valAux K v O hv p (f + g) ≤ max (PreTilt.valAux K v O hv p f) (PreTilt.valAux K v O hv p g)

full_name: PreTilt.val
code: /-- The valuation `Perfection(O/(p)) → ℝ≥0`.
Given `f ∈ Perfection(O/(p))`, if `f = 0` then output `0`;
otherwise output `preVal(f(n))^(p^n)` for any `n` such that `f(n) ≠ 0`. -/
noncomputable def val : Valuation (PreTilt K v O hv p) ℝ≥0 
goal: Valuation (PreTilt K v O hv p) ℝ≥0

full_name: PreTilt.map_eq_zero
code: theorem map_eq_zero {f : PreTilt K v O hv p} : val K v O hv p f = 0 ↔ f = 0 
goal: (PreTilt.val K v O hv p) f = 0 ↔ f = 0

full_name: PreTilt.instIsDomain
code: instance : IsDomain (PreTilt K v O hv p) 
goal: IsDomain (PreTilt K v O hv p)

full_name: Tilt
code: /-- The tilt of a field, as defined in Perfectoid Spaces by Peter Scholze, as in
[scholze2011perfectoid]. Given a field `K` with valuation `K → ℝ≥0` and ring of integers `O`,
this is implemented as the fraction field of the perfection of `O/(p)`. -/
-- @[nolint has_nonempty_instance] -- Porting note(#5171): This linter does not exist yet.
def Tilt 
goal: Type u₂

full_name: Tilt.instField
code: noncomputable instance : Field (Tilt K v O hv p) 
goal: Field (Tilt K v O hv p)