ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Ideal.radical_eq_jacobson_iff_radical_quotient_eq_jacobson_bot
-- Porting note: changed `Quotient.mk'` to ``
theorem radical_eq_jacobson_iff_radical_quotient_eq_jacobson_bot :
    I.radical = I.jacobson ↔ radical (⊥ : Ideal (R ⧸ I)) = jacobson ⊥ 
Arguments: {R : Type u} [CommRing R] {I : Ideal R}
Goal: I.radical = I.jacobson ↔ ⊥.radical = ⊥.jacobson
-- Ideal.jacobson_radical_eq_jacobson
theorem jacobson_radical_eq_jacobson : I.radical.jacobson = I.jacobson 
Arguments: {R : Type u} [CommRing R] {I : Ideal R}
Goal: I.radical.jacobson = I.jacobson
-- Ideal.jacobson_bot_polynomial_le_sInf_map_maximal
theorem jacobson_bot_polynomial_le_sInf_map_maximal :
    jacobson (⊥ : Ideal R[X]) ≤ sInf (map (C : R →+* R[X]) '' { J : Ideal R | J.IsMaximal }) 
Arguments: {R : Type u} [CommRing R]
Goal: ⊥.jacobson ≤ sInf (Ideal.map Polynomial.C '' {J | J.IsMaximal})
-- Ideal.jacobson_bot_polynomial_of_jacobson_bot
theorem jacobson_bot_polynomial_of_jacobson_bot (h : jacobson (⊥ : Ideal R) = ⊥) :
    jacobson (⊥ : Ideal R[X]) = ⊥ 
Arguments: {R : Type u} [CommRing R] (h : ⊥.jacobson = ⊥)
Goal: ⊥.jacobson = ⊥
-- Ideal.IsLocal.out
class IsLocal (I : Ideal R) : Prop where
    out : IsMaximal (jacobson I)
Arguments: {R : Type u} [CommRing R] {I : Ideal R} [self : I.IsLocal]
Goal: I.jacobson.IsMaximal
-- Ideal.isLocal_iff
theorem isLocal_iff {I : Ideal R} : IsLocal I ↔ IsMaximal (jacobson I) 
Arguments: {R : Type u} [CommRing R] {I : Ideal R}
Goal: I.IsLocal ↔ I.jacobson.IsMaximal
-- Ideal.isLocal_of_isMaximal_radical
theorem isLocal_of_isMaximal_radical {I : Ideal R} (hi : IsMaximal (radical I)) : IsLocal I 
Arguments: {R : Type u} [CommRing R] {I : Ideal R} (hi : I.radical.IsMaximal)
Goal: I.IsLocal
-- Ideal.IsLocal.le_jacobson
theorem IsLocal.le_jacobson {I J : Ideal R} (hi : IsLocal I) (hij : I ≤ J) (hj : J ≠ ⊤) :
    J ≤ jacobson I 
Arguments: {R : Type u} [CommRing R] {I J : Ideal R} (hi : I.IsLocal) (hij : I ≤ J) (hj : J ≠ ⊤)
Goal: J ≤ I.jacobson
-- Ideal.IsLocal.mem_jacobson_or_exists_inv
theorem IsLocal.mem_jacobson_or_exists_inv {I : Ideal R} (hi : IsLocal I) (x : R) :
    x ∈ jacobson I ∨ ∃ y, y * x - 1 ∈ I 
Arguments: {R : Type u} [CommRing R] {I : Ideal R} (hi : I.IsLocal) (x : R)
Goal: x ∈ I.jacobson ∨ ∃ y, y * x - 1 ∈ I
-- Ideal.isPrimary_of_isMaximal_radical
theorem isPrimary_of_isMaximal_radical [CommRing R] {I : Ideal R} (hi : IsMaximal (radical I)) :
    IsPrimary I 
