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 31041
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 6352 . . . . . 6 (𝑎 = (𝑇𝑏) → (𝑁𝑎) = (𝑁‘(𝑇𝑏)))
21fveq2d 6356 . . . . 5 (𝑎 = (𝑇𝑏) → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘(𝑇𝑏))))
3 tpfi 8401 . . . . . 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 12748 . . . . . . 7 (0..^3) = {0, 1, 2}
7 f1oeq23 6291 . . . . . . 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 710 . . . . . 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 2761 . . . . 5 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝑇𝑏) = (𝑇𝑏))
11 hgt750lemg.l . . . . . . . 8 (𝜑𝐿:ℕ⟶ℝ)
1211adantr 472 . . . . . . 7 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝐿:ℕ⟶ℝ)
13 hgt750lemg.n . . . . . . . . 9 (𝜑𝑁:(0..^3)⟶ℕ)
1413adantr 472 . . . . . . . 8 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑁:(0..^3)⟶ℕ)
15 simpr 479 . . . . . . . . 9 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑎 ∈ {0, 1, 2})
1615, 6syl6eleqr 2850 . . . . . . . 8 ((𝜑𝑎 ∈ {0, 1, 2}) → 𝑎 ∈ (0..^3))
1714, 16ffvelrnd 6523 . . . . . . 7 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝑁𝑎) ∈ ℕ)
1812, 17ffvelrnd 6523 . . . . . 6 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝐿‘(𝑁𝑎)) ∈ ℝ)
1918recnd 10260 . . . . 5 ((𝜑𝑎 ∈ {0, 1, 2}) → (𝐿‘(𝑁𝑎)) ∈ ℂ)
202, 4, 9, 10, 19fprodf1o 14875 . . . 4 (𝜑 → ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)) = ∏𝑏 ∈ {0, 1, 2} (𝐿‘(𝑁‘(𝑇𝑏))))
21 hgt750lemg.f . . . . . . . . . . 11 𝐹 = (𝑐𝑅 ↦ (𝑐𝑇))
2221a1i 11 . . . . . . . . . 10 (𝜑𝐹 = (𝑐𝑅 ↦ (𝑐𝑇)))
23 simpr 479 . . . . . . . . . . 11 ((𝜑𝑐 = 𝑁) → 𝑐 = 𝑁)
2423coeq1d 5439 . . . . . . . . . 10 ((𝜑𝑐 = 𝑁) → (𝑐𝑇) = (𝑁𝑇))
25 hgt750lemg.1 . . . . . . . . . 10 (𝜑𝑁𝑅)
26 f1of 6298 . . . . . . . . . . . . 13 (𝑇:(0..^3)–1-1-onto→(0..^3) → 𝑇:(0..^3)⟶(0..^3))
275, 26syl 17 . . . . . . . . . . . 12 (𝜑𝑇:(0..^3)⟶(0..^3))
28 ovexd 6843 . . . . . . . . . . . 12 (𝜑 → (0..^3) ∈ V)
29 fex2 7286 . . . . . . . . . . . 12 ((𝑇:(0..^3)⟶(0..^3) ∧ (0..^3) ∈ V ∧ (0..^3) ∈ V) → 𝑇 ∈ V)
3027, 28, 28, 29syl3anc 1477 . . . . . . . . . . 11 (𝜑𝑇 ∈ V)
31 coexg 7282 . . . . . . . . . . 11 ((𝑁𝑅𝑇 ∈ V) → (𝑁𝑇) ∈ V)
3225, 30, 31syl2anc 696 . . . . . . . . . 10 (𝜑 → (𝑁𝑇) ∈ V)
3322, 24, 25, 32fvmptd 6450 . . . . . . . . 9 (𝜑 → (𝐹𝑁) = (𝑁𝑇))
3433adantr 472 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝐹𝑁) = (𝑁𝑇))
3534fveq1d 6354 . . . . . . 7 ((𝜑𝑏 ∈ {0, 1, 2}) → ((𝐹𝑁)‘𝑏) = ((𝑁𝑇)‘𝑏))
36 f1ofun 6300 . . . . . . . . . 10 (𝑇:(0..^3)–1-1-onto→(0..^3) → Fun 𝑇)
375, 36syl 17 . . . . . . . . 9 (𝜑 → Fun 𝑇)
3837adantr 472 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → Fun 𝑇)
39 f1odm 6302 . . . . . . . . . . 11 (𝑇:{0, 1, 2}–1-1-onto→{0, 1, 2} → dom 𝑇 = {0, 1, 2})
409, 39syl 17 . . . . . . . . . 10 (𝜑 → dom 𝑇 = {0, 1, 2})
4140eleq2d 2825 . . . . . . . . 9 (𝜑 → (𝑏 ∈ dom 𝑇𝑏 ∈ {0, 1, 2}))
4241biimpar 503 . . . . . . . 8 ((𝜑𝑏 ∈ {0, 1, 2}) → 𝑏 ∈ dom 𝑇)
43 fvco 6436 . . . . . . . 8 ((Fun 𝑇𝑏 ∈ dom 𝑇) → ((𝑁𝑇)‘𝑏) = (𝑁‘(𝑇𝑏)))
4438, 42, 43syl2anc 696 . . . . . . 7 ((𝜑𝑏 ∈ {0, 1, 2}) → ((𝑁𝑇)‘𝑏) = (𝑁‘(𝑇𝑏)))
4535, 44eqtr2d 2795 . . . . . 6 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝑁‘(𝑇𝑏)) = ((𝐹𝑁)‘𝑏))
4645fveq2d 6356 . . . . 5 ((𝜑𝑏 ∈ {0, 1, 2}) → (𝐿‘(𝑁‘(𝑇𝑏))) = (𝐿‘((𝐹𝑁)‘𝑏)))
4746prodeq2dv 14852 . . . 4 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘(𝑁‘(𝑇𝑏))) = ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)))
4820, 47eqtr2d 2795 . . 3 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)) = ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)))
49 fveq2 6352 . . . . 5 (𝑏 = 0 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘0))
5049fveq2d 6356 . . . 4 (𝑏 = 0 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘0)))
51 fveq2 6352 . . . . 5 (𝑏 = 1 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘1))
5251fveq2d 6356 . . . 4 (𝑏 = 1 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘1)))
53 c0ex 10226 . . . . 5 0 ∈ V
5453a1i 11 . . . 4 (𝜑 → 0 ∈ V)
55 1ex 10227 . . . . 5 1 ∈ V
5655a1i 11 . . . 4 (𝜑 → 1 ∈ V)
5733fveq1d 6354 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘0) = ((𝑁𝑇)‘0))
5853tpid1 4447 . . . . . . . . . 10 0 ∈ {0, 1, 2}
5958, 40syl5eleqr 2846 . . . . . . . . 9 (𝜑 → 0 ∈ dom 𝑇)
60 fvco 6436 . . . . . . . . 9 ((Fun 𝑇 ∧ 0 ∈ dom 𝑇) → ((𝑁𝑇)‘0) = (𝑁‘(𝑇‘0)))
6137, 59, 60syl2anc 696 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘0) = (𝑁‘(𝑇‘0)))
6257, 61eqtrd 2794 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘0) = (𝑁‘(𝑇‘0)))
6358, 6eleqtrri 2838 . . . . . . . . . 10 0 ∈ (0..^3)
6463a1i 11 . . . . . . . . 9 (𝜑 → 0 ∈ (0..^3))
6527, 64ffvelrnd 6523 . . . . . . . 8 (𝜑 → (𝑇‘0) ∈ (0..^3))
6613, 65ffvelrnd 6523 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘0)) ∈ ℕ)
6762, 66eqeltrd 2839 . . . . . 6 (𝜑 → ((𝐹𝑁)‘0) ∈ ℕ)
6811, 67ffvelrnd 6523 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘0)) ∈ ℝ)
6968recnd 10260 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘0)) ∈ ℂ)
7033fveq1d 6354 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘1) = ((𝑁𝑇)‘1))
7155tpid2 4448 . . . . . . . . . 10 1 ∈ {0, 1, 2}
7271, 40syl5eleqr 2846 . . . . . . . . 9 (𝜑 → 1 ∈ dom 𝑇)
73 fvco 6436 . . . . . . . . 9 ((Fun 𝑇 ∧ 1 ∈ dom 𝑇) → ((𝑁𝑇)‘1) = (𝑁‘(𝑇‘1)))
7437, 72, 73syl2anc 696 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘1) = (𝑁‘(𝑇‘1)))
7570, 74eqtrd 2794 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘1) = (𝑁‘(𝑇‘1)))
7671, 6eleqtrri 2838 . . . . . . . . . 10 1 ∈ (0..^3)
7776a1i 11 . . . . . . . . 9 (𝜑 → 1 ∈ (0..^3))
7827, 77ffvelrnd 6523 . . . . . . . 8 (𝜑 → (𝑇‘1) ∈ (0..^3))
7913, 78ffvelrnd 6523 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘1)) ∈ ℕ)
8075, 79eqeltrd 2839 . . . . . 6 (𝜑 → ((𝐹𝑁)‘1) ∈ ℕ)
8111, 80ffvelrnd 6523 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘1)) ∈ ℝ)
8281recnd 10260 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘1)) ∈ ℂ)
83 0ne1 11280 . . . . 5 0 ≠ 1
8483a1i 11 . . . 4 (𝜑 → 0 ≠ 1)
85 fveq2 6352 . . . . 5 (𝑏 = 2 → ((𝐹𝑁)‘𝑏) = ((𝐹𝑁)‘2))
8685fveq2d 6356 . . . 4 (𝑏 = 2 → (𝐿‘((𝐹𝑁)‘𝑏)) = (𝐿‘((𝐹𝑁)‘2)))
87 2ex 11284 . . . . 5 2 ∈ V
8887a1i 11 . . . 4 (𝜑 → 2 ∈ V)
8933fveq1d 6354 . . . . . . . 8 (𝜑 → ((𝐹𝑁)‘2) = ((𝑁𝑇)‘2))
9087tpid3 4450 . . . . . . . . . 10 2 ∈ {0, 1, 2}
9190, 40syl5eleqr 2846 . . . . . . . . 9 (𝜑 → 2 ∈ dom 𝑇)
92 fvco 6436 . . . . . . . . 9 ((Fun 𝑇 ∧ 2 ∈ dom 𝑇) → ((𝑁𝑇)‘2) = (𝑁‘(𝑇‘2)))
9337, 91, 92syl2anc 696 . . . . . . . 8 (𝜑 → ((𝑁𝑇)‘2) = (𝑁‘(𝑇‘2)))
9489, 93eqtrd 2794 . . . . . . 7 (𝜑 → ((𝐹𝑁)‘2) = (𝑁‘(𝑇‘2)))
9590, 6eleqtrri 2838 . . . . . . . . . 10 2 ∈ (0..^3)
9695a1i 11 . . . . . . . . 9 (𝜑 → 2 ∈ (0..^3))
9727, 96ffvelrnd 6523 . . . . . . . 8 (𝜑 → (𝑇‘2) ∈ (0..^3))
9813, 97ffvelrnd 6523 . . . . . . 7 (𝜑 → (𝑁‘(𝑇‘2)) ∈ ℕ)
9994, 98eqeltrd 2839 . . . . . 6 (𝜑 → ((𝐹𝑁)‘2) ∈ ℕ)
10011, 99ffvelrnd 6523 . . . . 5 (𝜑 → (𝐿‘((𝐹𝑁)‘2)) ∈ ℝ)
101100recnd 10260 . . . 4 (𝜑 → (𝐿‘((𝐹𝑁)‘2)) ∈ ℂ)
102 0ne2 11431 . . . . 5 0 ≠ 2
103102a1i 11 . . . 4 (𝜑 → 0 ≠ 2)
104 1ne2 11432 . . . . 5 1 ≠ 2
105104a1i 11 . . . 4 (𝜑 → 1 ≠ 2)
10650, 52, 54, 56, 69, 82, 84, 86, 88, 101, 103, 105prodtp 29882 . . 3 (𝜑 → ∏𝑏 ∈ {0, 1, 2} (𝐿‘((𝐹𝑁)‘𝑏)) = (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))))
107 fveq2 6352 . . . . 5 (𝑎 = 0 → (𝑁𝑎) = (𝑁‘0))
108107fveq2d 6356 . . . 4 (𝑎 = 0 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘0)))
109 fveq2 6352 . . . . 5 (𝑎 = 1 → (𝑁𝑎) = (𝑁‘1))
110109fveq2d 6356 . . . 4 (𝑎 = 1 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘1)))
11113, 64ffvelrnd 6523 . . . . . 6 (𝜑 → (𝑁‘0) ∈ ℕ)
11211, 111ffvelrnd 6523 . . . . 5 (𝜑 → (𝐿‘(𝑁‘0)) ∈ ℝ)
113112recnd 10260 . . . 4 (𝜑 → (𝐿‘(𝑁‘0)) ∈ ℂ)
11413, 77ffvelrnd 6523 . . . . . 6 (𝜑 → (𝑁‘1) ∈ ℕ)
11511, 114ffvelrnd 6523 . . . . 5 (𝜑 → (𝐿‘(𝑁‘1)) ∈ ℝ)
116115recnd 10260 . . . 4 (𝜑 → (𝐿‘(𝑁‘1)) ∈ ℂ)
117 fveq2 6352 . . . . 5 (𝑎 = 2 → (𝑁𝑎) = (𝑁‘2))
118117fveq2d 6356 . . . 4 (𝑎 = 2 → (𝐿‘(𝑁𝑎)) = (𝐿‘(𝑁‘2)))
11913, 96ffvelrnd 6523 . . . . . 6 (𝜑 → (𝑁‘2) ∈ ℕ)
12011, 119ffvelrnd 6523 . . . . 5 (𝜑 → (𝐿‘(𝑁‘2)) ∈ ℝ)
121120recnd 10260 . . . 4 (𝜑 → (𝐿‘(𝑁‘2)) ∈ ℂ)
122108, 110, 54, 56, 113, 116, 84, 118, 88, 121, 103, 105prodtp 29882 . . 3 (𝜑 → ∏𝑎 ∈ {0, 1, 2} (𝐿‘(𝑁𝑎)) = (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))))
12348, 106, 1223eqtr3d 2802 . 2 (𝜑 → (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))) = (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))))
12469, 82, 101mulassd 10255 . 2 (𝜑 → (((𝐿‘((𝐹𝑁)‘0)) · (𝐿‘((𝐹𝑁)‘1))) · (𝐿‘((𝐹𝑁)‘2))) = ((𝐿‘((𝐹𝑁)‘0)) · ((𝐿‘((𝐹𝑁)‘1)) · (𝐿‘((𝐹𝑁)‘2)))))
125113, 116, 121mulassd 10255 . 2 (𝜑 → (((𝐿‘(𝑁‘0)) · (𝐿‘(𝑁‘1))) · (𝐿‘(𝑁‘2))) = ((𝐿‘(𝑁‘0)) · ((𝐿‘(𝑁‘1)) · (𝐿‘(𝑁‘2)))))
126123, 124, 1253eqtr3d 2802 1 (𝜑 → ((𝐿‘((𝐹𝑁)‘0)) · ((𝐿‘((𝐹𝑁)‘1)) · (𝐿‘((𝐹𝑁)‘2)))) = ((𝐿‘(𝑁‘0)) · ((𝐿‘(𝑁‘1)) · (𝐿‘(𝑁‘2)))))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 196  wa 383   = wceq 1632  wcel 2139  wne 2932  Vcvv 3340  {ctp 4325  cmpt 4881  dom cdm 5266  ccom 5270  Fun wfun 6043  wf 6045  1-1-ontowf1o 6048  cfv 6049  (class class class)co 6813  Fincfn 8121  cr 10127  0cc0 10128  1c1 10129   · cmul 10133  cn 11212  2c2 11262  3c3 11263  ..^cfzo 12659  cprod 14834
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1871  ax-4 1886  ax-5 1988  ax-6 2054  ax-7 2090  ax-8 2141  ax-9 2148  ax-10 2168  ax-11 2183  ax-12 2196  ax-13 2391  ax-ext 2740  ax-rep 4923  ax-sep 4933  ax-nul 4941  ax-pow 4992  ax-pr 5055  ax-un 7114  ax-inf2 8711  ax-cnex 10184  ax-resscn 10185  ax-1cn 10186  ax-icn 10187  ax-addcl 10188  ax-addrcl 10189  ax-mulcl 10190  ax-mulrcl 10191  ax-mulcom 10192  ax-addass 10193  ax-mulass 10194  ax-distr 10195  ax-i2m1 10196  ax-1ne0 10197  ax-1rid 10198  ax-rnegex 10199  ax-rrecex 10200  ax-cnre 10201  ax-pre-lttri 10202  ax-pre-lttrn 10203  ax-pre-ltadd 10204  ax-pre-mulgt0 10205  ax-pre-sup 10206
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1073  df-3an 1074  df-tru 1635  df-fal 1638  df-ex 1854  df-nf 1859  df-sb 2047  df-eu 2611  df-mo 2612  df-clab 2747  df-cleq 2753  df-clel 2756  df-nfc 2891  df-ne 2933  df-nel 3036  df-ral 3055  df-rex 3056  df-reu 3057  df-rmo 3058  df-rab 3059  df-v 3342  df-sbc 3577  df-csb 3675  df-dif 3718  df-un 3720  df-in 3722  df-ss 3729  df-pss 3731  df-nul 4059  df-if 4231  df-pw 4304  df-sn 4322  df-pr 4324  df-tp 4326  df-op 4328  df-uni 4589  df-int 4628  df-iun 4674  df-br 4805  df-opab 4865  df-mpt 4882  df-tr 4905  df-id 5174  df-eprel 5179  df-po 5187  df-so 5188  df-fr 5225  df-se 5226  df-we 5227  df-xp 5272  df-rel 5273  df-cnv 5274  df-co 5275  df-dm 5276  df-rn 5277  df-res 5278  df-ima 5279  df-pred 5841  df-ord 5887  df-on 5888  df-lim 5889  df-suc 5890  df-iota 6012  df-fun 6051  df-fn 6052  df-f 6053  df-f1 6054  df-fo 6055  df-f1o 6056  df-fv 6057  df-isom 6058  df-riota 6774  df-ov 6816  df-oprab 6817  df-mpt2 6818  df-om 7231  df-1st 7333  df-2nd 7334  df-wrecs 7576  df-recs 7637  df-rdg 7675  df-1o 7729  df-oadd 7733  df-er 7911  df-en 8122  df-dom 8123  df-sdom 8124  df-fin 8125  df-sup 8513  df-oi 8580  df-card 8955  df-pnf 10268  df-mnf 10269  df-xr 10270  df-ltxr 10271  df-le 10272  df-sub 10460  df-neg 10461  df-div 10877  df-nn 11213  df-2 11271  df-3 11272  df-n0 11485  df-z 11570  df-uz 11880  df-rp 12026  df-fz 12520  df-fzo 12660  df-seq 12996  df-exp 13055  df-hash 13312  df-cj 14038  df-re 14039  df-im 14040  df-sqrt 14174  df-abs 14175  df-clim 14418  df-prod 14835
This theorem is referenced by:  hgt750lema  31044
  Copyright terms: Public domain W3C validator