ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- WeierstrassCurve.Affine.equation_negAdd
lemma equation_negAdd {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁) (h₂ : W.Equation x₂ y₂)
    (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂) : W.Equation
      (W.addX x₁ x₂ <| W.slope x₁ x₂ y₁ y₂) (W.negAddY x₁ x₂ y₁ <| W.slope x₁ x₂ y₁ y₂) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁) (h₂ : W.Equation x₂ y₂) (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂)
Goal: W.Equation (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) (W.negAddY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂))
-- WeierstrassCurve.Affine.equation_add
lemma equation_add {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁) (h₂ : W.Equation x₂ y₂)
    (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂) :
    W.Equation (W.addX x₁ x₂ <| W.slope x₁ x₂ y₁ y₂) (W.addY x₁ x₂ y₁ <| W.slope x₁ x₂ y₁ y₂) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁) (h₂ : W.Equation x₂ y₂) (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂)
Goal: W.Equation (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) (W.addY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂))
-- WeierstrassCurve.Affine.derivative_addPolynomial_slope
lemma derivative_addPolynomial_slope {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁)
    (h₂ : W.Equation x₂ y₂) (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂) :
    derivative (W.addPolynomial x₁ y₁ <| W.slope x₁ x₂ y₁ y₂) =
      -((X - C x₁) * (X - C x₂) + (X - C x₁) * (X - C (W.addX x₁ x₂ <| W.slope x₁ x₂ y₁ y₂)) +
          (X - C x₂) * (X - C (W.addX x₁ x₂ <| W.slope x₁ x₂ y₁ y₂))) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁) (h₂ : W.Equation x₂ y₂) (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂)
Goal: Polynomial.derivative (W.addPolynomial x₁ y₁ (W.slope x₁ x₂ y₁ y₂)) =
  -((Polynomial.X - Polynomial.C x₁) * (Polynomial.X - Polynomial.C x₂) +
        (Polynomial.X - Polynomial.C x₁) * (Polynomial.X - Polynomial.C (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂))) +
      (Polynomial.X - Polynomial.C x₂) * (Polynomial.X - Polynomial.C (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂))))
-- WeierstrassCurve.Affine.nonsingular_negAdd
lemma nonsingular_negAdd {x₁ x₂ y₁ y₂ : F} (h₁ : W.Nonsingular x₁ y₁) (h₂ : W.Nonsingular x₂ y₂)
    (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂) : W.Nonsingular
      (W.addX x₁ x₂ <| W.slope x₁ x₂ y₁ y₂) (W.negAddY x₁ x₂ y₁ <| W.slope x₁ x₂ y₁ y₂) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Nonsingular x₁ y₁) (h₂ : W.Nonsingular x₂ y₂) (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂)
Goal: W.Nonsingular (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) (W.negAddY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂))
-- WeierstrassCurve.Affine.nonsingular_add
lemma nonsingular_add {x₁ x₂ y₁ y₂ : F} (h₁ : W.Nonsingular x₁ y₁) (h₂ : W.Nonsingular x₂ y₂)
    (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂) :
    W.Nonsingular (W.addX x₁ x₂ <| W.slope x₁ x₂ y₁ y₂) (W.addY x₁ x₂ y₁ <| W.slope x₁ x₂ y₁ y₂) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Nonsingular x₁ y₁) (h₂ : W.Nonsingular x₂ y₂) (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂)
Goal: W.Nonsingular (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) (W.addY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂))
-- WeierstrassCurve.Affine.addX_eq_addX_negY_sub
lemma addX_eq_addX_negY_sub :
    W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂) = W.addX x₁ x₂ (W.slope x₁ x₂ y₁ (W.negY x₂ y₂))
      - (y₁ - W.negY x₁ y₁) * (y₂ - W.negY x₂ y₂) / (x₂ - x₁) ^ 2 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ : F} (y₁ y₂ : F) (hx : x₁ ≠ x₂)
Goal: W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂) =
  W.addX x₁ x₂ (W.slope x₁ x₂ y₁ (W.negY x₂ y₂)) - (y₁ - W.negY x₁ y₁) * (y₂ - W.negY x₂ y₂) / (x₂ - x₁) ^ 2