Arguments: {R : Type u} [CommRing R] {I : Ideal R} (hi : I.radical.IsMaximal)
Goal: I.IsPrimary
-- Ideal.mem_prod
@[simp]
theorem mem_prod {r : R} {s : S} : (⟨r, s⟩ : R × S) ∈ prod I J ↔ r ∈ I ∧ s ∈ J 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (J : Ideal S) {r : R} {s : S}
Goal: (r, s) ∈ I.prod J ↔ r ∈ I ∧ s ∈ J
-- Ideal.prod_top_top
@[simp]
theorem prod_top_top : prod (⊤ : Ideal R) (⊤ : Ideal S) = ⊤ 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S]
Goal: ⊤.prod ⊤ = ⊤
-- Ideal.ideal_prod_eq
theorem ideal_prod_eq (I : Ideal (R × S)) :
    I = Ideal.prod (map (RingHom.fst R S) I : Ideal R) (map (RingHom.snd R S) I) 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal (R × S))
Goal: I = (Ideal.map (RingHom.fst R S) I).prod (Ideal.map (RingHom.snd R S) I)
-- Ideal.map_fst_prod
@[simp]
theorem map_fst_prod (I : Ideal R) (J : Ideal S) : map (RingHom.fst R S) (prod I J) = I 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (J : Ideal S)
Goal: Ideal.map (RingHom.fst R S) (I.prod J) = I
-- Ideal.map_snd_prod
@[simp]
theorem map_snd_prod (I : Ideal R) (J : Ideal S) : map (RingHom.snd R S) (prod I J) = J 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (J : Ideal S)
Goal: Ideal.map (RingHom.snd R S) (I.prod J) = J
-- Ideal.map_prodComm_prod
@[simp]
theorem map_prodComm_prod :
    map ((RingEquiv.prodComm : R × S ≃+* S × R) : R × S →+* S × R) (prod I J) = prod J I 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (J : Ideal S)
Goal: Ideal.map (↑RingEquiv.prodComm) (I.prod J) = J.prod I
-- Ideal.idealProdEquiv_symm_apply
@[simp]
theorem idealProdEquiv_symm_apply (I : Ideal R) (J : Ideal S) :
    idealProdEquiv.symm ⟨I, J⟩ = prod I J 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal R) (J : Ideal S)
Goal: Ideal.idealProdEquiv.symm (I, J) = I.prod J
-- Ideal.prod.ext_iff
theorem prod.ext_iff {I I' : Ideal R} {J J' : Ideal S} :
    prod I J = prod I' J' ↔ I = I' ∧ J = J' 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] {I I' : Ideal R} {J J' : Ideal S}
Goal: I.prod J = I'.prod J' ↔ I = I' ∧ J = J'
-- Ideal.isPrime_of_isPrime_prod_top
theorem isPrime_of_isPrime_prod_top {I : Ideal R} (h : (Ideal.prod I (⊤ : Ideal S)).IsPrime) :
    I.IsPrime 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] {I : Ideal R} (h : (I.prod ⊤).IsPrime)
Goal: I.IsPrime
-- Ideal.isPrime_of_isPrime_prod_top'
theorem isPrime_of_isPrime_prod_top' {I : Ideal S} (h : (Ideal.prod (⊤ : Ideal R) I).IsPrime) :
    I.IsPrime 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] {I : Ideal S} (h : (⊤.prod I).IsPrime)
Goal: I.IsPrime
-- Ideal.isPrime_ideal_prod_top
theorem isPrime_ideal_prod_top {I : Ideal R} [h : I.IsPrime] : (prod I (⊤ : Ideal S)).IsPrime 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] {I : Ideal R} [h : I.IsPrime]
Goal: (I.prod ⊤).IsPrime
-- Ideal.isPrime_ideal_prod_top'
theorem isPrime_ideal_prod_top' {I : Ideal S} [h : I.IsPrime] : (prod (⊤ : Ideal R) I).IsPrime 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] {I : Ideal S} [h : I.IsPrime]
Goal: (⊤.prod I).IsPrime
-- Ideal.ideal_prod_prime_aux
theorem ideal_prod_prime_aux {I : Ideal R} {J : Ideal S} :
    (Ideal.prod I J).IsPrime → I = ⊤ ∨ J = ⊤ 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] {I : Ideal R} {J : Ideal S}
Goal: (I.prod J).IsPrime → I = ⊤ ∨ J = ⊤
-- Ideal.ideal_prod_prime
theorem ideal_prod_prime (I : Ideal (R × S)) :
    I.IsPrime ↔
      (∃ p : Ideal R, p.IsPrime ∧ I = Ideal.prod p ⊤) ∨
        ∃ p : Ideal S, p.IsPrime ∧ I = Ideal.prod ⊤ p 
