Theorem: factors
Proof state before:
case a
a : ℤ√(-3)
x✝¹ : ℤ
hcoprime✝ : IsCoprime a.re a.im
hodd✝ : Odd x✝¹
hfactor✝ : x✝¹ ∣ Zsqrtd.norm a
x✝ : ℕ
hx' : Int.natAbs x✝¹ = x✝
x : ℤ
hodd : Odd x
IH :
  ∀ (m : ℕ),
    m < Int.natAbs x →
      ∀ (a : ℤ√(-3)) (x : ℤ),
        IsCoprime a.re a.im → Odd x → x ∣ Zsqrtd.norm a → Int.natAbs x = m → ∃ c, abs x = Zsqrtd.norm c
h0 : x ≠ 0
h0' : 1 ≤ abs x
h : 1 < abs x
c' m : ℤ√(-3)
hcoprime : IsCoprime (c' + m * ↑x).re (c' + m * ↑x).im
hfactor : x ∣ Zsqrtd.norm (c' + m * ↑x)
hneg1 : 1 ≤ Zsqrtd.norm (c' + m * ↑x)
h1 : c' ≠ 0
y : ℤ
hy : Zsqrtd.norm c' = x * y
h3 : Int.natAbs y < Int.natAbs x
h4 : Zsqrtd.norm c' ≠ 0
g : ℕ := Int.gcd c'.re c'.im
hg : g = Int.gcd c'.re c'.im
hgpos : 0 < g
C' : ℤ√(-3)
HC' : c' = ↑↑(Int.gcd c'.re c'.im) * C'
HCDcoprime : IsCoprime C'.re C'.im
h5 : x * y = ↑g ^ 2 * Zsqrtd.norm C'
z : ℤ
hz : y = ↑g ^ 2 * z
h6 : x * z = Zsqrtd.norm C'
⊢ ?a * z ≠ 0

case a
a : ℤ√(-3)
x✝¹ : ℤ
hcoprime✝ : IsCoprime a.re a.im
hodd✝ : Odd x✝¹
hfactor✝ : x✝¹ ∣ Zsqrtd.norm a
x✝ : ℕ
hx' : Int.natAbs x✝¹ = x✝
x : ℤ
hodd : Odd x
IH :
  ∀ (m : ℕ),
    m < Int.natAbs x →
      ∀ (a : ℤ√(-3)) (x : ℤ),
        IsCoprime a.re a.im → Odd x → x ∣ Zsqrtd.norm a → Int.natAbs x = m → ∃ c, abs x = Zsqrtd.norm c
h0 : x ≠ 0
h0' : 1 ≤ abs x
h : 1 < abs x
c' m : ℤ√(-3)
hcoprime : IsCoprime (c' + m * ↑x).re (c' + m * ↑x).im
hfactor : x ∣ Zsqrtd.norm (c' + m * ↑x)
hneg1 : 1 ≤ Zsqrtd.norm (c' + m * ↑x)
h1 : c' ≠ 0
y : ℤ
hy : Zsqrtd.norm c' = x * y
h3 : Int.natAbs y < Int.natAbs x
h4 : Zsqrtd.norm c' ≠ 0
g : ℕ := Int.gcd c'.re c'.im
hg : g = Int.gcd c'.re c'.im
hgpos : 0 < g
C' : ℤ√(-3)
HC' : c' = ↑↑(Int.gcd c'.re c'.im) * C'
HCDcoprime : IsCoprime C'.re C'.im
h5 : x * y = ↑g ^ 2 * Zsqrtd.norm C'
z : ℤ
hz : y = ↑g ^ 2 * z
h6 : x * z = Zsqrtd.norm C'
⊢ ℤ
Tactic:
apply right_ne_zero_of_mul
Proof state after:
case a.a
a : ℤ√(-3)
x✝¹ : ℤ
hcoprime✝ : IsCoprime a.re a.im
hodd✝ : Odd x✝¹
hfactor✝ : x✝¹ ∣ Zsqrtd.norm a
x✝ : ℕ
hx' : Int.natAbs x✝¹ = x✝
x : ℤ
hodd : Odd x
IH :
  ∀ (m : ℕ),
    m < Int.natAbs x →
      ∀ (a : ℤ√(-3)) (x : ℤ),
        IsCoprime a.re a.im → Odd x → x ∣ Zsqrtd.norm a → Int.natAbs x = m → ∃ c, abs x = Zsqrtd.norm c
h0 : x ≠ 0
h0' : 1 ≤ abs x
h : 1 < abs x
c' m : ℤ√(-3)
hcoprime : IsCoprime (c' + m * ↑x).re (c' + m * ↑x).im
hfactor : x ∣ Zsqrtd.norm (c' + m * ↑x)
hneg1 : 1 ≤ Zsqrtd.norm (c' + m * ↑x)
h1 : c' ≠ 0
y : ℤ
hy : Zsqrtd.norm c' = x * y
h3 : Int.natAbs y < Int.natAbs x
h4 : Zsqrtd.norm c' ≠ 0
g : ℕ := Int.gcd c'.re c'.im
hg : g = Int.gcd c'.re c'.im
hgpos : 0 < g
C' : ℤ√(-3)
HC' : c' = ↑↑(Int.gcd c'.re c'.im) * C'
HCDcoprime : IsCoprime C'.re C'.im
h5 : x * y = ↑g ^ 2 * Zsqrtd.norm C'
z : ℤ
hz : y = ↑g ^ 2 * z
h6 : x * z = Zsqrtd.norm C'
⊢ ?a.a✝ * (?a * z) ≠ 0

case a.a
a : ℤ√(-3)
x✝¹ : ℤ
hcoprime✝ : IsCoprime a.re a.im
hodd✝ : Odd x✝¹
hfactor✝ : x✝¹ ∣ Zsqrtd.norm a
x✝ : ℕ
hx' : Int.natAbs x✝¹ = x✝
x : ℤ
hodd : Odd x
IH :
  ∀ (m : ℕ),
    m < Int.natAbs x →
      ∀ (a : ℤ√(-3)) (x : ℤ),
        IsCoprime a.re a.im → Odd x → x ∣ Zsqrtd.norm a → Int.natAbs x = m → ∃ c, abs x = Zsqrtd.norm c
h0 : x ≠ 0
h0' : 1 ≤ abs x
h : 1 < abs x
c' m : ℤ√(-3)
hcoprime : IsCoprime (c' + m * ↑x).re (c' + m * ↑x).im
hfactor : x ∣ Zsqrtd.norm (c' + m * ↑x)
hneg1 : 1 ≤ Zsqrtd.norm (c' + m * ↑x)
h1 : c' ≠ 0
y : ℤ
hy : Zsqrtd.norm c' = x * y
h3 : Int.natAbs y < Int.natAbs x
h4 : Zsqrtd.norm c' ≠ 0
g : ℕ := Int.gcd c'.re c'.im
hg : g = Int.gcd c'.re c'.im
hgpos : 0 < g
C' : ℤ√(-3)
HC' : c' = ↑↑(Int.gcd c'.re c'.im) * C'
HCDcoprime : IsCoprime C'.re C'.im
h5 : x * y = ↑g ^ 2 * Zsqrtd.norm C'
z : ℤ
hz : y = ↑g ^ 2 * z
h6 : x * z = Zsqrtd.norm C'
⊢ ℤ

case a
a : ℤ√(-3)
x✝¹ : ℤ
hcoprime✝ : IsCoprime a.re a.im
hodd✝ : Odd x✝¹
hfactor✝ : x✝¹ ∣ Zsqrtd.norm a
x✝ : ℕ
hx' : Int.natAbs x✝¹ = x✝
x : ℤ
hodd : Odd x
IH :
  ∀ (m : ℕ),
    m < Int.natAbs x →
      ∀ (a : ℤ√(-3)) (x : ℤ),
        IsCoprime a.re a.im → Odd x → x ∣ Zsqrtd.norm a → Int.natAbs x = m → ∃ c, abs x = Zsqrtd.norm c
h0 : x ≠ 0
h0' : 1 ≤ abs x
h : 1 < abs x
c' m : ℤ√(-3)
hcoprime : IsCoprime (c' + m * ↑x).re (c' + m * ↑x).im
hfactor : x ∣ Zsqrtd.norm (c' + m * ↑x)
hneg1 : 1 ≤ Zsqrtd.norm (c' + m * ↑x)
h1 : c' ≠ 0
y : ℤ
hy : Zsqrtd.norm c' = x * y
h3 : Int.natAbs y < Int.natAbs x
h4 : Zsqrtd.norm c' ≠ 0
g : ℕ := Int.gcd c'.re c'.im
hg : g = Int.gcd c'.re c'.im
hgpos : 0 < g
C' : ℤ√(-3)
HC' : c' = ↑↑(Int.gcd c'.re c'.im) * C'
HCDcoprime : IsCoprime C'.re C'.im
h5 : x * y = ↑g ^ 2 * Zsqrtd.norm C'
z : ℤ
hz : y = ↑g ^ 2 * z
h6 : x * z = Zsqrtd.norm C'
⊢ ℤ