ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AList.mem_lookup_union_middle
theorem mem_lookup_union_middle {a} {b : β a} {s₁ s₂ s₃ : AList β} :
    b ∈ lookup a (s₁ ∪ s₃) → a ∉ s₂ → b ∈ lookup a (s₁ ∪ s₂ ∪ s₃) 
Arguments: {α : Type u} {β : α → Type v} [DecidableEq α] {a : α} {b : β a} {s₁ s₂ s₃ : AList β}
Goal: b ∈ AList.lookup a (s₁ ∪ s₃) → a ∉ s₂ → b ∈ AList.lookup a (s₁ ∪ s₂ ∪ s₃)
-- AList.insert_union
theorem insert_union {a} {b : β a} {s₁ s₂ : AList β} :
    insert a b (s₁ ∪ s₂) = insert a b s₁ ∪ s₂ 
Arguments: {α : Type u} {β : α → Type v} [DecidableEq α] {a : α} {b : β a} {s₁ s₂ : AList β}
Goal: AList.insert a b (s₁ ∪ s₂) = AList.insert a b s₁ ∪ s₂
-- AList.union_assoc
theorem union_assoc {s₁ s₂ s₃ : AList β} : (s₁ ∪ s₂ ∪ s₃).entries ~ (s₁ ∪ (s₂ ∪ s₃)).entries 
Arguments: {α : Type u} {β : α → Type v} [DecidableEq α] {s₁ s₂ s₃ : AList β}
Goal: (s₁ ∪ s₂ ∪ s₃).entries ~ (s₁ ∪ (s₂ ∪ s₃)).entries
-- AList.union_comm_of_disjoint
theorem union_comm_of_disjoint {s₁ s₂ : AList β} (h : Disjoint s₁ s₂) :
    (s₁ ∪ s₂).entries ~ (s₂ ∪ s₁).entries 
Arguments: {α : Type u} {β : α → Type v} [DecidableEq α] {s₁ s₂ : AList β} (h : s₁.Disjoint s₂)
Goal: (s₁ ∪ s₂).entries ~ (s₂ ∪ s₁).entries
-- WeierstrassCurve.b_relation
lemma b_relation : 4 * W.b₈ = W.b₂ * W.b₆ - W.b₄ ^ 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: 4 * W.b₈ = W.b₂ * W.b₆ - W.b₄ ^ 2
-- WeierstrassCurve.c_relation
lemma c_relation : 1728 * W.Δ = W.c₄ ^ 3 - W.c₆ ^ 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: 1728 * W.Δ = W.c₄ ^ 3 - W.c₆ ^ 2
-- WeierstrassCurve.VariableChange.id_comp
lemma id_comp (C : VariableChange R) : comp id C = C 
Arguments: {R : Type u} [CommRing R] (C : WeierstrassCurve.VariableChange R)
Goal: WeierstrassCurve.VariableChange.id.comp C = C
-- WeierstrassCurve.VariableChange.comp_id
lemma comp_id (C : VariableChange R) : comp C id = C 
Arguments: {R : Type u} [CommRing R] (C : WeierstrassCurve.VariableChange R)
Goal: C.comp WeierstrassCurve.VariableChange.id = C
-- WeierstrassCurve.VariableChange.comp_left_inv
lemma comp_left_inv (C : VariableChange R) : comp (inv C) C = id 
Arguments: {R : Type u} [CommRing R] (C : WeierstrassCurve.VariableChange R)
Goal: C.inv.comp C = WeierstrassCurve.VariableChange.id
-- WeierstrassCurve.VariableChange.comp_assoc
lemma comp_assoc (C C' C'' : VariableChange R) : comp (comp C C') C'' = comp C (comp C' C'') 
Arguments: {R : Type u} [CommRing R] (C C' C'' : WeierstrassCurve.VariableChange R)
Goal: (C.comp C').comp C'' = C.comp (C'.comp C'')
-- WeierstrassCurve.variableChange_a₂
@[simps]
def variableChange : WeierstrassCurve R 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).a₂ = ↑C.u⁻¹ ^ 2 * (W.a₂ - C.s * W.a₁ + 3 * C.r - C.s ^ 2)
-- WeierstrassCurve.variableChange_a₃
@[simps]
def variableChange : WeierstrassCurve R 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).a₃ = ↑C.u⁻¹ ^ 3 * (W.a₃ + C.r * W.a₁ + 2 * C.t)
-- WeierstrassCurve.variableChange_a₁
@[simps]
def variableChange : WeierstrassCurve R 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).a₁ = ↑C.u⁻¹ * (W.a₁ + 2 * C.s)
-- WeierstrassCurve.variableChange_a₄
@[simps]
def variableChange : WeierstrassCurve R 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).a₄ =
  ↑C.u⁻¹ ^ 4 * (W.a₄ - C.s * W.a₃ + 2 * C.r * W.a₂ - (C.t + C.r * C.s) * W.a₁ + 3 * C.r ^ 2 - 2 * C.s * C.t)
