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

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

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
⊢ Positive (a * b)
Tactic:
have : NonzeroWithSign a 1 := positive_iff_sign_pos1.mp ‹Positive a›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
this : NonzeroWithSign a 1
⊢ Positive (a * b)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
this : NonzeroWithSign a 1
⊢ Positive (a * b)
Tactic:
have : NonzeroWithSign b 1 := positive_iff_sign_pos1.mp ‹Positive b›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
this✝ : NonzeroWithSign a 1
this : NonzeroWithSign b 1
⊢ Positive (a * b)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
this✝ : NonzeroWithSign a 1
this : NonzeroWithSign b 1
⊢ Positive (a * b)
Tactic:
have : SameSign a b :=
  SameSign.mk ‹NonzeroWithSign a 1› ‹NonzeroWithSign b 1›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
this✝¹ : NonzeroWithSign a 1
this✝ : NonzeroWithSign b 1
this : SameSign a b
⊢ Positive (a * b)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
this✝¹ : NonzeroWithSign a 1
this✝ : NonzeroWithSign b 1
this : SameSign a b
⊢ Positive (a * b)
Tactic:
have : Positive (a * b) := positive_mul_iff_same_sign.mpr ‹SameSign a b›
State after:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
this✝² : NonzeroWithSign a 1
this✝¹ : NonzeroWithSign b 1
this✝ : SameSign a b
this : Positive (a * b)
⊢ Positive (a * b)

State before:
ℕ : Type
inst✝⁵ : Natural ℕ
ℤ : Type
inst✝⁴ : Core ℤ
inst✝³ : Addition ℤ
inst✝² : Multiplication ℤ
inst✝¹ : Negation ℤ
inst✝ : Sign ℤ
a b : ℤ
x✝¹ : Positive a
x✝ : Positive b
this✝² : NonzeroWithSign a 1
this✝¹ : NonzeroWithSign b 1
this✝ : SameSign a b
this : Positive (a * b)
⊢ Positive (a * b)
Tactic:
exact this
State after:
no goals