ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Int.clog_zpow
theorem clog_zpow {b : ℕ} (hb : 1 < b) (z : ℤ) : clog b ((b : R) ^ z : R) = z 
Arguments: {R : Type u_1} [LinearOrderedSemifield R] [FloorSemiring R] {b : ℕ} (hb : 1 < b) (z : ℤ)
Goal: Int.clog b (↑b ^ z) = z
-- Int.clog_mono_right
@[mono]
theorem clog_mono_right {b : ℕ} {r₁ r₂ : R} (h₀ : 0 < r₁) (h : r₁ ≤ r₂) :
    clog b r₁ ≤ clog b r₂ 
Arguments: {R : Type u_1} [LinearOrderedSemifield R] [FloorSemiring R] {b : ℕ} {r₁ r₂ : R} (h₀ : 0 < r₁) (h : r₁ ≤ r₂)
Goal: Int.clog b r₁ ≤ Int.clog b r₂
-- Int.zpow_lt_iff_lt_clog
theorem zpow_lt_iff_lt_clog {b : ℕ} (hb : 1 < b) {x : ℤ} {r : R} (hr : 0 < r) :
    (b : R) ^ x < r ↔ x < clog b r 
Arguments: {R : Type u_1} [LinearOrderedSemifield R] [FloorSemiring R] {b : ℕ} (hb : 1 < b) {x : ℤ} {r : R} (hr : 0 < r)
Goal: ↑b ^ x < r ↔ x < Int.clog b r
-- Int.le_zpow_iff_clog_le
theorem le_zpow_iff_clog_le {b : ℕ} (hb : 1 < b) {x : ℤ} {r : R} (hr : 0 < r) :
    r ≤ (b : R) ^ x ↔ clog b r ≤ x 
Arguments: {R : Type u_1} [LinearOrderedSemifield R] [FloorSemiring R] {b : ℕ} (hb : 1 < b) {x : ℤ} {r : R} (hr : 0 < r)
Goal: r ≤ ↑b ^ x ↔ Int.clog b r ≤ x
-- Int.addSubmonoid_closure_range_pow
@[simp] lemma addSubmonoid_closure_range_pow {n : ℕ} (hn : Even n) :
    closure (range fun x : ℤ ↦ x ^ n) = nonneg _ 
Arguments: {n : ℕ} (hn : Even n)
Goal: AddSubmonoid.closure (Set.range fun x => x ^ n) = AddSubmonoid.nonneg ℤ
-- Int.addSubmonoid_closure_range_mul_self
@[simp]
lemma addSubmonoid_closure_range_mul_self : closure (range fun x : ℤ ↦ x * x) = nonneg _ 
Goal: AddSubmonoid.closure (Set.range fun x => x * x) = AddSubmonoid.nonneg ℤ
-- Int.cast_div_charZero
@[simp, norm_cast]
theorem cast_div_charZero {k : Type*} [DivisionRing k] [CharZero k] {m n : ℤ} (n_dvd : n ∣ m) :
    ((m / n : ℤ) : k) = m / n 
Arguments: {k : Type u_3} [DivisionRing k] [CharZero k] {m n : ℤ} (n_dvd : n ∣ m)
Goal: ↑(m / n) = ↑m / ↑n
-- Int.cast_div_ofNat_charZero
@[simp, norm_cast]
theorem cast_div_ofNat_charZero {k : Type*} [DivisionRing k] [CharZero k] {m n : ℕ}
    (n_dvd : n ∣ m) : (((m : ℤ) / (n : ℤ) : ℤ) : k) = m / n 
Arguments: {k : Type u_3} [DivisionRing k] [CharZero k] {m n : ℕ} (n_dvd : n ∣ m)
Goal: ↑(↑m / ↑n) = ↑m / ↑n
-- RingHom.injective_int
theorem RingHom.injective_int {α : Type*} [NonAssocRing α] (f : ℤ →+* α) [CharZero α] :
    Function.Injective f 
