Metamath Proof Explorer


Theorem absmax

Description: The maximum of two numbers using absolute value. (Contributed by NM, 7-Aug-2008)

Ref Expression
Assertion absmax ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → if ( 𝐴𝐵 , 𝐵 , 𝐴 ) = ( ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) / 2 ) )

Proof

Step Hyp Ref Expression
1 recn ( 𝐴 ∈ ℝ → 𝐴 ∈ ℂ )
2 2cn 2 ∈ ℂ
3 2ne0 2 ≠ 0
4 divcan3 ( ( 𝐴 ∈ ℂ ∧ 2 ∈ ℂ ∧ 2 ≠ 0 ) → ( ( 2 · 𝐴 ) / 2 ) = 𝐴 )
5 2 3 4 mp3an23 ( 𝐴 ∈ ℂ → ( ( 2 · 𝐴 ) / 2 ) = 𝐴 )
6 1 5 syl ( 𝐴 ∈ ℝ → ( ( 2 · 𝐴 ) / 2 ) = 𝐴 )
7 6 ad2antlr ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → ( ( 2 · 𝐴 ) / 2 ) = 𝐴 )
8 ltle ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) → ( 𝐵 < 𝐴𝐵𝐴 ) )
9 8 imp ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → 𝐵𝐴 )
10 abssubge0 ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ∧ 𝐵𝐴 ) → ( abs ‘ ( 𝐴𝐵 ) ) = ( 𝐴𝐵 ) )
11 10 3expa ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵𝐴 ) → ( abs ‘ ( 𝐴𝐵 ) ) = ( 𝐴𝐵 ) )
12 9 11 syldan ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → ( abs ‘ ( 𝐴𝐵 ) ) = ( 𝐴𝐵 ) )
13 12 oveq2d ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) = ( ( 𝐴 + 𝐵 ) + ( 𝐴𝐵 ) ) )
14 recn ( 𝐵 ∈ ℝ → 𝐵 ∈ ℂ )
15 simpr ( ( 𝐵 ∈ ℂ ∧ 𝐴 ∈ ℂ ) → 𝐴 ∈ ℂ )
16 simpl ( ( 𝐵 ∈ ℂ ∧ 𝐴 ∈ ℂ ) → 𝐵 ∈ ℂ )
17 15 16 15 ppncand ( ( 𝐵 ∈ ℂ ∧ 𝐴 ∈ ℂ ) → ( ( 𝐴 + 𝐵 ) + ( 𝐴𝐵 ) ) = ( 𝐴 + 𝐴 ) )
18 2times ( 𝐴 ∈ ℂ → ( 2 · 𝐴 ) = ( 𝐴 + 𝐴 ) )
19 18 adantl ( ( 𝐵 ∈ ℂ ∧ 𝐴 ∈ ℂ ) → ( 2 · 𝐴 ) = ( 𝐴 + 𝐴 ) )
20 17 19 eqtr4d ( ( 𝐵 ∈ ℂ ∧ 𝐴 ∈ ℂ ) → ( ( 𝐴 + 𝐵 ) + ( 𝐴𝐵 ) ) = ( 2 · 𝐴 ) )
21 14 1 20 syl2an ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) → ( ( 𝐴 + 𝐵 ) + ( 𝐴𝐵 ) ) = ( 2 · 𝐴 ) )
22 21 adantr ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → ( ( 𝐴 + 𝐵 ) + ( 𝐴𝐵 ) ) = ( 2 · 𝐴 ) )
23 13 22 eqtrd ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) = ( 2 · 𝐴 ) )
24 23 oveq1d ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → ( ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) / 2 ) = ( ( 2 · 𝐴 ) / 2 ) )
25 ltnle ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) → ( 𝐵 < 𝐴 ↔ ¬ 𝐴𝐵 ) )
26 25 biimpa ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → ¬ 𝐴𝐵 )
27 26 iffalsed ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → if ( 𝐴𝐵 , 𝐵 , 𝐴 ) = 𝐴 )
28 7 24 27 3eqtr4rd ( ( ( 𝐵 ∈ ℝ ∧ 𝐴 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → if ( 𝐴𝐵 , 𝐵 , 𝐴 ) = ( ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) / 2 ) )
29 28 ancom1s ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐵 < 𝐴 ) → if ( 𝐴𝐵 , 𝐵 , 𝐴 ) = ( ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) / 2 ) )
30 divcan3 ( ( 𝐵 ∈ ℂ ∧ 2 ∈ ℂ ∧ 2 ≠ 0 ) → ( ( 2 · 𝐵 ) / 2 ) = 𝐵 )
31 2 3 30 mp3an23 ( 𝐵 ∈ ℂ → ( ( 2 · 𝐵 ) / 2 ) = 𝐵 )
32 14 31 syl ( 𝐵 ∈ ℝ → ( ( 2 · 𝐵 ) / 2 ) = 𝐵 )
33 32 ad2antlr ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐴𝐵 ) → ( ( 2 · 𝐵 ) / 2 ) = 𝐵 )
34 abssuble0 ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ∧ 𝐴𝐵 ) → ( abs ‘ ( 𝐴𝐵 ) ) = ( 𝐵𝐴 ) )
35 34 3expa ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐴𝐵 ) → ( abs ‘ ( 𝐴𝐵 ) ) = ( 𝐵𝐴 ) )
36 35 oveq2d ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐴𝐵 ) → ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) = ( ( 𝐴 + 𝐵 ) + ( 𝐵𝐴 ) ) )
37 simpr ( ( 𝐴 ∈ ℂ ∧ 𝐵 ∈ ℂ ) → 𝐵 ∈ ℂ )
38 simpl ( ( 𝐴 ∈ ℂ ∧ 𝐵 ∈ ℂ ) → 𝐴 ∈ ℂ )
39 37 38 37 ppncand ( ( 𝐴 ∈ ℂ ∧ 𝐵 ∈ ℂ ) → ( ( 𝐵 + 𝐴 ) + ( 𝐵𝐴 ) ) = ( 𝐵 + 𝐵 ) )
40 addcom ( ( 𝐴 ∈ ℂ ∧ 𝐵 ∈ ℂ ) → ( 𝐴 + 𝐵 ) = ( 𝐵 + 𝐴 ) )
41 40 oveq1d ( ( 𝐴 ∈ ℂ ∧ 𝐵 ∈ ℂ ) → ( ( 𝐴 + 𝐵 ) + ( 𝐵𝐴 ) ) = ( ( 𝐵 + 𝐴 ) + ( 𝐵𝐴 ) ) )
42 2times ( 𝐵 ∈ ℂ → ( 2 · 𝐵 ) = ( 𝐵 + 𝐵 ) )
43 42 adantl ( ( 𝐴 ∈ ℂ ∧ 𝐵 ∈ ℂ ) → ( 2 · 𝐵 ) = ( 𝐵 + 𝐵 ) )
44 39 41 43 3eqtr4d ( ( 𝐴 ∈ ℂ ∧ 𝐵 ∈ ℂ ) → ( ( 𝐴 + 𝐵 ) + ( 𝐵𝐴 ) ) = ( 2 · 𝐵 ) )
45 1 14 44 syl2an ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → ( ( 𝐴 + 𝐵 ) + ( 𝐵𝐴 ) ) = ( 2 · 𝐵 ) )
46 45 adantr ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐴𝐵 ) → ( ( 𝐴 + 𝐵 ) + ( 𝐵𝐴 ) ) = ( 2 · 𝐵 ) )
47 36 46 eqtrd ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐴𝐵 ) → ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) = ( 2 · 𝐵 ) )
48 47 oveq1d ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐴𝐵 ) → ( ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) / 2 ) = ( ( 2 · 𝐵 ) / 2 ) )
49 iftrue ( 𝐴𝐵 → if ( 𝐴𝐵 , 𝐵 , 𝐴 ) = 𝐵 )
50 49 adantl ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐴𝐵 ) → if ( 𝐴𝐵 , 𝐵 , 𝐴 ) = 𝐵 )
51 33 48 50 3eqtr4rd ( ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) ∧ 𝐴𝐵 ) → if ( 𝐴𝐵 , 𝐵 , 𝐴 ) = ( ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) / 2 ) )
52 simpr ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → 𝐵 ∈ ℝ )
53 simpl ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → 𝐴 ∈ ℝ )
54 29 51 52 53 ltlecasei ( ( 𝐴 ∈ ℝ ∧ 𝐵 ∈ ℝ ) → if ( 𝐴𝐵 , 𝐵 , 𝐴 ) = ( ( ( 𝐴 + 𝐵 ) + ( abs ‘ ( 𝐴𝐵 ) ) ) / 2 ) )