-- WeierstrassCurve.Affine.cyclic_sum_Y_mul_X_sub_X
lemma cyclic_sum_Y_mul_X_sub_X :
    letI x₃ := W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)
    y₁ * (x₂ - x₃) + y₂ * (x₃ - x₁) + W.negAddY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂) * (x₁ - x₂) = 0 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ : F} (y₁ y₂ : F) (hx : x₁ ≠ x₂)
Goal: y₁ * (x₂ - W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) + y₂ * (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂) - x₁) +
    W.negAddY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂) * (x₁ - x₂) =
  0
-- WeierstrassCurve.Affine.addY_sub_negY_addY
lemma addY_sub_negY_addY :
    letI x₃ := W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)
    letI y₃ := W.addY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂)
    y₃ - W.negY x₃ y₃ =
      ((y₂ - W.negY x₂ y₂) * (x₁ - x₃) - (y₁ - W.negY x₁ y₁) * (x₂ - x₃)) / (x₂ - x₁) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ : F} (y₁ y₂ : F) (hx : x₁ ≠ x₂)
Goal: W.addY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂) -
    W.negY (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) (W.addY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂)) =
  ((y₂ - W.negY x₂ y₂) * (x₁ - W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) -
      (y₁ - W.negY x₁ y₁) * (x₂ - W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂))) /
    (x₂ - x₁)
-- WeierstrassCurve.Affine.Point.zero_def
lemma zero_def : (zero : W.Point) = 0 
Arguments: {R : Type u} [CommRing R] {W : WeierstrassCurve.Affine R}
Goal: WeierstrassCurve.Affine.Point.zero = 0
-- WeierstrassCurve.Affine.Point.some_ne_zero
lemma some_ne_zero {x y : R} (h : W.Nonsingular x y) : some h ≠ 0 
Arguments: {R : Type u} [CommRing R] {W : WeierstrassCurve.Affine R} {x y : R} (h : W.Nonsingular x y)
Goal: WeierstrassCurve.Affine.Point.some h ≠ 0
-- WeierstrassCurve.Affine.Point.neg_def
lemma neg_def (P : W.Point) : P.neg = -P 
Arguments: {R : Type u} [CommRing R] {W : WeierstrassCurve.Affine R} (P : W.Point)
Goal: P.neg = -P
-- WeierstrassCurve.Affine.Point.neg_zero
@[simp]
lemma neg_zero : (-0 : W.Point) = 0 
Arguments: {R : Type u} [CommRing R] {W : WeierstrassCurve.Affine R}
Goal: -0 = 0
-- WeierstrassCurve.Affine.Point.neg_some
@[simp]
lemma neg_some {x y : R} (h : W.Nonsingular x y) : -some h = some (nonsingular_neg h) 
Arguments: {R : Type u} [CommRing R] {W : WeierstrassCurve.Affine R} {x y : R} (h : W.Nonsingular x y)
Goal: -WeierstrassCurve.Affine.Point.some h = WeierstrassCurve.Affine.Point.some ⋯
-- WeierstrassCurve.Affine.Point.add_def
lemma add_def (P Q : W.Point) : P.add Q = P + Q 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} (P Q : W.Point)
Goal: P.add Q = P + Q
-- WeierstrassCurve.Affine.Point.add_of_Y_eq
@[simp]
lemma add_of_Y_eq {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂}
    (hx : x₁ = x₂) (hy : y₁ = W.negY x₂ y₂) : some h₁ + some h₂ = 0 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂} (hx : x₁ = x₂) (hy : y₁ = W.negY x₂ y₂)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₂ = 0
-- WeierstrassCurve.Affine.Point.add_self_of_Y_eq
@[simp]
lemma add_self_of_Y_eq {x₁ y₁ : F} {h₁ : W.Nonsingular x₁ y₁} (hy : y₁ = W.negY x₁ y₁) :
    some h₁ + some h₁ = 0 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ y₁ : F} {h₁ : W.Nonsingular x₁ y₁} (hy : y₁ = W.negY x₁ y₁)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₁ = 0
-- WeierstrassCurve.Affine.Point.add_of_imp
@[simp]
lemma add_of_imp {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂}
    (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂) : some h₁ + some h₂ = some (nonsingular_add h₁ h₂ hxy) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂} (hxy : x₁ = x₂ → y₁ ≠ W.negY x₂ y₂)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₂ = WeierstrassCurve.Affine.Point.some ⋯