Arguments: {α : Type u_3} [NonAssocRing α] (f : ℤ →+* α) [CharZero α]
Goal: Function.Injective ⇑f
-- Function.support_intCast
lemma support_intCast (hn : n ≠ 0) : support (n : α → β) = univ 
Arguments: {α : Type u_1} {β : Type u_2} [AddGroupWithOne β] [CharZero β] {n : ℤ} (hn : n ≠ 0)
Goal: Function.support ↑n = Set.univ
-- Function.mulSupport_intCast
lemma mulSupport_intCast (hn : n ≠ 1) : mulSupport (n : α → β) = univ 
Arguments: {α : Type u_1} {β : Type u_2} [AddGroupWithOne β] [CharZero β] {n : ℤ} (hn : n ≠ 1)
Goal: Function.mulSupport ↑n = Set.univ
-- WeierstrassCurve.natDegree_Ψ₂Sq_le
lemma natDegree_Ψ₂Sq_le : W.Ψ₂Sq.natDegree ≤ 3 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.Ψ₂Sq.natDegree ≤ 3
-- WeierstrassCurve.coeff_Ψ₂Sq
@[simp]
lemma coeff_Ψ₂Sq : W.Ψ₂Sq.coeff 3 = 4 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.Ψ₂Sq.coeff 3 = 4
-- WeierstrassCurve.coeff_Ψ₂Sq_ne_zero
lemma coeff_Ψ₂Sq_ne_zero (h : (4 : R) ≠ 0) : W.Ψ₂Sq.coeff 3 ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 4 ≠ 0)
Goal: W.Ψ₂Sq.coeff 3 ≠ 0
-- WeierstrassCurve.natDegree_Ψ₂Sq
@[simp]
lemma natDegree_Ψ₂Sq (h : (4 : R) ≠ 0) : W.Ψ₂Sq.natDegree = 3 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 4 ≠ 0)
Goal: W.Ψ₂Sq.natDegree = 3
-- WeierstrassCurve.natDegree_Ψ₂Sq_pos
lemma natDegree_Ψ₂Sq_pos (h : (4 : R) ≠ 0) : 0 < W.Ψ₂Sq.natDegree 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 4 ≠ 0)
Goal: 0 < W.Ψ₂Sq.natDegree
-- WeierstrassCurve.leadingCoeff_Ψ₂Sq
@[simp]
lemma leadingCoeff_Ψ₂Sq (h : (4 : R) ≠ 0) : W.Ψ₂Sq.leadingCoeff = 4 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 4 ≠ 0)
Goal: W.Ψ₂Sq.leadingCoeff = 4
-- WeierstrassCurve.Ψ₂Sq_ne_zero
lemma Ψ₂Sq_ne_zero (h : (4 : R) ≠ 0) : W.Ψ₂Sq ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 4 ≠ 0)
Goal: W.Ψ₂Sq ≠ 0
-- WeierstrassCurve.natDegree_Ψ₃_le
lemma natDegree_Ψ₃_le : W.Ψ₃.natDegree ≤ 4 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.Ψ₃.natDegree ≤ 4
-- WeierstrassCurve.coeff_Ψ₃
@[simp]
lemma coeff_Ψ₃ : W.Ψ₃.coeff 4 = 3 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.Ψ₃.coeff 4 = 3
-- WeierstrassCurve.coeff_Ψ₃_ne_zero
lemma coeff_Ψ₃_ne_zero (h : (3 : R) ≠ 0) : W.Ψ₃.coeff 4 ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 3 ≠ 0)
Goal: W.Ψ₃.coeff 4 ≠ 0
-- WeierstrassCurve.natDegree_Ψ₃
@[simp]
lemma natDegree_Ψ₃ (h : (3 : R) ≠ 0) : W.Ψ₃.natDegree = 4 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 3 ≠ 0)
Goal: W.Ψ₃.natDegree = 4
-- WeierstrassCurve.natDegree_Ψ₃_pos
lemma natDegree_Ψ₃_pos (h : (3 : R) ≠ 0) : 0 < W.Ψ₃.natDegree 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 3 ≠ 0)
Goal: 0 < W.Ψ₃.natDegree
-- WeierstrassCurve.leadingCoeff_Ψ₃
@[simp]
lemma leadingCoeff_Ψ₃ (h : (3 : R) ≠ 0) : W.Ψ₃.leadingCoeff = 3 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 3 ≠ 0)
Goal: W.Ψ₃.leadingCoeff = 3
-- WeierstrassCurve.Ψ₃_ne_zero
lemma Ψ₃_ne_zero (h : (3 : R) ≠ 0) : W.Ψ₃ ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 3 ≠ 0)
Goal: W.Ψ₃ ≠ 0
-- WeierstrassCurve.natDegree_preΨ₄_le
lemma natDegree_preΨ₄_le : W.preΨ₄.natDegree ≤ 6 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.preΨ₄.natDegree ≤ 6
-- WeierstrassCurve.coeff_preΨ₄
@[simp]
lemma coeff_preΨ₄ : W.preΨ₄.coeff 6 = 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R)
Goal: W.preΨ₄.coeff 6 = 2
-- WeierstrassCurve.coeff_preΨ₄_ne_zero
lemma coeff_preΨ₄_ne_zero (h : (2 : R) ≠ 0) : W.preΨ₄.coeff 6 ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 2 ≠ 0)
Goal: W.preΨ₄.coeff 6 ≠ 0
-- WeierstrassCurve.natDegree_preΨ₄
@[simp]
lemma natDegree_preΨ₄ (h : (2 : R) ≠ 0) : W.preΨ₄.natDegree = 6 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 2 ≠ 0)
Goal: W.preΨ₄.natDegree = 6
-- WeierstrassCurve.natDegree_preΨ₄_pos
lemma natDegree_preΨ₄_pos (h : (2 : R) ≠ 0) : 0 < W.preΨ₄.natDegree 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 2 ≠ 0)
Goal: 0 < W.preΨ₄.natDegree
-- WeierstrassCurve.leadingCoeff_preΨ₄
@[simp]
lemma leadingCoeff_preΨ₄ (h : (2 : R) ≠ 0) : W.preΨ₄.leadingCoeff = 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 2 ≠ 0)
Goal: W.preΨ₄.leadingCoeff = 2
-- WeierstrassCurve.preΨ₄_ne_zero
lemma preΨ₄_ne_zero (h : (2 : R) ≠ 0) : W.preΨ₄ ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (h : 2 ≠ 0)
Goal: W.preΨ₄ ≠ 0
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.DivisionPolynomial.Degree.0.WeierstrassCurve.expDegree_cast
private lemma expDegree_cast {n : ℕ} (hn : n ≠ 0) :
    2 * (expDegree n : ℤ) = n ^ 2 - if Even n then 4 else 1 
