internlm/Lean-Github huggingface dataset:
Theorem: Lean4Axiomatic.Rational.lt_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
this✝ : sgn r ≃ -1
this : sgn (p - q) ≃ -1
⊢ q * r < p * r
Tactic:
have : sgn (q * r - p * r) ≃ sgn (p - q) :=
  sgn_sub_cancelR_mul_neg ‹sgn r ≃ -1›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
this✝¹ : sgn r ≃ -1
this✝ : sgn (p - q) ≃ -1
this : sgn (q * r - p * r) ≃ sgn (p - q)
⊢ q * r < p * r
Theorem: Lean4Axiomatic.Rational.lt_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
this✝¹ : sgn r ≃ -1
this✝ : sgn (p - q) ≃ -1
this : sgn (q * r - p * r) ≃ sgn (p - q)
⊢ q * r < p * r
Tactic:
have : sgn (q * r - p * r) ≃ -1 :=
  AA.eqv_substL (Rel.symm this) ‹sgn (p - q) ≃ -1›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
this✝² : sgn r ≃ -1
this✝¹ : sgn (p - q) ≃ -1
this✝ : sgn (q * r - p * r) ≃ sgn (p - q)
this : sgn (q * r - p * r) ≃ -1
⊢ q * r < p * r
Theorem: Lean4Axiomatic.Rational.lt_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
this✝² : sgn r ≃ -1
this✝¹ : sgn (p - q) ≃ -1
this✝ : sgn (q * r - p * r) ≃ sgn (p - q)
this : sgn (q * r - p * r) ≃ -1
⊢ q * r < p * r
Tactic:
have : q * r < p * r := lt_sgn.mpr this
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
this✝³ : sgn r ≃ -1
this✝² : sgn (p - q) ≃ -1
this✝¹ : sgn (q * r - p * r) ≃ sgn (p - q)
this✝ : sgn (q * r - p * r) ≃ -1
this : q * r < p * r
⊢ q * r < p * r
Theorem: Lean4Axiomatic.Rational.lt_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
this✝³ : sgn r ≃ -1
this✝² : sgn (p - q) ≃ -1
this✝¹ : sgn (q * r - p * r) ≃ sgn (p - q)
this✝ : sgn (q * r - p * r) ≃ -1
this : q * r < p * r
⊢ q * r < p * r
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.lt_substR_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
⊢ r < 0 → p < q → r * q < r * p
Tactic:
intro (_ : r < 0) (_ : p < q)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
⊢ r * q < r * p
Theorem: Lean4Axiomatic.Rational.lt_substR_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p < q
⊢ r * q < r * p
Tactic:
calc
  _ ≃ r * q := eqv_refl
  _ ≃ q * r := mul_comm
  _ < p * r := lt_substL_mul_neg ‹r < 0› ‹p < q›
  _ ≃ r * p := mul_comm
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_substL_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
⊢ r > 0 → p ≤ q → p * r ≤ q * r
Tactic:
intro (_ : r > 0) (_ : p ≤ q)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
⊢ p * r ≤ q * r
Tactic:
have : sgn r ≃ 1 := gt_zero_sgn.mp ‹r > 0›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this : sgn r ≃ 1
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this : sgn r ≃ 1
⊢ p * r ≤ q * r
Tactic:
have : sgn (p - q) ≄ 1 := le_sgn.mp ‹p ≤ q›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this✝ : sgn r ≃ 1
this : sgn (p - q) ≄ 1
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this✝ : sgn r ≃ 1
this : sgn (p - q) ≄ 1
⊢ p * r ≤ q * r
Tactic:
have : sgn (p * r - q * r) ≃ sgn (p - q) :=
  sgn_sub_cancelR_mul_pos ‹sgn r ≃ 1›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this✝¹ : sgn r ≃ 1
this✝ : sgn (p - q) ≄ 1
this : sgn (p * r - q * r) ≃ sgn (p - q)
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this✝¹ : sgn r ≃ 1
this✝ : sgn (p - q) ≄ 1
this : sgn (p * r - q * r) ≃ sgn (p - q)
⊢ p * r ≤ q * r
Tactic:
have : sgn (p * r - q * r) ≄ 1 :=
  AA.neqv_substL (Rel.symm this) ‹sgn (p - q) ≄ 1›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this✝² : sgn r ≃ 1
