Metamath Proof Explorer


Theorem normpyth

Description: Analogy to Pythagorean theorem for orthogonal vectors. Remark 3.4(C) of Beran p. 98. (Contributed by NM, 17-Oct-1999) (New usage is discouraged.)

Ref Expression
Assertion normpyth
|- ( ( A e. ~H /\ B e. ~H ) -> ( ( A .ih B ) = 0 -> ( ( normh ` ( A +h B ) ) ^ 2 ) = ( ( ( normh ` A ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) ) )

Proof

Step Hyp Ref Expression
1 oveq1
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( A .ih B ) = ( if ( A e. ~H , A , 0h ) .ih B ) )
2 1 eqeq1d
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( ( A .ih B ) = 0 <-> ( if ( A e. ~H , A , 0h ) .ih B ) = 0 ) )
3 fvoveq1
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( normh ` ( A +h B ) ) = ( normh ` ( if ( A e. ~H , A , 0h ) +h B ) ) )
4 3 oveq1d
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( ( normh ` ( A +h B ) ) ^ 2 ) = ( ( normh ` ( if ( A e. ~H , A , 0h ) +h B ) ) ^ 2 ) )
5 fveq2
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( normh ` A ) = ( normh ` if ( A e. ~H , A , 0h ) ) )
6 5 oveq1d
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( ( normh ` A ) ^ 2 ) = ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) )
7 6 oveq1d
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( ( ( normh ` A ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) )
8 4 7 eqeq12d
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( ( ( normh ` ( A +h B ) ) ^ 2 ) = ( ( ( normh ` A ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) <-> ( ( normh ` ( if ( A e. ~H , A , 0h ) +h B ) ) ^ 2 ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) ) )
9 2 8 imbi12d
 |-  ( A = if ( A e. ~H , A , 0h ) -> ( ( ( A .ih B ) = 0 -> ( ( normh ` ( A +h B ) ) ^ 2 ) = ( ( ( normh ` A ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) ) <-> ( ( if ( A e. ~H , A , 0h ) .ih B ) = 0 -> ( ( normh ` ( if ( A e. ~H , A , 0h ) +h B ) ) ^ 2 ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) ) ) )
10 oveq2
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( if ( A e. ~H , A , 0h ) .ih B ) = ( if ( A e. ~H , A , 0h ) .ih if ( B e. ~H , B , 0h ) ) )
11 10 eqeq1d
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( ( if ( A e. ~H , A , 0h ) .ih B ) = 0 <-> ( if ( A e. ~H , A , 0h ) .ih if ( B e. ~H , B , 0h ) ) = 0 ) )
12 oveq2
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( if ( A e. ~H , A , 0h ) +h B ) = ( if ( A e. ~H , A , 0h ) +h if ( B e. ~H , B , 0h ) ) )
13 12 fveq2d
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( normh ` ( if ( A e. ~H , A , 0h ) +h B ) ) = ( normh ` ( if ( A e. ~H , A , 0h ) +h if ( B e. ~H , B , 0h ) ) ) )
14 13 oveq1d
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( ( normh ` ( if ( A e. ~H , A , 0h ) +h B ) ) ^ 2 ) = ( ( normh ` ( if ( A e. ~H , A , 0h ) +h if ( B e. ~H , B , 0h ) ) ) ^ 2 ) )
15 fveq2
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( normh ` B ) = ( normh ` if ( B e. ~H , B , 0h ) ) )
16 15 oveq1d
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( ( normh ` B ) ^ 2 ) = ( ( normh ` if ( B e. ~H , B , 0h ) ) ^ 2 ) )
17 16 oveq2d
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` if ( B e. ~H , B , 0h ) ) ^ 2 ) ) )
18 14 17 eqeq12d
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( ( ( normh ` ( if ( A e. ~H , A , 0h ) +h B ) ) ^ 2 ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) <-> ( ( normh ` ( if ( A e. ~H , A , 0h ) +h if ( B e. ~H , B , 0h ) ) ) ^ 2 ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` if ( B e. ~H , B , 0h ) ) ^ 2 ) ) ) )
19 11 18 imbi12d
 |-  ( B = if ( B e. ~H , B , 0h ) -> ( ( ( if ( A e. ~H , A , 0h ) .ih B ) = 0 -> ( ( normh ` ( if ( A e. ~H , A , 0h ) +h B ) ) ^ 2 ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) ) <-> ( ( if ( A e. ~H , A , 0h ) .ih if ( B e. ~H , B , 0h ) ) = 0 -> ( ( normh ` ( if ( A e. ~H , A , 0h ) +h if ( B e. ~H , B , 0h ) ) ) ^ 2 ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` if ( B e. ~H , B , 0h ) ) ^ 2 ) ) ) ) )
20 ifhvhv0
 |-  if ( A e. ~H , A , 0h ) e. ~H
21 ifhvhv0
 |-  if ( B e. ~H , B , 0h ) e. ~H
22 20 21 normpythi
 |-  ( ( if ( A e. ~H , A , 0h ) .ih if ( B e. ~H , B , 0h ) ) = 0 -> ( ( normh ` ( if ( A e. ~H , A , 0h ) +h if ( B e. ~H , B , 0h ) ) ) ^ 2 ) = ( ( ( normh ` if ( A e. ~H , A , 0h ) ) ^ 2 ) + ( ( normh ` if ( B e. ~H , B , 0h ) ) ^ 2 ) ) )
23 9 19 22 dedth2h
 |-  ( ( A e. ~H /\ B e. ~H ) -> ( ( A .ih B ) = 0 -> ( ( normh ` ( A +h B ) ) ^ 2 ) = ( ( ( normh ` A ) ^ 2 ) + ( ( normh ` B ) ^ 2 ) ) ) )