Arguments: {R : Type u} {S : Type v} [Semiring R] [Semiring S] (I : Ideal (R × S))
Goal: I.IsPrime ↔ (∃ p, p.IsPrime ∧ I = p.prod ⊤) ∨ ∃ p, p.IsPrime ∧ I = ⊤.prod p
-- Ideal.isIdempotentElem_iff_of_fg
theorem isIdempotentElem_iff_of_fg {R : Type*} [CommRing R] (I : Ideal R) (h : I.FG) :
    IsIdempotentElem I ↔ ∃ e : R, IsIdempotentElem e ∧ I = R ∙ e 
Arguments: {R : Type u_1} [CommRing R] (I : Ideal R) (h : I.FG)
Goal: IsIdempotentElem I ↔ ∃ e, IsIdempotentElem e ∧ I = Submodule.span R {e}
-- Ideal.isIdempotentElem_iff_eq_bot_or_top
theorem isIdempotentElem_iff_eq_bot_or_top {R : Type*} [CommRing R] [IsDomain R] (I : Ideal R)
    (h : I.FG) : IsIdempotentElem I ↔ I = ⊥ ∨ I = ⊤ 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] (I : Ideal R) (h : I.FG)
Goal: IsIdempotentElem I ↔ I = ⊥ ∨ I = ⊤
-- Ideal.basisSpanSingleton_apply
@[simp]
theorem basisSpanSingleton_apply (b : Basis ι R S) {x : S} (hx : x ≠ 0) (i : ι) :
    (basisSpanSingleton b hx i : S) = x * b i 
Arguments: {ι : Type u_1} {R : Type u_2} {S : Type u_3} [CommSemiring R] [CommRing S] [IsDomain S] [Algebra R S] (b : Basis ι R S) {x : S} (hx : x ≠ 0) (i : ι)
Goal: ↑((Ideal.basisSpanSingleton b hx) i) = x * b i
-- Ideal.constr_basisSpanSingleton
@[simp]
theorem constr_basisSpanSingleton {N : Type*} [Semiring N] [Module N S] [SMulCommClass R N S]
    (b : Basis ι R S) {x : S} (hx : x ≠ 0) :
    (b.constr N).toFun (((↑) : _ → S) ∘ (basisSpanSingleton b hx)) = Algebra.lmul R S x 
Arguments: {ι : Type u_1} {R : Type u_2} {S : Type u_3} [CommSemiring R] [CommRing S] [IsDomain S] [Algebra R S] {N : Type u_4} [Semiring N] [Module N S] [SMulCommClass R N S] (b : Basis ι R S) {x : S} (hx : x ≠ 0)
Goal: (↑(b.constr N)).toFun (Subtype.val ∘ ⇑(Ideal.basisSpanSingleton b hx)) = (Algebra.lmul R S) x
-- Basis.mem_ideal_iff
theorem Basis.mem_ideal_iff {ι R S : Type*} [CommRing R] [CommRing S] [Algebra R S] {I : Ideal S}
    (b : Basis ι R I) {x : S} : x ∈ I ↔ ∃ c : ι →₀ R, x = Finsupp.sum c fun i x => x • (b i : S) 
Arguments: {ι : Type u_1} {R : Type u_2} {S : Type u_3} [CommRing R] [CommRing S] [Algebra R S] {I : Ideal S} (b : Basis ι R ↥I) {x : S}
Goal: x ∈ I ↔ ∃ c, x = c.sum fun i x => x • ↑(b i)
-- Basis.mem_ideal_iff'
theorem Basis.mem_ideal_iff' {ι R S : Type*} [Fintype ι] [CommRing R] [CommRing S] [Algebra R S]
    {I : Ideal S} (b : Basis ι R I) {x : S} : x ∈ I ↔ ∃ c : ι → R, x = ∑ i, c i • (b i : S) 
Arguments: {ι : Type u_1} {R : Type u_2} {S : Type u_3} [Fintype ι] [CommRing R] [CommRing S] [Algebra R S] {I : Ideal S} (b : Basis ι R ↥I) {x : S}
Goal: x ∈ I ↔ ∃ c, x = ∑ i : ι, c i • ↑(b i)
-- Ideal.mem_isPrincipalSubmonoid_iff
theorem mem_isPrincipalSubmonoid_iff {I : Ideal R} :
    I ∈ isPrincipalSubmonoid R ↔ IsPrincipal I 