this✝¹ : sgn (p - q) ≄ 1
this✝ : sgn (p * r - q * r) ≃ sgn (p - q)
this : sgn (p * r - q * r) ≄ 1
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this✝² : sgn r ≃ 1
this✝¹ : sgn (p - q) ≄ 1
this✝ : sgn (p * r - q * r) ≃ sgn (p - q)
this : sgn (p * r - q * r) ≄ 1
⊢ p * r ≤ q * r
Tactic:
have : p * r ≤ q * r := le_sgn.mpr this
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this✝³ : sgn r ≃ 1
this✝² : sgn (p - q) ≄ 1
this✝¹ : sgn (p * r - q * r) ≃ sgn (p - q)
this✝ : sgn (p * r - q * r) ≄ 1
this : p * r ≤ q * r
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
this✝³ : sgn r ≃ 1
this✝² : sgn (p - q) ≄ 1
this✝¹ : sgn (p * r - q * r) ≃ sgn (p - q)
this✝ : sgn (p * r - q * r) ≄ 1
this : p * r ≤ q * r
⊢ p * r ≤ q * r
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_substR_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
⊢ r > 0 → p ≤ q → r * p ≤ r * q
Tactic:
intro (_ : r > 0) (_ : p ≤ q)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
⊢ r * p ≤ r * q
Theorem: Lean4Axiomatic.Rational.le_substR_mul_pos
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r > 0
x✝ : p ≤ q
⊢ r * p ≤ r * q
Tactic:
calc
  _ ≃ r * p := eqv_refl
  _ ≃ p * r := mul_comm
  _ ≤ q * r := le_substL_mul_pos ‹r > 0› ‹p ≤ q›
  _ ≃ r * q := mul_comm
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_substL_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
⊢ r ≥ 0 → p ≤ q → p * r ≤ q * r
Tactic:
intro (_ : r ≥ 0) (_ : p ≤ q)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
⊢ p * r ≤ q * r
Tactic:
have : r > 0 ∨ r ≃ 0 := ge_cases.mp ‹r ≥ 0›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this : r > 0 ∨ r ≃ 0
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this : r > 0 ∨ r ≃ 0
⊢ p * r ≤ q * r
Tactic:
match this with
| Or.inl (_ : r > 0) =>
  have : p * r ≤ q * r := le_substL_mul_pos ‹r > 0› ‹p ≤ q›
  exact this
| Or.inr (_ : r ≃ 0) =>
  have : p * r ≃ q * r := calc
    _ ≃ p * r := eqv_refl
    _ ≃ p * 0 := mul_substR ‹r ≃ 0›
    _ ≃ 0     := mul_absorbR
    _ ≃ q * 0 := eqv_symm mul_absorbR
    _ ≃ q * r := mul_substR (eqv_symm ‹r ≃ 0›)
  have : p * r ≤ q * r := le_cases.mpr (Or.inr ‹p * r ≃ q * r›)
  exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_substL_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this : r > 0 ∨ r ≃ 0
h✝ : r > 0
⊢ p * r ≤ q * r
Tactic:
have : p * r ≤ q * r := le_substL_mul_pos ‹r > 0› ‹p ≤ q›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this✝ : r > 0 ∨ r ≃ 0
h✝ : r > 0
this : p * r ≤ q * r
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this✝ : r > 0 ∨ r ≃ 0
h✝ : r > 0
this : p * r ≤ q * r
⊢ p * r ≤ q * r
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_substL_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this : r > 0 ∨ r ≃ 0
h✝ : r ≃ 0
⊢ p * r ≤ q * r
Tactic:
have : p * r ≃ q * r := calc
  _ ≃ p * r := eqv_refl
  _ ≃ p * 0 := mul_substR ‹r ≃ 0›
  _ ≃ 0     := mul_absorbR
  _ ≃ q * 0 := eqv_symm mul_absorbR
  _ ≃ q * r := mul_substR (eqv_symm ‹r ≃ 0›)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this✝ : r > 0 ∨ r ≃ 0