-- WeierstrassCurve.variableChange_a₆
@[simps]
def variableChange : WeierstrassCurve R 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).a₆ =
  ↑C.u⁻¹ ^ 6 * (W.a₆ + C.r * W.a₄ + C.r ^ 2 * W.a₂ + C.r ^ 3 - C.t * W.a₃ - C.t ^ 2 - C.r * C.t * W.a₁)
-- WeierstrassCurve.variableChange_id
lemma variableChange_id : W.variableChange VariableChange.id = W 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.variableChange WeierstrassCurve.VariableChange.id = W
-- WeierstrassCurve.variableChange_comp
lemma variableChange_comp (C C' : VariableChange R) (W : WeierstrassCurve R) :
    W.variableChange (C.comp C') = (W.variableChange C').variableChange C 
Arguments: {R : Type u} [CommRing R] (C C' : WeierstrassCurve.VariableChange R) (W : WeierstrassCurve R)
Goal: W.variableChange (C.comp C') = (W.variableChange C').variableChange C
-- WeierstrassCurve.variableChange_b₂
@[simp]
lemma variableChange_b₂ : (W.variableChange C).b₂ = C.u⁻¹ ^ 2 * (W.b₂ + 12 * C.r) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).b₂ = ↑C.u⁻¹ ^ 2 * (W.b₂ + 12 * C.r)
-- WeierstrassCurve.variableChange_b₄
@[simp]
lemma variableChange_b₄ :
    (W.variableChange C).b₄ = C.u⁻¹ ^ 4 * (W.b₄ + C.r * W.b₂ + 6 * C.r ^ 2) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).b₄ = ↑C.u⁻¹ ^ 4 * (W.b₄ + C.r * W.b₂ + 6 * C.r ^ 2)
-- WeierstrassCurve.variableChange_b₆
@[simp]
lemma variableChange_b₆ : (W.variableChange C).b₆ =
    C.u⁻¹ ^ 6 * (W.b₆ + 2 * C.r * W.b₄ + C.r ^ 2 * W.b₂ + 4 * C.r ^ 3) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).b₆ = ↑C.u⁻¹ ^ 6 * (W.b₆ + 2 * C.r * W.b₄ + C.r ^ 2 * W.b₂ + 4 * C.r ^ 3)
-- WeierstrassCurve.variableChange_b₈
@[simp]
lemma variableChange_b₈ : (W.variableChange C).b₈ = C.u⁻¹ ^ 8 *
    (W.b₈ + 3 * C.r * W.b₆ + 3 * C.r ^ 2 * W.b₄ + C.r ^ 3 * W.b₂ + 3 * C.r ^ 4) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).b₈ = ↑C.u⁻¹ ^ 8 * (W.b₈ + 3 * C.r * W.b₆ + 3 * C.r ^ 2 * W.b₄ + C.r ^ 3 * W.b₂ + 3 * C.r ^ 4)