Arguments: {R : Type u_1} [CommRing R] {I : Ideal R}
Goal: I ∈ Ideal.isPrincipalSubmonoid R ↔ Submodule.IsPrincipal I
-- Ideal.span_singleton_mem_isPrincipalSubmonoid
theorem span_singleton_mem_isPrincipalSubmonoid (a : R) :
    span {a} ∈ isPrincipalSubmonoid R 
Arguments: {R : Type u_1} [CommRing R] (a : R)
Goal: Ideal.span {a} ∈ Ideal.isPrincipalSubmonoid R
-- Ideal.associatesEquivIsPrincipal_apply
@[simp]
theorem associatesEquivIsPrincipal_apply (x : R) :
    associatesEquivIsPrincipal R (.mk x) = span {x} 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] (x : R)
Goal: ↑((Ideal.associatesEquivIsPrincipal R) (Associates.mk x)) = Ideal.span {x}
-- Ideal.associatesEquivIsPrincipal_symm_apply
@[simp]
theorem associatesEquivIsPrincipal_symm_apply {I : Ideal R} (hI : IsPrincipal I) :
    (associatesEquivIsPrincipal R).symm ⟨I, hI⟩ = .mk hI.generator 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {I : Ideal R} (hI : Submodule.IsPrincipal I)
Goal: (Ideal.associatesEquivIsPrincipal R).symm ⟨I, hI⟩ = Associates.mk (Submodule.IsPrincipal.generator I)
-- Ideal.associatesEquivIsPrincipal_mul
theorem associatesEquivIsPrincipal_mul (x y : Associates R) :
    (associatesEquivIsPrincipal R (x * y) : Ideal R) =
      (associatesEquivIsPrincipal R x) * (associatesEquivIsPrincipal R y) 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] (x y : Associates R)
Goal: ↑((Ideal.associatesEquivIsPrincipal R) (x * y)) =
  ↑((Ideal.associatesEquivIsPrincipal R) x) * ↑((Ideal.associatesEquivIsPrincipal R) y)
-- Ideal.associatesEquivIsPrincipal_map_zero
@[simp]
theorem associatesEquivIsPrincipal_map_zero :
    (associatesEquivIsPrincipal R 0 : Ideal R) = 0 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R]
Goal: ↑((Ideal.associatesEquivIsPrincipal R) 0) = 0
-- Ideal.associatesEquivIsPrincipal_map_one
@[simp]
theorem associatesEquivIsPrincipal_map_one :
    (associatesEquivIsPrincipal R 1 : Ideal R) = 1 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R]
Goal: ↑((Ideal.associatesEquivIsPrincipal R) 1) = 1
-- Ideal.associatesNonZeroDivisorsEquivIsPrincipal_apply
@[simp]
theorem associatesNonZeroDivisorsEquivIsPrincipal_apply (x : R⁰) :
    associatesNonZeroDivisorsEquivIsPrincipal R (.mk x) = Ideal.span {(x : R)} 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] (x : ↥(nonZeroDivisors R))
Goal: ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) (Associates.mk x)) = Ideal.span {↑x}
-- Ideal.associatesNonZeroDivisorsEquivIsPrincipal_coe
theorem associatesNonZeroDivisorsEquivIsPrincipal_coe (x : Associates R⁰) :
    (associatesNonZeroDivisorsEquivIsPrincipal R x : Ideal R) =
      (associatesEquivIsPrincipal R (associatesNonZeroDivisorsEquiv.symm x)) 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] (x : Associates ↥(nonZeroDivisors R))
Goal: ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) x) =
  ↑((Ideal.associatesEquivIsPrincipal R) ↑(associatesNonZeroDivisorsEquiv.symm x))
-- Ideal.associatesNonZeroDivisorsEquivIsPrincipal_mul
theorem associatesNonZeroDivisorsEquivIsPrincipal_mul (x y : Associates R⁰) :
    (associatesNonZeroDivisorsEquivIsPrincipal R (x * y) : Ideal R) =
      (associatesNonZeroDivisorsEquivIsPrincipal R x) *
        (associatesNonZeroDivisorsEquivIsPrincipal R y) 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] (x y : Associates ↥(nonZeroDivisors R))
