:: Linear Combinations in Real Linear Space
:: by Wojciech A. Trybulec
::
:: Received April 8, 1990
:: Copyright (c) 1990-2018 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies NUMBERS, FINSEQ_1, SUBSET_1, RLVECT_1, REAL_1, STRUCT_0, FUNCT_1,
XBOOLE_0, ALGSTR_0, RELAT_1, PARTFUN1, ARYTM_3, CARD_3, ORDINAL4,
XXREAL_0, TARSKI, CARD_1, SUPINF_2, ARYTM_1, NAT_1, FUNCT_2, FINSET_1,
FUNCOP_1, VALUED_1, RLSUB_1, QC_LANG1, BINOP_1, ZFMISC_1, RLVECT_2,
LATTICES, VECTSP_1, PRE_POLY, FUNCT_7;
notations TARSKI, XBOOLE_0, ENUMSET1, ZFMISC_1, SUBSET_1, CARD_1, ORDINAL1,
NUMBERS, XCMPLX_0, XREAL_0, FINSET_1, FINSEQ_1, RELAT_1, FUNCT_1,
RELSET_1, PRE_POLY, PARTFUN1, FUNCT_2, FUNCOP_1, DOMAIN_1, VALUED_1,
FINSEQ_4, STRUCT_0, ALGSTR_0, GROUP_1, RLVECT_1, VECTSP_1, REAL_1,
RLSUB_1, NAT_1, BINOP_1, XXREAL_0;
constructors PARTFUN1, BINOP_1, DOMAIN_1, FUNCOP_1, XXREAL_0, REAL_1, NAT_1,
FINSEQ_4, RLSUB_1, VALUED_1, RELSET_1, VECTSP_1, PRE_POLY, RLVECT_1,
NUMBERS, GROUP_1;
registrations SUBSET_1, FUNCT_1, RELSET_1, FUNCT_2, FINSET_1, NUMBERS,
XREAL_0, STRUCT_0, RLVECT_1, RLSUB_1, VALUED_1, VALUED_0, MEMBERED,
FINSEQ_1, CARD_1, VECTSP_1, ORDINAL1;
requirements REAL, NUMERALS, BOOLE, SUBSET, ARITHM;
begin
reserve x,y,y1,y2 for set,
p for FinSequence,
i,k,l,n for Nat,
V for RealLinearSpace,
u,v,v1,v2,v3,w for VECTOR of V,
a,b for Real,
F,G,H1,H2 for FinSequence of V,
A,B for Subset of V,
f for Function of the carrier of V, REAL;
definition
let S be 1-sorted;
let x;
assume
x in S;
func vector(S,x) -> Element of S equals
:: RLVECT_2:def 1
x;
end;
theorem :: RLVECT_2:1
for S being non empty 1-sorted,v being Element of S holds vector(S,v) = v;
theorem :: RLVECT_2:2
for V being Abelian add-associative right_zeroed
right_complementable non empty addLoopStr, F,G,H being FinSequence of the
carrier of V st len F = len G & len F = len H & for k st k in dom F holds H.k =
F/.k + G/.k holds Sum(H) = Sum(F) + Sum(G);
theorem :: RLVECT_2:3
len F = len G & (for k st k in dom F holds G.k = a * F/.k) implies Sum
(G) = a * Sum(F);
theorem :: RLVECT_2:4
for V being Abelian add-associative right_zeroed
right_complementable non empty addLoopStr, F,G being FinSequence of the
carrier of V st len F = len G & (for k st k in dom F holds G.k = - F/.k) holds
Sum(G) = - Sum(F);
theorem :: RLVECT_2:5
for V being Abelian add-associative right_zeroed right_complementable
non empty addLoopStr, F,G,H being FinSequence of the carrier of V st len F =
len G & len F = len H & (for k st k in dom F holds H.k = F/.k - G/.k) holds Sum
(H) = Sum(F) - Sum(G);
theorem :: RLVECT_2:6
for V being Abelian add-associative right_zeroed
right_complementable non empty addLoopStr, F,G being FinSequence of the
carrier of V for f being Permutation of dom F st len F = len G & (for i st i in
dom G holds G.i = F.(f.i)) holds Sum(F) = Sum(G);
theorem :: RLVECT_2:7
for V being Abelian add-associative right_zeroed right_complementable
non empty addLoopStr, F,G being FinSequence of the carrier of V for f being
Permutation of dom F st G = F * f holds Sum(F) = Sum(G);
definition
let V be non empty addLoopStr, T be finite Subset of V;
assume
V is Abelian add-associative right_zeroed;
func Sum(T) -> Element of V means
:: RLVECT_2:def 2
ex F be FinSequence of the carrier of V st rng F = T & F is one-to-one &
it = Sum(F);
end;
theorem :: RLVECT_2:8
for V be Abelian add-associative right_zeroed non empty
addLoopStr holds Sum({}V) = 0.V;
theorem :: RLVECT_2:9
for V be Abelian add-associative right_zeroed right_complementable
non empty addLoopStr, v be Element of V holds Sum{v} = v;
theorem :: RLVECT_2:10
for V be Abelian add-associative right_zeroed right_complementable
non empty addLoopStr, v1,v2 be Element of V holds v1 <> v2 implies Sum{v1,v2}
= v1 + v2;
theorem :: RLVECT_2:11
for V be Abelian add-associative right_zeroed right_complementable
non empty addLoopStr, v1,v2,v3 be Element of V holds v1 <> v2 & v2 <> v3 & v1
<> v3 implies Sum{v1,v2,v3} = v1 + v2 + v3;
theorem :: RLVECT_2:12
for V be Abelian add-associative right_zeroed non empty
addLoopStr, S,T be finite Subset of V holds T misses S implies Sum(T \/ S) =
Sum(T) + Sum(S);
theorem :: RLVECT_2:13
for V be Abelian add-associative right_zeroed
right_complementable non empty addLoopStr, S,T be finite Subset of V holds
Sum(T \/ S) = Sum(T) + Sum(S) - Sum(T /\ S);
theorem :: RLVECT_2:14
for V be Abelian add-associative right_zeroed right_complementable
non empty addLoopStr, S,T be finite Subset of V holds Sum(T /\ S) = Sum(T) +
Sum(S) - Sum(T \/ S);
theorem :: RLVECT_2:15
for V be Abelian add-associative right_zeroed
right_complementable non empty addLoopStr, S,T be finite Subset of V holds
Sum(T \ S) = Sum(T \/ S) - Sum(S);
theorem :: RLVECT_2:16
for V be Abelian add-associative right_zeroed
right_complementable non empty addLoopStr, S,T be finite Subset of V holds
Sum(T \ S) = Sum(T) - Sum(T /\ S);
theorem :: RLVECT_2:17
for V be Abelian add-associative right_zeroed right_complementable
non empty addLoopStr, S,T be finite Subset of V holds Sum(T \+\ S) = Sum(T \/
S) - Sum(T /\ S);
theorem :: RLVECT_2:18
for V be Abelian add-associative right_zeroed non empty addLoopStr,
S,T be finite Subset of V holds Sum(T \+\ S) = Sum(T \ S) + Sum(S \ T);
definition
let V be non empty ZeroStr;
mode Linear_Combination of V -> Element of Funcs(the carrier of V, REAL)
means
:: RLVECT_2:def 3
ex T being finite Subset of V st for v being Element of V st not v in T
holds it.v = 0;
end;
reserve K,L,L1,L2,L3 for Linear_Combination of V;
notation
let V be non empty addLoopStr, L be Element of Funcs(the carrier of V, REAL);
synonym Carrier L for support L;
end;
definition
let V be non empty addLoopStr, L be Element of Funcs(the carrier of V, REAL);
redefine func Carrier(L) -> Subset of V equals
:: RLVECT_2:def 4
{v where v is Element of V : L.v <> 0};
end;
registration
let V be non empty addLoopStr, L be Linear_Combination of V;
cluster Carrier(L) -> finite;
end;
theorem :: RLVECT_2:19
for V be non empty addLoopStr, L be Linear_Combination of V, v be
Element of V holds L.v = 0 iff not v in Carrier(L);
definition
let V be non empty addLoopStr;
func ZeroLC(V) -> Linear_Combination of V means
:: RLVECT_2:def 5
Carrier (it) = {};
end;
theorem :: RLVECT_2:20
for V be non empty addLoopStr, v be Element of V holds ZeroLC(V) .v = 0;
definition
let V be non empty addLoopStr;
let A be Subset of V;
mode Linear_Combination of A -> Linear_Combination of V means
:: RLVECT_2:def 6
Carrier (it) c= A;
end;
reserve l,l1,l2 for Linear_Combination of A;
theorem :: RLVECT_2:21
A c= B implies l is Linear_Combination of B;
theorem :: RLVECT_2:22
ZeroLC(V) is Linear_Combination of A;
theorem :: RLVECT_2:23
for l being Linear_Combination of {}the carrier of V holds l = ZeroLC(V);
definition
let V;
let F;
let f;
func f (#) F -> FinSequence of the carrier of V means
:: RLVECT_2:def 7
len it = len F & for i st i in dom it holds it.i = f.(F/.i) * F/.i;
end;
theorem :: RLVECT_2:24
i in dom F & v = F.i implies (f (#) F).i = f.v * v;
theorem :: RLVECT_2:25
f (#) <*>(the carrier of V) = <*>(the carrier of V);
theorem :: RLVECT_2:26
f (#) <* v *> = <* f.v * v *>;
theorem :: RLVECT_2:27
f (#) <* v1,v2 *> = <* f.v1 * v1, f.v2 * v2 *>;
theorem :: RLVECT_2:28
f (#) <* v1,v2,v3 *> = <* f.v1 * v1, f.v2 * v2, f.v3 * v3 *>;
definition
let V;
let L;
func Sum(L) -> Element of V means
:: RLVECT_2:def 8
ex F st F is one-to-one & rng F = Carrier(L) & it = Sum(L (#) F);
end;
theorem :: RLVECT_2:29
A <> {} & A is linearly-closed iff for l holds Sum(l) in A;
theorem :: RLVECT_2:30
Sum(ZeroLC(V)) = 0.V;
theorem :: RLVECT_2:31
for l being Linear_Combination of {}(the carrier of V) holds Sum(l) = 0.V;
theorem :: RLVECT_2:32
for l being Linear_Combination of {v} holds Sum(l) = l.v * v;
theorem :: RLVECT_2:33
v1 <> v2 implies for l being Linear_Combination of {v1,v2} holds
Sum(l) = l.v1 * v1 + l.v2 * v2;
theorem :: RLVECT_2:34
Carrier(L) = {} implies Sum(L) = 0.V;
theorem :: RLVECT_2:35
Carrier(L) = {v} implies Sum(L) = L.v * v;
theorem :: RLVECT_2:36
Carrier(L) = {v1,v2} & v1 <> v2 implies Sum(L) = L.v1 * v1 + L.v2 * v2;
definition
let V be non empty addLoopStr;
let L1,L2 be Linear_Combination of V;
redefine pred L1 = L2 means
:: RLVECT_2:def 9
for v being Element of V holds L1.v = L2.v;
end;
definition
let V be non empty addLoopStr;
let L1,L2 be Linear_Combination of V;
redefine func L1 + L2 -> Linear_Combination of V means
:: RLVECT_2:def 10
for v being Element of V holds it.v = L1.v + L2.v;
end;
theorem :: RLVECT_2:37
Carrier(L1 + L2) c= Carrier(L1) \/ Carrier(L2);
theorem :: RLVECT_2:38
L1 is Linear_Combination of A & L2 is Linear_Combination of A
implies L1 + L2 is Linear_Combination of A;
theorem :: RLVECT_2:39
for V be non empty addLoopStr, L1,L2 be Linear_Combination of V holds
L1 + L2 = L2 + L1;
theorem :: RLVECT_2:40
L1 + (L2 + L3) = L1 + L2 + L3;
theorem :: RLVECT_2:41
L + ZeroLC(V) = L & ZeroLC(V) + L = L;
definition
let V;
let a be Real;
let L;
func a * L -> Linear_Combination of V means
:: RLVECT_2:def 11
for v holds it.v = a * L.v;
end;
theorem :: RLVECT_2:42
a <> 0 implies Carrier(a * L) = Carrier(L);
theorem :: RLVECT_2:43
0 * L = ZeroLC(V);
theorem :: RLVECT_2:44
L is Linear_Combination of A implies a * L is Linear_Combination of A;
theorem :: RLVECT_2:45
(a + b) * L = a * L + b * L;
theorem :: RLVECT_2:46
a * (L1 + L2) = a * L1 + a * L2;
theorem :: RLVECT_2:47
a * (b * L) = (a * b) * L;
theorem :: RLVECT_2:48
1 * L = L;
definition
let V,L;
func - L -> Linear_Combination of V equals
:: RLVECT_2:def 12
(- 1) * L;
end;
theorem :: RLVECT_2:49
(- L).v = - L.v;
theorem :: RLVECT_2:50
L1 + L2 = ZeroLC(V) implies L2 = - L1;
theorem :: RLVECT_2:51
Carrier(- L) = Carrier(L);
theorem :: RLVECT_2:52
L is Linear_Combination of A implies - L is Linear_Combination of A;
theorem :: RLVECT_2:53
- (- L) = L;
definition
let V;
let L1,L2;
func L1 - L2 -> Linear_Combination of V equals
:: RLVECT_2:def 13
L1 + (- L2);
end;
theorem :: RLVECT_2:54
(L1 - L2).v = L1.v - L2.v;
theorem :: RLVECT_2:55
Carrier(L1 - L2) c= Carrier(L1) \/ Carrier(L2);
theorem :: RLVECT_2:56
L1 is Linear_Combination of A & L2 is Linear_Combination of A implies
L1 - L2 is Linear_Combination of A;
theorem :: RLVECT_2:57
L - L = ZeroLC(V);
definition
let V;
func LinComb(V) -> set means
:: RLVECT_2:def 14
x in it iff x is Linear_Combination of V;
end;
registration
let V;
cluster LinComb(V) -> non empty;
end;
reserve e,e1,e2 for Element of LinComb(V);
definition
let V;
let e;
func @e -> Linear_Combination of V equals
:: RLVECT_2:def 15
e;
end;
definition
let V;
let L;
func @L -> Element of LinComb(V) equals
:: RLVECT_2:def 16
L;
end;
definition
let V;
func LCAdd(V) -> BinOp of LinComb(V) means
:: RLVECT_2:def 17
for e1,e2 holds it.(e1,e2 ) = @e1 + @e2;
end;
definition
let V;
func LCMult(V) -> Function of [:REAL,LinComb(V):], LinComb(V) means
:: RLVECT_2:def 18
for a,e holds it.[a,e] = a * @e;
end;
definition
let V;
func LC_RLSpace V -> RLSStruct equals
:: RLVECT_2:def 19
RLSStruct (# LinComb(V), @ZeroLC(V),
LCAdd(V), LCMult(V) #);
end;
registration
let V;
cluster LC_RLSpace V -> strict non empty;
end;
registration
let V;
cluster LC_RLSpace V -> Abelian add-associative right_zeroed
right_complementable vector-distributive scalar-distributive
scalar-associative scalar-unital;
end;
theorem :: RLVECT_2:58
the carrier of LC_RLSpace(V) = LinComb(V);
theorem :: RLVECT_2:59
0.LC_RLSpace(V) = ZeroLC(V);
theorem :: RLVECT_2:60
the addF of LC_RLSpace(V) = LCAdd(V);
theorem :: RLVECT_2:61
the Mult of LC_RLSpace(V) = LCMult(V);
theorem :: RLVECT_2:62
vector(LC_RLSpace(V),L1) + vector(LC_RLSpace(V),L2) = L1 + L2;
theorem :: RLVECT_2:63
a * vector(LC_RLSpace(V),L) = a * L;
theorem :: RLVECT_2:64
- vector(LC_RLSpace(V),L) = - L;
theorem :: RLVECT_2:65
vector(LC_RLSpace(V),L1) - vector(LC_RLSpace(V),L2) = L1 - L2;
definition
let V;
let A;
func LC_RLSpace(A) -> strict Subspace of LC_RLSpace(V) means
:: RLVECT_2:def 20
the carrier of it = the set of all l ;
end;
reserve x,y for set,
k,n for Nat;
theorem :: RLVECT_2:66
for R being add-associative right_zeroed right_complementable
Abelian associative well-unital distributive non empty doubleLoopStr,
a being
Element of R for V being Abelian add-associative right_zeroed
right_complementable vector-distributive scalar-distributive
scalar-associative scalar-unital non empty ModuleStr over R, F,G being
FinSequence of V st len F = len G & for k for v being Element of
V st k in dom F & v = G.k holds F.k = a * v holds Sum(F) = a * Sum(G);
theorem :: RLVECT_2:67
for R being add-associative right_zeroed right_complementable Abelian
associative well-unital distributive non empty doubleLoopStr, a being Element
of R for V being Abelian add-associative right_zeroed right_complementable
vector-distributive scalar-distributive scalar-associative scalar-unital
non empty ModuleStr over R, F,G being FinSequence of V
st len F = len G & for k st k in dom F holds G.k = a * F/.k holds Sum(G) =
a * Sum(F);
theorem :: RLVECT_2:68
for R being add-associative right_zeroed right_complementable Abelian
associative well-unital distributive non empty doubleLoopStr for V being
Abelian add-associative right_zeroed right_complementable non empty ModuleStr
over R, F,G,H being FinSequence of V st len F = len G & len F =
len H & for k st k in dom F holds H.k = F/.k - G/.k holds Sum(H) = Sum(F) - Sum
(G);
theorem :: RLVECT_2:69
for R being add-associative right_zeroed right_complementable Abelian
associative well-unital distributive non empty doubleLoopStr, a being Element
of R for V being Abelian add-associative right_zeroed right_complementable
vector-distributive scalar-distributive scalar-associative scalar-unital
non empty ModuleStr over R holds a * Sum(<*>(the carrier of V)) =
0.V;
theorem :: RLVECT_2:70
for R being add-associative right_zeroed right_complementable Abelian
associative well-unital distributive non empty doubleLoopStr,
a being Element of R
for V being Abelian add-associative right_zeroed right_complementable
vector-distributive scalar-distributive scalar-associative scalar-unital
non empty ModuleStr over R, v,u being Element of V holds a * Sum
<* v,u *> = a * v + a * u;
theorem :: RLVECT_2:71
for R being add-associative right_zeroed right_complementable Abelian
associative well-unital distributive non empty doubleLoopStr, a being Element
of R for V being Abelian add-associative right_zeroed right_complementable
vector-distributive scalar-distributive scalar-associative scalar-unital
non empty ModuleStr over R, v,u,w being Element of V holds a *
Sum<* v,u,w *> = a * v + a * u + a * w;