-- WeierstrassCurve.variableChange_c₄
@[simp]
lemma variableChange_c₄ : (W.variableChange C).c₄ = C.u⁻¹ ^ 4 * W.c₄ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).c₄ = ↑C.u⁻¹ ^ 4 * W.c₄
-- WeierstrassCurve.variableChange_c₆
@[simp]
lemma variableChange_c₆ : (W.variableChange C).c₆ = C.u⁻¹ ^ 6 * W.c₆ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).c₆ = ↑C.u⁻¹ ^ 6 * W.c₆
-- WeierstrassCurve.variableChange_Δ
@[simp]
lemma variableChange_Δ : (W.variableChange C).Δ = C.u⁻¹ ^ 12 * W.Δ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (W.variableChange C).Δ = ↑C.u⁻¹ ^ 12 * W.Δ
-- WeierstrassCurve.map_a₃
@[simps]
def map : WeierstrassCurve A 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).a₃ = φ W.a₃
-- WeierstrassCurve.map_a₆
@[simps]
def map : WeierstrassCurve A 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).a₆ = φ W.a₆
-- WeierstrassCurve.map_a₄
@[simps]
def map : WeierstrassCurve A 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).a₄ = φ W.a₄
-- WeierstrassCurve.map_a₁
@[simps]
def map : WeierstrassCurve A 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).a₁ = φ W.a₁
-- WeierstrassCurve.map_a₂
@[simps]
def map : WeierstrassCurve A 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).a₂ = φ W.a₂
-- WeierstrassCurve.map_b₂
@[simp]
lemma map_b₂ : (W.map φ).b₂ = φ W.b₂ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).b₂ = φ W.b₂
-- WeierstrassCurve.map_b₄
@[simp]
lemma map_b₄ : (W.map φ).b₄ = φ W.b₄ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).b₄ = φ W.b₄
-- WeierstrassCurve.map_b₆
@[simp]
lemma map_b₆ : (W.map φ).b₆ = φ W.b₆ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).b₆ = φ W.b₆
-- WeierstrassCurve.map_b₈
@[simp]
lemma map_b₈ : (W.map φ).b₈ = φ W.b₈ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).b₈ = φ W.b₈
-- WeierstrassCurve.map_c₄
@[simp]
lemma map_c₄ : (W.map φ).c₄ = φ W.c₄ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).c₄ = φ W.c₄
-- WeierstrassCurve.map_c₆
@[simp]
lemma map_c₆ : (W.map φ).c₆ = φ W.c₆ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).c₆ = φ W.c₆
-- WeierstrassCurve.map_Δ
@[simp]
lemma map_Δ : (W.map φ).Δ = φ W.Δ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (W.map φ).Δ = φ W.Δ
-- WeierstrassCurve.map_id
@[simp]
lemma map_id : W.map (RingHom.id R) = W 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.map (RingHom.id R) = W
-- WeierstrassCurve.map_map
lemma map_map {B : Type w} [CommRing B] (ψ : A →+* B) : (W.map φ).map ψ = W.map (ψ.comp φ) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A) {B : Type w} [CommRing B] (ψ : A →+* B)
Goal: (W.map φ).map ψ = W.map (ψ.comp φ)
-- WeierstrassCurve.map_baseChange
@[simp]
lemma map_baseChange {S : Type s} [CommRing S] [Algebra R S] {A : Type v} [CommRing A] [Algebra R A]
    [Algebra S A] [IsScalarTower R S A] {B : Type w} [CommRing B] [Algebra R B] [Algebra S B]
    [IsScalarTower R S B] (ψ : A →ₐ[S] B) : (W.baseChange A).map ψ = W.baseChange B 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {S : Type s} [CommRing S] [Algebra R S] {A : Type v} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type w} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (ψ : A →ₐ[S] B)
Goal: (W.baseChange A).map ↑ψ = W.baseChange B
-- WeierstrassCurve.map_injective
lemma map_injective {φ : R →+* A} (hφ : Function.Injective φ) :
    Function.Injective <| map (φ := φ) 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] {φ : R →+* A} (hφ : Function.Injective ⇑φ)
Goal: Function.Injective fun W => W.map φ
-- WeierstrassCurve.VariableChange.map_t
@[simps]
def map : VariableChange A 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C : WeierstrassCurve.VariableChange R)
Goal: (WeierstrassCurve.VariableChange.map φ C).t = φ C.t
-- WeierstrassCurve.VariableChange.map_r
@[simps]
def map : VariableChange A 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C : WeierstrassCurve.VariableChange R)
Goal: (WeierstrassCurve.VariableChange.map φ C).r = φ C.r
-- WeierstrassCurve.VariableChange.map_s
@[simps]
def map : VariableChange A 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C : WeierstrassCurve.VariableChange R)
Goal: (WeierstrassCurve.VariableChange.map φ C).s = φ C.s
-- WeierstrassCurve.VariableChange.map_u
@[simps]
def map : VariableChange A 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C : WeierstrassCurve.VariableChange R)
Goal: (WeierstrassCurve.VariableChange.map φ C).u = (Units.map ↑φ) C.u
-- WeierstrassCurve.VariableChange.map_id
@[simp]
lemma map_id : C.map (RingHom.id R) = C 
Arguments: {R : Type u} [CommRing R] (C : WeierstrassCurve.VariableChange R)
Goal: WeierstrassCurve.VariableChange.map (RingHom.id R) C = C
-- WeierstrassCurve.VariableChange.map_map
lemma map_map {A : Type v} [CommRing A] (φ : R →+* A) {B : Type w} [CommRing B] (ψ : A →+* B) :
    (C.map φ).map ψ = C.map (ψ.comp φ) 