Goal: ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) (x * y)) =
  ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) x) * ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) y)
-- Ideal.associatesNonZeroDivisorsEquivIsPrincipal_map_one
@[simp]
theorem associatesNonZeroDivisorsEquivIsPrincipal_map_one :
    (associatesNonZeroDivisorsEquivIsPrincipal R 1 : Ideal R) = 1 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R]
Goal: ↑↑((Ideal.associatesNonZeroDivisorsEquivIsPrincipal R) 1) = 1
-- Perfection.ext
@[ext]
theorem ext {f g : Ring.Perfection R p} (h : ∀ n, coeff R p n f = coeff R p n g) : f = g 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] {f g : Ring.Perfection R p} (h : ∀ (n : ℕ), (Perfection.coeff R p n) f = (Perfection.coeff R p n) g)
Goal: f = g
-- Perfection.coeff_mk
@[simp]
theorem coeff_mk (f : ℕ → R) (hf) (n : ℕ) : coeff R p n ⟨f, hf⟩ = f n 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] (f : ℕ → R) (hf : ∀ (n : ℕ), f (n + 1) ^ p = f n) (n : ℕ)
Goal: (Perfection.coeff R p n) ⟨f, hf⟩ = f n
-- Perfection.coeff_pthRoot
theorem coeff_pthRoot (f : Ring.Perfection R p) (n : ℕ) :
    coeff R p n (pthRoot R p f) = coeff R p (n + 1) f 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] (f : Ring.Perfection R p) (n : ℕ)
Goal: (Perfection.coeff R p n) ((Perfection.pthRoot R p) f) = (Perfection.coeff R p (n + 1)) f
-- Perfection.coeff_pow_p
theorem coeff_pow_p (f : Ring.Perfection R p) (n : ℕ) :
    coeff R p (n + 1) (f ^ p) = coeff R p n f 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] (f : Ring.Perfection R p) (n : ℕ)
Goal: (Perfection.coeff R p (n + 1)) (f ^ p) = (Perfection.coeff R p n) f
-- Perfection.coeff_pow_p'
theorem coeff_pow_p' (f : Ring.Perfection R p) (n : ℕ) : coeff R p (n + 1) f ^ p = coeff R p n f 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] (f : Ring.Perfection R p) (n : ℕ)
Goal: (Perfection.coeff R p (n + 1)) f ^ p = (Perfection.coeff R p n) f
-- Perfection.coeff_frobenius
theorem coeff_frobenius (f : Ring.Perfection R p) (n : ℕ) :
    coeff R p (n + 1) (frobenius _ p f) = coeff R p n f 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] (f : Ring.Perfection R p) (n : ℕ)
