internlm/Lean-Github huggingface dataset:
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_2
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ dweierstrass_dx e (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) = 0

case pos.h_2.refine_3
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ dweierstrass_dy e (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) = 0
Tactic:
. rw [dweierstrass_dx]
  rw [hchar'', zero_mul, zero_add]
  simp only
  rw [show e.a1 * (e.a1 * pth_root (-(e.a3 ^ 2) - e.a6) + e.a3) - (2 * e.a2 * pth_root (-(e.a3 ^ 2) - e.a6) + e.a4) =
           (e.a1 * e.a1 - 2 * e.a2) * pth_root (-(e.a3 ^ 2) - e.a6) + (e.a1 * e.a3 - e.a4)
    by ring]
  rw [show (2 : K) = -1 by rw [← add_zero (-1), ← hchar'']; norm_num] at hb4
  rw [show (4 : K) = -2 by rw [← add_zero (-2), ← zero_mul (2 : K), ← hchar'']; norm_num] at hb2
  simp only [neg_mul, one_mul, ← sub_eq_add_neg] at hb4 hb2
  rw [hb4, hb2, zero_mul, zero_add]
Proof state after:
case pos.h_2.refine_3
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ dweierstrass_dy e (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) = 0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_3
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ dweierstrass_dy e (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) = 0
Tactic:
. rw [dweierstrass_dy]
  simp only
  rw [show 2 * (e.a1 * pth_root (-(e.a3 ^ 2) - e.a6) + e.a3)
      + e.a1 * pth_root (- (e.a3 ^ 2) - e.a6) + e.a3 = 3 * ((e.a1 * pth_root (-(e.a3 ^ 2) - e.a6)) + e.a3) by ring]
  rw [hchar'', zero_mul]
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
⊢ ringChar K = 3
Tactic:
assumption
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
⊢ ringChar K ≠ 0
Tactic:
simp [hchar]
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
⊢ ↑(ringChar K) = 3
Tactic:
simp [hchar]
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
⊢ 3 = 0
Tactic:
simp [← hchar', ringChar.Nat.cast_ringChar]
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
⊢ b2 e = 0
Tactic:
simpa [c4_zero_iff_b2_zero_of_char_three e hchar] using hc4
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ weierstrass e (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) = 0
Tactic:
rw [weierstrass]
Proof state after:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd ^ 2 +
          e.a1 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst *
            (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd +
        e.a3 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd -
      ((pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst ^ 3 +
            e.a2 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst ^ 2 +
          e.a4 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst +
        e.a6) =
    0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd ^ 2 +
          e.a1 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst *
            (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd +
        e.a3 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd -
      ((pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst ^ 3 +
            e.a2 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst ^ 2 +
          e.a4 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst +
        e.a6) =
    0
Tactic:
rw [← hchar, pth_root_pow_char hcharne]
Proof state after:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd ^ 2 +
          e.a1 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst *
            (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd +
        e.a3 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd -
      (-e.a3 ^ 2 - e.a6 + e.a2 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst ^ 2 +
          e.a4 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst +
        e.a6) =
    0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd ^ 2 +
          e.a1 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst *
            (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd +
        e.a3 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).snd -
      (-e.a3 ^ 2 - e.a6 + e.a2 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst ^ 2 +
          e.a4 * (pth_root (-e.a3 ^ 2 - e.a6), e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3).fst +
        e.a6) =
    0
Tactic:
simp only
Proof state after:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) ^ 2 +
          e.a1 * pth_root (-e.a3 ^ 2 - e.a6) * (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) +
        e.a3 * (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) -
      (-e.a3 ^ 2 - e.a6 + e.a2 * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + e.a4 * pth_root (-e.a3 ^ 2 - e.a6) + e.a6) =
    0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) ^ 2 +
          e.a1 * pth_root (-e.a3 ^ 2 - e.a6) * (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) +
        e.a3 * (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) -
      (-e.a3 ^ 2 - e.a6 + e.a2 * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + e.a4 * pth_root (-e.a3 ^ 2 - e.a6) + e.a6) =
    0
Tactic:
rw [show
  (e.a1 * pth_root (-(e.a3 ^ 2) - e.a6) + e.a3) ^ 2 +
  e.a1 * pth_root (-(e.a3 ^ 2) - e.a6) * (e.a1 * pth_root (-(e.a3 ^ 2) - e.a6) + e.a3) +
  e.a3 * (e.a1 * pth_root (-(e.a3 ^ 2) - e.a6) + e.a3) -
  (-(e.a3 ^ 2) - e.a6 + e.a2 * pth_root (-(e.a3 ^ 2) - e.a6) ^ 2 + e.a4 * pth_root (-(e.a3 ^ 2) - e.a6) + e.a6) =
  (2 * e.a1 ^ 2 - e.a2) * pth_root (-(e.a3 ^ 2) - e.a6) ^ 2 +
  (4 * e.a1 * e.a3 - e.a4) * pth_root (-(e.a3 ^ 2) - e.a6) +
  3 * e.a3 ^ 2
  by ring]
Proof state after:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (2 * e.a1 ^ 2 - e.a2) * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + (4 * e.a1 * e.a3 - e.a4) * pth_root (-e.a3 ^ 2 - e.a6) +
      3 * e.a3 ^ 2 =
    0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (2 * e.a1 ^ 2 - e.a2) * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + (4 * e.a1 * e.a3 - e.a4) * pth_root (-e.a3 ^ 2 - e.a6) +
      3 * e.a3 ^ 2 =
    0
Tactic:
rw [show 2 * e.a1 ^ 2 - e.a2 = 0 from ?_]
Proof state after:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 0 * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + (4 * e.a1 * e.a3 - e.a4) * pth_root (-e.a3 ^ 2 - e.a6) + 3 * e.a3 ^ 2 = 0

K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 * e.a1 ^ 2 - e.a2 = 0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 0 * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + (4 * e.a1 * e.a3 - e.a4) * pth_root (-e.a3 ^ 2 - e.a6) + 3 * e.a3 ^ 2 = 0

K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 * e.a1 ^ 2 - e.a2 = 0
Tactic:
rw [show 4 * e.a1 * e.a3 - e.a4 = 0 from ?_]
Proof state after:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 0 * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + 0 * pth_root (-e.a3 ^ 2 - e.a6) + 3 * e.a3 ^ 2 = 0

K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 4 * e.a1 * e.a3 - e.a4 = 0

K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 * e.a1 ^ 2 - e.a2 = 0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
case pos.h_2.refine_1
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 0 * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + 0 * pth_root (-e.a3 ^ 2 - e.a6) + 3 * e.a3 ^ 2 = 0

K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 4 * e.a1 * e.a3 - e.a4 = 0

K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 * e.a1 ^ 2 - e.a2 = 0
Tactic:
simp only [zero_mul, add_zero, hchar'']
Proof state after:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 4 * e.a1 * e.a3 - e.a4 = 0

K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 * e.a1 ^ 2 - e.a2 = 0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 4 * e.a1 * e.a3 - e.a4 = 0

K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 * e.a1 ^ 2 - e.a2 = 0
Tactic:
. rw [show (2 : K) = -1 by rw [← add_zero (-1), ← hchar'']; norm_num] at hb4
  rw [show (4 : K) = 1 by rw [← add_zero 1, ← hchar'']; norm_num]
  simp only [neg_mul, one_mul] at hb4
  simp [sub_eq_add_neg, hb4]
Proof state after:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 * e.a1 ^ 2 - e.a2 = 0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 * e.a1 ^ 2 - e.a2 = 0
Tactic:
. linear_combination (norm := ring_nf <;> simp [hchar'']) -hb2
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) ^ 2 +
          e.a1 * pth_root (-e.a3 ^ 2 - e.a6) * (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) +
        e.a3 * (e.a1 * pth_root (-e.a3 ^ 2 - e.a6) + e.a3) -
      (-e.a3 ^ 2 - e.a6 + e.a2 * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + e.a4 * pth_root (-e.a3 ^ 2 - e.a6) + e.a6) =
    (2 * e.a1 ^ 2 - e.a2) * pth_root (-e.a3 ^ 2 - e.a6) ^ 2 + (4 * e.a1 * e.a3 - e.a4) * pth_root (-e.a3 ^ 2 - e.a6) +
      3 * e.a3 ^ 2
Tactic:
ring
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 4 * e.a1 * e.a3 - e.a4 = 0
Tactic:
rw [show (2 : K) = -1 by rw [← add_zero (-1), ← hchar'']; norm_num] at hb4
Proof state after:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + -1 * e.a4 = 0
⊢ 4 * e.a1 * e.a3 - e.a4 = 0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + -1 * e.a4 = 0
⊢ 4 * e.a1 * e.a3 - e.a4 = 0
Tactic:
rw [show (4 : K) = 1 by rw [← add_zero 1, ← hchar'']; norm_num]
Proof state after:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + -1 * e.a4 = 0
⊢ 1 * e.a1 * e.a3 - e.a4 = 0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + -1 * e.a4 = 0
⊢ 1 * e.a1 * e.a3 - e.a4 = 0
Tactic:
simp only [neg_mul, one_mul] at hb4
Proof state after:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + -e.a4 = 0
⊢ 1 * e.a1 * e.a3 - e.a4 = 0
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + -e.a4 = 0
⊢ 1 * e.a1 * e.a3 - e.a4 = 0
Tactic:
simp [sub_eq_add_neg, hb4]
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 = -1
Tactic:
rw [← add_zero (-1), ← hchar'']
Proof state after:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 = -1 + 3
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + 2 * e.a4 = 0
⊢ 2 = -1 + 3
Tactic:
norm_num
Proof state after:
no goals
Theorem: Model.Field.is_singular_point_singular_point
Proof state before:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + -1 * e.a4 = 0
⊢ 4 = 1
Tactic:
rw [← add_zero 1, ← hchar'']
Proof state after:
K : Type u
inst✝¹ : Field K
inst✝ : ECTate.PerfectRing K
e : Model K
h : discr e = 0
hc4 : c4 e = 0
hc6 : c6 e = 0
x✝ : ℕ
heq✝ : ringChar K = 3
hchar : ringChar K = 3
hcharne : ringChar K ≠ 0
hchar' : ↑(ringChar K) = 3
hchar'' : 3 = 0
hb2 : e.a1 * e.a1 + 4 * e.a2 = 0
hb4 : e.a1 * e.a3 + -1 * e.a4 = 0
⊢ 4 = 1 + 3