Users' Mathboxes Mathbox for Thierry Arnoux < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  hgt750lemg Structured version   Visualization version   GIF version

Theorem hgt750lemg 31072
Description: Lemma for the statement 7.50 of [Helfgott] p. 69. Applying a permutation 𝑇 to the three factors of a product does not change the result. (Contributed by Thierry Arnoux, 1-Jan-2022.)
Hypotheses
Ref Expression
hgt750lemg.f 𝐹 = (𝑐𝑅 ↦ (𝑐𝑇))
hgt750lemg.t (𝜑𝑇:(0..^3)–1-1-onto→(0..^3))
hgt750lemg.n (𝜑𝑁:(0..^3)⟶ℕ)
hgt750lemg.l (𝜑𝐿:ℕ⟶ℝ)
hgt750lemg.1 (𝜑𝑁𝑅)
Assertion
Ref Expression
hgt750lemg (𝜑 → ((𝐿‘((𝐹𝑁)‘0)) · ((𝐿‘((𝐹𝑁)‘1)) · (𝐿‘((𝐹𝑁)‘2)))) = ((𝐿‘(𝑁‘0)) · ((𝐿‘(𝑁‘1)) · (𝐿‘(𝑁‘2)))))
Distinct variable groups:   𝑁,𝑐   𝑅,𝑐   𝑇,𝑐   𝜑,𝑐
Allowed substitution hints:   𝐹(𝑐)   𝐿(𝑐)

