Theorem: Lean4Axiomatic.Rational.close_substL_mul (Lean4Axiomatic/Rational/Metric.lean)

State before:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
⊢ p ⊢ε⊣ q → p * r ⊢ε * abs r⊣ q * r
Tactic:
intro (_ : p ⊢ε⊣ q)
State after:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
⊢ p * r ⊢ε * abs r⊣ q * r

State before:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
⊢ p * r ⊢ε * abs r⊣ q * r
Tactic:
have : dist p q ≤ ε := close_dist.mp ‹p ⊢ε⊣ q›
State after:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
this : dist p q ≤ ε
⊢ p * r ⊢ε * abs r⊣ q * r

State before:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
this : dist p q ≤ ε
⊢ p * r ⊢ε * abs r⊣ q * r
Tactic:
have : abs r ≥ 0 := abs_nonneg
State after:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
this✝ : dist p q ≤ ε
this : abs r ≥ 0
⊢ p * r ⊢ε * abs r⊣ q * r

State before:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
this✝ : dist p q ≤ ε
this : abs r ≥ 0
⊢ p * r ⊢ε * abs r⊣ q * r
Tactic:
have : dist (p * r) (q * r) ≤ ε * abs r := calc
  _ ≃ dist (p * r) (q * r) := eqv_refl
  _ ≃ dist p q * abs r     := eqv_symm dist_distribR
  _ ≤ ε * abs r            := le_substL_mul_nonneg this ‹dist p q ≤ ε›
State after:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
this✝¹ : dist p q ≤ ε
this✝ : abs r ≥ 0
this : dist (p * r) (q * r) ≤ ε * abs r
⊢ p * r ⊢ε * abs r⊣ q * r

State before:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
this✝¹ : dist p q ≤ ε
this✝ : abs r ≥ 0
this : dist (p * r) (q * r) ≤ ε * abs r
⊢ p * r ⊢ε * abs r⊣ q * r
Tactic:
have : p * r ⊢ε * abs r⊣ q * r := close_dist.mpr this
State after:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
this✝² : dist p q ≤ ε
this✝¹ : abs r ≥ 0
this✝ : dist (p * r) (q * r) ≤ ε * abs r
this : p * r ⊢ε * abs r⊣ q * r
⊢ p * r ⊢ε * abs r⊣ q * r

State before:
ℕ ℤ ℚ : Type
inst✝¹² : Natural ℕ
inst✝¹¹ : Integer ℤ
inst✝¹⁰ : Core ℚ
inst✝⁹ : Addition ℚ
inst✝⁸ : Negation ℚ
inst✝⁷ : Subtraction ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Reciprocation ℚ
inst✝⁴ : Division ℚ
inst✝³ : Sign ℚ
inst✝² : Order ℚ
inst✝¹ : MinMax ℚ
inst✝ : Metric ℚ
ε p q r : ℚ
x✝ : p ⊢ε⊣ q
this✝² : dist p q ≤ ε
this✝¹ : abs r ≥ 0
this✝ : dist (p * r) (q * r) ≤ ε * abs r
this : p * r ⊢ε * abs r⊣ q * r
⊢ p * r ⊢ε * abs r⊣ q * r
Tactic:
exact this
State after:
no goals