ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Algebra.mem_adjoin_of_map_mul
theorem mem_adjoin_of_map_mul {s} {x : A} {f : A →ₗ[R] B} (hf : ∀ a₁ a₂, f (a₁ * a₂) = f a₁ * f a₂)
    (h : x ∈ adjoin R s) : f x ∈ adjoin R (f '' (s ∪ {1})) 
Arguments: (R : Type uR) {A : Type uA} {B : Type uB} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {s : Set A} {x : A} {f : A →ₗ[R] B} (hf : ∀ (a₁ a₂ : A), f (a₁ * a₂) = f a₁ * f a₂) (h : x ∈ Algebra.adjoin R s)
Goal: f x ∈ Algebra.adjoin R (⇑f '' (s ∪ {1}))
-- Algebra.adjoin_inl_union_inr_eq_prod
theorem adjoin_inl_union_inr_eq_prod (s) (t) :
    adjoin R (LinearMap.inl R A B '' (s ∪ {1}) ∪ LinearMap.inr R A B '' (t ∪ {1})) =
      (adjoin R s).prod (adjoin R t) 
Arguments: (R : Type uR) {A : Type uA} {B : Type uB} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (s : Set A) (t : Set B)
Goal: Algebra.adjoin R (⇑(LinearMap.inl R A B) '' (s ∪ {1}) ∪ ⇑(LinearMap.inr R A B) '' (t ∪ {1})) =
  (Algebra.adjoin R s).prod (Algebra.adjoin R t)
-- Algebra.commute_of_mem_adjoin_of_forall_mem_commute
lemma commute_of_mem_adjoin_of_forall_mem_commute {a b : A} {s : Set A}
    (hb : b ∈ adjoin R s) (h : ∀ b ∈ s, Commute a b) :
    Commute a b 
Arguments: {R : Type uR} {A : Type uA} [CommSemiring R] [Semiring A] [Algebra R A] {a b : A} {s : Set A} (hb : b ∈ Algebra.adjoin R s) (h : ∀ b ∈ s, Commute a b)
Goal: Commute a b
-- Algebra.commute_of_mem_adjoin_singleton_of_commute
lemma commute_of_mem_adjoin_singleton_of_commute {a b c : A}
    (hc : c ∈ adjoin R {b}) (h : Commute a b) :
    Commute a c 
Arguments: {R : Type uR} {A : Type uA} [CommSemiring R] [Semiring A] [Algebra R A] {a b c : A} (hc : c ∈ Algebra.adjoin R {b}) (h : Commute a b)
Goal: Commute a c
-- Algebra.commute_of_mem_adjoin_self
lemma commute_of_mem_adjoin_self {a b : A} (hb : b ∈ adjoin R {a}) :
    Commute a b 
Arguments: {R : Type uR} {A : Type uA} [CommSemiring R] [Semiring A] [Algebra R A] {a b : A} (hb : b ∈ Algebra.adjoin R {a})
Goal: Commute a b
-- Algebra.adjoin_singleton_one
theorem adjoin_singleton_one : adjoin R ({1} : Set A) = ⊥ 
Arguments: (R : Type uR) {A : Type uA} [CommSemiring R] [Semiring A] [Algebra R A]
Goal: Algebra.adjoin R {1} = ⊥
-- Algebra.self_mem_adjoin_singleton
theorem self_mem_adjoin_singleton (x : A) : x ∈ adjoin R ({x} : Set A) 
Arguments: (R : Type uR) {A : Type uA} [CommSemiring R] [Semiring A] [Algebra R A] (x : A)
Goal: x ∈ Algebra.adjoin R {x}
-- Algebra.adjoin_algebraMap
theorem adjoin_algebraMap (s : Set S) :
    adjoin R (algebraMap S A '' s) = (adjoin R s).map (IsScalarTower.toAlgHom R S A) 
Arguments: (R : Type uR) {S : Type uS} (A : Type uA) [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] (s : Set S)
Goal: Algebra.adjoin R (⇑(algebraMap S A) '' s) = Subalgebra.map (IsScalarTower.toAlgHom R S A) (Algebra.adjoin R s)
-- Algebra.adjoin_algebraMap_image_union_eq_adjoin_adjoin
theorem adjoin_algebraMap_image_union_eq_adjoin_adjoin (s : Set S) (t : Set A) :
    adjoin R (algebraMap S A '' s ∪ t) = (adjoin (adjoin R s) t).restrictScalars R 
