Step |
Hyp |
Ref |
Expression |
1 |
|
eucalgval.1 |
|- E = ( x e. NN0 , y e. NN0 |-> if ( y = 0 , <. x , y >. , <. y , ( x mod y ) >. ) ) |
2 |
1
|
eucalgval |
|- ( X e. ( NN0 X. NN0 ) -> ( E ` X ) = if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) ) |
3 |
2
|
fveq2d |
|- ( X e. ( NN0 X. NN0 ) -> ( gcd ` ( E ` X ) ) = ( gcd ` if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) ) ) |
4 |
|
1st2nd2 |
|- ( X e. ( NN0 X. NN0 ) -> X = <. ( 1st ` X ) , ( 2nd ` X ) >. ) |
5 |
4
|
adantr |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> X = <. ( 1st ` X ) , ( 2nd ` X ) >. ) |
6 |
5
|
fveq2d |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( mod ` X ) = ( mod ` <. ( 1st ` X ) , ( 2nd ` X ) >. ) ) |
7 |
|
df-ov |
|- ( ( 1st ` X ) mod ( 2nd ` X ) ) = ( mod ` <. ( 1st ` X ) , ( 2nd ` X ) >. ) |
8 |
6 7
|
eqtr4di |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( mod ` X ) = ( ( 1st ` X ) mod ( 2nd ` X ) ) ) |
9 |
8
|
oveq2d |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( ( 2nd ` X ) gcd ( mod ` X ) ) = ( ( 2nd ` X ) gcd ( ( 1st ` X ) mod ( 2nd ` X ) ) ) ) |
10 |
|
nnz |
|- ( ( 2nd ` X ) e. NN -> ( 2nd ` X ) e. ZZ ) |
11 |
|
xp1st |
|- ( X e. ( NN0 X. NN0 ) -> ( 1st ` X ) e. NN0 ) |
12 |
11
|
adantr |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( 1st ` X ) e. NN0 ) |
13 |
12
|
nn0zd |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( 1st ` X ) e. ZZ ) |
14 |
|
zmodcl |
|- ( ( ( 1st ` X ) e. ZZ /\ ( 2nd ` X ) e. NN ) -> ( ( 1st ` X ) mod ( 2nd ` X ) ) e. NN0 ) |
15 |
13 14
|
sylancom |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( ( 1st ` X ) mod ( 2nd ` X ) ) e. NN0 ) |
16 |
15
|
nn0zd |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( ( 1st ` X ) mod ( 2nd ` X ) ) e. ZZ ) |
17 |
|
gcdcom |
|- ( ( ( 2nd ` X ) e. ZZ /\ ( ( 1st ` X ) mod ( 2nd ` X ) ) e. ZZ ) -> ( ( 2nd ` X ) gcd ( ( 1st ` X ) mod ( 2nd ` X ) ) ) = ( ( ( 1st ` X ) mod ( 2nd ` X ) ) gcd ( 2nd ` X ) ) ) |
18 |
10 16 17
|
syl2an2 |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( ( 2nd ` X ) gcd ( ( 1st ` X ) mod ( 2nd ` X ) ) ) = ( ( ( 1st ` X ) mod ( 2nd ` X ) ) gcd ( 2nd ` X ) ) ) |
19 |
|
modgcd |
|- ( ( ( 1st ` X ) e. ZZ /\ ( 2nd ` X ) e. NN ) -> ( ( ( 1st ` X ) mod ( 2nd ` X ) ) gcd ( 2nd ` X ) ) = ( ( 1st ` X ) gcd ( 2nd ` X ) ) ) |
20 |
13 19
|
sylancom |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( ( ( 1st ` X ) mod ( 2nd ` X ) ) gcd ( 2nd ` X ) ) = ( ( 1st ` X ) gcd ( 2nd ` X ) ) ) |
21 |
9 18 20
|
3eqtrd |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( ( 2nd ` X ) gcd ( mod ` X ) ) = ( ( 1st ` X ) gcd ( 2nd ` X ) ) ) |
22 |
|
nnne0 |
|- ( ( 2nd ` X ) e. NN -> ( 2nd ` X ) =/= 0 ) |
23 |
22
|
adantl |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( 2nd ` X ) =/= 0 ) |
24 |
23
|
neneqd |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> -. ( 2nd ` X ) = 0 ) |
25 |
24
|
iffalsed |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) = <. ( 2nd ` X ) , ( mod ` X ) >. ) |
26 |
25
|
fveq2d |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( gcd ` if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) ) = ( gcd ` <. ( 2nd ` X ) , ( mod ` X ) >. ) ) |
27 |
|
df-ov |
|- ( ( 2nd ` X ) gcd ( mod ` X ) ) = ( gcd ` <. ( 2nd ` X ) , ( mod ` X ) >. ) |
28 |
26 27
|
eqtr4di |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( gcd ` if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) ) = ( ( 2nd ` X ) gcd ( mod ` X ) ) ) |
29 |
5
|
fveq2d |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( gcd ` X ) = ( gcd ` <. ( 1st ` X ) , ( 2nd ` X ) >. ) ) |
30 |
|
df-ov |
|- ( ( 1st ` X ) gcd ( 2nd ` X ) ) = ( gcd ` <. ( 1st ` X ) , ( 2nd ` X ) >. ) |
31 |
29 30
|
eqtr4di |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( gcd ` X ) = ( ( 1st ` X ) gcd ( 2nd ` X ) ) ) |
32 |
21 28 31
|
3eqtr4d |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) e. NN ) -> ( gcd ` if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) ) = ( gcd ` X ) ) |
33 |
|
iftrue |
|- ( ( 2nd ` X ) = 0 -> if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) = X ) |
34 |
33
|
fveq2d |
|- ( ( 2nd ` X ) = 0 -> ( gcd ` if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) ) = ( gcd ` X ) ) |
35 |
34
|
adantl |
|- ( ( X e. ( NN0 X. NN0 ) /\ ( 2nd ` X ) = 0 ) -> ( gcd ` if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) ) = ( gcd ` X ) ) |
36 |
|
xp2nd |
|- ( X e. ( NN0 X. NN0 ) -> ( 2nd ` X ) e. NN0 ) |
37 |
|
elnn0 |
|- ( ( 2nd ` X ) e. NN0 <-> ( ( 2nd ` X ) e. NN \/ ( 2nd ` X ) = 0 ) ) |
38 |
36 37
|
sylib |
|- ( X e. ( NN0 X. NN0 ) -> ( ( 2nd ` X ) e. NN \/ ( 2nd ` X ) = 0 ) ) |
39 |
32 35 38
|
mpjaodan |
|- ( X e. ( NN0 X. NN0 ) -> ( gcd ` if ( ( 2nd ` X ) = 0 , X , <. ( 2nd ` X ) , ( mod ` X ) >. ) ) = ( gcd ` X ) ) |
40 |
3 39
|
eqtrd |
|- ( X e. ( NN0 X. NN0 ) -> ( gcd ` ( E ` X ) ) = ( gcd ` X ) ) |