Arguments: {n : ℕ} (hn : n ≠ 0)
Goal: 2 * ↑(WeierstrassCurve.expDegree n) = ↑n ^ 2 - if Even n then 4 else 1
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.DivisionPolynomial.Degree.0.WeierstrassCurve.expDegree_rec
private lemma expDegree_rec (m : ℕ) :
    (expDegree (2 * (m + 3)) = 2 * expDegree (m + 2) + expDegree (m + 3) + expDegree (m + 5) ∧
    expDegree (2 * (m + 3)) = expDegree (m + 1) + expDegree (m + 3) + 2 * expDegree (m + 4)) ∧
    (expDegree (2 * (m + 2) + 1) =
      expDegree (m + 4) + 3 * expDegree (m + 2) + (if Even m then 2 * 3 else 0) ∧
    expDegree (2 * (m + 2) + 1) =
      expDegree (m + 1) + 3 * expDegree (m + 3) + (if Even m then 0 else 2 * 3)) 
Arguments: (m : ℕ)
Goal: (WeierstrassCurve.expDegree (2 * (m + 3)) =
      2 * WeierstrassCurve.expDegree (m + 2) + WeierstrassCurve.expDegree (m + 3) + WeierstrassCurve.expDegree (m + 5) ∧
    WeierstrassCurve.expDegree (2 * (m + 3)) =
      WeierstrassCurve.expDegree (m + 1) + WeierstrassCurve.expDegree (m + 3) +
        2 * WeierstrassCurve.expDegree (m + 4)) ∧
  (WeierstrassCurve.expDegree (2 * (m + 2) + 1) =
      WeierstrassCurve.expDegree (m + 4) + 3 * WeierstrassCurve.expDegree (m + 2) + if Even m then 2 * 3 else 0) ∧
    WeierstrassCurve.expDegree (2 * (m + 2) + 1) =
      WeierstrassCurve.expDegree (m + 1) + 3 * WeierstrassCurve.expDegree (m + 3) + if Even m then 0 else 2 * 3
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.DivisionPolynomial.Degree.0.WeierstrassCurve.expCoeff_cast
private lemma expCoeff_cast (n : ℕ) : (expCoeff n : ℚ) = if Even n then (n / 2 : ℚ) else n 
Arguments: (n : ℕ)
Goal: ↑(WeierstrassCurve.expCoeff n) = if Even n then ↑n / 2 else ↑n
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.DivisionPolynomial.Degree.0.WeierstrassCurve.expCoeff_rec
private lemma expCoeff_rec (m : ℕ) :
    (expCoeff (2 * (m + 3)) =
      expCoeff (m + 2) ^ 2 * expCoeff (m + 3) * expCoeff (m + 5) -
        expCoeff (m + 1) * expCoeff (m + 3) * expCoeff (m + 4) ^ 2) ∧
    (expCoeff (2 * (m + 2) + 1) =
      expCoeff (m + 4) * expCoeff (m + 2) ^ 3 * (if Even m then 4 ^ 2 else 1) -
        expCoeff (m + 1) * expCoeff (m + 3) ^ 3 * (if Even m then 1 else 4 ^ 2)) 