Arguments: (R : Type uR) {S : Type uS} {A : Type uA} [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] (s : Set S) (t : Set A)
Goal: Algebra.adjoin R (⇑(algebraMap S A) '' s ∪ t) = Subalgebra.restrictScalars R (Algebra.adjoin (↥(Algebra.adjoin R s)) t)
-- Algebra.adjoin_adjoin_of_tower
theorem adjoin_adjoin_of_tower (s : Set A) : adjoin S (adjoin R s : Set A) = adjoin S s 
Arguments: (R : Type uR) {S : Type uS} {A : Type uA} [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] (s : Set A)
Goal: Algebra.adjoin S ↑(Algebra.adjoin R s) = Algebra.adjoin S s
-- Algebra.adjoin_top
@[simp]
theorem adjoin_top :
    adjoin (⊤ : Subalgebra R S) t = (adjoin S t).restrictScalars (⊤ : Subalgebra R S) 
Arguments: (R : Type uR) {S : Type uS} {A : Type uA} [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra S A] {t : Set A}
Goal: Algebra.adjoin (↥⊤) t = Subalgebra.restrictScalars (↥⊤) (Algebra.adjoin S t)
-- Algebra.adjoin_union_eq_adjoin_adjoin
theorem adjoin_union_eq_adjoin_adjoin :
    adjoin R (s ∪ t) = (adjoin (adjoin R s) t).restrictScalars R 
Arguments: (R : Type uR) {A : Type uA} [CommSemiring R] [CommSemiring A] [Algebra R A] (s t : Set A)
Goal: Algebra.adjoin R (s ∪ t) = Subalgebra.restrictScalars R (Algebra.adjoin (↥(Algebra.adjoin R s)) t)
-- Algebra.adjoin_union_coe_submodule
theorem adjoin_union_coe_submodule :
    Subalgebra.toSubmodule (adjoin R (s ∪ t)) =
      Subalgebra.toSubmodule (adjoin R s) * Subalgebra.toSubmodule (adjoin R t) 
Arguments: (R : Type uR) {A : Type uA} [CommSemiring R] [CommSemiring A] [Algebra R A] (s t : Set A)
Goal: Subalgebra.toSubmodule (Algebra.adjoin R (s ∪ t)) =
  Subalgebra.toSubmodule (Algebra.adjoin R s) * Subalgebra.toSubmodule (Algebra.adjoin R t)
