Theorem: Lean4Axiomatic.Integer.sqrt1_sgn_split_nonzero_mul (Lean4Axiomatic/Integer/Sign.lean)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
⊢ Nonzero (a * b) → Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)
Tactic:
intro (_ : Nonzero (a * b))
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
⊢ Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
⊢ Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)
Tactic:
have (And.intro (_ : Nonzero a) (_ : Nonzero b)) :=
  nonzero_factors_if_nonzero_product ‹Nonzero (a * b)›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
left✝ : Nonzero a
right✝ : Nonzero b
⊢ Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
left✝ : Nonzero a
right✝ : Nonzero b
⊢ Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)
Tactic:
have : Sqrt1 (sgn a) := sgn_nonzero.mp ‹Nonzero a›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
left✝ : Nonzero a
right✝ : Nonzero b
this : Sqrt1 (sgn a)
⊢ Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
left✝ : Nonzero a
right✝ : Nonzero b
this : Sqrt1 (sgn a)
⊢ Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)
Tactic:
have : Sqrt1 (sgn b) := sgn_nonzero.mp ‹Nonzero b›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
left✝ : Nonzero a
right✝ : Nonzero b
this✝ : Sqrt1 (sgn a)
this : Sqrt1 (sgn b)
⊢ Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
left✝ : Nonzero a
right✝ : Nonzero b
this✝ : Sqrt1 (sgn a)
this : Sqrt1 (sgn b)
⊢ Sqrt1 (sgn a) ∧ Sqrt1 (sgn b)
Tactic:
exact And.intro ‹Sqrt1 (sgn a)› ‹Sqrt1 (sgn b)›
State after:
no goals