Metamath Proof Explorer


Theorem ldualset

Description: Define the (left) dual of a left vector space (or module) in which the vectors are functionals. In many texts, this is defined as a right vector space, but by reversing the multiplication we achieve a left vector space, as is done in definition of dual vector space in Holland95 p. 218. This allows us to reuse our existing collection of left vector space theorems. Note the operation reversal in the scalar product to allow us to use the original scalar ring instead of the oppR ring, for convenience. (Contributed by NM, 18-Oct-2014)

Ref Expression
Hypotheses ldualset.v 𝑉 = ( Base ‘ 𝑊 )
ldualset.a + = ( +g𝑅 )
ldualset.p = ( ∘f + ↾ ( 𝐹 × 𝐹 ) )
ldualset.f 𝐹 = ( LFnl ‘ 𝑊 )
ldualset.d 𝐷 = ( LDual ‘ 𝑊 )
ldualset.r 𝑅 = ( Scalar ‘ 𝑊 )
ldualset.k 𝐾 = ( Base ‘ 𝑅 )
ldualset.t · = ( .r𝑅 )
ldualset.o 𝑂 = ( oppr𝑅 )
ldualset.s = ( 𝑘𝐾 , 𝑓𝐹 ↦ ( 𝑓f · ( 𝑉 × { 𝑘 } ) ) )
ldualset.w ( 𝜑𝑊𝑋 )
Assertion ldualset ( 𝜑𝐷 = ( { ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ , ⟨ ( +g ‘ ndx ) , ⟩ , ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ } ∪ { ⟨ ( ·𝑠 ‘ ndx ) , ⟩ } ) )

Proof