Proof of Theorem hgt750lemg
Dummy variables 𝑏 𝑎 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 fveq2 6333 . . . . . 6 (𝑎 = (𝑇𝑏) → (𝑁𝑎) = (𝑁‘(𝑇𝑏)))
21fveq2d 6337 . . . . 5 (𝑎 = (𝑇𝑏) → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘(𝑇𝑏))))
3 tpfi 8396 . . . . . 6 {0, 1, 2} ∈ Fin
43a1i 11 . . . . 5 (𝜑 → {0, 1, 2} ∈ Fin)
5 hgt750lemg.t . . . . . 6 (𝜑𝑇:(0..^3)–1-1-onto→(0..^3))
6 fzo0to3tp 12762 . . . . . . 7 (0..^3) = {0, 1, 2}
7 f1oeq23 6272 . . . . . . 7 (((0..^3) = {0, 1, 2} ∧ (0..^3) = {0, 1, 2}) → (𝑇:(0..^3)–1-1-onto→(0..^3) ↔ 𝑇:{0, 1, 2}–1-1-onto→{0, 1, 2}))
86, 6, 7mp2an 672 . . . . . 6 (𝑇:(0..^3)–1-1-onto→(0..^3) ↔ 𝑇:{0, 1, 2}–1-1-onto→{0, 1, 2})
95, 8sylib 208 . . . . 5 (𝜑𝑇:{0, 1, 2}–1-1-onto→{0, 1, 2})
10 eqidd 2772 . . . . 5 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝑇𝑏) = (𝑇𝑏))
11 hgt750lemg.l . . . . . . . 8 (𝜑𝐿:ℕ⟶ℝ)
1211adantr 466 . . . . . . 7 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝐿:ℕ⟶ℝ)
13 hgt750lemg.n . . . . . . . . 9 (𝜑𝑁:(0..^3)⟶ℕ)
1413adantr 466 . . . . . . . 8 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑁:(0..^3)⟶ℕ)
15 simpr 471 . . . . . . . . 9 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑎 ∈ {0, 1, 2})
1615, 6syl6eleqr 2861 . . . . . . . 8 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑎 ∈ (0..^3))
1714, 16ffvelrnd 6505 . . . . . . 7 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝑁𝑎) ∈ ℕ)
1812, 17ffvelrnd 6505 . . . . . 6 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝐿‘(𝑁𝑎)) ∈ ℝ)
1918recnd 10274 . . . . 5 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝐿‘(𝑁𝑎)) ∈ ℂ)
202, 4, 9, 10, 19fprodf1o 14883 . . . 4 (𝜑 → ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)) = ∏𝑏 ∈ {0, 1, 2} (𝐿‘(𝑁‘(𝑇𝑏))))
21 hgt750lemg.f . . . . . . . . . . 11 𝐹 = (𝑐𝑅 ↦ (𝑐𝑇))
2221a1i 11 . . . . . . . . . 10 (𝜑𝐹 = (𝑐𝑅 ↦ (𝑐𝑇)))
23 simpr 471 . . . . . . . . . . 11 ((𝜑𝑐 = 𝑁) → 𝑐 = 𝑁)
2423coeq1d 5421 . . . . . . . . . 10 ((𝜑𝑐 = 𝑁) → (𝑐𝑇) = (𝑁𝑇))
25 hgt750lemg.1 . . . . . . . . . 10 (𝜑𝑁𝑅)
26 f1of 6279 . . . . . . . . . . . . 13 (𝑇:(0..^3)–1-1-onto→(0..^3) → 𝑇:(0..^3)⟶(0..^3))
275, 26syl 17 . . . . . . . . . . . 12 (𝜑𝑇:(0..^3)⟶(0..^3))
28 ovexd 6829 . . . . . . . . . . . 12 (𝜑 → (0..^3) ∈ V)
29 fex2 7272 . . . . . . . . . . . 12 ((𝑇:(0..^3)⟶(0..^3) ∧ (0..^3) ∈ V ∧ (0..^3) ∈ V) → 𝑇 ∈ V)
3027, 28, 28, 29syl3anc 1476 . . . . . . . . . . 11 (𝜑𝑇 ∈ V)
31 coexg 7268 . . . . . . . . . . 11 ((𝑁𝑅𝑇 ∈ V) → (𝑁𝑇) ∈ V)
3225, 30, 31syl2anc 573 . . . . . . . . . 10 (𝜑 → (𝑁𝑇) ∈ V)
3322, 24, 25, 32fvmptd 6432 . . . . . . . . 9 (𝜑 → (𝐹𝑁) = (𝑁𝑇))
3433adantr 466 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝐹𝑁) = (𝑁𝑇))
3534fveq1d 6335 . . . . . . 7 ((𝜑𝑏 ∈ {0, 1, 2}) → ((𝐹𝑁)‘𝑏) = ((𝑁𝑇)‘𝑏))
36 f1ofun 6281 . . . . . . . . . 10 (𝑇:(0..^3)–1-1-onto→(0..^3) → Fun 𝑇)
375, 36syl 17 . . . . . . . . 9 (𝜑 → Fun 𝑇)
3837adantr 466 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → Fun 𝑇)
39 f1odm 6283 . . . . . . . . . . 11 (𝑇:{0, 1, 2}–1-1-onto→{0, 1, 2} → dom 𝑇 = {0, 1, 2})
409, 39syl 17 . . . . . . . . . 10 (𝜑 → dom 𝑇 = {0, 1, 2})
4140eleq2d 2836 . . . . . . . . 9 (𝜑 → (𝑏 ∈ dom 𝑇𝑏 ∈ {0, 1, 2}))
4241biimpar 463 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → 𝑏 ∈ dom 𝑇)
43 fvco 6418 . . . . . . . 8 ((Fun 𝑇𝑏 ∈ dom 𝑇) → ((𝑁𝑇)‘𝑏) = (𝑁‘(𝑇𝑏)))
4438, 42, 43syl2anc 573 . . . . . . 7 ((𝜑𝑏 ∈ {0, 1, 2}) → ((𝑁𝑇)‘𝑏) = (𝑁‘(𝑇𝑏)))
4535, 44eqtr2d 2806 . . . . . 6 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝑁‘(𝑇𝑏)) = ((𝐹𝑁)‘𝑏))
4645fveq2d 6337 . . . . 5 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝐿‘(𝑁‘(𝑇𝑏))) = (𝐿‘((𝐹𝑁)‘𝑏)))
4746prodeq2dv 14860 . . . 4 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘(𝑁‘(𝑇𝑏))) = ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)))
4820, 47eqtr2d 2806 . . 3 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)) = ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)))
49 fveq2 6333 . . . . 5 (𝑏 = 0 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘0))
5049fveq2d 6337 . . . 4 (𝑏 = 0 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘0)))
51 fveq2 6333 . . . . 5 (𝑏 = 1 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘1))
5251fveq2d 6337 . . . 4 (𝑏 = 1 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘1)))
53 c0ex 10240 . . . . 5 0 ∈ V
5453a1i 11 . . . 4 (𝜑 → 0 ∈ V)
55 1ex 10241 . . . . 5 1 ∈ V
5655a1i 11 . . . 4 (𝜑 → 1 ∈ V)
5733fveq1d 6335 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘0) = ((𝑁𝑇)‘0))
5853tpid1 4440 . . . . . . . . . 10 0 ∈ {0, 1, 2}
5958, 40syl5eleqr 2857 . . . . . . . . 9 (𝜑 → 0 ∈ dom 𝑇)
60 fvco 6418 . . . . . . . . 9 ((Fun 𝑇 ∧ 0 ∈ dom 𝑇) → ((𝑁𝑇)‘0) = (𝑁‘(𝑇‘0)))
6137, 59, 60syl2anc 573 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘0) = (𝑁‘(𝑇‘0)))
6257, 61eqtrd 2805 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘0) = (𝑁‘(𝑇‘0)))
6358, 6eleqtrri 2849 . . . . . . . . . 10 0 ∈ (0..^3)
6463a1i 11 . . . . . . . . 9 (𝜑 → 0 ∈ (0..^3))
6527, 64ffvelrnd 6505 . . . . . . . 8 (𝜑 → (𝑇‘0) ∈ (0..^3))
6613, 65ffvelrnd 6505 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘0)) ∈ ℕ)
6762, 66eqeltrd 2850 . . . . . 6 (𝜑 → ((𝐹𝑁)‘0) ∈ ℕ)
6811, 67ffvelrnd 6505 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘0)) ∈ ℝ)
6968recnd 10274 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘0)) ∈ ℂ)
7033fveq1d 6335 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘1) = ((𝑁𝑇)‘1))
7155tpid2 4441 . . . . . . . . . 10 1 ∈ {0, 1, 2}
7271, 40syl5eleqr 2857 . . . . . . . . 9 (𝜑 → 1 ∈ dom 𝑇)
73 fvco 6418 . . . . . . . . 9 ((Fun 𝑇 ∧ 1 ∈ dom 𝑇) → ((𝑁𝑇)‘1) = (𝑁‘(𝑇‘1)))
7437, 72, 73syl2anc 573 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘1) = (𝑁‘(𝑇‘1)))
7570, 74eqtrd 2805 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘1) = (𝑁‘(𝑇‘1)))
7671, 6eleqtrri 2849 . . . . . . . . . 10 1 ∈ (0..^3)
7776a1i 11 . . . . . . . . 9 (𝜑 → 1 ∈ (0..^3))
7827, 77ffvelrnd 6505 . . . . . . . 8 (𝜑 → (𝑇‘1) ∈ (0..^3))
7913, 78ffvelrnd 6505 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘1)) ∈ ℕ)
8075, 79eqeltrd 2850 . . . . . 6 (𝜑 → ((𝐹𝑁)‘1) ∈ ℕ)
8111, 80ffvelrnd 6505 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘1)) ∈ ℝ)
8281recnd 10274 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘1)) ∈ ℂ)
83 0ne1 11294 . . . . 5 0 ≠ 1
8483a1i 11 . . . 4 (𝜑 → 0 ≠ 1)
85 fveq2 6333 . . . . 5 (𝑏 = 2 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘2))
8685fveq2d 6337 . . . 4 (𝑏 = 2 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘2)))
87 2ex 11298 . . . . 5 2 ∈ V
8887a1i 11 . . . 4 (𝜑 → 2 ∈ V)
8933fveq1d 6335 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘2) = ((𝑁𝑇)‘2))
9087tpid3 4443 . . . . . . . . . 10 2 ∈ {0, 1, 2}
9190, 40syl5eleqr 2857 . . . . . . . . 9 (𝜑 → 2 ∈ dom 𝑇)
92 fvco 6418 . . . . . . . . 9 ((Fun 𝑇 ∧ 2 ∈ dom 𝑇) → ((𝑁𝑇)‘2) = (𝑁‘(𝑇‘2)))
9337, 91, 92syl2anc 573 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘2) = (𝑁‘(𝑇‘2)))
9489, 93eqtrd 2805 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘2) = (𝑁‘(𝑇‘2)))
9590, 6eleqtrri 2849 . . . . . . . . . 10 2 ∈ (0..^3)
9695a1i 11 . . . . . . . . 9 (𝜑 → 2 ∈ (0..^3))
9727, 96ffvelrnd 6505 . . . . . . . 8 (𝜑 → (𝑇‘2) ∈ (0..^3))
9813, 97ffvelrnd 6505 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘2)) ∈ ℕ)
9994, 98eqeltrd 2850 . . . . . 6 (𝜑 → ((𝐹𝑁)‘2) ∈ ℕ)
10011, 99ffvelrnd 6505 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘2)) ∈ ℝ)
101100recnd 10274 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘2)) ∈ ℂ)
102 0ne2 11446 . . . . 5 0 ≠ 2
103102a1i 11 . . . 4 (𝜑 → 0 ≠ 2)
104 1ne2 11447 . . . . 5 1 ≠ 2
105104a1i 11 . . . 4 (𝜑 → 1 ≠ 2)
10650, 52, 54, 56, 69, 82, 84, 86, 88, 101, 103, 105prodtp 29913 . . 3 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)) = (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))))
107 fveq2 6333 . . . . 5 (𝑎 = 0 → (𝑁𝑎) = (𝑁‘0))
108107fveq2d 6337 . . . 4 (𝑎 = 0 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘0)))
109 fveq2 6333 . . . . 5 (𝑎 = 1 → (𝑁𝑎) = (𝑁‘1))
110109fveq2d 6337 . . . 4 (𝑎 = 1 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘1)))
11113, 64ffvelrnd 6505 . . . . . 6 (𝜑 → (𝑁‘0) ∈ ℕ)
11211, 111ffvelrnd 6505 . . . . 5 (𝜑 → (𝐿‘(𝑁‘0)) ∈ ℝ)
113112recnd 10274 . . . 4 (𝜑 → (𝐿‘(𝑁‘0)) ∈ ℂ)
11413, 77ffvelrnd 6505 . . . . . 6 (𝜑 → (𝑁‘1) ∈ ℕ)
11511, 114ffvelrnd 6505 . . . . 5 (𝜑 → (𝐿‘(𝑁‘1)) ∈ ℝ)
116115recnd 10274 . . . 4 (𝜑 → (𝐿‘(𝑁‘1)) ∈ ℂ)
117 fveq2 6333 . . . . 5 (𝑎 = 2 → (𝑁𝑎) = (𝑁‘2))
118117fveq2d 6337 . . . 4 (𝑎 = 2 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘2)))
11913, 96ffvelrnd 6505 . . . . . 6 (𝜑 → (𝑁‘2) ∈ ℕ)
12011, 119ffvelrnd 6505 . . . . 5 (𝜑 → (𝐿‘(𝑁‘2)) ∈ ℝ)
121120recnd 10274 . . . 4 (𝜑 → (𝐿‘(𝑁‘2)) ∈ ℂ)
122108, 110, 54, 56, 113, 116, 84, 118, 88, 121, 103, 105prodtp 29913 . . 3 (𝜑 → ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)) = (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))))
12348, 106, 1223eqtr3d 2813 . 2 (𝜑 → (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))) = (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))))
12469, 82, 101mulassd 10269 . 2 (𝜑 → (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))) = ((𝐿‘((𝐹𝑁)‘0)) · ((𝐿‘((𝐹𝑁)‘1)) · (𝐿‘((𝐹𝑁)‘2)))))
125113, 116, 121mulassd 10269 . 2 (𝜑 → (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))) = ((𝐿‘(𝑁‘0)) · ((𝐿‘(𝑁‘1)) · (𝐿‘(𝑁‘2)))))
126123, 124, 1253eqtr3d 2813 1 (𝜑 → ((𝐿‘((𝐹𝑁)‘0)) · ((𝐿‘((𝐹𝑁)‘1)) · (𝐿‘((𝐹𝑁)‘2)))) = ((𝐿‘(𝑁‘0)) · ((𝐿‘(𝑁‘1)) · (𝐿‘(𝑁‘2)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 196  wa 382   = wceq 1631  wcel 2145  wne 2943  Vcvv 3351  {ctp 4321  cmpt 4864  dom cdm 5250  ccom 5254  Fun wfun 6024  wf 6026  1-1-ontowf1o 6029  cfv 6030  (class class class)co 6796  Fincfn 8113  cr 10141  0cc0 10142  1c1 10143   · cmul 10147  cn 11226  2c2 11276  3c3 11277  ..^cfzo 12673  cprod 14842
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1870  ax-4 1885  ax-5 1991  ax-6 2057  ax-7 2093  ax-8 2147  ax-9 2154  ax-10 2174  ax-11 2190  ax-12 2203  ax-13 2408  ax-ext 2751  ax-rep 4905  ax-sep 4916  ax-nul 4924  ax-pow 4975  ax-pr 5035  ax-un 7100  ax-inf2 8706  ax-cnex 10198  ax-resscn 10199  ax-1cn 10200  ax-icn 10201  ax-addcl 10202  ax-addrcl 10203  ax-mulcl 10204  ax-mulrcl 10205  ax-mulcom 10206  ax-addass 10207  ax-mulass 10208  ax-distr 10209  ax-i2m1 10210  ax-1ne0 10211  ax-1rid 10212  ax-rnegex 10213  ax-rrecex 10214  ax-cnre 10215  ax-pre-lttri 10216  ax-pre-lttrn 10217  ax-pre-ltadd 10218  ax-pre-mulgt0 10219  ax-pre-sup 10220
This theorem depends on definitions:  df-bi 197  df-an 383  df-or 837  df-3or 1072  df-3an 1073  df-tru 1634  df-fal 1637  df-ex 1853  df-nf 1858  df-sb 2050  df-eu 2622  df-mo 2623  df-clab 2758  df-cleq 2764  df-clel 2767  df-nfc 2902  df-ne 2944  df-nel 3047  df-ral 3066  df-rex 3067  df-reu 3068  df-rmo 3069  df-rab 3070  df-v 3353  df-sbc 3588  df-csb 3683  df-dif 3726  df-un 3728  df-in 3730  df-ss 3737  df-pss 3739  df-nul 4064  df-if 4227  df-pw 4300  df-sn 4318  df-pr 4320  df-tp 4322  df-op 4324  df-uni 4576  df-int 4613  df-iun 4657  df-br 4788  df-opab 4848  df-mpt 4865  df-tr 4888  df-id 5158  df-eprel 5163  df-po 5171  df-so 5172  df-fr 5209  df-se 5210  df-we 5211  df-xp 5256  df-rel 5257  df-cnv 5258  df-co 5259  df-dm 5260  df-rn 5261  df-res 5262  df-ima 5263  df-pred 5822  df-ord 5868  df-on 5869  df-lim 5870  df-suc 5871  df-iota 5993  df-fun 6032  df-fn 6033  df-f 6034  df-f1 6035  df-fo 6036  df-f1o 6037  df-fv 6038  df-isom 6039  df-riota 6757  df-ov 6799  df-oprab 6800  df-mpt2 6801  df-om 7217  df-1st 7319  df-2nd 7320  df-wrecs 7563  df-recs 7625  df-rdg 7663  df-1o 7717  df-oadd 7721  df-er 7900  df-en 8114  df-dom 8115  df-sdom 8116  df-fin 8117  df-sup 8508  df-oi 8575  df-card 8969  df-pnf 10282  df-mnf 10283  df-xr 10284  df-ltxr 10285  df-le 10286  df-sub 10474  df-neg 10475  df-div 10891  df-nn 11227  df-2 11285  df-3 11286  df-n0 11500  df-z 11585  df-uz 11894  df-rp 12036  df-fz 12534  df-fzo 12674  df-seq 13009  df-exp 13068  df-hash 13322  df-cj 14047  df-re 14048  df-im 14049  df-sqrt 14183  df-abs 14184  df-clim 14427  df-prod 14843
This theorem is referenced by:  hgt750lema  31075
  Copyright terms: Public domain W3C validator