-- WeierstrassCurve.Affine.Point.add_of_Y_ne
@[simp]
lemma add_of_Y_ne {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂}
    (hy : y₁ ≠ W.negY x₂ y₂) :
    some h₁ + some h₂ = some (nonsingular_add h₁ h₂ fun _ ↦ hy) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂} (hy : y₁ ≠ W.negY x₂ y₂)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₂ = WeierstrassCurve.Affine.Point.some ⋯
-- WeierstrassCurve.Affine.Point.add_of_Y_ne'
lemma add_of_Y_ne' {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂}
    (hy : y₁ ≠ W.negY x₂ y₂) :
    some h₁ + some h₂ = -some (nonsingular_negAdd h₁ h₂ fun _ ↦ hy) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂} (hy : y₁ ≠ W.negY x₂ y₂)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₂ = -WeierstrassCurve.Affine.Point.some ⋯
-- WeierstrassCurve.Affine.Point.add_self_of_Y_ne
@[simp]
lemma add_self_of_Y_ne {x₁ y₁ : F} {h₁ : W.Nonsingular x₁ y₁} (hy : y₁ ≠ W.negY x₁ y₁) :
    some h₁ + some h₁ = some (nonsingular_add h₁ h₁ fun _ => hy) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ y₁ : F} {h₁ : W.Nonsingular x₁ y₁} (hy : y₁ ≠ W.negY x₁ y₁)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₁ = WeierstrassCurve.Affine.Point.some ⋯
-- WeierstrassCurve.Affine.Point.add_self_of_Y_ne'
lemma add_self_of_Y_ne' {x₁ y₁ : F} {h₁ : W.Nonsingular x₁ y₁} (hy : y₁ ≠ W.negY x₁ y₁) :
    some h₁ + some h₁ = -some (nonsingular_negAdd h₁ h₁ fun _ => hy) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ y₁ : F} {h₁ : W.Nonsingular x₁ y₁} (hy : y₁ ≠ W.negY x₁ y₁)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₁ = -WeierstrassCurve.Affine.Point.some ⋯
-- WeierstrassCurve.Affine.Point.add_of_X_ne
@[simp]
lemma add_of_X_ne {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂}
    (hx : x₁ ≠ x₂) : some h₁ + some h₂ = some (nonsingular_add h₁ h₂ fun h => (hx h).elim) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂} (hx : x₁ ≠ x₂)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₂ = WeierstrassCurve.Affine.Point.some ⋯
-- WeierstrassCurve.Affine.Point.add_of_X_ne'
lemma add_of_X_ne' {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂}
    (hx : x₁ ≠ x₂) : some h₁ + some h₂ = -some (nonsingular_negAdd h₁ h₂ fun h => (hx h).elim) 
Arguments: {F : Type u} [Field F] {W : WeierstrassCurve.Affine F} {x₁ x₂ y₁ y₂ : F} {h₁ : W.Nonsingular x₁ y₁} {h₂ : W.Nonsingular x₂ y₂} (hx : x₁ ≠ x₂)
Goal: WeierstrassCurve.Affine.Point.some h₁ + WeierstrassCurve.Affine.Point.some h₂ = -WeierstrassCurve.Affine.Point.some ⋯
-- WeierstrassCurve.Affine.map_polynomial
lemma map_polynomial : (W.map f).toAffine.polynomial = W.polynomial.map (mapRingHom f) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S)
Goal: (WeierstrassCurve.map W f).toAffine.polynomial = Polynomial.map (Polynomial.mapRingHom f) W.polynomial
-- WeierstrassCurve.Affine.evalEval_baseChange_polynomial_X_Y
lemma evalEval_baseChange_polynomial_X_Y :
    (W.baseChange R[X][Y]).toAffine.polynomial.evalEval (C X) Y = W.polynomial 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R)
Goal: Polynomial.evalEval (Polynomial.C Polynomial.X) Y (WeierstrassCurve.baseChange W R[X][Y]).toAffine.polynomial =
  W.polynomial