h✝ : r ≃ 0
this : p * r ≃ q * r
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this✝ : r > 0 ∨ r ≃ 0
h✝ : r ≃ 0
this : p * r ≃ q * r
⊢ p * r ≤ q * r
Tactic:
have : p * r ≤ q * r := le_cases.mpr (Or.inr ‹p * r ≃ q * r›)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this✝¹ : r > 0 ∨ r ≃ 0
h✝ : r ≃ 0
this✝ : p * r ≃ q * r
this : p * r ≤ q * r
⊢ p * r ≤ q * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
this✝¹ : r > 0 ∨ r ≃ 0
h✝ : r ≃ 0
this✝ : p * r ≃ q * r
this : p * r ≤ q * r
⊢ p * r ≤ q * r
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_substR_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
⊢ r ≥ 0 → p ≤ q → r * p ≤ r * q
Tactic:
intro (_ : r ≥ 0) (_ : p ≤ q)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
⊢ r * p ≤ r * q
Theorem: Lean4Axiomatic.Rational.le_substR_mul_nonneg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r ≥ 0
x✝ : p ≤ q
⊢ r * p ≤ r * q
Tactic:
calc
  _ ≃ r * p := eqv_refl
  _ ≃ p * r := mul_comm
  _ ≤ q * r := le_substL_mul_nonneg ‹r ≥ 0› ‹p ≤ q›
  _ ≃ r * q := mul_comm
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
⊢ r < 0 → p ≤ q → q * r ≤ p * r
Tactic:
intro (_ : r < 0) (_ : p ≤ q)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
⊢ q * r ≤ p * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
⊢ q * r ≤ p * r
Tactic:
have : sgn r ≃ -1 := lt_zero_sgn.mp ‹r < 0›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this : sgn r ≃ -1
⊢ q * r ≤ p * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this : sgn r ≃ -1
⊢ q * r ≤ p * r
Tactic:
have : sgn (p - q) ≄ 1 := le_sgn.mp ‹p ≤ q›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this✝ : sgn r ≃ -1
this : sgn (p - q) ≄ 1
⊢ q * r ≤ p * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this✝ : sgn r ≃ -1
this : sgn (p - q) ≄ 1
⊢ q * r ≤ p * r
Tactic:
have : sgn (q * r - p * r) ≃ sgn (p - q) :=
  sgn_sub_cancelR_mul_neg ‹sgn r ≃ -1›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this✝¹ : sgn r ≃ -1
this✝ : sgn (p - q) ≄ 1
this : sgn (q * r - p * r) ≃ sgn (p - q)
⊢ q * r ≤ p * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this✝¹ : sgn r ≃ -1
this✝ : sgn (p - q) ≄ 1
this : sgn (q * r - p * r) ≃ sgn (p - q)
⊢ q * r ≤ p * r
Tactic:
have : sgn (q * r - p * r) ≄ 1 :=
  AA.neqv_substL (Rel.symm this) ‹sgn (p - q) ≄ 1›
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this✝² : sgn r ≃ -1
this✝¹ : sgn (p - q) ≄ 1
this✝ : sgn (q * r - p * r) ≃ sgn (p - q)
this : sgn (q * r - p * r) ≄ 1
⊢ q * r ≤ p * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this✝² : sgn r ≃ -1
this✝¹ : sgn (p - q) ≄ 1
this✝ : sgn (q * r - p * r) ≃ sgn (p - q)
this : sgn (q * r - p * r) ≄ 1
⊢ q * r ≤ p * r
Tactic:
have : q * r ≤ p * r := le_sgn.mpr this
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this✝³ : sgn r ≃ -1
this✝² : sgn (p - q) ≄ 1
this✝¹ : sgn (q * r - p * r) ≃ sgn (p - q)
this✝ : sgn (q * r - p * r) ≄ 1
this : q * r ≤ p * r
⊢ q * r ≤ p * r
Theorem: Lean4Axiomatic.Rational.le_substL_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
this✝³ : sgn r ≃ -1
this✝² : sgn (p - q) ≄ 1
this✝¹ : sgn (q * r - p * r) ≃ sgn (p - q)
this✝ : sgn (q * r - p * r) ≄ 1
this : q * r ≤ p * r
⊢ q * r ≤ p * r
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_substR_mul_neg
Proof state before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
⊢ r < 0 → p ≤ q → r * q ≤ r * p
Tactic:
intro (_ : r < 0) (_ : p ≤ q)
Proof state after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q r : ℚ
x✝¹ : r < 0
x✝ : p ≤ q
⊢ r * q ≤ r * p