Arguments: (m : ℕ)
Goal: WeierstrassCurve.expCoeff (2 * (m + 3)) =
    WeierstrassCurve.expCoeff (m + 2) ^ 2 * WeierstrassCurve.expCoeff (m + 3) * WeierstrassCurve.expCoeff (m + 5) -
      WeierstrassCurve.expCoeff (m + 1) * WeierstrassCurve.expCoeff (m + 3) * WeierstrassCurve.expCoeff (m + 4) ^ 2 ∧
  WeierstrassCurve.expCoeff (2 * (m + 2) + 1) =
    (WeierstrassCurve.expCoeff (m + 4) * WeierstrassCurve.expCoeff (m + 2) ^ 3 * if Even m then 4 ^ 2 else 1) -
      WeierstrassCurve.expCoeff (m + 1) * WeierstrassCurve.expCoeff (m + 3) ^ 3 * if Even m then 1 else 4 ^ 2
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.DivisionPolynomial.Degree.0.WeierstrassCurve.natDegree_coeff_preΨ'
private lemma natDegree_coeff_preΨ' (n : ℕ) :
    (W.preΨ' n).natDegree ≤ expDegree n ∧ (W.preΨ' n).coeff (expDegree n) = expCoeff n 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℕ)
Goal: (W.preΨ' n).natDegree ≤ WeierstrassCurve.expDegree n ∧
  (W.preΨ' n).coeff (WeierstrassCurve.expDegree n) = ↑(WeierstrassCurve.expCoeff n)
-- WeierstrassCurve.natDegree_preΨ'_le
lemma natDegree_preΨ'_le (n : ℕ) : (W.preΨ' n).natDegree ≤ (n ^ 2 - if Even n then 4 else 1) / 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℕ)
Goal: (W.preΨ' n).natDegree ≤ (n ^ 2 - if Even n then 4 else 1) / 2
-- WeierstrassCurve.coeff_preΨ'
@[simp]
lemma coeff_preΨ' (n : ℕ) : (W.preΨ' n).coeff ((n ^ 2 - if Even n then 4 else 1) / 2) =
    if Even n then n / 2 else n 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℕ)