-- WeierstrassCurve.Affine.Equation.map
lemma Equation.map {x y : R} (h : W.Equation x y) : Equation (W.map f) (f x) (f y) 
Arguments: {R : Type u} [CommRing R] {W : WeierstrassCurve.Affine R} {S : Type v} [CommRing S] (f : R →+* S) {x y : R} (h : W.Equation x y)
Goal: WeierstrassCurve.Affine.Equation (WeierstrassCurve.map W f) (f x) (f y)
-- WeierstrassCurve.Affine.map_equation
lemma map_equation (hf : Function.Injective f) (x y : R) :
    (W.map f).toAffine.Equation (f x) (f y) ↔ W.Equation x y 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] {f : R →+* S} (hf : Function.Injective ⇑f) (x y : R)
Goal: (WeierstrassCurve.map W f).toAffine.Equation (f x) (f y) ↔ W.Equation x y
-- WeierstrassCurve.Affine.map_polynomialX
lemma map_polynomialX : (W.map f).toAffine.polynomialX = W.polynomialX.map (mapRingHom f) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S)
Goal: (WeierstrassCurve.map W f).toAffine.polynomialX = Polynomial.map (Polynomial.mapRingHom f) W.polynomialX
-- WeierstrassCurve.Affine.map_polynomialY
lemma map_polynomialY : (W.map f).toAffine.polynomialY = W.polynomialY.map (mapRingHom f) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S)
Goal: (WeierstrassCurve.map W f).toAffine.polynomialY = Polynomial.map (Polynomial.mapRingHom f) W.polynomialY
-- WeierstrassCurve.Affine.map_nonsingular
lemma map_nonsingular (hf : Function.Injective f) (x y : R) :
    (W.map f).toAffine.Nonsingular (f x) (f y) ↔ W.Nonsingular x y 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] {f : R →+* S} (hf : Function.Injective ⇑f) (x y : R)
Goal: (WeierstrassCurve.map W f).toAffine.Nonsingular (f x) (f y) ↔ W.Nonsingular x y
-- WeierstrassCurve.Affine.map_negPolynomial
lemma map_negPolynomial :
    (W.map f).toAffine.negPolynomial = W.negPolynomial.map (mapRingHom f) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S)
Goal: (WeierstrassCurve.map W f).toAffine.negPolynomial = Polynomial.map (Polynomial.mapRingHom f) W.negPolynomial
-- WeierstrassCurve.Affine.map_negY
lemma map_negY (x y : R) : (W.map f).toAffine.negY (f x) (f y) = f (W.negY x y) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S) (x y : R)
Goal: (WeierstrassCurve.map W f).toAffine.negY (f x) (f y) = f (W.negY x y)
-- WeierstrassCurve.Affine.map_linePolynomial
lemma map_linePolynomial (x y L : R) :
    linePolynomial (f x) (f y) (f L) = (linePolynomial x y L).map f 
Arguments: {R : Type u} [CommRing R] {S : Type v} [CommRing S] (f : R →+* S) (x y L : R)
Goal: WeierstrassCurve.Affine.linePolynomial (f x) (f y) (f L) =
  Polynomial.map f (WeierstrassCurve.Affine.linePolynomial x y L)
-- WeierstrassCurve.Affine.map_addPolynomial
lemma map_addPolynomial (x y L : R) :
    (W.map f).toAffine.addPolynomial (f x) (f y) (f L) = (W.addPolynomial x y L).map f 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S) (x y L : R)
Goal: (WeierstrassCurve.map W f).toAffine.addPolynomial (f x) (f y) (f L) = Polynomial.map f (W.addPolynomial x y L)
-- WeierstrassCurve.Affine.map_addX
lemma map_addX (x₁ x₂ L : R) :
    (W.map f).toAffine.addX (f x₁) (f x₂) (f L) = f (W.addX x₁ x₂ L) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S) (x₁ x₂ L : R)
Goal: (WeierstrassCurve.map W f).toAffine.addX (f x₁) (f x₂) (f L) = f (W.addX x₁ x₂ L)
-- WeierstrassCurve.Affine.map_negAddY
lemma map_negAddY (x₁ x₂ y₁ L : R) :
    (W.map f).toAffine.negAddY (f x₁) (f x₂) (f y₁) (f L) = f (W.negAddY x₁ x₂ y₁ L) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S) (x₁ x₂ y₁ L : R)
