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 30732
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 6191 . . . . . 6 (𝑎 = (𝑇𝑏) → (𝑁𝑎) = (𝑁‘(𝑇𝑏)))
21fveq2d 6195 . . . . 5 (𝑎 = (𝑇𝑏) → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘(𝑇𝑏))))
3 tpfi 8236 . . . . . 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 12554 . . . . . . 7 (0..^3) = {0, 1, 2}
7 f1oeq23 6130 . . . . . . 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 708 . . . . . 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 2623 . . . . 5 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝑇𝑏) = (𝑇𝑏))
11 hgt750lemg.l . . . . . . . 8 (𝜑𝐿:ℕ⟶ℝ)
1211adantr 481 . . . . . . 7 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝐿:ℕ⟶ℝ)
13 hgt750lemg.n . . . . . . . . 9 (𝜑𝑁:(0..^3)⟶ℕ)
1413adantr 481 . . . . . . . 8 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑁:(0..^3)⟶ℕ)
15 simpr 477 . . . . . . . . 9 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑎 ∈ {0, 1, 2})
1615, 6syl6eleqr 2712 . . . . . . . 8 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑎 ∈ (0..^3))
1714, 16ffvelrnd 6360 . . . . . . 7 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝑁𝑎) ∈ ℕ)
1812, 17ffvelrnd 6360 . . . . . 6 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝐿‘(𝑁𝑎)) ∈ ℝ)
1918recnd 10068 . . . . 5 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝐿‘(𝑁𝑎)) ∈ ℂ)
202, 4, 9, 10, 19fprodf1o 14676 . . . 4 (𝜑 → ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)) = ∏𝑏 ∈ {0, 1, 2} (𝐿‘(𝑁‘(𝑇𝑏))))
21 hgt750lemg.f . . . . . . . . . . 11 𝐹 = (𝑐𝑅 ↦ (𝑐𝑇))
2221a1i 11 . . . . . . . . . 10 (𝜑𝐹 = (𝑐𝑅 ↦ (𝑐𝑇)))
23 simpr 477 . . . . . . . . . . 11 ((𝜑𝑐 = 𝑁) → 𝑐 = 𝑁)
2423coeq1d 5283 . . . . . . . . . 10 ((𝜑𝑐 = 𝑁) → (𝑐𝑇) = (𝑁𝑇))
25 hgt750lemg.1 . . . . . . . . . 10 (𝜑𝑁𝑅)
26 f1of 6137 . . . . . . . . . . . . 13 (𝑇:(0..^3)–1-1-onto→(0..^3) → 𝑇:(0..^3)⟶(0..^3))
275, 26syl 17 . . . . . . . . . . . 12 (𝜑𝑇:(0..^3)⟶(0..^3))
28 ovexd 6680 . . . . . . . . . . . 12 (𝜑 → (0..^3) ∈ V)
29 fex2 7121 . . . . . . . . . . . 12 ((𝑇:(0..^3)⟶(0..^3) ∧ (0..^3) ∈ V ∧ (0..^3) ∈ V) → 𝑇 ∈ V)
3027, 28, 28, 29syl3anc 1326 . . . . . . . . . . 11 (𝜑𝑇 ∈ V)
31 coexg 7117 . . . . . . . . . . 11 ((𝑁𝑅𝑇 ∈ V) → (𝑁𝑇) ∈ V)
3225, 30, 31syl2anc 693 . . . . . . . . . 10 (𝜑 → (𝑁𝑇) ∈ V)
3322, 24, 25, 32fvmptd 6288 . . . . . . . . 9 (𝜑 → (𝐹𝑁) = (𝑁𝑇))
3433adantr 481 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝐹𝑁) = (𝑁𝑇))
3534fveq1d 6193 . . . . . . 7 ((𝜑𝑏 ∈ {0, 1, 2}) → ((𝐹𝑁)‘𝑏) = ((𝑁𝑇)‘𝑏))
36 f1ofun 6139 . . . . . . . . . 10 (𝑇:(0..^3)–1-1-onto→(0..^3) → Fun 𝑇)
375, 36syl 17 . . . . . . . . 9 (𝜑 → Fun 𝑇)
3837adantr 481 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → Fun 𝑇)
39 f1odm 6141 . . . . . . . . . . 11 (𝑇:{0, 1, 2}–1-1-onto→{0, 1, 2} → dom 𝑇 = {0, 1, 2})
409, 39syl 17 . . . . . . . . . 10 (𝜑 → dom 𝑇 = {0, 1, 2})
4140eleq2d 2687 . . . . . . . . 9 (𝜑 → (𝑏 ∈ dom 𝑇𝑏 ∈ {0, 1, 2}))
4241biimpar 502 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → 𝑏 ∈ dom 𝑇)
43 fvco 6274 . . . . . . . 8 ((Fun 𝑇𝑏 ∈ dom 𝑇) → ((𝑁𝑇)‘𝑏) = (𝑁‘(𝑇𝑏)))
4438, 42, 43syl2anc 693 . . . . . . 7 ((𝜑𝑏 ∈ {0, 1, 2}) → ((𝑁𝑇)‘𝑏) = (𝑁‘(𝑇𝑏)))
4535, 44eqtr2d 2657 . . . . . 6 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝑁‘(𝑇𝑏)) = ((𝐹𝑁)‘𝑏))
4645fveq2d 6195 . . . . 5 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝐿‘(𝑁‘(𝑇𝑏))) = (𝐿‘((𝐹𝑁)‘𝑏)))
4746prodeq2dv 14653 . . . 4 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘(𝑁‘(𝑇𝑏))) = ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)))
4820, 47eqtr2d 2657 . . 3 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)) = ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)))
49 fveq2 6191 . . . . 5 (𝑏 = 0 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘0))
5049fveq2d 6195 . . . 4 (𝑏 = 0 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘0)))
51 fveq2 6191 . . . . 5 (𝑏 = 1 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘1))
5251fveq2d 6195 . . . 4 (𝑏 = 1 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘1)))
53 c0ex 10034 . . . . 5 0 ∈ V
5453a1i 11 . . . 4 (𝜑 → 0 ∈ V)
55 1ex 10035 . . . . 5 1 ∈ V
5655a1i 11 . . . 4 (𝜑 → 1 ∈ V)
5733fveq1d 6193 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘0) = ((𝑁𝑇)‘0))
5853tpid1 4303 . . . . . . . . . 10 0 ∈ {0, 1, 2}
5958, 40syl5eleqr 2708 . . . . . . . . 9 (𝜑 → 0 ∈ dom 𝑇)
60 fvco 6274 . . . . . . . . 9 ((Fun 𝑇 ∧ 0 ∈ dom 𝑇) → ((𝑁𝑇)‘0) = (𝑁‘(𝑇‘0)))
6137, 59, 60syl2anc 693 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘0) = (𝑁‘(𝑇‘0)))
6257, 61eqtrd 2656 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘0) = (𝑁‘(𝑇‘0)))
6358, 6eleqtrri 2700 . . . . . . . . . 10 0 ∈ (0..^3)
6463a1i 11 . . . . . . . . 9 (𝜑 → 0 ∈ (0..^3))
6527, 64ffvelrnd 6360 . . . . . . . 8 (𝜑 → (𝑇‘0) ∈ (0..^3))
6613, 65ffvelrnd 6360 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘0)) ∈ ℕ)
6762, 66eqeltrd 2701 . . . . . 6 (𝜑 → ((𝐹𝑁)‘0) ∈ ℕ)
6811, 67ffvelrnd 6360 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘0)) ∈ ℝ)
6968recnd 10068 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘0)) ∈ ℂ)
7033fveq1d 6193 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘1) = ((𝑁𝑇)‘1))
7155tpid2 4304 . . . . . . . . . 10 1 ∈ {0, 1, 2}
7271, 40syl5eleqr 2708 . . . . . . . . 9 (𝜑 → 1 ∈ dom 𝑇)
73 fvco 6274 . . . . . . . . 9 ((Fun 𝑇 ∧ 1 ∈ dom 𝑇) → ((𝑁𝑇)‘1) = (𝑁‘(𝑇‘1)))
7437, 72, 73syl2anc 693 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘1) = (𝑁‘(𝑇‘1)))
7570, 74eqtrd 2656 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘1) = (𝑁‘(𝑇‘1)))
7671, 6eleqtrri 2700 . . . . . . . . . 10 1 ∈ (0..^3)
7776a1i 11 . . . . . . . . 9 (𝜑 → 1 ∈ (0..^3))
7827, 77ffvelrnd 6360 . . . . . . . 8 (𝜑 → (𝑇‘1) ∈ (0..^3))
7913, 78ffvelrnd 6360 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘1)) ∈ ℕ)
8075, 79eqeltrd 2701 . . . . . 6 (𝜑 → ((𝐹𝑁)‘1) ∈ ℕ)
8111, 80ffvelrnd 6360 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘1)) ∈ ℝ)
8281recnd 10068 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘1)) ∈ ℂ)
83 0ne1 11088 . . . . 5 0 ≠ 1
8483a1i 11 . . . 4 (𝜑 → 0 ≠ 1)
85 fveq2 6191 . . . . 5 (𝑏 = 2 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘2))
8685fveq2d 6195 . . . 4 (𝑏 = 2 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘2)))
87 2ex 11092 . . . . 5 2 ∈ V
8887a1i 11 . . . 4 (𝜑 → 2 ∈ V)
8933fveq1d 6193 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘2) = ((𝑁𝑇)‘2))
9087tpid3 4307 . . . . . . . . . 10 2 ∈ {0, 1, 2}
9190, 40syl5eleqr 2708 . . . . . . . . 9 (𝜑 → 2 ∈ dom 𝑇)
92 fvco 6274 . . . . . . . . 9 ((Fun 𝑇 ∧ 2 ∈ dom 𝑇) → ((𝑁𝑇)‘2) = (𝑁‘(𝑇‘2)))
9337, 91, 92syl2anc 693 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘2) = (𝑁‘(𝑇‘2)))
9489, 93eqtrd 2656 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘2) = (𝑁‘(𝑇‘2)))
9590, 6eleqtrri 2700 . . . . . . . . . 10 2 ∈ (0..^3)
9695a1i 11 . . . . . . . . 9 (𝜑 → 2 ∈ (0..^3))
9727, 96ffvelrnd 6360 . . . . . . . 8 (𝜑 → (𝑇‘2) ∈ (0..^3))
9813, 97ffvelrnd 6360 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘2)) ∈ ℕ)
9994, 98eqeltrd 2701 . . . . . 6 (𝜑 → ((𝐹𝑁)‘2) ∈ ℕ)
10011, 99ffvelrnd 6360 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘2)) ∈ ℝ)
101100recnd 10068 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘2)) ∈ ℂ)
102 0ne2 11239 . . . . 5 0 ≠ 2
103102a1i 11 . . . 4 (𝜑 → 0 ≠ 2)
104 1ne2 11240 . . . . 5 1 ≠ 2
105104a1i 11 . . . 4 (𝜑 → 1 ≠ 2)
10650, 52, 54, 56, 69, 82, 84, 86, 88, 101, 103, 105prodtp 29573 . . 3 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)) = (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))))
107 fveq2 6191 . . . . 5 (𝑎 = 0 → (𝑁𝑎) = (𝑁‘0))
108107fveq2d 6195 . . . 4 (𝑎 = 0 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘0)))
109 fveq2 6191 . . . . 5 (𝑎 = 1 → (𝑁𝑎) = (𝑁‘1))
110109fveq2d 6195 . . . 4 (𝑎 = 1 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘1)))
11113, 64ffvelrnd 6360 . . . . . 6 (𝜑 → (𝑁‘0) ∈ ℕ)
11211, 111ffvelrnd 6360 . . . . 5 (𝜑 → (𝐿‘(𝑁‘0)) ∈ ℝ)
113112recnd 10068 . . . 4 (𝜑 → (𝐿‘(𝑁‘0)) ∈ ℂ)
11413, 77ffvelrnd 6360 . . . . . 6 (𝜑 → (𝑁‘1) ∈ ℕ)
11511, 114ffvelrnd 6360 . . . . 5 (𝜑 → (𝐿‘(𝑁‘1)) ∈ ℝ)
116115recnd 10068 . . . 4 (𝜑 → (𝐿‘(𝑁‘1)) ∈ ℂ)
117 fveq2 6191 . . . . 5 (𝑎 = 2 → (𝑁𝑎) = (𝑁‘2))
118117fveq2d 6195 . . . 4 (𝑎 = 2 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘2)))
11913, 96ffvelrnd 6360 . . . . . 6 (𝜑 → (𝑁‘2) ∈ ℕ)
12011, 119ffvelrnd 6360 . . . . 5 (𝜑 → (𝐿‘(𝑁‘2)) ∈ ℝ)
121120recnd 10068 . . . 4 (𝜑 → (𝐿‘(𝑁‘2)) ∈ ℂ)
122108, 110, 54, 56, 113, 116, 84, 118, 88, 121, 103, 105prodtp 29573 . . 3 (𝜑 → ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)) = (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))))
12348, 106, 1223eqtr3d 2664 . 2 (𝜑 → (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))) = (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))))
12469, 82, 101mulassd 10063 . 2 (𝜑 → (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))) = ((𝐿‘((𝐹𝑁)‘0)) · ((𝐿‘((𝐹𝑁)‘1)) · (𝐿‘((𝐹𝑁)‘2)))))
125113, 116, 121mulassd 10063 . 2 (𝜑 → (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))) = ((𝐿‘(𝑁‘0)) · ((𝐿‘(𝑁‘1)) · (𝐿‘(𝑁‘2)))))
126123, 124, 1253eqtr3d 2664 1 (𝜑 → ((𝐿‘((𝐹𝑁)‘0)) · ((𝐿‘((𝐹𝑁)‘1)) · (𝐿‘((𝐹𝑁)‘2)))) = ((𝐿‘(𝑁‘0)) · ((𝐿‘(𝑁‘1)) · (𝐿‘(𝑁‘2)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 196  wa 384   = wceq 1483  wcel 1990  wne 2794  Vcvv 3200  {ctp 4181  cmpt 4729  dom cdm 5114  ccom 5118  Fun wfun 5882  wf 5884  1-1-ontowf1o 5887  cfv 5888  (class class class)co 6650  Fincfn 7955  cr 9935  0cc0 9936  1c1 9937   · cmul 9941  cn 11020  2c2 11070  3c3 11071  ..^cfzo 12465  cprod 14635
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1722  ax-4 1737  ax-5 1839  ax-6 1888  ax-7 1935  ax-8 1992  ax-9 1999  ax-10 2019  ax-11 2034  ax-12 2047  ax-13 2246  ax-ext 2602  ax-rep 4771  ax-sep 4781  ax-nul 4789  ax-pow 4843  ax-pr 4906  ax-un 6949  ax-inf2 8538  ax-cnex 9992  ax-resscn 9993  ax-1cn 9994  ax-icn 9995  ax-addcl 9996  ax-addrcl 9997  ax-mulcl 9998  ax-mulrcl 9999  ax-mulcom 10000  ax-addass 10001  ax-mulass 10002  ax-distr 10003  ax-i2m1 10004  ax-1ne0 10005  ax-1rid 10006  ax-rnegex 10007  ax-rrecex 10008  ax-cnre 10009  ax-pre-lttri 10010  ax-pre-lttrn 10011  ax-pre-ltadd 10012  ax-pre-mulgt0 10013  ax-pre-sup 10014
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1038  df-3an 1039  df-tru 1486  df-fal 1489  df-ex 1705  df-nf 1710  df-sb 1881  df-eu 2474  df-mo 2475  df-clab 2609  df-cleq 2615  df-clel 2618  df-nfc 2753  df-ne 2795  df-nel 2898  df-ral 2917  df-rex 2918  df-reu 2919  df-rmo 2920  df-rab 2921  df-v 3202  df-sbc 3436  df-csb 3534  df-dif 3577  df-un 3579  df-in 3581  df-ss 3588  df-pss 3590  df-nul 3916  df-if 4087  df-pw 4160  df-sn 4178  df-pr 4180  df-tp 4182  df-op 4184  df-uni 4437  df-int 4476  df-iun 4522  df-br 4654  df-opab 4713  df-mpt 4730  df-tr 4753  df-id 5024  df-eprel 5029  df-po 5035  df-so 5036  df-fr 5073  df-se 5074  df-we 5075  df-xp 5120  df-rel 5121  df-cnv 5122  df-co 5123  df-dm 5124  df-rn 5125  df-res 5126  df-ima 5127  df-pred 5680  df-ord 5726  df-on 5727  df-lim 5728  df-suc 5729  df-iota 5851  df-fun 5890  df-fn 5891  df-f 5892  df-f1 5893  df-fo 5894  df-f1o 5895  df-fv 5896  df-isom 5897  df-riota 6611  df-ov 6653  df-oprab 6654  df-mpt2 6655  df-om 7066  df-1st 7168  df-2nd 7169  df-wrecs 7407  df-recs 7468  df-rdg 7506  df-1o 7560  df-oadd 7564  df-er 7742  df-en 7956  df-dom 7957  df-sdom 7958  df-fin 7959  df-sup 8348  df-oi 8415  df-card 8765  df-pnf 10076  df-mnf 10077  df-xr 10078  df-ltxr 10079  df-le 10080  df-sub 10268  df-neg 10269  df-div 10685  df-nn 11021  df-2 11079  df-3 11080  df-n0 11293  df-z 11378  df-uz 11688  df-rp 11833  df-fz 12327  df-fzo 12466  df-seq 12802  df-exp 12861  df-hash 13118  df-cj 13839  df-re 13840  df-im 13841  df-sqrt 13975  df-abs 13976  df-clim 14219  df-prod 14636
This theorem is referenced by:  hgt750lema  30735
  Copyright terms: Public domain W3C validator