Arguments: {R : Type u} [CommRing R] (C : WeierstrassCurve.VariableChange R) {A : Type v} [CommRing A] (φ : R →+* A) {B : Type w} [CommRing B] (ψ : A →+* B)
Goal: WeierstrassCurve.VariableChange.map ψ (WeierstrassCurve.VariableChange.map φ C) =
  WeierstrassCurve.VariableChange.map (ψ.comp φ) C
-- WeierstrassCurve.VariableChange.map_baseChange
@[simp]
lemma map_baseChange {S : Type s} [CommRing S] [Algebra R S] {A : Type v} [CommRing A] [Algebra R A]
    [Algebra S A] [IsScalarTower R S A] {B : Type w} [CommRing B] [Algebra R B] [Algebra S B]
    [IsScalarTower R S B] (ψ : A →ₐ[S] B) : (C.baseChange A).map ψ = C.baseChange B 
Arguments: {R : Type u} [CommRing R] (C : WeierstrassCurve.VariableChange R) {S : Type s} [CommRing S] [Algebra R S] {A : Type v} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type w} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (ψ : A →ₐ[S] B)
Goal: WeierstrassCurve.VariableChange.map (↑ψ) (WeierstrassCurve.VariableChange.baseChange A C) =
  WeierstrassCurve.VariableChange.baseChange B C
-- WeierstrassCurve.VariableChange.map_injective
lemma map_injective {φ : R →+* A} (hφ : Function.Injective φ) :
    Function.Injective <| map (φ := φ) 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] {φ : R →+* A} (hφ : Function.Injective ⇑φ)
Goal: Function.Injective (WeierstrassCurve.VariableChange.map φ)
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.Weierstrass.0.WeierstrassCurve.VariableChange.id_map
private lemma id_map : (id : VariableChange R).map φ = id 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A)
Goal: WeierstrassCurve.VariableChange.map φ WeierstrassCurve.VariableChange.id = WeierstrassCurve.VariableChange.id
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.Weierstrass.0.WeierstrassCurve.VariableChange.comp_map
private lemma comp_map (C' : VariableChange R) : (C.comp C').map φ = (C.map φ).comp (C'.map φ) 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] (φ : R →+* A) (C C' : WeierstrassCurve.VariableChange R)
Goal: WeierstrassCurve.VariableChange.map φ (C.comp C') =
  (WeierstrassCurve.VariableChange.map φ C).comp (WeierstrassCurve.VariableChange.map φ C')
-- WeierstrassCurve.map_variableChange
lemma map_variableChange (C : VariableChange R) :
    (W.map φ).variableChange (C.map φ) = (W.variableChange C).map φ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {A : Type v} [CommRing A] (φ : R →+* A) (C : WeierstrassCurve.VariableChange R)
Goal: (W.map φ).variableChange (WeierstrassCurve.VariableChange.map φ C) = (W.variableChange C).map φ
-- WeierstrassCurve.twoTorsionPolynomial_disc
lemma twoTorsionPolynomial_disc : W.twoTorsionPolynomial.disc = 16 * W.Δ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.twoTorsionPolynomial.disc = 16 * W.Δ
-- WeierstrassCurve.twoTorsionPolynomial_disc_isUnit
lemma twoTorsionPolynomial_disc_isUnit [Invertible (2 : R)] :
    IsUnit W.twoTorsionPolynomial.disc ↔ IsUnit W.Δ 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Invertible 2]
Goal: IsUnit W.twoTorsionPolynomial.disc ↔ IsUnit W.Δ
-- WeierstrassCurve.twoTorsionPolynomial_disc_ne_zero
lemma twoTorsionPolynomial_disc_ne_zero [Nontrivial R] [Invertible (2 : R)] (hΔ : IsUnit W.Δ) :
    W.twoTorsionPolynomial.disc ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Nontrivial R] [Invertible 2] (hΔ : IsUnit W.Δ)