Goal: (Perfection.coeff R p (n + 1)) ((frobenius (Ring.Perfection R p) p) f) = (Perfection.coeff R p n) f
-- Perfection.coeff_iterate_frobenius
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 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] (f : Ring.Perfection R p) (n m : ℕ)
Goal: (Perfection.coeff R p (n + m)) ((⇑(frobenius (Ring.Perfection R p) p))^[m] f) = (Perfection.coeff R p n) f
-- Perfection.coeff_iterate_frobenius'
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 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] (f : Ring.Perfection R p) (n m : ℕ) (hmn : m ≤ n)
Goal: (Perfection.coeff R p n) ((⇑(frobenius (Ring.Perfection R p) p))^[m] f) = (Perfection.coeff R p (n - m)) f
-- Perfection.pthRoot_frobenius
theorem pthRoot_frobenius : (pthRoot R p).comp (frobenius _ p) = RingHom.id _ 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p]
Goal: (Perfection.pthRoot R p).comp (frobenius (Ring.Perfection R p) p) = RingHom.id (Ring.Perfection R p)
-- Perfection.frobenius_pthRoot
theorem frobenius_pthRoot : (frobenius _ p).comp (pthRoot R p) = RingHom.id _ 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p]
Goal: (frobenius (Ring.Perfection R p) p).comp (Perfection.pthRoot R p) = RingHom.id (Ring.Perfection R p)
-- Perfection.coeff_add_ne_zero
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 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] {f : Ring.Perfection R p} {n : ℕ} (hfn : (Perfection.coeff R p n) f ≠ 0) (k : ℕ)
Goal: (Perfection.coeff R p (n + k)) f ≠ 0
-- Perfection.coeff_ne_zero_of_le
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 
Arguments: {R : Type u₁} [CommSemiring R] {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] {f : Ring.Perfection R p} {m n : ℕ} (hfm : (Perfection.coeff R p m) f ≠ 0) (hmn : m ≤ n)
Goal: (Perfection.coeff R p n) f ≠ 0
-- Perfection.lift_symm_apply
@[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) 
Arguments: (p : ℕ) [hp : Fact (Nat.Prime p)] (R : Type u₁) [CommSemiring R] [CharP R p] [PerfectRing R p] (S : Type u₂) [CommSemiring S] [CharP S p] (f : R →+* Ring.Perfection S p)
Goal: (Perfection.lift p R S).symm f = (Perfection.coeff S p 0).comp f
-- Perfection.lift_apply_apply_coe
@[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) 
Arguments: (p : ℕ) [hp : Fact (Nat.Prime p)] (R : Type u₁) [CommSemiring R] [CharP R p] [PerfectRing R p] (S : Type u₂) [CommSemiring S] [CharP S p] (f : R →+* S) (r : R) (n : ℕ)
Goal: ↑(((Perfection.lift p R S) f) r) n = f ((⇑↑(frobeniusEquiv R p).symm)^[n] r)
-- Perfection.hom_ext
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 
Arguments: (p : ℕ) [hp : Fact (Nat.Prime p)] {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 : R), (Perfection.coeff S p 0) (f x) = (Perfection.coeff S p 0) (g x))
Goal: f = g
-- Perfection.map_apply_coe
@[simps]
def map (φ : R →+* S) : Ring.Perfection R p →+* Ring.Perfection S p 
Arguments: {R : Type u₁} [CommSemiring R] (p : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] {S : Type u₂} [CommSemiring S] [CharP S p] (φ : R →+* S) (f : Ring.Perfection R p) (n : ℕ)
Goal: ↑((Perfection.map p φ) f) n = φ ((Perfection.coeff R p n) f)
-- Perfection.coeff_map
theorem coeff_map (φ : R →+* S) (f : Ring.Perfection R p) (n : ℕ) :
    coeff S p n (map p φ f) = φ (coeff R p n f) 