-- Algebra.pow_smul_mem_of_smul_subset_of_mem_adjoin
theorem pow_smul_mem_of_smul_subset_of_mem_adjoin [CommSemiring B] [Algebra R B] [Algebra A B]
    [IsScalarTower R A B] (r : A) (s : Set B) (B' : Subalgebra R B) (hs : r • s ⊆ B') {x : B}
    (hx : x ∈ adjoin R s) (hr : algebraMap A B r ∈ B') : ∃ n₀ : ℕ, ∀ n ≥ n₀, r ^ n • x ∈ B' 
Arguments: {R : Type uR} {A : Type uA} {B : Type uB} [CommSemiring R] [CommSemiring A] [Algebra R A] [CommSemiring B] [Algebra R B] [Algebra A B] [IsScalarTower R A B] (r : A) (s : Set B) (B' : Subalgebra R B) (hs : r • s ⊆ ↑B') {x : B} (hx : x ∈ Algebra.adjoin R s) (hr : (algebraMap A B) r ∈ B')
Goal: ∃ n₀, ∀ n ≥ n₀, r ^ n • x ∈ B'
-- Algebra.pow_smul_mem_adjoin_smul
theorem pow_smul_mem_adjoin_smul (r : R) (s : Set A) {x : A} (hx : x ∈ adjoin R s) :
    ∃ n₀ : ℕ, ∀ n ≥ n₀, r ^ n • x ∈ adjoin R (r • s) 
Arguments: {R : Type uR} {A : Type uA} [CommSemiring R] [CommSemiring A] [Algebra R A] (r : R) (s : Set A) {x : A} (hx : x ∈ Algebra.adjoin R s)
Goal: ∃ n₀, ∀ n ≥ n₀, r ^ n • x ∈ Algebra.adjoin R (r • s)
-- Algebra.mem_adjoin_iff
theorem mem_adjoin_iff {s : Set A} {x : A} :
    x ∈ adjoin R s ↔ x ∈ Subring.closure (Set.range (algebraMap R A) ∪ s) 
Arguments: {R : Type uR} {A : Type uA} [CommRing R] [Ring A] [Algebra R A] {s : Set A} {x : A}
Goal: x ∈ Algebra.adjoin R s ↔ x ∈ Subring.closure (Set.range ⇑(algebraMap R A) ∪ s)
-- Algebra.adjoin_eq_ring_closure
theorem adjoin_eq_ring_closure (s : Set A) :
    (adjoin R s).toSubring = Subring.closure (Set.range (algebraMap R A) ∪ s) 
Arguments: {R : Type uR} {A : Type uA} [CommRing R] [Ring A] [Algebra R A] (s : Set A)
Goal: (Algebra.adjoin R s).toSubring = Subring.closure (Set.range ⇑(algebraMap R A) ∪ s)
-- AlgHom.map_adjoin
theorem map_adjoin (φ : A →ₐ[R] B) (s : Set A) : (adjoin R s).map φ = adjoin R (φ '' s) 
Arguments: {R : Type uR} {A : Type uA} {B : Type uB} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) (s : Set A)
Goal: Subalgebra.map φ (Algebra.adjoin R s) = Algebra.adjoin R (⇑φ '' s)
-- AlgHom.map_adjoin_singleton
@[simp]
theorem map_adjoin_singleton (e : A →ₐ[R] B) (x : A) :
    (adjoin R {x}).map e = adjoin R {e x} 
Arguments: {R : Type uR} {A : Type uA} {B : Type uB} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (e : A →ₐ[R] B) (x : A)
Goal: Subalgebra.map e (Algebra.adjoin R {x}) = Algebra.adjoin R {e x}
-- AlgHom.adjoin_le_equalizer
theorem adjoin_le_equalizer (φ₁ φ₂ : A →ₐ[R] B) {s : Set A} (h : s.EqOn φ₁ φ₂) :
    adjoin R s ≤ equalizer φ₁ φ₂ 
Arguments: {R : Type uR} {A : Type uA} {B : Type uB} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ₁ φ₂ : A →ₐ[R] B) {s : Set A} (h : Set.EqOn (⇑φ₁) (⇑φ₂) s)
Goal: Algebra.adjoin R s ≤ AlgHom.equalizer φ₁ φ₂
-- AlgHom.ext_of_adjoin_eq_top
theorem ext_of_adjoin_eq_top {s : Set A} (h : adjoin R s = ⊤) ⦃φ₁ φ₂ : A →ₐ[R] B⦄
    (hs : s.EqOn φ₁ φ₂) : φ₁ = φ₂ 
Arguments: {R : Type uR} {A : Type uA} {B : Type uB} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {s : Set A} (h : Algebra.adjoin R s = ⊤) ⦃φ₁ φ₂ : A →ₐ[R] B⦄ (hs : Set.EqOn (⇑φ₁) (⇑φ₂) s)
Goal: φ₁ = φ₂
-- AlgHom.eqOn_adjoin_iff
theorem eqOn_adjoin_iff {φ ψ : A →ₐ[R] B} {s : Set A}  :
    Set.EqOn φ ψ (adjoin R s) ↔ Set.EqOn φ ψ s 
Arguments: {R : Type uR} {A : Type uA} {B : Type uB} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {φ ψ : A →ₐ[R] B} {s : Set A}
Goal: Set.EqOn ⇑φ ⇑ψ ↑(Algebra.adjoin R s) ↔ Set.EqOn (⇑φ) (⇑ψ) s
-- Algebra.adjoin_nat
theorem Algebra.adjoin_nat {R : Type*} [Semiring R] (s : Set R) :
    adjoin ℕ s = subalgebraOfSubsemiring (Subsemiring.closure s) 
Arguments: {R : Type u_1} [Semiring R] (s : Set R)
Goal: Algebra.adjoin ℕ s = subalgebraOfSubsemiring (Subsemiring.closure s)
-- Algebra.adjoin_int
theorem Algebra.adjoin_int {R : Type*} [Ring R] (s : Set R) :
    adjoin ℤ s = subalgebraOfSubring (Subring.closure s) 
