Metamath Proof Explorer


Theorem fprodrev

Description: Reversal of a finite product. (Contributed by Scott Fenton, 5-Jan-2018)

Ref Expression
Hypotheses fprodshft.1 ( 𝜑𝐾 ∈ ℤ )
fprodshft.2 ( 𝜑𝑀 ∈ ℤ )
fprodshft.3 ( 𝜑𝑁 ∈ ℤ )
fprodshft.4 ( ( 𝜑𝑗 ∈ ( 𝑀 ... 𝑁 ) ) → 𝐴 ∈ ℂ )
fprodrev.5 ( 𝑗 = ( 𝐾𝑘 ) → 𝐴 = 𝐵 )
Assertion fprodrev ( 𝜑 → ∏ 𝑗 ∈ ( 𝑀 ... 𝑁 ) 𝐴 = ∏ 𝑘 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) 𝐵 )

Proof

Step Hyp Ref Expression
1 fprodshft.1 ( 𝜑𝐾 ∈ ℤ )
2 fprodshft.2 ( 𝜑𝑀 ∈ ℤ )
3 fprodshft.3 ( 𝜑𝑁 ∈ ℤ )
4 fprodshft.4 ( ( 𝜑𝑗 ∈ ( 𝑀 ... 𝑁 ) ) → 𝐴 ∈ ℂ )
5 fprodrev.5 ( 𝑗 = ( 𝐾𝑘 ) → 𝐴 = 𝐵 )
6 fzfid ( 𝜑 → ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∈ Fin )
7 ovex ( 𝐾𝑗 ) ∈ V
8 eqid ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) = ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) )
9 7 8 fnmpti ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) Fn ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) )
10 9 a1i ( 𝜑 → ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) Fn ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) )
11 ovex ( 𝐾𝑘 ) ∈ V
12 eqid ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ↦ ( 𝐾𝑘 ) ) = ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ↦ ( 𝐾𝑘 ) )
13 11 12 fnmpti ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ↦ ( 𝐾𝑘 ) ) Fn ( 𝑀 ... 𝑁 )
14 simprr ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝑘 = ( 𝐾𝑗 ) )
15 simprl ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) )
16 2 adantr ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝑀 ∈ ℤ )
17 3 adantr ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝑁 ∈ ℤ )
18 1 adantr ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝐾 ∈ ℤ )
19 elfzelz ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) → 𝑗 ∈ ℤ )
20 19 ad2antrl ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝑗 ∈ ℤ )
21 fzrev ( ( ( 𝑀 ∈ ℤ ∧ 𝑁 ∈ ℤ ) ∧ ( 𝐾 ∈ ℤ ∧ 𝑗 ∈ ℤ ) ) → ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↔ ( 𝐾𝑗 ) ∈ ( 𝑀 ... 𝑁 ) ) )
22 16 17 18 20 21 syl22anc ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↔ ( 𝐾𝑗 ) ∈ ( 𝑀 ... 𝑁 ) ) )
23 15 22 mpbid ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → ( 𝐾𝑗 ) ∈ ( 𝑀 ... 𝑁 ) )
24 14 23 eqeltrd ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝑘 ∈ ( 𝑀 ... 𝑁 ) )
25 oveq2 ( 𝑘 = ( 𝐾𝑗 ) → ( 𝐾𝑘 ) = ( 𝐾 − ( 𝐾𝑗 ) ) )
26 25 ad2antll ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → ( 𝐾𝑘 ) = ( 𝐾 − ( 𝐾𝑗 ) ) )
27 1 zcnd ( 𝜑𝐾 ∈ ℂ )
28 27 adantr ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝐾 ∈ ℂ )
29 19 zcnd ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) → 𝑗 ∈ ℂ )
30 29 ad2antrl ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝑗 ∈ ℂ )
31 28 30 nncand ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → ( 𝐾 − ( 𝐾𝑗 ) ) = 𝑗 )
32 26 31 eqtr2d ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → 𝑗 = ( 𝐾𝑘 ) )
33 24 32 jca ( ( 𝜑 ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ) → ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) )
34 simprr ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝑗 = ( 𝐾𝑘 ) )
35 simprl ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝑘 ∈ ( 𝑀 ... 𝑁 ) )
36 2 adantr ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝑀 ∈ ℤ )
37 3 adantr ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝑁 ∈ ℤ )
38 1 adantr ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝐾 ∈ ℤ )
39 elfzelz ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) → 𝑘 ∈ ℤ )
40 39 ad2antrl ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝑘 ∈ ℤ )
41 fzrev2 ( ( ( 𝑀 ∈ ℤ ∧ 𝑁 ∈ ℤ ) ∧ ( 𝐾 ∈ ℤ ∧ 𝑘 ∈ ℤ ) ) → ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ↔ ( 𝐾𝑘 ) ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ) )
42 36 37 38 40 41 syl22anc ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ↔ ( 𝐾𝑘 ) ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ) )
43 35 42 mpbid ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → ( 𝐾𝑘 ) ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) )
44 34 43 eqeltrd ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) )
45 oveq2 ( 𝑗 = ( 𝐾𝑘 ) → ( 𝐾𝑗 ) = ( 𝐾 − ( 𝐾𝑘 ) ) )
46 45 ad2antll ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → ( 𝐾𝑗 ) = ( 𝐾 − ( 𝐾𝑘 ) ) )
47 27 adantr ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝐾 ∈ ℂ )
48 39 zcnd ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) → 𝑘 ∈ ℂ )
49 48 ad2antrl ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝑘 ∈ ℂ )
50 47 49 nncand ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → ( 𝐾 − ( 𝐾𝑘 ) ) = 𝑘 )
51 46 50 eqtr2d ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → 𝑘 = ( 𝐾𝑗 ) )
52 44 51 jca ( ( 𝜑 ∧ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) → ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) )
53 33 52 impbida ( 𝜑 → ( ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ 𝑘 = ( 𝐾𝑗 ) ) ↔ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ∧ 𝑗 = ( 𝐾𝑘 ) ) ) )
54 53 mptcnv ( 𝜑 ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) = ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ↦ ( 𝐾𝑘 ) ) )
55 54 fneq1d ( 𝜑 → ( ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) Fn ( 𝑀 ... 𝑁 ) ↔ ( 𝑘 ∈ ( 𝑀 ... 𝑁 ) ↦ ( 𝐾𝑘 ) ) Fn ( 𝑀 ... 𝑁 ) ) )
56 13 55 mpbiri ( 𝜑 ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) Fn ( 𝑀 ... 𝑁 ) )
57 dff1o4 ( ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) : ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) –1-1-onto→ ( 𝑀 ... 𝑁 ) ↔ ( ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) Fn ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ∧ ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) Fn ( 𝑀 ... 𝑁 ) ) )
58 10 56 57 sylanbrc ( 𝜑 → ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) : ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) –1-1-onto→ ( 𝑀 ... 𝑁 ) )
59 oveq2 ( 𝑗 = 𝑘 → ( 𝐾𝑗 ) = ( 𝐾𝑘 ) )
60 59 8 11 fvmpt ( 𝑘 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) → ( ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) ‘ 𝑘 ) = ( 𝐾𝑘 ) )
61 60 adantl ( ( 𝜑𝑘 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ) → ( ( 𝑗 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) ↦ ( 𝐾𝑗 ) ) ‘ 𝑘 ) = ( 𝐾𝑘 ) )
62 5 6 58 61 4 fprodf1o ( 𝜑 → ∏ 𝑗 ∈ ( 𝑀 ... 𝑁 ) 𝐴 = ∏ 𝑘 ∈ ( ( 𝐾𝑁 ) ... ( 𝐾𝑀 ) ) 𝐵 )