Goal: (WeierstrassCurve.map W f).toAffine.negAddY (f x₁) (f x₂) (f y₁) (f L) = f (W.negAddY x₁ x₂ y₁ L)
-- WeierstrassCurve.Affine.map_addY
lemma map_addY (x₁ x₂ y₁ L : R) :
    (W.map f).toAffine.addY (f x₁) (f x₂) (f y₁) (f L) = f (W.toAffine.addY x₁ x₂ y₁ L) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type v} [CommRing S] (f : R →+* S) (x₁ x₂ y₁ L : R)
Goal: (WeierstrassCurve.map W f).toAffine.addY (f x₁) (f x₂) (f y₁) (f L) = f ((WeierstrassCurve.toAffine W).addY x₁ x₂ y₁ L)
-- WeierstrassCurve.Affine.map_slope
lemma map_slope {F : Type u} [Field F] (W : Affine F) {K : Type v} [Field K] (f : F →+* K)
    (x₁ x₂ y₁ y₂ : F) : (W.map f).toAffine.slope (f x₁) (f x₂) (f y₁) (f y₂) =
      f (W.slope x₁ x₂ y₁ y₂) 
Arguments: {F : Type u} [Field F] (W : WeierstrassCurve.Affine F) {K : Type v} [Field K] (f : F →+* K) (x₁ x₂ y₁ y₂ : F)
Goal: (WeierstrassCurve.map W f).toAffine.slope (f x₁) (f x₂) (f y₁) (f y₂) = f (W.slope x₁ x₂ y₁ y₂)
-- WeierstrassCurve.Affine.baseChange_polynomial
lemma baseChange_polynomial : (W.baseChange B).toAffine.polynomial =
    (W.baseChange A).toAffine.polynomial.map (mapRingHom f) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B)
Goal: (WeierstrassCurve.baseChange W B).toAffine.polynomial =
  Polynomial.map (Polynomial.mapRingHom ↑f) (WeierstrassCurve.baseChange W A).toAffine.polynomial
-- WeierstrassCurve.Affine.baseChange_equation
lemma baseChange_equation (hf : Function.Injective f) (x y : A) :
    (W.baseChange B).toAffine.Equation (f x) (f y) ↔ (W.baseChange A).toAffine.Equation x y 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B) (hf : Function.Injective ⇑f) (x y : A)
Goal: (WeierstrassCurve.baseChange W B).toAffine.Equation (f x) (f y) ↔
  (WeierstrassCurve.baseChange W A).toAffine.Equation x y
-- WeierstrassCurve.Affine.baseChange_polynomialX
lemma baseChange_polynomialX : (W.baseChange B).toAffine.polynomialX =
    (W.baseChange A).toAffine.polynomialX.map (mapRingHom f) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B)
Goal: (WeierstrassCurve.baseChange W B).toAffine.polynomialX =
  Polynomial.map (Polynomial.mapRingHom ↑f) (WeierstrassCurve.baseChange W A).toAffine.polynomialX
-- WeierstrassCurve.Affine.baseChange_polynomialY
lemma baseChange_polynomialY : (W.baseChange B).toAffine.polynomialY =
    (W.baseChange A).toAffine.polynomialY.map (mapRingHom f) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B)
Goal: (WeierstrassCurve.baseChange W B).toAffine.polynomialY =
  Polynomial.map (Polynomial.mapRingHom ↑f) (WeierstrassCurve.baseChange W A).toAffine.polynomialY
-- WeierstrassCurve.Affine.baseChange_nonsingular
lemma baseChange_nonsingular (hf : Function.Injective f) (x y : A) :
    (W.baseChange B).toAffine.Nonsingular (f x) (f y) ↔
      (W.baseChange A).toAffine.Nonsingular x y 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] {f : A →ₐ[S] B} (hf : Function.Injective ⇑f) (x y : A)
Goal: (WeierstrassCurve.baseChange W B).toAffine.Nonsingular (f x) (f y) ↔
  (WeierstrassCurve.baseChange W A).toAffine.Nonsingular x y
-- WeierstrassCurve.Affine.baseChange_negPolynomial
lemma baseChange_negPolynomial :
    (W.baseChange B).toAffine.negPolynomial =
      (W.baseChange A).toAffine.negPolynomial.map (mapRingHom f) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B)
Goal: (WeierstrassCurve.baseChange W B).toAffine.negPolynomial =
  Polynomial.map (Polynomial.mapRingHom ↑f) (WeierstrassCurve.baseChange W A).toAffine.negPolynomial
