internlm/Lean-Github huggingface dataset:
Theorem: factors'
Proof state before:
case H1
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : IsCoprime 2 f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ IsCoprime 4 f
Tactic:
convert hodd.pow_left
Proof state after:
case h.e'_3
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : IsCoprime 2 f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ 4 = 2 ^ ?H1

case H1
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : IsCoprime 2 f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ ℕ
Theorem: factors'
Proof state before:
case h.e'_3
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : IsCoprime 2 f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ 4 = 2 ^ ?H1

case H1
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : IsCoprime 2 f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ ℕ
Tactic:
rw [sq]
Proof state after:
case h.e'_3
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : IsCoprime 2 f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ 4 = 2 * 2
Theorem: factors'
Proof state before:
case h.e'_3
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : IsCoprime 2 f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ 4 = 2 * 2
Tactic:
norm_num
Proof state after:
no goals
Theorem: factors'
Proof state before:
case H2
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ 4 ∣ f * g
Tactic:
rw [hfactor, hc]
Proof state after:
case H2
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ 4 ∣ 4 * Zsqrtd.norm c
Theorem: factors'
Proof state before:
case H2
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
⊢ 4 ∣ 4 * Zsqrtd.norm c
Tactic:
exact dvd_mul_right _ _
Proof state after:
no goals
Theorem: factors'
Proof state before:
case pos.intro.intro.refine'_1
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
⊢ Int.natAbs g' < Int.natAbs (4 * g')
Tactic:
rw [Int.natAbs_mul]
Proof state after:
case pos.intro.intro.refine'_1
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
⊢ Int.natAbs g' < Int.natAbs 4 * Int.natAbs g'
Theorem: factors'
Proof state before:
case pos.intro.intro.refine'_1
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
⊢ Int.natAbs g' < Int.natAbs 4 * Int.natAbs g'
Tactic:
apply lt_mul_of_one_lt_left (Int.natAbs_pos.mpr hg'pos)
Proof state after:
case pos.intro.intro.refine'_1
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
⊢ 1 < Int.natAbs 4
Theorem: factors'
Proof state before:
case pos.intro.intro.refine'_1
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
⊢ 1 < Int.natAbs 4
Tactic:
norm_num
Proof state after:
no goals
Theorem: factors'
Proof state before:
case pos.intro.intro.refine'_2
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
⊢ f * g' = Zsqrtd.norm c
Tactic:
rw [← mul_right_inj' (four_ne_zero' ℤ), ← hc, ← hfactor, mul_left_comm]
Proof state after:
no goals
Theorem: factors'
Proof state before:
case pos.intro.intro.refine'_3
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
⊢ ∀ (f' : ℤ), f' ∣ g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
Tactic:
intro f' hf'dvd hf'odd
Proof state after:
case pos.intro.intro.refine'_3
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
f' : ℤ
hf'dvd : f' ∣ g'
hf'odd : Odd f'
⊢ ∃ p, abs f' = Zsqrtd.norm p
Theorem: factors'
Proof state before:
case pos.intro.intro.refine'_3
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
f' : ℤ
hf'dvd : f' ∣ g'
hf'odd : Odd f'
⊢ ∃ p, abs f' = Zsqrtd.norm p
Tactic:
refine' hnotform f' _ hf'odd
Proof state after:
case pos.intro.intro.refine'_3
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
f' : ℤ
hf'dvd : f' ∣ g'
hf'odd : Odd f'
⊢ f' ∣ 4 * g'
Theorem: factors'
Proof state before:
case pos.intro.intro.refine'_3
a✝ : ℤ√(-3)
f g : ℤ
hodd : Odd f
hgpos✝ : g ≠ 0
hfactor✝ : f * g = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g = x✝
a : ℤ√(-3)
H : Even (Zsqrtd.norm a)
c : ℤ√(-3)
hc : Zsqrtd.norm a = 4 * Zsqrtd.norm c
g' : ℤ
hgpos : 4 * g' ≠ 0
hfactor : f * (4 * g') = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ 4 * g' → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs (4 * g') →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
hg'pos : g' ≠ 0
f' : ℤ
hf'dvd : f' ∣ g'
hf'odd : Odd f'
⊢ f' ∣ 4 * g'
Tactic:
exact hf'dvd.mul_left _
Proof state after:
no goals
Theorem: factors'
Proof state before:
case neg
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
⊢ ∃ p, abs f = Zsqrtd.norm p
Tactic:
by_cases h : |g| = 1
Proof state after:
case pos
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : abs g = 1
⊢ ∃ p, abs f = Zsqrtd.norm p

case neg
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : ¬abs g = 1
⊢ ∃ p, abs f = Zsqrtd.norm p
Theorem: factors'
Proof state before:
case pos
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : abs g = 1
⊢ ∃ p, abs f = Zsqrtd.norm p
Tactic:
apply_fun abs  at hfactor
Proof state after:
case pos
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : abs g = 1
hfactor : abs (f * g) = abs (Zsqrtd.norm a)
⊢ ∃ p, abs f = Zsqrtd.norm p
Theorem: factors'
Proof state before:
case pos
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : abs g = 1
hfactor : abs (f * g) = abs (Zsqrtd.norm a)
⊢ ∃ p, abs f = Zsqrtd.norm p
Tactic:
rw [abs_mul, h, mul_one, abs_of_nonneg (Zsqrtd.norm_nonneg (by norm_num) a)] at hfactor
Proof state after:
case pos
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : abs g = 1
hfactor : abs f = Zsqrtd.norm a
⊢ ∃ p, abs f = Zsqrtd.norm p
Theorem: factors'
Proof state before:
case pos
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : abs g = 1
hfactor : abs f = Zsqrtd.norm a
⊢ ∃ p, abs f = Zsqrtd.norm p
Tactic:
exact ⟨_, hfactor⟩
Proof state after:
no goals
Theorem: factors'
Proof state before:
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : abs g = 1
hfactor : abs f = abs (Zsqrtd.norm a)
⊢ -3 ≤ 0
Tactic:
norm_num
Proof state after:
no goals
Theorem: factors'
Proof state before:
case neg
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : ¬abs g = 1
⊢ ∃ p, abs f = Zsqrtd.norm p
Tactic:
rw [Int.abs_eq_natAbs, ← Int.ofNat_one, Int.coe_nat_inj'] at h
Proof state after:
case neg
a✝ : ℤ√(-3)
f g✝ : ℤ
hodd : Odd f
hgpos✝ : g✝ ≠ 0
hfactor✝ : f * g✝ = Zsqrtd.norm a✝
hnotform✝ : ∀ (f' : ℤ), f' ∣ g✝ → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
x✝ : ℕ
hg : Int.natAbs g✝ = x✝
a : ℤ√(-3)
g : ℤ
hgpos : g ≠ 0
hfactor : f * g = Zsqrtd.norm a
hnotform : ∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p
IH :
  ∀ (m : ℕ),
    m < Int.natAbs g →
      ∀ (a : ℤ√(-3)) (g : ℤ),
        ¬g = 0 →
          f * g = Zsqrtd.norm a →
            (∀ (f' : ℤ), f' ∣ g → Odd f' → ∃ p, abs f' = Zsqrtd.norm p) → Int.natAbs g = m → ∃ p, abs f = Zsqrtd.norm p
H : ¬Even (Zsqrtd.norm a)
h : ¬Int.natAbs g = 1
⊢ ∃ p, abs f = Zsqrtd.norm p