This is an inofficial mirror of http://metamath.tirix.org for personal testing of a visualizer extension only.
Description: Infer that a multiplicand is positive from a nonnegative multiplier and positive product. (Contributed by NM, 24-Apr-2005) (Revised by Mario Carneiro, 27-May-2016)
| Ref | Expression | ||
|---|---|---|---|
| Assertion | prodgt0 | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 ≤ 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 0 < 𝐵 ) |
| Step | Hyp | Ref | Expression |
|---|---|---|---|
| 1 | 0red | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → 0 ∈ ℝ ) | |
| 2 | simpl | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → 𝐴 ∈ ℝ ) | |
| 3 | 1 2 | leloed | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( 0 ≤ 𝐴 ↔ ( 0 < 𝐴 ∨ 0 = 𝐴 ) ) ) |
| 4 | simpll | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 𝐴 ∈ ℝ ) | |
| 5 | simplr | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 𝐵 ∈ ℝ ) | |
| 6 | 4 5 | remulcld | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → ( 𝐴 · 𝐵 ) ∈ ℝ ) |
| 7 | simprl | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 0 < 𝐴 ) | |
| 8 | 7 | gt0ne0d | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 𝐴 ≠ 0 ) |
| 9 | 4 8 | rereccld | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → ( 1 / 𝐴 ) ∈ ℝ ) |
| 10 | simprr | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 0 < ( 𝐴 · 𝐵 ) ) | |
| 11 | recgt0 | ⊢ ( ( 𝐴 ∈ ℝ ∧ 0 < 𝐴 ) → 0 < ( 1 / 𝐴 ) ) | |
| 12 | 11 | ad2ant2r | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 0 < ( 1 / 𝐴 ) ) |
| 13 | 6 9 10 12 | mulgt0d | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 0 < ( ( 𝐴 · 𝐵 ) · ( 1 / 𝐴 ) ) ) |
| 14 | 6 | recnd | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → ( 𝐴 · 𝐵 ) ∈ ℂ ) |
| 15 | 4 | recnd | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 𝐴 ∈ ℂ ) |
| 16 | 14 15 8 | divrecd | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → ( ( 𝐴 · 𝐵 ) / 𝐴 ) = ( ( 𝐴 · 𝐵 ) · ( 1 / 𝐴 ) ) ) |
| 17 | simpr | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → 𝐵 ∈ ℝ ) | |
| 18 | 17 | recnd | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → 𝐵 ∈ ℂ ) |
| 19 | 18 | adantr | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 𝐵 ∈ ℂ ) |
| 20 | 19 15 8 | divcan3d | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → ( ( 𝐴 · 𝐵 ) / 𝐴 ) = 𝐵 ) |
| 21 | 16 20 | eqtr3d | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → ( ( 𝐴 · 𝐵 ) · ( 1 / 𝐴 ) ) = 𝐵 ) |
| 22 | 13 21 | breqtrd | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 < 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 0 < 𝐵 ) |
| 23 | 22 | exp32 | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( 0 < 𝐴 → ( 0 < ( 𝐴 · 𝐵 ) → 0 < 𝐵 ) ) ) |
| 24 | 0re | ⊢ 0 ∈ ℝ | |
| 25 | 24 | ltnri | ⊢ ¬ 0 < 0 |
| 26 | 18 | mul02d | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( 0 · 𝐵 ) = 0 ) |
| 27 | 26 | breq2d | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( 0 < ( 0 · 𝐵 ) ↔ 0 < 0 ) ) |
| 28 | 25 27 | mtbiri | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ¬ 0 < ( 0 · 𝐵 ) ) |
| 29 | 28 | pm2.21d | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( 0 < ( 0 · 𝐵 ) → 0 < 𝐵 ) ) |
| 30 | oveq1 | ⊢ ( 0 = 𝐴 → ( 0 · 𝐵 ) = ( 𝐴 · 𝐵 ) ) | |
| 31 | 30 | breq2d | ⊢ ( 0 = 𝐴 → ( 0 < ( 0 · 𝐵 ) ↔ 0 < ( 𝐴 · 𝐵 ) ) ) |
| 32 | 31 | imbi1d | ⊢ ( 0 = 𝐴 → ( ( 0 < ( 0 · 𝐵 ) → 0 < 𝐵 ) ↔ ( 0 < ( 𝐴 · 𝐵 ) → 0 < 𝐵 ) ) ) |
| 33 | 29 32 | syl5ibcom | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( 0 = 𝐴 → ( 0 < ( 𝐴 · 𝐵 ) → 0 < 𝐵 ) ) ) |
| 34 | 23 33 | jaod | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( ( 0 < 𝐴 ∨ 0 = 𝐴 ) → ( 0 < ( 𝐴 · 𝐵 ) → 0 < 𝐵 ) ) ) |
| 35 | 3 34 | sylbid | ⊢ ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( 0 ≤ 𝐴 → ( 0 < ( 𝐴 · 𝐵 ) → 0 < 𝐵 ) ) ) |
| 36 | 35 | imp32 | ⊢ ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ ( 0 ≤ 𝐴 ∧ 0 < ( 𝐴 · 𝐵 ) ) ) → 0 < 𝐵 ) |