Goal: W.twoTorsionPolynomial.disc ≠ 0
-- WeierstrassCurve.ofJ0_c₄
lemma ofJ0_c₄ : (ofJ0 R).c₄ = 0 
Arguments: (R : Type u) [CommRing R]
Goal: (WeierstrassCurve.ofJ0 R).c₄ = 0
-- WeierstrassCurve.ofJ0_Δ
lemma ofJ0_Δ : (ofJ0 R).Δ = -27 
Arguments: (R : Type u) [CommRing R]
Goal: (WeierstrassCurve.ofJ0 R).Δ = -27
-- WeierstrassCurve.ofJ1728_c₄
lemma ofJ1728_c₄ : (ofJ1728 R).c₄ = -48 
Arguments: (R : Type u) [CommRing R]
Goal: (WeierstrassCurve.ofJ1728 R).c₄ = -48
-- WeierstrassCurve.ofJ1728_Δ
lemma ofJ1728_Δ : (ofJ1728 R).Δ = -64 
Arguments: (R : Type u) [CommRing R]
Goal: (WeierstrassCurve.ofJ1728 R).Δ = -64
-- WeierstrassCurve.ofJ_c₄
lemma ofJ_c₄ : (ofJ j).c₄ = j * (j - 1728) ^ 3 
Arguments: {R : Type u} [CommRing R] (j : R)
Goal: (WeierstrassCurve.ofJ j).c₄ = j * (j - 1728) ^ 3
-- WeierstrassCurve.ofJ_Δ
lemma ofJ_Δ : (ofJ j).Δ = j ^ 2 * (j - 1728) ^ 9 
Arguments: {R : Type u} [CommRing R] (j : R)
Goal: (WeierstrassCurve.ofJ j).Δ = j ^ 2 * (j - 1728) ^ 9
-- EllipticCurve.coe_Δ'
@[ext]
structure EllipticCurve (R : Type u) [CommRing R] extends WeierstrassCurve R where
    Δ' : Rˣ
    coe_Δ' : Δ' = toWeierstrassCurve.Δ
Arguments: {R : Type u} [CommRing R] (self : EllipticCurve R)
Goal: ↑self.Δ' = self.Δ
-- EllipticCurve.twoTorsionPolynomial_disc_ne_zero
lemma twoTorsionPolynomial_disc_ne_zero [Nontrivial R] [Invertible (2 : R)] :
    E.twoTorsionPolynomial.disc ≠ 0 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) [Nontrivial R] [Invertible 2]
Goal: E.twoTorsionPolynomial.disc ≠ 0
-- EllipticCurve.variableChange_a₄
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def variableChange : EllipticCurve R 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).a₄ =
  ↑C.u⁻¹ ^ 4 * (E.a₄ - C.s * E.a₃ + 2 * C.r * E.a₂ - (C.t + C.r * C.s) * E.a₁ + 3 * C.r ^ 2 - 2 * C.s * C.t)
-- EllipticCurve.variableChange_toWeierstrassCurve
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def variableChange : EllipticCurve R 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).toWeierstrassCurve = E.variableChange C
-- EllipticCurve.variableChange_Δ'
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def variableChange : EllipticCurve R 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).Δ' = C.u⁻¹ ^ 12 * E.Δ'
-- EllipticCurve.variableChange_a₃
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def variableChange : EllipticCurve R 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).a₃ = ↑C.u⁻¹ ^ 3 * (E.a₃ + C.r * E.a₁ + 2 * C.t)
-- EllipticCurve.variableChange_a₁
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def variableChange : EllipticCurve R 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).a₁ = ↑C.u⁻¹ * (E.a₁ + 2 * C.s)
-- EllipticCurve.variableChange_a₂
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def variableChange : EllipticCurve R 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).a₂ = ↑C.u⁻¹ ^ 2 * (E.a₂ - C.s * E.a₁ + 3 * C.r - C.s ^ 2)
-- EllipticCurve.variableChange_a₆
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def variableChange : EllipticCurve R 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).a₆ =
  ↑C.u⁻¹ ^ 6 * (E.a₆ + C.r * E.a₄ + C.r ^ 2 * E.a₂ + C.r ^ 3 - C.t * E.a₃ - C.t ^ 2 - C.r * C.t * E.a₁)