Arguments: {R : Type u_1} [Ring R] (s : Set R)
Goal: Algebra.adjoin ℤ s = subalgebraOfSubring (Subring.closure s)
-- Submonoid.adjoin_eq_span_of_eq_span
theorem Submonoid.adjoin_eq_span_of_eq_span [Semiring F] [Module F K] [IsScalarTower F E K]
    (L : Submonoid K) {S : Set K} (h : (L : Set K) = span F S) :
    toSubmodule (adjoin E (L : Set K)) = span E S 
Arguments: (F : Type u_1) (E : Type u_2) {K : Type u_3} [CommSemiring E] [Semiring K] [SMul F E] [Algebra E K] [Semiring F] [Module F K] [IsScalarTower F E K] (L : Submonoid K) {S : Set K} (h : ↑L = ↑(Submodule.span F S))
Goal: Subalgebra.toSubmodule (Algebra.adjoin E ↑L) = Submodule.span E S
-- Subalgebra.adjoin_eq_span_of_eq_span
theorem Subalgebra.adjoin_eq_span_of_eq_span {S : Set K} (h : toSubmodule L = span F S) :
    toSubmodule (adjoin E (L : Set K)) = span E S 
Arguments: {F : Type u_1} (E : Type u_2) {K : Type u_3} [CommSemiring E] [Semiring K] [SMul F E] [Algebra E K] [CommSemiring F] [Algebra F K] [IsScalarTower F E K] (L : Subalgebra F K) {S : Set K} (h : Subalgebra.toSubmodule L = Submodule.span F S)
Goal: Subalgebra.toSubmodule (Algebra.adjoin E ↑L) = Submodule.span E S
-- Subalgebra.adjoin_eq_span_basis
theorem Subalgebra.adjoin_eq_span_basis {ι : Type*} (bL : Basis ι F L) :
    toSubmodule (adjoin E (L : Set K)) = span E (Set.range fun i : ι ↦ (bL i).1) 
Arguments: {F : Type u_1} (E : Type u_2) {K : Type u_3} [CommSemiring E] [Semiring K] [SMul F E] [Algebra E K] [CommSemiring F] [Algebra F K] [IsScalarTower F E K] (L : Subalgebra F K) {ι : Type u_4} (bL : Basis ι F ↥L)
Goal: Subalgebra.toSubmodule (Algebra.adjoin E ↑L) = Submodule.span E (Set.range fun i => ↑(bL i))
-- Algebra.restrictScalars_adjoin
theorem Algebra.restrictScalars_adjoin (F : Type*) [CommSemiring F] {E : Type*} [CommSemiring E]
    [Algebra F E] (K : Subalgebra F E) (S : Set E) :
    (Algebra.adjoin K S).restrictScalars F = Algebra.adjoin F (K ∪ S) 