Goal: (W.preΨ' n).coeff ((n ^ 2 - if Even n then 4 else 1) / 2) = ↑(if Even n then n / 2 else n)
-- WeierstrassCurve.coeff_preΨ'_ne_zero
lemma coeff_preΨ'_ne_zero {n : ℕ} (h : (n : R) ≠ 0) :
    (W.preΨ' n).coeff ((n ^ 2 - if Even n then 4 else 1) / 2) ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {n : ℕ} (h : ↑n ≠ 0)
Goal: (W.preΨ' n).coeff ((n ^ 2 - if Even n then 4 else 1) / 2) ≠ 0
-- WeierstrassCurve.natDegree_preΨ'
@[simp]
lemma natDegree_preΨ' {n : ℕ} (h : (n : R) ≠ 0) :
    (W.preΨ' n).natDegree = (n ^ 2 - if Even n then 4 else 1) / 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {n : ℕ} (h : ↑n ≠ 0)
Goal: (W.preΨ' n).natDegree = (n ^ 2 - if Even n then 4 else 1) / 2
-- WeierstrassCurve.natDegree_preΨ'_pos
lemma natDegree_preΨ'_pos {n : ℕ} (hn : 2 < n) (h : (n : R) ≠ 0) : 0 < (W.preΨ' n).natDegree 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {n : ℕ} (hn : 2 < n) (h : ↑n ≠ 0)
Goal: 0 < (W.preΨ' n).natDegree
-- WeierstrassCurve.leadingCoeff_preΨ'
@[simp]
lemma leadingCoeff_preΨ' {n : ℕ} (h : (n : R) ≠ 0) :
    (W.preΨ' n).leadingCoeff = if Even n then n / 2 else n 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {n : ℕ} (h : ↑n ≠ 0)
Goal: (W.preΨ' n).leadingCoeff = ↑(if Even n then n / 2 else n)
-- WeierstrassCurve.preΨ'_ne_zero
lemma preΨ'_ne_zero [Nontrivial R] {n : ℕ} (h : (n : R) ≠ 0) : W.preΨ' n ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Nontrivial R] {n : ℕ} (h : ↑n ≠ 0)
Goal: W.preΨ' n ≠ 0
-- WeierstrassCurve.natDegree_preΨ_le
lemma natDegree_preΨ_le (n : ℤ) : (W.preΨ n).natDegree ≤
    (n.natAbs ^ 2 - if Even n then 4 else 1) / 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℤ)
Goal: (W.preΨ n).natDegree ≤ (n.natAbs ^ 2 - if Even n then 4 else 1) / 2
-- WeierstrassCurve.coeff_preΨ
@[simp]
lemma coeff_preΨ (n : ℤ) : (W.preΨ n).coeff ((n.natAbs ^ 2 - if Even n then 4 else 1) / 2) =
    if Even n then n / 2 else n 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℤ)
Goal: (W.preΨ n).coeff ((n.natAbs ^ 2 - if Even n then 4 else 1) / 2) = ↑(if Even n then n / 2 else n)
-- WeierstrassCurve.coeff_preΨ_ne_zero
lemma coeff_preΨ_ne_zero {n : ℤ} (h : (n : R) ≠ 0) :
    (W.preΨ n).coeff ((n.natAbs ^ 2 - if Even n then 4 else 1) / 2) ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {n : ℤ} (h : ↑n ≠ 0)
Goal: (W.preΨ n).coeff ((n.natAbs ^ 2 - if Even n then 4 else 1) / 2) ≠ 0
-- WeierstrassCurve.natDegree_preΨ
@[simp]
lemma natDegree_preΨ {n : ℤ} (h : (n : R) ≠ 0) :
    (W.preΨ n).natDegree = (n.natAbs ^ 2 - if Even n then 4 else 1) / 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {n : ℤ} (h : ↑n ≠ 0)
Goal: (W.preΨ n).natDegree = (n.natAbs ^ 2 - if Even n then 4 else 1) / 2
-- WeierstrassCurve.natDegree_preΨ_pos
lemma natDegree_preΨ_pos {n : ℤ} (hn : 2 < n.natAbs) (h : (n : R) ≠ 0) :
    0 < (W.preΨ n).natDegree 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {n : ℤ} (hn : 2 < n.natAbs) (h : ↑n ≠ 0)
Goal: 0 < (W.preΨ n).natDegree
-- WeierstrassCurve.leadingCoeff_preΨ
@[simp]
lemma leadingCoeff_preΨ {n : ℤ} (h : (n : R) ≠ 0) :
    (W.preΨ n).leadingCoeff = if Even n then n / 2 else n 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) {n : ℤ} (h : ↑n ≠ 0)
Goal: (W.preΨ n).leadingCoeff = ↑(if Even n then n / 2 else n)
-- WeierstrassCurve.preΨ_ne_zero
lemma preΨ_ne_zero [Nontrivial R] {n : ℤ} (h : (n : R) ≠ 0) : W.preΨ n ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Nontrivial R] {n : ℤ} (h : ↑n ≠ 0)
Goal: W.preΨ n ≠ 0
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.DivisionPolynomial.Degree.0.WeierstrassCurve.natDegree_coeff_ΨSq_ofNat
private lemma natDegree_coeff_ΨSq_ofNat (n : ℕ) :
    (W.ΨSq n).natDegree ≤ n ^ 2 - 1 ∧ (W.ΨSq n).coeff (n ^ 2 - 1) = (n ^ 2 : ℤ) 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℕ)
Goal: (W.ΨSq ↑n).natDegree ≤ n ^ 2 - 1 ∧ (W.ΨSq ↑n).coeff (n ^ 2 - 1) = ↑(↑n ^ 2)
-- WeierstrassCurve.natDegree_ΨSq_le
lemma natDegree_ΨSq_le (n : ℤ) : (W.ΨSq n).natDegree ≤ n.natAbs ^ 2 - 1 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℤ)
Goal: (W.ΨSq n).natDegree ≤ n.natAbs ^ 2 - 1
-- WeierstrassCurve.coeff_ΨSq
@[simp]
lemma coeff_ΨSq (n : ℤ) : (W.ΨSq n).coeff (n.natAbs ^ 2 - 1) = n ^ 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℤ)
Goal: (W.ΨSq n).coeff (n.natAbs ^ 2 - 1) = ↑n ^ 2
-- WeierstrassCurve.coeff_ΨSq_ne_zero
lemma coeff_ΨSq_ne_zero [NoZeroDivisors R] {n : ℤ} (h : (n : R) ≠ 0) :
    (W.ΨSq n).coeff (n.natAbs ^ 2 - 1) ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [NoZeroDivisors R] {n : ℤ} (h : ↑n ≠ 0)
Goal: (W.ΨSq n).coeff (n.natAbs ^ 2 - 1) ≠ 0
-- WeierstrassCurve.natDegree_ΨSq
@[simp]
lemma natDegree_ΨSq [NoZeroDivisors R] {n : ℤ} (h : (n : R) ≠ 0) :
    (W.ΨSq n).natDegree = n.natAbs ^ 2 - 1 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [NoZeroDivisors R] {n : ℤ} (h : ↑n ≠ 0)