-- EllipticCurve.variableChange_id
lemma variableChange_id : E.variableChange WeierstrassCurve.VariableChange.id = E 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R)
Goal: E.variableChange WeierstrassCurve.VariableChange.id = E
-- EllipticCurve.variableChange_comp
lemma variableChange_comp (C C' : WeierstrassCurve.VariableChange R) (E : EllipticCurve R) :
    E.variableChange (C.comp C') = (E.variableChange C').variableChange C 
Arguments: {R : Type u} [CommRing R] (C C' : WeierstrassCurve.VariableChange R) (E : EllipticCurve R)
Goal: E.variableChange (C.comp C') = (E.variableChange C').variableChange C
-- EllipticCurve.coe_variableChange_Δ'
lemma coe_variableChange_Δ' : (E.variableChange C).Δ' = C.u⁻¹ ^ 12 * E.Δ' 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).Δ' = C.u⁻¹ ^ 12 * E.Δ'
-- EllipticCurve.coe_inv_variableChange_Δ'
lemma coe_inv_variableChange_Δ' : (E.variableChange C).Δ'⁻¹ = C.u ^ 12 * E.Δ'⁻¹ 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).Δ'⁻¹ = C.u ^ 12 * E.Δ'⁻¹
-- EllipticCurve.variableChange_j
@[simp]
lemma variableChange_j : (E.variableChange C).j = E.j 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) (C : WeierstrassCurve.VariableChange R)
Goal: (E.variableChange C).j = E.j
-- EllipticCurve.map_a₆
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def map : EllipticCurve A 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (E.map φ).a₆ = φ E.a₆
-- EllipticCurve.map_a₄
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def map : EllipticCurve A 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (E.map φ).a₄ = φ E.a₄
-- EllipticCurve.map_a₂
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def map : EllipticCurve A 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (E.map φ).a₂ = φ E.a₂
-- EllipticCurve.map_toWeierstrassCurve
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def map : EllipticCurve A 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (E.map φ).toWeierstrassCurve = E.map φ
-- EllipticCurve.map_Δ'
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def map : EllipticCurve A 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (E.map φ).Δ' = (Units.map ↑φ) E.Δ'
-- EllipticCurve.map_a₁
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def map : EllipticCurve A 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (E.map φ).a₁ = φ E.a₁
-- EllipticCurve.map_a₃
@[simps (config := { rhsMd := .default }) a₁ a₂ a₃ a₄ a₆ Δ' toWeierstrassCurve]
def map : EllipticCurve A 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (E.map φ).a₃ = φ E.a₃
-- EllipticCurve.coe_map_Δ'
lemma coe_map_Δ' : (E.map φ).Δ' = φ E.Δ' 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: ↑(E.map φ).Δ' = φ ↑E.Δ'
-- EllipticCurve.coe_inv_map_Δ'
lemma coe_inv_map_Δ' : (E.map φ).Δ'⁻¹ = φ ↑E.Δ'⁻¹ 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: ↑(E.map φ).Δ'⁻¹ = φ ↑E.Δ'⁻¹
-- EllipticCurve.map_j
@[simp]
lemma map_j : (E.map φ).j = φ E.j 
Arguments: {R : Type u} [CommRing R] (E : EllipticCurve R) {A : Type v} [CommRing A] (φ : R →+* A)
Goal: (E.map φ).j = φ E.j
-- EllipticCurve.map_injective
lemma map_injective {φ : R →+* A} (hφ : Function.Injective φ) :
    Function.Injective <| map (φ := φ) 
Arguments: {R : Type u} [CommRing R] {A : Type v} [CommRing A] {φ : R →+* A} (hφ : Function.Injective ⇑φ)
Goal: Function.Injective fun E => E.map φ
-- EllipticCurve.ofJ0_j
lemma ofJ0_j [Invertible (3 : R)] : (ofJ0 R).j = 0 
Arguments: (R : Type u) [CommRing R] [Invertible 3]
Goal: (EllipticCurve.ofJ0 R).j = 0
-- EllipticCurve.ofJ1728_j
lemma ofJ1728_j [Invertible (2 : R)] : (ofJ1728 R).j = 1728 
Arguments: (R : Type u) [CommRing R] [Invertible 2]
Goal: (EllipticCurve.ofJ1728 R).j = 1728
-- EllipticCurve.ofJ'_j
lemma ofJ'_j (j : R) [Invertible j] [Invertible (j - 1728)] : (ofJ' j).j = j 
Arguments: {R : Type u} [CommRing R] (j : R) [Invertible j] [Invertible (j - 1728)]
Goal: (EllipticCurve.ofJ' j).j = j
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.Weierstrass.0.EllipticCurve.two_or_three_ne_zero
private lemma two_or_three_ne_zero : (2 : F) ≠ 0 ∨ (3 : F) ≠ 0 
Arguments: {F : Type u} [Field F]
Goal: 2 ≠ 0 ∨ 3 ≠ 0