Arguments: {R : Type u₁} [CommSemiring R] (p : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] {S : Type u₂} [CommSemiring S] [CharP S p] (φ : R →+* S) (f : Ring.Perfection R p) (n : ℕ)
Goal: (Perfection.coeff S p n) ((Perfection.map p φ) f) = φ ((Perfection.coeff R p n) f)
-- PerfectionMap.surjective
-- @[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
Arguments: {p : ℕ} [Fact (Nat.Prime p)] {R : Type u₁} [CommSemiring R] [CharP R p] {P : Type u₂} [CommSemiring P] [CharP P p] [PerfectRing P p] {π : P →+* R} (self : PerfectionMap p π) (f : ℕ → R)
Goal: (∀ (n : ℕ), f (n + 1) ^ p = f n) → ∃ x, ∀ (n : ℕ), π ((⇑(frobeniusEquiv P p).symm)^[n] x) = f n
-- PerfectionMap.injective
-- @[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
Arguments: {p : ℕ} [Fact (Nat.Prime p)] {R : Type u₁} [CommSemiring R] [CharP R p] {P : Type u₂} [CommSemiring P] [CharP P p] [PerfectRing P p] {π : P →+* R} (self : PerfectionMap p π) ⦃x y : P⦄
Goal: (∀ (n : ℕ), π ((⇑(frobeniusEquiv P p).symm)^[n] x) = π ((⇑(frobeniusEquiv P p).symm)^[n] y)) → x = y
-- PerfectionMap.mk'
@[simps]
theorem mk' {f : P →+* R} (g : P ≃+* Ring.Perfection R p) (hfg : Perfection.lift p P R f = g) :
    PerfectionMap p f 
Arguments: {p : ℕ} [Fact (Nat.Prime p)] {R : Type u₁} [CommSemiring R] [CharP R p] {P : Type u₃} [CommSemiring P] [CharP P p] [PerfectRing P p] {f : P →+* R} (g : P ≃+* Ring.Perfection R p) (hfg : (Perfection.lift p P R) f = ↑g)
Goal: PerfectionMap p f
-- PerfectionMap.of
theorem of : PerfectionMap p (Perfection.coeff R p 0) 
Arguments: (p : ℕ) [Fact (Nat.Prime p)] (R : Type u₁) [CommSemiring R] [CharP R p]
Goal: PerfectionMap p (Perfection.coeff R p 0)
-- PerfectionMap.id
theorem id [PerfectRing R p] : PerfectionMap p (RingHom.id R) 
Arguments: (p : ℕ) [Fact (Nat.Prime p)] (R : Type u₁) [CommSemiring R] [CharP R p] [PerfectRing R p]
Goal: PerfectionMap p (RingHom.id R)
-- PerfectionMap.equiv_apply
theorem equiv_apply {π : P →+* R} (m : PerfectionMap p π) (x : P) :
    m.equiv x = Perfection.lift p P R π x 
Arguments: {p : ℕ} [Fact (Nat.Prime p)] {R : Type u₁} [CommSemiring R] [CharP R p] {P : Type u₃} [CommSemiring P] [CharP P p] [PerfectRing P p] {π : P →+* R} (m : PerfectionMap p π) (x : P)
Goal: m.equiv x = ((Perfection.lift p P R) π) x
-- PerfectionMap.comp_equiv
theorem comp_equiv {π : P →+* R} (m : PerfectionMap p π) (x : P) :
    Perfection.coeff R p 0 (m.equiv x) = π x 
Arguments: {p : ℕ} [Fact (Nat.Prime p)] {R : Type u₁} [CommSemiring R] [CharP R p] {P : Type u₃} [CommSemiring P] [CharP P p] [PerfectRing P p] {π : P →+* R} (m : PerfectionMap p π) (x : P)
Goal: (Perfection.coeff R p 0) (m.equiv x) = π x
-- PerfectionMap.comp_equiv'
theorem comp_equiv' {π : P →+* R} (m : PerfectionMap p π) :
    (Perfection.coeff R p 0).comp ↑m.equiv = π 
Arguments: {p : ℕ} [Fact (Nat.Prime p)] {R : Type u₁} [CommSemiring R] [CharP R p] {P : Type u₃} [CommSemiring P] [CharP P p] [PerfectRing P p] {π : P →+* R} (m : PerfectionMap p π)
Goal: (Perfection.coeff R p 0).comp ↑m.equiv = π
-- PerfectionMap.comp_symm_equiv
theorem comp_symm_equiv {π : P →+* R} (m : PerfectionMap p π) (f : Ring.Perfection R p) :
    π (m.equiv.symm f) = Perfection.coeff R p 0 f 
Arguments: {p : ℕ} [Fact (Nat.Prime p)] {R : Type u₁} [CommSemiring R] [CharP R p] {P : Type u₃} [CommSemiring P] [CharP P p] [PerfectRing P p] {π : P →+* R} (m : PerfectionMap p π) (f : Ring.Perfection R p)
Goal: π (m.equiv.symm f) = (Perfection.coeff R p 0) f
-- PerfectionMap.comp_symm_equiv'
theorem comp_symm_equiv' {π : P →+* R} (m : PerfectionMap p π) :
    π.comp ↑m.equiv.symm = Perfection.coeff R p 0 
Arguments: {p : ℕ} [Fact (Nat.Prime p)] {R : Type u₁} [CommSemiring R] [CharP R p] {P : Type u₃} [CommSemiring P] [CharP P p] [PerfectRing P p] {π : P →+* R} (m : PerfectionMap p π)
Goal: π.comp ↑m.equiv.symm = Perfection.coeff R p 0
-- PerfectionMap.lift_apply
@[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) 
Arguments: (p : ℕ) [Fact (Nat.Prime p)] (R : Type u₁) [CommSemiring R] [CharP R p] [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 : R →+* S)
Goal: (PerfectionMap.lift p R S P π m) f = (↑m.equiv.symm).comp ((Perfection.lift p R S) f)