Goal: (W.ΨSq n).natDegree = n.natAbs ^ 2 - 1
-- WeierstrassCurve.natDegree_ΨSq_pos
lemma natDegree_ΨSq_pos [NoZeroDivisors R] {n : ℤ} (hn : 1 < n.natAbs) (h : (n : R) ≠ 0) :
    0 < (W.ΨSq n).natDegree 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [NoZeroDivisors R] {n : ℤ} (hn : 1 < n.natAbs) (h : ↑n ≠ 0)
Goal: 0 < (W.ΨSq n).natDegree
-- WeierstrassCurve.leadingCoeff_ΨSq
@[simp]
lemma leadingCoeff_ΨSq [NoZeroDivisors R] {n : ℤ} (h : (n : R) ≠ 0) :
    (W.ΨSq n).leadingCoeff = n ^ 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [NoZeroDivisors R] {n : ℤ} (h : ↑n ≠ 0)
Goal: (W.ΨSq n).leadingCoeff = ↑n ^ 2
-- WeierstrassCurve.ΨSq_ne_zero
lemma ΨSq_ne_zero [NoZeroDivisors R] {n : ℤ} (h : (n : R) ≠ 0) : W.ΨSq n ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [NoZeroDivisors R] {n : ℤ} (h : ↑n ≠ 0)
Goal: W.ΨSq n ≠ 0
-- _private.Mathlib.AlgebraicGeometry.EllipticCurve.DivisionPolynomial.Degree.0.WeierstrassCurve.natDegree_coeff_Φ_ofNat
private lemma natDegree_coeff_Φ_ofNat (n : ℕ) :
    (W.Φ n).natDegree ≤ n ^ 2 ∧ (W.Φ n).coeff (n ^ 2) = 1 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℕ)
Goal: (W.Φ ↑n).natDegree ≤ n ^ 2 ∧ (W.Φ ↑n).coeff (n ^ 2) = 1
-- WeierstrassCurve.natDegree_Φ_le
lemma natDegree_Φ_le (n : ℤ) : (W.Φ n).natDegree ≤ n.natAbs ^ 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℤ)
Goal: (W.Φ n).natDegree ≤ n.natAbs ^ 2
-- WeierstrassCurve.coeff_Φ
@[simp]
lemma coeff_Φ (n : ℤ) : (W.Φ n).coeff (n.natAbs ^ 2) = 1 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) (n : ℤ)
Goal: (W.Φ n).coeff (n.natAbs ^ 2) = 1
-- WeierstrassCurve.coeff_Φ_ne_zero
lemma coeff_Φ_ne_zero [Nontrivial R] (n : ℤ) : (W.Φ n).coeff (n.natAbs ^ 2) ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Nontrivial R] (n : ℤ)
Goal: (W.Φ n).coeff (n.natAbs ^ 2) ≠ 0
-- WeierstrassCurve.natDegree_Φ
@[simp]
lemma natDegree_Φ [Nontrivial R] (n : ℤ) : (W.Φ n).natDegree = n.natAbs ^ 2 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Nontrivial R] (n : ℤ)
Goal: (W.Φ n).natDegree = n.natAbs ^ 2
-- WeierstrassCurve.natDegree_Φ_pos
lemma natDegree_Φ_pos [Nontrivial R] {n : ℤ} (hn : n ≠ 0) : 0 < (W.Φ n).natDegree 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Nontrivial R] {n : ℤ} (hn : n ≠ 0)
Goal: 0 < (W.Φ n).natDegree
-- WeierstrassCurve.leadingCoeff_Φ
@[simp]
lemma leadingCoeff_Φ [Nontrivial R] (n : ℤ) : (W.Φ n).leadingCoeff = 1 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Nontrivial R] (n : ℤ)
Goal: (W.Φ n).leadingCoeff = 1
-- WeierstrassCurve.Φ_ne_zero
lemma Φ_ne_zero [Nontrivial R] (n : ℤ) : W.Φ n ≠ 0 
Arguments: {R : Type u} [CommRing R] (W : WeierstrassCurve R) [Nontrivial R] (n : ℤ)
Goal: W.Φ n ≠ 0
-- Int.sqrt_eq
theorem sqrt_eq (n : ℤ) : sqrt (n * n) = n.natAbs 
Arguments: (n : ℤ)
Goal: Int.sqrt (n * n) = ↑n.natAbs
-- Int.exists_mul_self
theorem exists_mul_self (x : ℤ) : (∃ n, n * n = x) ↔ sqrt x * sqrt x = x 
Arguments: (x : ℤ)
Goal: (∃ n, n * n = x) ↔ Int.sqrt x * Int.sqrt x = x
-- Int.sqrt_nonneg
theorem sqrt_nonneg (n : ℤ) : 0 ≤ sqrt n 
Arguments: (n : ℤ)
Goal: 0 ≤ Int.sqrt n
-- Int.sqrt_natCast
@[simp, norm_cast]
theorem sqrt_natCast (n : ℕ) : Int.sqrt (n : ℤ) = Nat.sqrt n 
Arguments: (n : ℕ)
Goal: Int.sqrt ↑n = ↑n.sqrt
-- Int.sqrt_ofNat
@[simp]
theorem sqrt_ofNat (n : ℕ) : Int.sqrt (no_index (OfNat.ofNat n) : ℤ) = Nat.sqrt (OfNat.ofNat n) 
Arguments: (n : ℕ)
Goal: Int.sqrt (OfNat.ofNat n) = ↑(Nat.sqrt (OfNat.ofNat n))
-- Erased.out_proof
theorem out_proof {p : Prop} (a : Erased p) : p 
Arguments: {p : Prop} (a : Erased p)
Goal: p
-- Erased.out_mk
@[simp]
theorem out_mk {α} (a : α) : (mk a).out = a 
Arguments: {α : Sort u_1} (a : α)
Goal: (Erased.mk a).out = a
-- Erased.mk_out
@[simp]
theorem mk_out {α} : ∀ a : Erased α, mk (out a) = a
  
