Step |
Hyp |
Ref |
Expression |
1 |
|
gausslemma2d.p |
⊢ ( 𝜑 → 𝑃 ∈ ( ℙ ∖ { 2 } ) ) |
2 |
|
gausslemma2d.h |
⊢ 𝐻 = ( ( 𝑃 − 1 ) / 2 ) |
3 |
|
gausslemma2d.r |
⊢ 𝑅 = ( 𝑥 ∈ ( 1 ... 𝐻 ) ↦ if ( ( 𝑥 · 2 ) < ( 𝑃 / 2 ) , ( 𝑥 · 2 ) , ( 𝑃 − ( 𝑥 · 2 ) ) ) ) |
4 |
1 2
|
gausslemma2dlem0b |
⊢ ( 𝜑 → 𝐻 ∈ ℕ ) |
5 |
4
|
nnnn0d |
⊢ ( 𝜑 → 𝐻 ∈ ℕ0 ) |
6 |
|
fprodfac |
⊢ ( 𝐻 ∈ ℕ0 → ( ! ‘ 𝐻 ) = ∏ 𝑙 ∈ ( 1 ... 𝐻 ) 𝑙 ) |
7 |
5 6
|
syl |
⊢ ( 𝜑 → ( ! ‘ 𝐻 ) = ∏ 𝑙 ∈ ( 1 ... 𝐻 ) 𝑙 ) |
8 |
|
id |
⊢ ( 𝑙 = ( 𝑅 ‘ 𝑘 ) → 𝑙 = ( 𝑅 ‘ 𝑘 ) ) |
9 |
|
fzfid |
⊢ ( 𝜑 → ( 1 ... 𝐻 ) ∈ Fin ) |
10 |
|
fzfi |
⊢ ( 1 ... 𝐻 ) ∈ Fin |
11 |
|
ovex |
⊢ ( 𝑥 · 2 ) ∈ V |
12 |
|
ovex |
⊢ ( 𝑃 − ( 𝑥 · 2 ) ) ∈ V |
13 |
11 12
|
ifex |
⊢ if ( ( 𝑥 · 2 ) < ( 𝑃 / 2 ) , ( 𝑥 · 2 ) , ( 𝑃 − ( 𝑥 · 2 ) ) ) ∈ V |
14 |
13 3
|
fnmpti |
⊢ 𝑅 Fn ( 1 ... 𝐻 ) |
15 |
1 2 3
|
gausslemma2dlem1a |
⊢ ( 𝜑 → ran 𝑅 = ( 1 ... 𝐻 ) ) |
16 |
|
rneqdmfinf1o |
⊢ ( ( ( 1 ... 𝐻 ) ∈ Fin ∧ 𝑅 Fn ( 1 ... 𝐻 ) ∧ ran 𝑅 = ( 1 ... 𝐻 ) ) → 𝑅 : ( 1 ... 𝐻 ) –1-1-onto→ ( 1 ... 𝐻 ) ) |
17 |
10 14 15 16
|
mp3an12i |
⊢ ( 𝜑 → 𝑅 : ( 1 ... 𝐻 ) –1-1-onto→ ( 1 ... 𝐻 ) ) |
18 |
|
eqidd |
⊢ ( ( 𝜑 ∧ 𝑘 ∈ ( 1 ... 𝐻 ) ) → ( 𝑅 ‘ 𝑘 ) = ( 𝑅 ‘ 𝑘 ) ) |
19 |
|
elfzelz |
⊢ ( 𝑙 ∈ ( 1 ... 𝐻 ) → 𝑙 ∈ ℤ ) |
20 |
19
|
zcnd |
⊢ ( 𝑙 ∈ ( 1 ... 𝐻 ) → 𝑙 ∈ ℂ ) |
21 |
20
|
adantl |
⊢ ( ( 𝜑 ∧ 𝑙 ∈ ( 1 ... 𝐻 ) ) → 𝑙 ∈ ℂ ) |
22 |
8 9 17 18 21
|
fprodf1o |
⊢ ( 𝜑 → ∏ 𝑙 ∈ ( 1 ... 𝐻 ) 𝑙 = ∏ 𝑘 ∈ ( 1 ... 𝐻 ) ( 𝑅 ‘ 𝑘 ) ) |
23 |
7 22
|
eqtrd |
⊢ ( 𝜑 → ( ! ‘ 𝐻 ) = ∏ 𝑘 ∈ ( 1 ... 𝐻 ) ( 𝑅 ‘ 𝑘 ) ) |