-- WeierstrassCurve.Affine.baseChange_negY
lemma baseChange_negY (x y : A) :
    (W.baseChange B).toAffine.negY (f x) (f y) = f ((W.baseChange A).toAffine.negY x y) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B) (x y : A)
Goal: (WeierstrassCurve.baseChange W B).toAffine.negY (f x) (f y) = f ((WeierstrassCurve.baseChange W A).toAffine.negY x y)
-- WeierstrassCurve.Affine.baseChange_addPolynomial
lemma baseChange_addPolynomial (x y L : A) :
    (W.baseChange B).toAffine.addPolynomial (f x) (f y) (f L) =
      ((W.baseChange A).toAffine.addPolynomial x y L).map f 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B) (x y L : A)
Goal: (WeierstrassCurve.baseChange W B).toAffine.addPolynomial (f x) (f y) (f L) =
  Polynomial.map (↑f) ((WeierstrassCurve.baseChange W A).toAffine.addPolynomial x y L)
-- WeierstrassCurve.Affine.baseChange_addX
lemma baseChange_addX (x₁ x₂ L : A) :
    (W.baseChange B).toAffine.addX (f x₁) (f x₂) (f L) =
      f ((W.baseChange A).toAffine.addX x₁ x₂ L) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B) (x₁ x₂ L : A)
Goal: (WeierstrassCurve.baseChange W B).toAffine.addX (f x₁) (f x₂) (f L) =
  f ((WeierstrassCurve.baseChange W A).toAffine.addX x₁ x₂ L)
-- WeierstrassCurve.Affine.baseChange_negAddY
lemma baseChange_negAddY (x₁ x₂ y₁ L : A) :
    (W.baseChange B).toAffine.negAddY (f x₁) (f x₂) (f y₁) (f L) =
      f ((W.baseChange A).toAffine.negAddY x₁ x₂ y₁ L) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B) (x₁ x₂ y₁ L : A)
Goal: (WeierstrassCurve.baseChange W B).toAffine.negAddY (f x₁) (f x₂) (f y₁) (f L) =
  f ((WeierstrassCurve.baseChange W A).toAffine.negAddY x₁ x₂ y₁ L)
-- WeierstrassCurve.Affine.baseChange_addY
lemma baseChange_addY (x₁ x₂ y₁ L : A) :
    (W.baseChange B).toAffine.addY (f x₁) (f x₂) (f y₁) (f L) =
      f ((W.baseChange A).toAffine.addY x₁ x₂ y₁ L) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {A : Type u} [CommRing A] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {B : Type v} [CommRing B] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A →ₐ[S] B) (x₁ x₂ y₁ L : A)
Goal: (WeierstrassCurve.baseChange W B).toAffine.addY (f x₁) (f x₂) (f y₁) (f L) =
  f ((WeierstrassCurve.baseChange W A).toAffine.addY x₁ x₂ y₁ L)
-- WeierstrassCurve.Affine.baseChange_slope
lemma baseChange_slope (x₁ x₂ y₁ y₂ : F) :
    (W.baseChange K).toAffine.slope (f x₁) (f x₂) (f y₁) (f y₂) =
      f ((W.baseChange F).toAffine.slope x₁ x₂ y₁ y₂) 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {F : Type u} [Field F] [Algebra R F] [Algebra S F] [IsScalarTower R S F] {K : Type v} [Field K] [Algebra R K] [Algebra S K] [IsScalarTower R S K] (f : F →ₐ[S] K) (x₁ x₂ y₁ y₂ : F)
Goal: (WeierstrassCurve.baseChange W K).toAffine.slope (f x₁) (f x₂) (f y₁) (f y₂) =
  f ((WeierstrassCurve.baseChange W F).toAffine.slope x₁ x₂ y₁ y₂)
-- WeierstrassCurve.Affine.Point.map_zero
lemma map_zero : map W f (0 : W⟮F⟯) = 0 
Arguments: {R : Type r} [CommRing R] (W : WeierstrassCurve.Affine R) {S : Type s} [CommRing S] [Algebra R S] {F : Type u} [Field F] [Algebra R F] [Algebra S F] [IsScalarTower R S F] {K : Type v} [Field K] [Algebra R K] [Algebra S K] [IsScalarTower R S K] (f : F →ₐ[S] K)
Goal: (WeierstrassCurve.Affine.Point.map W f) 0 = 0