Arguments: {α : Sort u_1} (a : Erased α)
Goal: Erased.mk a.out = a
-- Erased.out_inj
@[ext]
theorem out_inj {α} (a b : Erased α) (h : a.out = b.out) : a = b 
Arguments: {α : Sort u_1} (a b : Erased α) (h : a.out = b.out)
Goal: a = b
-- Erased.nonempty_iff
@[simp]
theorem nonempty_iff {α} : Nonempty (Erased α) ↔ Nonempty α 
Arguments: {α : Sort u_1}
Goal: Nonempty (Erased α) ↔ Nonempty α
-- Erased.bind_eq_out
@[simp]
theorem bind_eq_out {α β} (a f) : @bind α β a f = f a.out 
Arguments: {α : Sort u_1} {β : Sort u_2} (a : Erased α) (f : α → Erased β)
Goal: a.bind f = f a.out
-- Erased.join_eq_out
@[simp]
theorem join_eq_out {α} (a) : @join α a = a.out 
Arguments: {α : Sort u_1} (a : Erased (Erased α))
Goal: a.join = a.out
-- Erased.map_out
@[simp]
theorem map_out {α β} {f : α → β} (a : Erased α) : (a.map f).out = f a.out 
Arguments: {α : Sort u_1} {β : Sort u_2} {f : α → β} (a : Erased α)
Goal: (Erased.map f a).out = f a.out
-- Erased.pure_def
@[simp]
theorem pure_def {α} : (pure : α → Erased α) = @mk _ 
Arguments: {α : Type u_1}
Goal: pure = Erased.mk
-- Erased.bind_def
@[simp]
theorem bind_def {α β} : ((· >>= ·) : Erased α → (α → Erased β) → Erased β) = @bind _ _ 
Arguments: {α β : Type u_1}
Goal: (fun x x_1 => x >>= x_1) = Erased.bind
-- Erased.map_def
@[simp]
theorem map_def {α β} : ((· <$> ·) : (α → β) → Erased α → Erased β) = @map _ _ 
Arguments: {α β : Type u_1}
Goal: (fun x x_1 => x <$> x_1) = Erased.map
-- AbsoluteValue.map_units_int
@[simp]
theorem AbsoluteValue.map_units_int (abv : AbsoluteValue ℤ S) (x : ℤˣ) : abv x = 1 
Arguments: {S : Type u_2} [LinearOrderedCommRing S] (abv : AbsoluteValue ℤ S) (x : ℤˣ)
Goal: abv ↑x = 1
-- AbsoluteValue.map_units_intCast
@[simp]
theorem AbsoluteValue.map_units_intCast [Nontrivial R] (abv : AbsoluteValue R S) (x : ℤˣ) :
    abv ((x : ℤ) : R) = 1 
Arguments: {R : Type u_1} {S : Type u_2} [Ring R] [LinearOrderedCommRing S] [Nontrivial R] (abv : AbsoluteValue R S) (x : ℤˣ)
Goal: abv ↑↑x = 1
-- AbsoluteValue.map_units_int_smul
@[simp]
theorem AbsoluteValue.map_units_int_smul (abv : AbsoluteValue R S) (x : ℤˣ) (y : R) :
    abv (x • y) = abv y 
