Metamath Proof Explorer


Theorem wilthimp

Description: The forward implication of Wilson's theorem wilth (see wilthlem3 ), expressed using the modulo operation: For any prime p we have ( p - 1 ) ! == - 1 (mod p ), see theorem 5.24 in ApostolNT p. 116. (Contributed by AV, 21-Jul-2021)

Ref Expression
Assertion wilthimp ( 𝑃 ∈ ℙ → ( ( ! ‘ ( 𝑃 − 1 ) ) mod 𝑃 ) = ( - 1 mod 𝑃 ) )

Proof

Step Hyp Ref Expression
1 wilth ( 𝑃 ∈ ℙ ↔ ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) ) )
2 eluz2nn ( 𝑃 ∈ ( ℤ ‘ 2 ) → 𝑃 ∈ ℕ )
3 nnm1nn0 ( 𝑃 ∈ ℕ → ( 𝑃 − 1 ) ∈ ℕ0 )
4 2 3 syl ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( 𝑃 − 1 ) ∈ ℕ0 )
5 4 faccld ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℕ )
6 5 nnzd ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℤ )
7 6 peano2zd ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) ∈ ℤ )
8 dvdsval3 ( ( 𝑃 ∈ ℕ ∧ ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) ∈ ℤ ) → ( 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) ↔ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) )
9 2 7 8 syl2anc ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) ↔ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) )
10 9 biimpar ( ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) → 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) )
11 5 nncnd ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℂ )
12 1cnd ( 𝑃 ∈ ( ℤ ‘ 2 ) → 1 ∈ ℂ )
13 11 12 jca ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℂ ∧ 1 ∈ ℂ ) )
14 13 adantr ( ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) → ( ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℂ ∧ 1 ∈ ℂ ) )
15 subneg ( ( ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℂ ∧ 1 ∈ ℂ ) → ( ( ! ‘ ( 𝑃 − 1 ) ) − - 1 ) = ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) )
16 14 15 syl ( ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) → ( ( ! ‘ ( 𝑃 − 1 ) ) − - 1 ) = ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) )
17 10 16 breqtrrd ( ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) → 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) − - 1 ) )
18 neg1z - 1 ∈ ℤ
19 18 a1i ( 𝑃 ∈ ( ℤ ‘ 2 ) → - 1 ∈ ℤ )
20 2 6 19 3jca ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( 𝑃 ∈ ℕ ∧ ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℤ ∧ - 1 ∈ ℤ ) )
21 20 adantr ( ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) → ( 𝑃 ∈ ℕ ∧ ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℤ ∧ - 1 ∈ ℤ ) )
22 moddvds ( ( 𝑃 ∈ ℕ ∧ ( ! ‘ ( 𝑃 − 1 ) ) ∈ ℤ ∧ - 1 ∈ ℤ ) → ( ( ( ! ‘ ( 𝑃 − 1 ) ) mod 𝑃 ) = ( - 1 mod 𝑃 ) ↔ 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) − - 1 ) ) )
23 21 22 syl ( ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) → ( ( ( ! ‘ ( 𝑃 − 1 ) ) mod 𝑃 ) = ( - 1 mod 𝑃 ) ↔ 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) − - 1 ) ) )
24 17 23 mpbird ( ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 ) → ( ( ! ‘ ( 𝑃 − 1 ) ) mod 𝑃 ) = ( - 1 mod 𝑃 ) )
25 24 ex ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( ( ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) mod 𝑃 ) = 0 → ( ( ! ‘ ( 𝑃 − 1 ) ) mod 𝑃 ) = ( - 1 mod 𝑃 ) ) )
26 9 25 sylbid ( 𝑃 ∈ ( ℤ ‘ 2 ) → ( 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) → ( ( ! ‘ ( 𝑃 − 1 ) ) mod 𝑃 ) = ( - 1 mod 𝑃 ) ) )
27 26 imp ( ( 𝑃 ∈ ( ℤ ‘ 2 ) ∧ 𝑃 ∥ ( ( ! ‘ ( 𝑃 − 1 ) ) + 1 ) ) → ( ( ! ‘ ( 𝑃 − 1 ) ) mod 𝑃 ) = ( - 1 mod 𝑃 ) )
28 1 27 sylbi ( 𝑃 ∈ ℙ → ( ( ! ‘ ( 𝑃 − 1 ) ) mod 𝑃 ) = ( - 1 mod 𝑃 ) )