Theorem: Lean4Axiomatic.Integer.nonzero_factors_if_nonzero_product (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) → Nonzero a ∧ Nonzero 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)
⊢ Nonzero a ∧ Nonzero b

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
⊢ Nonzero a ∧ Nonzero b
Tactic:
have : a * b ≄ 0 := nonzero_iff_neqv_zero.mp ‹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)
this : a * b ≄ 0
⊢ Nonzero a ∧ Nonzero b

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
this : a * b ≄ 0
⊢ Nonzero a ∧ Nonzero b
Tactic:
have : ¬(a ≃ 0 ∨ b ≃ 0) := mt mul_split_zero.mpr ‹a * b ≄ 0›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
this✝ : a * b ≄ 0
this : ¬(a ≃ 0 ∨ b ≃ 0)
⊢ Nonzero a ∧ Nonzero b

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
this✝ : a * b ≄ 0
this : ¬(a ≃ 0 ∨ b ≃ 0)
⊢ Nonzero a ∧ Nonzero b
Tactic:
have (And.intro (_ : a ≄ 0) (_ : b ≄ 0)) :=
  Logic.not_or_iff_and_not.mp ‹¬(a ≃ 0 ∨ b ≃ 0)›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
this✝ : a * b ≄ 0
this : ¬(a ≃ 0 ∨ b ≃ 0)
left✝ : a ≄ 0
right✝ : b ≄ 0
⊢ Nonzero a ∧ Nonzero b

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
this✝ : a * b ≄ 0
this : ¬(a ≃ 0 ∨ b ≃ 0)
left✝ : a ≄ 0
right✝ : b ≄ 0
⊢ Nonzero a ∧ Nonzero b
Tactic:
have : Nonzero a := nonzero_iff_neqv_zero.mpr ‹a ≄ 0›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
this✝¹ : a * b ≄ 0
this✝ : ¬(a ≃ 0 ∨ b ≃ 0)
left✝ : a ≄ 0
right✝ : b ≄ 0
this : Nonzero a
⊢ Nonzero a ∧ Nonzero b

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
this✝¹ : a * b ≄ 0
this✝ : ¬(a ≃ 0 ∨ b ≃ 0)
left✝ : a ≄ 0
right✝ : b ≄ 0
this : Nonzero a
⊢ Nonzero a ∧ Nonzero b
Tactic:
have : Nonzero b := nonzero_iff_neqv_zero.mpr ‹b ≄ 0›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝ : Nonzero (a * b)
this✝² : a * b ≄ 0
this✝¹ : ¬(a ≃ 0 ∨ b ≃ 0)
left✝ : a ≄ 0
right✝ : b ≄ 0
this✝ : Nonzero a
this : Nonzero b
⊢ Nonzero a ∧ Nonzero b

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