Metamath Proof Explorer


Theorem eulerth

Description: Euler's theorem, a generalization of Fermat's little theorem. If A and N are coprime, then A ^ phi ( N ) == 1 (mod N ). This is Metamath 100 proof #10. Also called Euler-Fermat theorem, see theorem 5.17 in ApostolNT p. 113. (Contributed by Mario Carneiro, 28-Feb-2014)

Ref Expression
Assertion eulerth ( ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) โ†’ ( ( ๐ด โ†‘ ( ฯ• โ€˜ ๐‘ ) ) mod ๐‘ ) = ( 1 mod ๐‘ ) )

Proof

Step Hyp Ref Expression
1 phicl โŠข ( ๐‘ โˆˆ โ„• โ†’ ( ฯ• โ€˜ ๐‘ ) โˆˆ โ„• )
2 1 nnnn0d โŠข ( ๐‘ โˆˆ โ„• โ†’ ( ฯ• โ€˜ ๐‘ ) โˆˆ โ„•0 )
3 hashfz1 โŠข ( ( ฯ• โ€˜ ๐‘ ) โˆˆ โ„•0 โ†’ ( โ™ฏ โ€˜ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) ) = ( ฯ• โ€˜ ๐‘ ) )
4 2 3 syl โŠข ( ๐‘ โˆˆ โ„• โ†’ ( โ™ฏ โ€˜ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) ) = ( ฯ• โ€˜ ๐‘ ) )
5 dfphi2 โŠข ( ๐‘ โˆˆ โ„• โ†’ ( ฯ• โ€˜ ๐‘ ) = ( โ™ฏ โ€˜ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) )
6 4 5 eqtrd โŠข ( ๐‘ โˆˆ โ„• โ†’ ( โ™ฏ โ€˜ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) ) = ( โ™ฏ โ€˜ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) )
7 6 3ad2ant1 โŠข ( ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) โ†’ ( โ™ฏ โ€˜ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) ) = ( โ™ฏ โ€˜ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) )
8 fzfi โŠข ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โˆˆ Fin
9 fzofi โŠข ( 0 ..^ ๐‘ ) โˆˆ Fin
10 ssrab2 โŠข { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } โŠ† ( 0 ..^ ๐‘ )
11 ssfi โŠข ( ( ( 0 ..^ ๐‘ ) โˆˆ Fin โˆง { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } โŠ† ( 0 ..^ ๐‘ ) ) โ†’ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } โˆˆ Fin )
12 9 10 11 mp2an โŠข { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } โˆˆ Fin
13 hashen โŠข ( ( ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โˆˆ Fin โˆง { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } โˆˆ Fin ) โ†’ ( ( โ™ฏ โ€˜ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) ) = ( โ™ฏ โ€˜ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) โ†” ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ‰ˆ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) )
14 8 12 13 mp2an โŠข ( ( โ™ฏ โ€˜ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) ) = ( โ™ฏ โ€˜ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) โ†” ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ‰ˆ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } )
15 7 14 sylib โŠข ( ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) โ†’ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ‰ˆ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } )
16 bren โŠข ( ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ‰ˆ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } โ†” โˆƒ ๐‘“ ๐‘“ : ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ€“1-1-ontoโ†’ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } )
17 15 16 sylib โŠข ( ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) โ†’ โˆƒ ๐‘“ ๐‘“ : ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ€“1-1-ontoโ†’ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } )
18 simpl โŠข ( ( ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) โˆง ๐‘“ : ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ€“1-1-ontoโ†’ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) โ†’ ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) )
19 oveq1 โŠข ( ๐‘˜ = ๐‘ฆ โ†’ ( ๐‘˜ gcd ๐‘ ) = ( ๐‘ฆ gcd ๐‘ ) )
20 19 eqeq1d โŠข ( ๐‘˜ = ๐‘ฆ โ†’ ( ( ๐‘˜ gcd ๐‘ ) = 1 โ†” ( ๐‘ฆ gcd ๐‘ ) = 1 ) )
21 20 cbvrabv โŠข { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } = { ๐‘ฆ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘ฆ gcd ๐‘ ) = 1 }
22 eqid โŠข ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) = ( 1 ... ( ฯ• โ€˜ ๐‘ ) )
23 simpr โŠข ( ( ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) โˆง ๐‘“ : ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ€“1-1-ontoโ†’ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) โ†’ ๐‘“ : ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ€“1-1-ontoโ†’ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } )
24 fveq2 โŠข ( ๐‘˜ = ๐‘ฅ โ†’ ( ๐‘“ โ€˜ ๐‘˜ ) = ( ๐‘“ โ€˜ ๐‘ฅ ) )
25 24 oveq2d โŠข ( ๐‘˜ = ๐‘ฅ โ†’ ( ๐ด ยท ( ๐‘“ โ€˜ ๐‘˜ ) ) = ( ๐ด ยท ( ๐‘“ โ€˜ ๐‘ฅ ) ) )
26 25 oveq1d โŠข ( ๐‘˜ = ๐‘ฅ โ†’ ( ( ๐ด ยท ( ๐‘“ โ€˜ ๐‘˜ ) ) mod ๐‘ ) = ( ( ๐ด ยท ( ๐‘“ โ€˜ ๐‘ฅ ) ) mod ๐‘ ) )
27 26 cbvmptv โŠข ( ๐‘˜ โˆˆ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ†ฆ ( ( ๐ด ยท ( ๐‘“ โ€˜ ๐‘˜ ) ) mod ๐‘ ) ) = ( ๐‘ฅ โˆˆ ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ†ฆ ( ( ๐ด ยท ( ๐‘“ โ€˜ ๐‘ฅ ) ) mod ๐‘ ) )
28 18 21 22 23 27 eulerthlem2 โŠข ( ( ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) โˆง ๐‘“ : ( 1 ... ( ฯ• โ€˜ ๐‘ ) ) โ€“1-1-ontoโ†’ { ๐‘˜ โˆˆ ( 0 ..^ ๐‘ ) โˆฃ ( ๐‘˜ gcd ๐‘ ) = 1 } ) โ†’ ( ( ๐ด โ†‘ ( ฯ• โ€˜ ๐‘ ) ) mod ๐‘ ) = ( 1 mod ๐‘ ) )
29 17 28 exlimddv โŠข ( ( ๐‘ โˆˆ โ„• โˆง ๐ด โˆˆ โ„ค โˆง ( ๐ด gcd ๐‘ ) = 1 ) โ†’ ( ( ๐ด โ†‘ ( ฯ• โ€˜ ๐‘ ) ) mod ๐‘ ) = ( 1 mod ๐‘ ) )