Arguments: {R : Type u_1} {S : Type u_2} [Ring R] [LinearOrderedCommRing S] (abv : AbsoluteValue R S) (x : ℤˣ) (y : R)
Goal: abv (x • y) = abv y
-- Int.natAbsHom_apply
@[simps]
def Int.natAbsHom : ℤ →*₀ ℕ 
Arguments: (m : ℤ)
Goal: Int.natAbsHom m = m.natAbs
-- Finset.mem_sumLift₂
theorem mem_sumLift₂ :
    c ∈ sumLift₂ f g a b ↔
      (∃ a₁ b₁ c₁, a = inl a₁ ∧ b = inl b₁ ∧ c = inl c₁ ∧ c₁ ∈ f a₁ b₁) ∨
        ∃ a₂ b₂ c₂, a = inr a₂ ∧ b = inr b₂ ∧ c = inr c₂ ∧ c₂ ∈ g a₂ b₂ 
Arguments: {α₁ : Type u_1} {α₂ : Type u_2} {β₁ : Type u_3} {β₂ : Type u_4} {γ₁ : Type u_5} {γ₂ : Type u_6} {f : α₁ → β₁ → Finset γ₁} {g : α₂ → β₂ → Finset γ₂} {a : α₁ ⊕ α₂} {b : β₁ ⊕ β₂} {c : γ₁ ⊕ γ₂}
Goal: c ∈ Finset.sumLift₂ f g a b ↔
  (∃ a₁ b₁ c₁, a = Sum.inl a₁ ∧ b = Sum.inl b₁ ∧ c = Sum.inl c₁ ∧ c₁ ∈ f a₁ b₁) ∨
    ∃ a₂ b₂ c₂, a = Sum.inr a₂ ∧ b = Sum.inr b₂ ∧ c = Sum.inr c₂ ∧ c₂ ∈ g a₂ b₂
-- Finset.inl_mem_sumLift₂
theorem inl_mem_sumLift₂ {c₁ : γ₁} :
    inl c₁ ∈ sumLift₂ f g a b ↔ ∃ a₁ b₁, a = inl a₁ ∧ b = inl b₁ ∧ c₁ ∈ f a₁ b₁ 
Arguments: {α₁ : Type u_1} {α₂ : Type u_2} {β₁ : Type u_3} {β₂ : Type u_4} {γ₁ : Type u_5} {γ₂ : Type u_6} {f : α₁ → β₁ → Finset γ₁} {g : α₂ → β₂ → Finset γ₂} {a : α₁ ⊕ α₂} {b : β₁ ⊕ β₂} {c₁ : γ₁}
Goal: Sum.inl c₁ ∈ Finset.sumLift₂ f g a b ↔ ∃ a₁ b₁, a = Sum.inl a₁ ∧ b = Sum.inl b₁ ∧ c₁ ∈ f a₁ b₁
-- Finset.inr_mem_sumLift₂
theorem inr_mem_sumLift₂ {c₂ : γ₂} :
    inr c₂ ∈ sumLift₂ f g a b ↔ ∃ a₂ b₂, a = inr a₂ ∧ b = inr b₂ ∧ c₂ ∈ g a₂ b₂ 
Arguments: {α₁ : Type u_1} {α₂ : Type u_2} {β₁ : Type u_3} {β₂ : Type u_4} {γ₁ : Type u_5} {γ₂ : Type u_6} {f : α₁ → β₁ → Finset γ₁} {g : α₂ → β₂ → Finset γ₂} {a : α₁ ⊕ α₂} {b : β₁ ⊕ β₂} {c₂ : γ₂}
Goal: Sum.inr c₂ ∈ Finset.sumLift₂ f g a b ↔ ∃ a₂ b₂, a = Sum.inr a₂ ∧ b = Sum.inr b₂ ∧ c₂ ∈ g a₂ b₂
-- Finset.sumLift₂_eq_empty
theorem sumLift₂_eq_empty :
    sumLift₂ f g a b = ∅ ↔
      (∀ a₁ b₁, a = inl a₁ → b = inl b₁ → f a₁ b₁ = ∅) ∧
        ∀ a₂ b₂, a = inr a₂ → b = inr b₂ → g a₂ b₂ = ∅ 
Arguments: {α₁ : Type u_1} {α₂ : Type u_2} {β₁ : Type u_3} {β₂ : Type u_4} {γ₁ : Type u_5} {γ₂ : Type u_6} {f : α₁ → β₁ → Finset γ₁} {g : α₂ → β₂ → Finset γ₂} {a : α₁ ⊕ α₂} {b : β₁ ⊕ β₂}
Goal: Finset.sumLift₂ f g a b = ∅ ↔
  (∀ (a₁ : α₁) (b₁ : β₁), a = Sum.inl a₁ → b = Sum.inl b₁ → f a₁ b₁ = ∅) ∧
    ∀ (a₂ : α₂) (b₂ : β₂), a = Sum.inr a₂ → b = Sum.inr b₂ → g a₂ b₂ = ∅