Arguments: (F : Type u_4) [CommSemiring F] {E : Type u_5} [CommSemiring E] [Algebra F E] (K : Subalgebra F E) (S : Set E)
Goal: Subalgebra.restrictScalars F (Algebra.adjoin (↥K) S) = Algebra.adjoin F (↑K ∪ S)
-- Algebra.restrictScalars_adjoin_of_algEquiv
theorem Algebra.restrictScalars_adjoin_of_algEquiv
    {F E L L' : Type*} [CommSemiring F] [CommSemiring L] [CommSemiring L'] [Semiring E]
    [Algebra F L] [Algebra L E] [Algebra F L'] [Algebra L' E] [Algebra F E]
    [IsScalarTower F L E] [IsScalarTower F L' E] (i : L ≃ₐ[F] L')
    (hi : algebraMap L E = (algebraMap L' E) ∘ i) (S : Set E) :
    (Algebra.adjoin L S).restrictScalars F = (Algebra.adjoin L' S).restrictScalars F 
Arguments: {F : Type u_4} {E : Type u_5} {L : Type u_6} {L' : Type u_7} [CommSemiring F] [CommSemiring L] [CommSemiring L'] [Semiring E] [Algebra F L] [Algebra L E] [Algebra F L'] [Algebra L' E] [Algebra F E] [IsScalarTower F L E] [IsScalarTower F L' E] (i : L ≃ₐ[F] L') (hi : ⇑(algebraMap L E) = ⇑(algebraMap L' E) ∘ ⇑i) (S : Set E)
Goal: Subalgebra.restrictScalars F (Algebra.adjoin L S) = Subalgebra.restrictScalars F (Algebra.adjoin L' S)
-- Subalgebra.comap_map_eq
theorem comap_map_eq (f : A →ₐ[R] B) (S : Subalgebra R A) :
    (S.map f).comap f = S ⊔ Algebra.adjoin R (f ⁻¹' {0}) 
Arguments: {R : Type uR} {A : Type uA} {B : Type uB} [CommSemiring R] [Ring A] [Algebra R A] [Ring B] [Algebra R B] (f : A →ₐ[R] B) (S : Subalgebra R A)
Goal: Subalgebra.comap f (Subalgebra.map f S) = S ⊔ Algebra.adjoin R (⇑f ⁻¹' {0})
-- Subalgebra.comap_map_eq_self
theorem comap_map_eq_self {f : A →ₐ[R] B} {S : Subalgebra R A}
    (h : f ⁻¹' {0} ⊆ S) : (S.map f).comap f = S 
Arguments: {R : Type uR} {A : Type uA} {B : Type uB} [CommSemiring R] [Ring A] [Algebra R A] [Ring B] [Algebra R B] {f : A →ₐ[R] B} {S : Subalgebra R A} (h : ⇑f ⁻¹' {0} ⊆ ↑S)
Goal: Subalgebra.comap f (Subalgebra.map f S) = S
-- Algebra.FormallyUnramified.iff_exists_tensorProduct
theorem iff_exists_tensorProduct [EssFiniteType R S] :
    FormallyUnramified R S ↔ ∃ t : S ⊗[R] S,
      (∀ s, ((1 : S) ⊗ₜ[R] s - s ⊗ₜ[R] (1 : S)) * t = 0) ∧ TensorProduct.lmul' R t = 1 
Arguments: {R S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [Algebra.EssFiniteType R S]
Goal: Algebra.FormallyUnramified R S ↔
  ∃ t, (∀ (s : S), (1 ⊗ₜ[R] s - s ⊗ₜ[R] 1) * t = 0) ∧ (Algebra.TensorProduct.lmul' R) t = 1
-- Algebra.FormallyUnramified.one_tmul_sub_tmul_one_mul_elem
lemma one_tmul_sub_tmul_one_mul_elem
    (s : S) : (1 ⊗ₜ s - s ⊗ₜ 1) * elem R S = 0 
Arguments: {R S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [Algebra.FormallyUnramified R S] [Algebra.EssFiniteType R S] (s : S)
Goal: (1 ⊗ₜ[R] s - s ⊗ₜ[R] 1) * Algebra.FormallyUnramified.elem R S = 0
-- Algebra.FormallyUnramified.one_tmul_mul_elem
lemma one_tmul_mul_elem
    (s : S) : (1 ⊗ₜ s) * elem R S = (s ⊗ₜ 1) * elem R S 
Arguments: {R S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [Algebra.FormallyUnramified R S] [Algebra.EssFiniteType R S] (s : S)
Goal: 1 ⊗ₜ[R] s * Algebra.FormallyUnramified.elem R S = s ⊗ₜ[R] 1 * Algebra.FormallyUnramified.elem R S
-- Algebra.FormallyUnramified.lmul_elem
lemma lmul_elem [EssFiniteType R S] [FormallyUnramified R S] :
    TensorProduct.lmul' R (elem R S) = 1 
Arguments: {R S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [Algebra.EssFiniteType R S] [Algebra.FormallyUnramified R S]
Goal: (Algebra.TensorProduct.lmul' R) (Algebra.FormallyUnramified.elem R S) = 1
-- Algebra.FormallyUnramified.finite_of_free_aux
lemma finite_of_free_aux (I) [DecidableEq I] (b : Basis I R S)
    (f : I →₀ S) (x : S) (a : I → I →₀ R) (ha : a = fun i ↦ b.repr (b i * x)) :
    (1 ⊗ₜ[R] x * Finsupp.sum f fun i y ↦ y ⊗ₜ[R] b i) =
      Finset.sum (f.support.biUnion fun i ↦ (a i).support) fun k ↦
    Finsupp.sum (b.repr (f.sum fun i y ↦ a i k • y)) fun j c ↦ c • b j ⊗ₜ[R] b k 
Arguments: {R S : Type u_3} [CommRing R] [CommRing S] [Algebra R S] (I : Type u_2) [DecidableEq I] (b : Basis I R S) (f : I →₀ S) (x : S) (a : I → I →₀ R) (ha : a = fun i => b.repr (b i * x))
Goal: (1 ⊗ₜ[R] x * f.sum fun i y => y ⊗ₜ[R] b i) =
  ∑ k ∈ f.support.biUnion fun i => (a i).support,
    (b.repr (f.sum fun i y => (a i) k • y)).sum fun j c => c • b j ⊗ₜ[R] b k
-- Algebra.FormallyUnramified.finite_of_free
lemma finite_of_free [Module.Free R S] : Module.Finite R S 
Arguments: (R S : Type u_2) [CommRing R] [CommRing S] [Algebra R S] [Algebra.FormallyUnramified R S] [Algebra.EssFiniteType R S] [Module.Free R S]
Goal: Module.Finite R S
-- Algebra.FormallyUnramified.comp_sec
lemma comp_sec :
    (TensorProduct.AlgebraTensorModule.lift
      ((lsmul S S M).toLinearMap.flip.restrictScalars R).flip).comp (sec R S M) =
      LinearMap.id 
Arguments: (R S : Type u_2) [CommRing R] [CommRing S] [Algebra R S] (M : Type u_1) [AddCommGroup M] [Module R M] [Module S M] [IsScalarTower R S M] [Algebra.FormallyUnramified R S] [Algebra.EssFiniteType R S]
Goal: TensorProduct.AlgebraTensorModule.lift (↑R (Algebra.lsmul S S M).toLinearMap.flip).flip ∘ₗ
    Algebra.FormallyUnramified.sec R S M =
  LinearMap.id
-- Algebra.FormallyUnramified.flat_of_restrictScalars
lemma flat_of_restrictScalars [Module.Flat R M] : Module.Flat S M 
Arguments: (R S : Type u_2) [CommRing R] [CommRing S] [Algebra R S] (M : Type u_1) [AddCommGroup M] [Module R M] [Module S M] [IsScalarTower R S M] [Algebra.FormallyUnramified R S] [Algebra.EssFiniteType R S] [Module.Flat R M]
Goal: Module.Flat S M
-- Algebra.FormallyUnramified.projective_of_restrictScalars
lemma projective_of_restrictScalars [Module.Projective R M] : Module.Projective S M 
Arguments: (R S : Type u_2) [CommRing R] [CommRing S] [Algebra R S] (M : Type u_1) [AddCommGroup M] [Module R M] [Module S M] [IsScalarTower R S M] [Algebra.FormallyUnramified R S] [Algebra.EssFiniteType R S] [Module.Projective R M]
Goal: Module.Projective S M
-- Algebra.FinitePresentation.out
class Algebra.FinitePresentation [CommSemiring R] [Semiring A] [Algebra R A] : Prop where
  out : ∃ (n : ℕ) (f : MvPolynomial (Fin n) R →ₐ[R] A), Surjective f ∧ f.toRingHom.ker.FG
Arguments: {R : Type w₁} {A : Type w₂} [CommSemiring R] [Semiring A] [Algebra R A] [self : Algebra.FinitePresentation R A]
Goal: ∃ n f, Function.Surjective ⇑f ∧ (RingHom.ker f.toRingHom).FG
-- Algebra.FinitePresentation.of_finiteType
theorem of_finiteType [IsNoetherianRing R] : FiniteType R A ↔ FinitePresentation R A 
Arguments: {R : Type w₁} {A : Type w₂} [CommRing R] [CommRing A] [Algebra R A] [IsNoetherianRing R]
Goal: Algebra.FiniteType R A ↔ Algebra.FinitePresentation R A
-- Algebra.FinitePresentation.equiv
theorem equiv [FinitePresentation R A] (e : A ≃ₐ[R] B) : FinitePresentation R B 
Arguments: {R : Type w₁} {A : Type w₂} {B : Type w₃} [CommRing R] [CommRing A] [Algebra R A] [CommRing B] [Algebra R B] [Algebra.FinitePresentation R A] (e : A ≃ₐ[R] B)
Goal: Algebra.FinitePresentation R B
-- Algebra.FinitePresentation.quotient
protected theorem quotient {I : Ideal A} (h : I.FG) [FinitePresentation R A] :
    FinitePresentation R (A ⧸ I) 
Arguments: {R : Type w₁} {A : Type w₂} [CommRing R] [CommRing A] [Algebra R A] {I : Ideal A} (h : I.FG) [Algebra.FinitePresentation R A]
Goal: Algebra.FinitePresentation R (A ⧸ I)
-- Algebra.FinitePresentation.of_surjective
theorem of_surjective {f : A →ₐ[R] B} (hf : Function.Surjective f) (hker : f.toRingHom.ker.FG)
    [FinitePresentation R A] : FinitePresentation R B 
Arguments: {R : Type w₁} {A : Type w₂} {B : Type w₃} [CommRing R] [CommRing A] [Algebra R A] [CommRing B] [Algebra R B] {f : A →ₐ[R] B} (hf : Function.Surjective ⇑f) (hker : (RingHom.ker f.toRingHom).FG) [Algebra.FinitePresentation R A]
Goal: Algebra.FinitePresentation R B
-- Algebra.FinitePresentation.iff
theorem iff :
    FinitePresentation R A ↔
      ∃ (n : _) (I : Ideal (MvPolynomial (Fin n) R)) (_ : (_ ⧸ I) ≃ₐ[R] A), I.FG 
Arguments: {R : Type w₁} {A : Type w₂} [CommRing R] [CommRing A] [Algebra R A]
Goal: Algebra.FinitePresentation R A ↔ ∃ n I x, I.FG
-- Algebra.FinitePresentation.iff_quotient_mvPolynomial'
theorem iff_quotient_mvPolynomial' :
    FinitePresentation R A ↔
      ∃ (ι : Type*) (_ : Fintype ι) (f : MvPolynomial ι R →ₐ[R] A),
        Surjective f ∧ f.toRingHom.ker.FG 
Arguments: {R : Type w₁} {A : Type w₂} [CommRing R] [CommRing A] [Algebra R A]
Goal: Algebra.FinitePresentation R A ↔ ∃ ι x f, Function.Surjective ⇑f ∧ (RingHom.ker f.toRingHom).FG
-- Algebra.FinitePresentation.mvPolynomial_of_finitePresentation
theorem mvPolynomial_of_finitePresentation [FinitePresentation.{w₁, w₂} R A]
    (ι : Type v) [Finite ι] :
    FinitePresentation.{w₁, max v w₂} R (MvPolynomial ι A) 
Arguments: {R : Type w₁} {A : Type w₂} [CommRing R] [CommRing A] [Algebra R A] [Algebra.FinitePresentation R A] (ι : Type v) [Finite ι]
Goal: Algebra.FinitePresentation R (MvPolynomial ι A)
-- Algebra.FinitePresentation.trans
theorem trans [Algebra A B] [IsScalarTower R A B] [FinitePresentation R A]
    [FinitePresentation A B] : FinitePresentation R B 
Arguments: (R : Type w₁) (A : Type w₂) (B : Type w₃) [CommRing R] [CommRing A] [Algebra R A] [CommRing B] [Algebra R B] [Algebra A B] [IsScalarTower R A B] [Algebra.FinitePresentation R A] [Algebra.FinitePresentation A B]
Goal: Algebra.FinitePresentation R B
-- Algebra.FinitePresentation.of_restrict_scalars_finitePresentation
theorem of_restrict_scalars_finitePresentation [Algebra A B] [IsScalarTower R A B]
    [FinitePresentation.{w₁, w₃} R B] [FiniteType R A] :
    FinitePresentation.{w₂, w₃} A B 
Arguments: (R : Type w₁) (A : Type w₂) (B : Type w₃) [CommRing R] [CommRing A] [Algebra R A] [CommRing B] [Algebra R B] [Algebra A B] [IsScalarTower R A B] [Algebra.FinitePresentation R B] [Algebra.FiniteType R A]
Goal: Algebra.FinitePresentation A B
-- Algebra.FinitePresentation.ker_fg_of_mvPolynomial
theorem ker_fg_of_mvPolynomial {n : ℕ} (f : MvPolynomial (Fin n) R →ₐ[R] A)
    (hf : Function.Surjective f) [FinitePresentation R A] : f.toRingHom.ker.FG 
Arguments: {R : Type w₁} {A : Type w₂} [CommRing R] [CommRing A] [Algebra R A] {n : ℕ} (f : MvPolynomial (Fin n) R →ₐ[R] A) (hf : Function.Surjective ⇑f) [Algebra.FinitePresentation R A]
Goal: (RingHom.ker f.toRingHom).FG
-- Algebra.FinitePresentation.ker_fG_of_surjective
theorem ker_fG_of_surjective (f : A →ₐ[R] B) (hf : Function.Surjective f)
    [FinitePresentation R A] [FinitePresentation R B] : f.toRingHom.ker.FG 
Arguments: {R : Type w₁} {A : Type w₂} {B : Type w₃} [CommRing R] [CommRing A] [Algebra R A] [CommRing B] [Algebra R B] (f : A →ₐ[R] B) (hf : Function.Surjective ⇑f) [Algebra.FinitePresentation R A] [Algebra.FinitePresentation R B]
Goal: (RingHom.ker f.toRingHom).FG
-- RingHom.FiniteType.of_finitePresentation
theorem of_finitePresentation {f : A →+* B} (hf : f.FinitePresentation) : f.FiniteType 
Arguments: {A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] {f : A →+* B} (hf : f.FinitePresentation)
Goal: f.FiniteType
-- RingHom.FinitePresentation.id
theorem id : FinitePresentation (RingHom.id A) 
Arguments: (A : Type u_1) [CommRing A]
Goal: (RingHom.id A).FinitePresentation
-- RingHom.FinitePresentation.comp_surjective
theorem comp_surjective {f : A →+* B} {g : B →+* C} (hf : f.FinitePresentation) (hg : Surjective g)
    (hker : g.ker.FG) : (g.comp f).FinitePresentation 
Arguments: {A : Type u_1} {B : Type u_2} {C : Type u_3} [CommRing A] [CommRing B] [CommRing C] {f : A →+* B} {g : B →+* C} (hf : f.FinitePresentation) (hg : Function.Surjective ⇑g) (hker : (RingHom.ker g).FG)
Goal: (g.comp f).FinitePresentation
-- RingHom.FinitePresentation.of_surjective
theorem of_surjective (f : A →+* B) (hf : Surjective f) (hker : f.ker.FG) :
    f.FinitePresentation 
Arguments: {A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] (f : A →+* B) (hf : Function.Surjective ⇑f) (hker : (RingHom.ker f).FG)
Goal: f.FinitePresentation
-- RingHom.FinitePresentation.of_finiteType
theorem of_finiteType [IsNoetherianRing A] {f : A →+* B} : f.FiniteType ↔ f.FinitePresentation 
Arguments: {A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] [IsNoetherianRing A] {f : A →+* B}
Goal: f.FiniteType ↔ f.FinitePresentation
-- RingHom.FinitePresentation.comp
theorem comp {g : B →+* C} {f : A →+* B} (hg : g.FinitePresentation) (hf : f.FinitePresentation) :
    (g.comp f).FinitePresentation 
Arguments: {A : Type u_1} {B : Type u_2} {C : Type u_3} [CommRing A] [CommRing B] [CommRing C] {g : B →+* C} {f : A →+* B} (hg : g.FinitePresentation) (hf : f.FinitePresentation)
Goal: (g.comp f).FinitePresentation
-- RingHom.FinitePresentation.of_comp_finiteType
theorem of_comp_finiteType (f : A →+* B) {g : B →+* C} (hg : (g.comp f).FinitePresentation)
    (hf : f.FiniteType) : g.FinitePresentation 
Arguments: {A : Type u_1} {B : Type u_2} {C : Type u_3} [CommRing A] [CommRing B] [CommRing C] (f : A →+* B) {g : B →+* C} (hg : (g.comp f).FinitePresentation) (hf : f.FiniteType)
Goal: g.FinitePresentation
-- AlgHom.FiniteType.of_finitePresentation
theorem of_finitePresentation {f : A →ₐ[R] B} (hf : f.FinitePresentation) : f.FiniteType 
Arguments: {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R A] [Algebra R B] {f : A →ₐ[R] B} (hf : f.FinitePresentation)
Goal: f.FiniteType
-- AlgHom.FinitePresentation.id
theorem id : FinitePresentation (AlgHom.id R A) 
Arguments: (R : Type u_1) (A : Type u_2) [CommRing R] [CommRing A] [Algebra R A]
Goal: (AlgHom.id R A).FinitePresentation