Metamath Proof Explorer


Theorem gausslemma2dlem1

Description: Lemma 1 for gausslemma2d . (Contributed by AV, 5-Jul-2021)

Ref Expression
Hypotheses gausslemma2d.p ⊢ ( 𝜑 → 𝑃 ∈ ( ℙ ∖ { 2 } ) )
gausslemma2d.h ⊢ 𝐻 = ( ( 𝑃 − 1 ) / 2 )
gausslemma2d.r ⊢ 𝑅 = ( 𝑥 ∈ ( 1 ... 𝐻 ) ↦ if ( ( 𝑥 · 2 ) < ( 𝑃 / 2 ) , ( 𝑥 · 2 ) , ( 𝑃 − ( 𝑥 · 2 ) ) ) )
Assertion gausslemma2dlem1 ( 𝜑 → ( ! ‘ 𝐻 ) = ∏ 𝑘 ∈ ( 1 ... 𝐻 ) ( 𝑅 ‘ 𝑘 ) )

Proof

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 ... 𝐻 ) ( 𝑅 ‘ 𝑘 ) )