Step Hyp Ref Expression
1 ldualset.v 𝑉 = ( Base ‘ 𝑊 )
2 ldualset.a + = ( +g𝑅 )
3 ldualset.p = ( ∘f + ↾ ( 𝐹 × 𝐹 ) )
4 ldualset.f 𝐹 = ( LFnl ‘ 𝑊 )
5 ldualset.d 𝐷 = ( LDual ‘ 𝑊 )
6 ldualset.r 𝑅 = ( Scalar ‘ 𝑊 )
7 ldualset.k 𝐾 = ( Base ‘ 𝑅 )
8 ldualset.t · = ( .r𝑅 )
9 ldualset.o 𝑂 = ( oppr𝑅 )
10 ldualset.s = ( 𝑘𝐾 , 𝑓𝐹 ↦ ( 𝑓f · ( 𝑉 × { 𝑘 } ) ) )
11 ldualset.w ( 𝜑𝑊𝑋 )
12 elex ( 𝑊𝑋𝑊 ∈ V )
13 fveq2 ( 𝑤 = 𝑊 → ( LFnl ‘ 𝑤 ) = ( LFnl ‘ 𝑊 ) )
14 13 4 eqtr4di ( 𝑤 = 𝑊 → ( LFnl ‘ 𝑤 ) = 𝐹 )
15 14 opeq2d ( 𝑤 = 𝑊 → ⟨ ( Base ‘ ndx ) , ( LFnl ‘ 𝑤 ) ⟩ = ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ )
16 fveq2 ( 𝑤 = 𝑊 → ( Scalar ‘ 𝑤 ) = ( Scalar ‘ 𝑊 ) )
17 16 6 eqtr4di ( 𝑤 = 𝑊 → ( Scalar ‘ 𝑤 ) = 𝑅 )
18 17 fveq2d ( 𝑤 = 𝑊 → ( +g ‘ ( Scalar ‘ 𝑤 ) ) = ( +g𝑅 ) )
19 18 2 eqtr4di ( 𝑤 = 𝑊 → ( +g ‘ ( Scalar ‘ 𝑤 ) ) = + )
20 ofeq ( ( +g ‘ ( Scalar ‘ 𝑤 ) ) = + → ∘f ( +g ‘ ( Scalar ‘ 𝑤 ) ) = ∘f + )
21 19 20 syl ( 𝑤 = 𝑊 → ∘f ( +g ‘ ( Scalar ‘ 𝑤 ) ) = ∘f + )
22 14 sqxpeqd ( 𝑤 = 𝑊 → ( ( LFnl ‘ 𝑤 ) × ( LFnl ‘ 𝑤 ) ) = ( 𝐹 × 𝐹 ) )
23 21 22 reseq12d ( 𝑤 = 𝑊 → ( ∘f ( +g ‘ ( Scalar ‘ 𝑤 ) ) ↾ ( ( LFnl ‘ 𝑤 ) × ( LFnl ‘ 𝑤 ) ) ) = ( ∘f + ↾ ( 𝐹 × 𝐹 ) ) )
24 23 3 eqtr4di ( 𝑤 = 𝑊 → ( ∘f ( +g ‘ ( Scalar ‘ 𝑤 ) ) ↾ ( ( LFnl ‘ 𝑤 ) × ( LFnl ‘ 𝑤 ) ) ) = )
25 24 opeq2d ( 𝑤 = 𝑊 → ⟨ ( +g ‘ ndx ) , ( ∘f ( +g ‘ ( Scalar ‘ 𝑤 ) ) ↾ ( ( LFnl ‘ 𝑤 ) × ( LFnl ‘ 𝑤 ) ) ) ⟩ = ⟨ ( +g ‘ ndx ) , ⟩ )
26 17 fveq2d ( 𝑤 = 𝑊 → ( oppr ‘ ( Scalar ‘ 𝑤 ) ) = ( oppr𝑅 ) )
27 26 9 eqtr4di ( 𝑤 = 𝑊 → ( oppr ‘ ( Scalar ‘ 𝑤 ) ) = 𝑂 )
28 27 opeq2d ( 𝑤 = 𝑊 → ⟨ ( Scalar ‘ ndx ) , ( oppr ‘ ( Scalar ‘ 𝑤 ) ) ⟩ = ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ )
29 15 25 28 tpeq123d ( 𝑤 = 𝑊 → { ⟨ ( Base ‘ ndx ) , ( LFnl ‘ 𝑤 ) ⟩ , ⟨ ( +g ‘ ndx ) , ( ∘f ( +g ‘ ( Scalar ‘ 𝑤 ) ) ↾ ( ( LFnl ‘ 𝑤 ) × ( LFnl ‘ 𝑤 ) ) ) ⟩ , ⟨ ( Scalar ‘ ndx ) , ( oppr ‘ ( Scalar ‘ 𝑤 ) ) ⟩ } = { ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ , ⟨ ( +g ‘ ndx ) , ⟩ , ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ } )
30 17 fveq2d ( 𝑤 = 𝑊 → ( Base ‘ ( Scalar ‘ 𝑤 ) ) = ( Base ‘ 𝑅 ) )
31 30 7 eqtr4di ( 𝑤 = 𝑊 → ( Base ‘ ( Scalar ‘ 𝑤 ) ) = 𝐾 )
32 17 fveq2d ( 𝑤 = 𝑊 → ( .r ‘ ( Scalar ‘ 𝑤 ) ) = ( .r𝑅 ) )
33 32 8 eqtr4di ( 𝑤 = 𝑊 → ( .r ‘ ( Scalar ‘ 𝑤 ) ) = · )
34 ofeq ( ( .r ‘ ( Scalar ‘ 𝑤 ) ) = · → ∘f ( .r ‘ ( Scalar ‘ 𝑤 ) ) = ∘f · )
35 33 34 syl ( 𝑤 = 𝑊 → ∘f ( .r ‘ ( Scalar ‘ 𝑤 ) ) = ∘f · )
36 eqidd ( 𝑤 = 𝑊𝑓 = 𝑓 )
37 fveq2 ( 𝑤 = 𝑊 → ( Base ‘ 𝑤 ) = ( Base ‘ 𝑊 ) )
38 37 1 eqtr4di ( 𝑤 = 𝑊 → ( Base ‘ 𝑤 ) = 𝑉 )
39 38 xpeq1d ( 𝑤 = 𝑊 → ( ( Base ‘ 𝑤 ) × { 𝑘 } ) = ( 𝑉 × { 𝑘 } ) )
40 35 36 39 oveq123d ( 𝑤 = 𝑊 → ( 𝑓f ( .r ‘ ( Scalar ‘ 𝑤 ) ) ( ( Base ‘ 𝑤 ) × { 𝑘 } ) ) = ( 𝑓f · ( 𝑉 × { 𝑘 } ) ) )
41 31 14 40 mpoeq123dv ( 𝑤 = 𝑊 → ( 𝑘 ∈ ( Base ‘ ( Scalar ‘ 𝑤 ) ) , 𝑓 ∈ ( LFnl ‘ 𝑤 ) ↦ ( 𝑓f ( .r ‘ ( Scalar ‘ 𝑤 ) ) ( ( Base ‘ 𝑤 ) × { 𝑘 } ) ) ) = ( 𝑘𝐾 , 𝑓𝐹 ↦ ( 𝑓f · ( 𝑉 × { 𝑘 } ) ) ) )
42 41 10 eqtr4di ( 𝑤 = 𝑊 → ( 𝑘 ∈ ( Base ‘ ( Scalar ‘ 𝑤 ) ) , 𝑓 ∈ ( LFnl ‘ 𝑤 ) ↦ ( 𝑓f ( .r ‘ ( Scalar ‘ 𝑤 ) ) ( ( Base ‘ 𝑤 ) × { 𝑘 } ) ) ) = )
43 42 opeq2d ( 𝑤 = 𝑊 → ⟨ ( ·𝑠 ‘ ndx ) , ( 𝑘 ∈ ( Base ‘ ( Scalar ‘ 𝑤 ) ) , 𝑓 ∈ ( LFnl ‘ 𝑤 ) ↦ ( 𝑓f ( .r ‘ ( Scalar ‘ 𝑤 ) ) ( ( Base ‘ 𝑤 ) × { 𝑘 } ) ) ) ⟩ = ⟨ ( ·𝑠 ‘ ndx ) , ⟩ )
44 43 sneqd ( 𝑤 = 𝑊 → { ⟨ ( ·𝑠 ‘ ndx ) , ( 𝑘 ∈ ( Base ‘ ( Scalar ‘ 𝑤 ) ) , 𝑓 ∈ ( LFnl ‘ 𝑤 ) ↦ ( 𝑓f ( .r ‘ ( Scalar ‘ 𝑤 ) ) ( ( Base ‘ 𝑤 ) × { 𝑘 } ) ) ) ⟩ } = { ⟨ ( ·𝑠 ‘ ndx ) , ⟩ } )
45 29 44 uneq12d ( 𝑤 = 𝑊 → ( { ⟨ ( Base ‘ ndx ) , ( LFnl ‘ 𝑤 ) ⟩ , ⟨ ( +g ‘ ndx ) , ( ∘f ( +g ‘ ( Scalar ‘ 𝑤 ) ) ↾ ( ( LFnl ‘ 𝑤 ) × ( LFnl ‘ 𝑤 ) ) ) ⟩ , ⟨ ( Scalar ‘ ndx ) , ( oppr ‘ ( Scalar ‘ 𝑤 ) ) ⟩ } ∪ { ⟨ ( ·𝑠 ‘ ndx ) , ( 𝑘 ∈ ( Base ‘ ( Scalar ‘ 𝑤 ) ) , 𝑓 ∈ ( LFnl ‘ 𝑤 ) ↦ ( 𝑓f ( .r ‘ ( Scalar ‘ 𝑤 ) ) ( ( Base ‘ 𝑤 ) × { 𝑘 } ) ) ) ⟩ } ) = ( { ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ , ⟨ ( +g ‘ ndx ) , ⟩ , ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ } ∪ { ⟨ ( ·𝑠 ‘ ndx ) , ⟩ } ) )
46 df-ldual LDual = ( 𝑤 ∈ V ↦ ( { ⟨ ( Base ‘ ndx ) , ( LFnl ‘ 𝑤 ) ⟩ , ⟨ ( +g ‘ ndx ) , ( ∘f ( +g ‘ ( Scalar ‘ 𝑤 ) ) ↾ ( ( LFnl ‘ 𝑤 ) × ( LFnl ‘ 𝑤 ) ) ) ⟩ , ⟨ ( Scalar ‘ ndx ) , ( oppr ‘ ( Scalar ‘ 𝑤 ) ) ⟩ } ∪ { ⟨ ( ·𝑠 ‘ ndx ) , ( 𝑘 ∈ ( Base ‘ ( Scalar ‘ 𝑤 ) ) , 𝑓 ∈ ( LFnl ‘ 𝑤 ) ↦ ( 𝑓f ( .r ‘ ( Scalar ‘ 𝑤 ) ) ( ( Base ‘ 𝑤 ) × { 𝑘 } ) ) ) ⟩ } ) )
47 tpex { ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ , ⟨ ( +g ‘ ndx ) , ⟩ , ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ } ∈ V
48 snex { ⟨ ( ·𝑠 ‘ ndx ) , ⟩ } ∈ V
49 47 48 unex ( { ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ , ⟨ ( +g ‘ ndx ) , ⟩ , ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ } ∪ { ⟨ ( ·𝑠 ‘ ndx ) , ⟩ } ) ∈ V
50 45 46 49 fvmpt ( 𝑊 ∈ V → ( LDual ‘ 𝑊 ) = ( { ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ , ⟨ ( +g ‘ ndx ) , ⟩ , ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ } ∪ { ⟨ ( ·𝑠 ‘ ndx ) , ⟩ } ) )
51 5 50 syl5eq ( 𝑊 ∈ V → 𝐷 = ( { ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ , ⟨ ( +g ‘ ndx ) , ⟩ , ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ } ∪ { ⟨ ( ·𝑠 ‘ ndx ) , ⟩ } ) )
52 11 12 51 3syl ( 𝜑𝐷 = ( { ⟨ ( Base ‘ ndx ) , 𝐹 ⟩ , ⟨ ( +g ‘ ndx ) , ⟩ , ⟨ ( Scalar ‘ ndx ) , 𝑂 ⟩ } ∪ { ⟨ ( ·𝑠 ‘ ndx ) , ⟩ } ) )