:: FUNCSDOM semantic presentation

definition
let A be non empty set ;
let B be non empty set ;
let F be BinOp of Funcs A,B;
let f be Element of Funcs A,B, g be Element of Funcs A,B;
redefine func . as c3 . c4,c5 -> Element of Funcs a1,a2;
coherence
F . f,g is Element of Funcs A,B
proof end;
end;

definition
let A be non empty set , B be non empty set , C be non empty set , D be non empty set ;
let F be Function of [:C,D:], Funcs A,B;
let cd be Element of [:C,D:];
redefine func . as c5 . c6 -> Element of Funcs a1,a2;
coherence
F . cd is Element of Funcs A,B
proof end;
end;

definition
let A be non empty set , B be non empty set ;
let f be Function of A,B;
func @ c3 -> Element of Funcs a1,a2 equals :: FUNCSDOM:def 1
f;
coherence
f is Element of Funcs A,B
by FUNCT_2:11;
end;

:: deftheorem Def1 defines @ FUNCSDOM:def 1 :
for A, B being non empty set
for f being Function of A,B holds @ f = f;

definition
let X be non empty set , Z be non empty set ;
let F be BinOp of X;
let f be Function of Z,X, g be Function of Z,X;
redefine func .: as c3 .: c4,c5 -> Element of Funcs a2,a1;
coherence
F .: f,g is Element of Funcs Z,X
proof end;
end;

definition
let X be non empty set , Z be non empty set ;
let F be BinOp of X;
let a be Element of X;
let f be Function of Z,X;
redefine func [;] as c3 [;] c4,c5 -> Element of Funcs a2,a1;
coherence
F [;] a,f is Element of Funcs Z,X
proof end;
end;

definition
let A be non empty set ;
func RealFuncAdd c1 -> BinOp of Funcs a1,REAL means :Def2: :: FUNCSDOM:def 2
for f, g being Element of Funcs A,REAL holds it . f,g = addreal .: f,g;
existence
ex b1 being BinOp of Funcs A,REAL st
for f, g being Element of Funcs A,REAL holds b1 . f,g = addreal .: f,g
proof end;
uniqueness
for b1, b2 being BinOp of Funcs A,REAL st ( for f, g being Element of Funcs A,REAL holds b1 . f,g = addreal .: f,g ) & ( for f, g being Element of Funcs A,REAL holds b2 . f,g = addreal .: f,g ) holds
b1 = b2
proof end;
end;

:: deftheorem Def2 defines RealFuncAdd FUNCSDOM:def 2 :
for A being non empty set
for b2 being BinOp of Funcs A,REAL holds
( b2 = RealFuncAdd A iff for f, g being Element of Funcs A,REAL holds b2 . f,g = addreal .: f,g );

definition
let A be non empty set ;
func RealFuncMult c1 -> BinOp of Funcs a1,REAL means :Def3: :: FUNCSDOM:def 3
for f, g being Element of Funcs A,REAL holds it . f,g = multreal .: f,g;
existence
ex b1 being BinOp of Funcs A,REAL st
for f, g being Element of Funcs A,REAL holds b1 . f,g = multreal .: f,g
proof end;
uniqueness
for b1, b2 being BinOp of Funcs A,REAL st ( for f, g being Element of Funcs A,REAL holds b1 . f,g = multreal .: f,g ) & ( for f, g being Element of Funcs A,REAL holds b2 . f,g = multreal .: f,g ) holds
b1 = b2
proof end;
end;

:: deftheorem Def3 defines RealFuncMult FUNCSDOM:def 3 :
for A being non empty set
for b2 being BinOp of Funcs A,REAL holds
( b2 = RealFuncMult A iff for f, g being Element of Funcs A,REAL holds b2 . f,g = multreal .: f,g );

definition
let A be non empty set ;
func RealFuncExtMult c1 -> Function of [:REAL ,(Funcs a1,REAL ):], Funcs a1,REAL means :Def4: :: FUNCSDOM:def 4
for a being Real
for f being Element of Funcs A,REAL
for x being Element of A holds (it . [a,f]) . x = a * (f . x);
existence
ex b1 being Function of [:REAL ,(Funcs A,REAL ):], Funcs A,REAL st
for a being Real
for f being Element of Funcs A,REAL
for x being Element of A holds (b1 . [a,f]) . x = a * (f . x)
proof end;
uniqueness
for b1, b2 being Function of [:REAL ,(Funcs A,REAL ):], Funcs A,REAL st ( for a being Real
for f being Element of Funcs A,REAL
for x being Element of A holds (b1 . [a,f]) . x = a * (f . x) ) & ( for a being Real
for f being Element of Funcs A,REAL
for x being Element of A holds (b2 . [a,f]) . x = a * (f . x) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines RealFuncExtMult FUNCSDOM:def 4 :
for A being non empty set
for b2 being Function of [:REAL ,(Funcs A,REAL ):], Funcs A,REAL holds
( b2 = RealFuncExtMult A iff for a being Real
for f being Element of Funcs A,REAL
for x being Element of A holds (b2 . [a,f]) . x = a * (f . x) );

definition
let A be non empty set ;
func RealFuncZero c1 -> Element of Funcs a1,REAL equals :: FUNCSDOM:def 5
A --> 0;
coherence
A --> 0 is Element of Funcs A,REAL
proof end;
end;

:: deftheorem Def5 defines RealFuncZero FUNCSDOM:def 5 :
for A being non empty set holds RealFuncZero A = A --> 0;

definition
let A be non empty set ;
func RealFuncUnit c1 -> Element of Funcs a1,REAL equals :: FUNCSDOM:def 6
A --> 1;
coherence
A --> 1 is Element of Funcs A,REAL
proof end;
end;

:: deftheorem Def6 defines RealFuncUnit FUNCSDOM:def 6 :
for A being non empty set holds RealFuncUnit A = A --> 1;

Lemma45: for A, B being non empty set
for x being Element of A
for f being Function of A,B holds x in dom f
proof end;

theorem Th1: :: FUNCSDOM:1
canceled;

theorem Th2: :: FUNCSDOM:2
canceled;

theorem Th3: :: FUNCSDOM:3
canceled;

theorem Th4: :: FUNCSDOM:4
canceled;

theorem Th5: :: FUNCSDOM:5
canceled;

theorem Th6: :: FUNCSDOM:6
canceled;

theorem Th7: :: FUNCSDOM:7
canceled;

theorem Th8: :: FUNCSDOM:8
canceled;

theorem Th9: :: FUNCSDOM:9
canceled;

theorem Th10: :: FUNCSDOM:10
for A being non empty set
for h, f, g being Element of Funcs A,REAL holds
( h = (RealFuncAdd A) . f,g iff for x being Element of A holds h . x = (f . x) + (g . x) )
proof end;

theorem Th11: :: FUNCSDOM:11
for A being non empty set
for h, f, g being Element of Funcs A,REAL holds
( h = (RealFuncMult A) . f,g iff for x being Element of A holds h . x = (f . x) * (g . x) )
proof end;

theorem Th12: :: FUNCSDOM:12
for A being non empty set
for x being Element of A holds (RealFuncUnit A) . x = 1 by FUNCOP_1:13;

theorem Th13: :: FUNCSDOM:13
for A being non empty set
for x being Element of A holds (RealFuncZero A) . x = 0 by FUNCOP_1:13;

theorem Th14: :: FUNCSDOM:14
for A being non empty set holds RealFuncZero A <> RealFuncUnit A
proof end;

theorem Th15: :: FUNCSDOM:15
for A being non empty set
for h, f being Element of Funcs A,REAL
for a being Real holds
( h = (RealFuncExtMult A) . [a,f] iff for x being Element of A holds h . x = a * (f . x) )
proof end;

theorem Th16: :: FUNCSDOM:16
for A being non empty set
for f, g being Element of Funcs A,REAL holds (RealFuncAdd A) . f,g = (RealFuncAdd A) . g,f
proof end;

theorem Th17: :: FUNCSDOM:17
for A being non empty set
for f, g, h being Element of Funcs A,REAL holds (RealFuncAdd A) . f,((RealFuncAdd A) . g,h) = (RealFuncAdd A) . ((RealFuncAdd A) . f,g),h
proof end;

theorem Th18: :: FUNCSDOM:18
for A being non empty set
for f, g being Element of Funcs A,REAL holds (RealFuncMult A) . f,g = (RealFuncMult A) . g,f
proof end;

theorem Th19: :: FUNCSDOM:19
for A being non empty set
for f, g, h being Element of Funcs A,REAL holds (RealFuncMult A) . f,((RealFuncMult A) . g,h) = (RealFuncMult A) . ((RealFuncMult A) . f,g),h
proof end;

theorem Th20: :: FUNCSDOM:20
for A being non empty set
for f being Element of Funcs A,REAL holds (RealFuncMult A) . (RealFuncUnit A),f = f
proof end;

theorem Th21: :: FUNCSDOM:21
for A being non empty set
for f being Element of Funcs A,REAL holds (RealFuncAdd A) . (RealFuncZero A),f = f
proof end;

theorem Th22: :: FUNCSDOM:22
for A being non empty set
for f being Element of Funcs A,REAL holds (RealFuncAdd A) . f,((RealFuncExtMult A) . [(- 1),f]) = RealFuncZero A
proof end;

theorem Th23: :: FUNCSDOM:23
for A being non empty set
for f being Element of Funcs A,REAL holds (RealFuncExtMult A) . [1,f] = f
proof end;

theorem Th24: :: FUNCSDOM:24
for A being non empty set
for f being Element of Funcs A,REAL
for a, b being Real holds (RealFuncExtMult A) . [a,((RealFuncExtMult A) . [b,f])] = (RealFuncExtMult A) . [(a * b),f]
proof end;

theorem Th25: :: FUNCSDOM:25
for A being non empty set
for f being Element of Funcs A,REAL
for a, b being Real holds (RealFuncAdd A) . ((RealFuncExtMult A) . [a,f]),((RealFuncExtMult A) . [b,f]) = (RealFuncExtMult A) . [(a + b),f]
proof end;

Lemma67: for A being non empty set
for f, g being Element of Funcs A,REAL
for a being Real holds (RealFuncAdd A) . ((RealFuncExtMult A) . [a,f]),((RealFuncExtMult A) . [a,g]) = (RealFuncExtMult A) . [a,((RealFuncAdd A) . f,g)]
proof end;

theorem Th26: :: FUNCSDOM:26
for A being non empty set
for f, g, h being Element of Funcs A,REAL holds (RealFuncMult A) . f,((RealFuncAdd A) . g,h) = (RealFuncAdd A) . ((RealFuncMult A) . f,g),((RealFuncMult A) . f,h)
proof end;

theorem Th27: :: FUNCSDOM:27
for A being non empty set
for f, g being Element of Funcs A,REAL
for a being Real holds (RealFuncMult A) . ((RealFuncExtMult A) . [a,f]),g = (RealFuncExtMult A) . [a,((RealFuncMult A) . f,g)]
proof end;

theorem Th28: :: FUNCSDOM:28
for x1 being set
for A being non empty set ex f, g being Element of Funcs A,REAL st
( ( for z being set st z in A holds
( ( z = x1 implies f . z = 1 ) & ( z <> x1 implies f . z = 0 ) ) ) & ( for z being set st z in A holds
( ( z = x1 implies g . z = 0 ) & ( z <> x1 implies g . z = 1 ) ) ) )
proof end;

theorem Th29: :: FUNCSDOM:29
for x1, x2 being set
for A being non empty set
for f, g being Element of Funcs A,REAL st x1 in A & x2 in A & x1 <> x2 & ( for z being set st z in A holds
( ( z = x1 implies f . z = 1 ) & ( z <> x1 implies f . z = 0 ) ) ) & ( for z being set st z in A holds
( ( z = x1 implies g . z = 0 ) & ( z <> x1 implies g . z = 1 ) ) ) holds
for a, b being Real st (RealFuncAdd A) . ((RealFuncExtMult A) . [a,f]),((RealFuncExtMult A) . [b,g]) = RealFuncZero A holds
( a = 0 & b = 0 )
proof end;

theorem Th30: :: FUNCSDOM:30
for x1, x2 being set
for A being non empty set st x1 in A & x2 in A & x1 <> x2 holds
ex f, g being Element of Funcs A,REAL st
for a, b being Real st (RealFuncAdd A) . ((RealFuncExtMult A) . [a,f]),((RealFuncExtMult A) . [b,g]) = RealFuncZero A holds
( a = 0 & b = 0 )
proof end;

theorem Th31: :: FUNCSDOM:31
for x1, x2 being set
for A being non empty set
for f, g being Element of Funcs A,REAL st A = {x1,x2} & x1 <> x2 & ( for z being set st z in A holds
( ( z = x1 implies f . z = 1 ) & ( z <> x1 implies f . z = 0 ) ) ) & ( for z being set st z in A holds
( ( z = x1 implies g . z = 0 ) & ( z <> x1 implies g . z = 1 ) ) ) holds
for h being Element of Funcs A,REAL ex a, b being Real st h = (RealFuncAdd A) . ((RealFuncExtMult A) . [a,f]),((RealFuncExtMult A) . [b,g])
proof end;

theorem Th32: :: FUNCSDOM:32
for x1, x2 being set
for A being non empty set st A = {x1,x2} & x1 <> x2 holds
ex f, g being Element of Funcs A,REAL st
for h being Element of Funcs A,REAL ex a, b being Real st h = (RealFuncAdd A) . ((RealFuncExtMult A) . [a,f]),((RealFuncExtMult A) . [b,g])
proof end;

theorem Th33: :: FUNCSDOM:33
for x1, x2 being set
for A being non empty set st A = {x1,x2} & x1 <> x2 holds
ex f, g being Element of Funcs A,REAL st
( ( for a, b being Real st (RealFuncAdd A) . ((RealFuncExtMult A) . [a,f]),((RealFuncExtMult A) . [b,g]) = RealFuncZero A holds
( a = 0 & b = 0 ) ) & ( for h being Element of Funcs A,REAL ex a, b being Real st h = (RealFuncAdd A) . ((RealFuncExtMult A) . [a,f]),((RealFuncExtMult A) . [b,g]) ) )
proof end;

theorem Th34: :: FUNCSDOM:34
for A being non empty set holds RLSStruct(# (Funcs A,REAL ),(RealFuncZero A),(RealFuncAdd A),(RealFuncExtMult A) #) is RealLinearSpace
proof end;

definition
let A be non empty set ;
func RealVectSpace c1 -> strict RealLinearSpace equals :: FUNCSDOM:def 7
RLSStruct(# (Funcs A,REAL ),(RealFuncZero A),(RealFuncAdd A),(RealFuncExtMult A) #);
coherence
RLSStruct(# (Funcs A,REAL ),(RealFuncZero A),(RealFuncAdd A),(RealFuncExtMult A) #) is strict RealLinearSpace
by ;
end;

:: deftheorem Def7 defines RealVectSpace FUNCSDOM:def 7 :
for A being non empty set holds RealVectSpace A = RLSStruct(# (Funcs A,REAL ),(RealFuncZero A),(RealFuncAdd A),(RealFuncExtMult A) #);

Lemma82: ex A being non empty set ex x1, x2 being set st
( A = {x1,x2} & x1 <> x2 )
proof end;

theorem Th35: :: FUNCSDOM:35
canceled;

theorem Th36: :: FUNCSDOM:36
canceled;

theorem Th37: :: FUNCSDOM:37
ex V being strict RealLinearSpace ex u, v being VECTOR of V st
( ( for a, b being Real st (a * u) + (b * v) = 0. V holds
( a = 0 & b = 0 ) ) & ( for w being VECTOR of V ex a, b being Real st w = (a * u) + (b * v) ) )
proof end;

definition
let A be non empty set ;
canceled;
canceled;
canceled;
canceled;
func RRing c1 -> strict doubleLoopStr equals :: FUNCSDOM:def 12
doubleLoopStr(# (Funcs A,REAL ),(RealFuncAdd A),(RealFuncMult A),(RealFuncUnit A),(RealFuncZero A) #);
correctness
coherence
doubleLoopStr(# (Funcs A,REAL ),(RealFuncAdd A),(RealFuncMult A),(RealFuncUnit A),(RealFuncZero A) #) is strict doubleLoopStr
;
;
end;

:: deftheorem Def8 FUNCSDOM:def 8 :
canceled;

:: deftheorem Def9 FUNCSDOM:def 9 :
canceled;

:: deftheorem Def10 FUNCSDOM:def 10 :
canceled;

:: deftheorem Def11 FUNCSDOM:def 11 :
canceled;

:: deftheorem Def12 defines RRing FUNCSDOM:def 12 :
for A being non empty set holds RRing A = doubleLoopStr(# (Funcs A,REAL ),(RealFuncAdd A),(RealFuncMult A),(RealFuncUnit A),(RealFuncZero A) #);

registration
let A be non empty set ;
cluster RRing a1 -> non empty strict ;
coherence
not RRing A is empty
proof end;
end;

E86: now
let A be non empty set ;
set FR = RRing A;
let h be Element of (RRing A), a be Element of (RRing A);
assume E36: a = RealFuncUnit A ;
reconsider g = h as Element of Funcs A,REAL ;
thus h * a = (RealFuncMult A) . (RealFuncUnit A),g by ,
.= h by ;
thus a * h = h by , ;
end;

registration
let A be non empty set ;
cluster RRing a1 -> non empty unital strict ;
coherence
RRing A is unital
proof end;
end;

theorem Th38: :: FUNCSDOM:38
canceled;

theorem Th39: :: FUNCSDOM:39
canceled;

theorem Th40: :: FUNCSDOM:40
canceled;

theorem Th41: :: FUNCSDOM:41
for A being non empty set holds 1. (RRing A) = RealFuncUnit A
proof end;

theorem Th42: :: FUNCSDOM:42
for A being non empty set
for x, y, z being Element of (RRing A) holds
( x + y = y + x & (x + y) + z = x + (y + z) & x + (0. (RRing A)) = x & ex t being Element of (RRing A) st x + t = 0. (RRing A) & x * y = y * x & (x * y) * z = x * (y * z) & x * (1. (RRing A)) = x & (1. (RRing A)) * x = x & x * (y + z) = (x * y) + (x * z) & (y + z) * x = (y * x) + (z * x) )
proof end;

registration
cluster non empty Abelian add-associative right_zeroed right_complementable associative commutative strict right-distributive right_unital doubleLoopStr ;
existence
ex b1 being non empty doubleLoopStr st
( b1 is strict & b1 is Abelian & b1 is add-associative & b1 is right_zeroed & b1 is right_complementable & b1 is associative & b1 is commutative & b1 is right_unital & b1 is right-distributive )
proof end;
end;

definition
mode Ring is non empty Abelian add-associative right_zeroed right_complementable associative right_unital distributive left_unital doubleLoopStr ;
end;

theorem Th43: :: FUNCSDOM:43
for A being non empty set holds RRing A is commutative Ring
proof end;

definition
attr a1 is strict;
struct AlgebraStr -> doubleLoopStr , RLSStruct ;
aggr AlgebraStr(# carrier, mult, add, Mult, unity, Zero #) -> AlgebraStr ;
end;

registration
cluster non empty AlgebraStr ;
existence
not for b1 being AlgebraStr holds b1 is empty
proof end;
end;

definition
let A be non empty set ;
canceled;
canceled;
canceled;
canceled;
canceled;
canceled;
func RAlgebra c1 -> strict AlgebraStr equals :: FUNCSDOM:def 19
AlgebraStr(# (Funcs A,REAL ),(RealFuncMult A),(RealFuncAdd A),(RealFuncExtMult A),(RealFuncUnit A),(RealFuncZero A) #);
correctness
coherence
AlgebraStr(# (Funcs A,REAL ),(RealFuncMult A),(RealFuncAdd A),(RealFuncExtMult A),(RealFuncUnit A),(RealFuncZero A) #) is strict AlgebraStr
;
;
end;

:: deftheorem Def13 FUNCSDOM:def 13 :
canceled;

:: deftheorem Def14 FUNCSDOM:def 14 :
canceled;

:: deftheorem Def15 FUNCSDOM:def 15 :
canceled;

:: deftheorem Def16 FUNCSDOM:def 16 :
canceled;

:: deftheorem Def17 FUNCSDOM:def 17 :
canceled;

:: deftheorem Def18 FUNCSDOM:def 18 :
canceled;

:: deftheorem Def19 defines RAlgebra FUNCSDOM:def 19 :
for A being non empty set holds RAlgebra A = AlgebraStr(# (Funcs A,REAL ),(RealFuncMult A),(RealFuncAdd A),(RealFuncExtMult A),(RealFuncUnit A),(RealFuncZero A) #);

registration
let A be non empty set ;
cluster RAlgebra a1 -> non empty strict ;
coherence
not RAlgebra A is empty
proof end;
end;

E94: now
let A be non empty set ;
set F = RAlgebra A;
let x be Element of (RAlgebra A), e be Element of (RAlgebra A);
assume E36: e = RealFuncUnit A ;
reconsider f = x as Element of Funcs A,REAL ;
thus x * e = (RealFuncMult A) . (RealFuncUnit A),f by ,
.= x by ;
thus e * x = x by , ;
end;

registration
let A be non empty set ;
cluster RAlgebra a1 -> non empty unital strict ;
coherence
RAlgebra A is unital
proof end;
end;

theorem Th44: :: FUNCSDOM:44
for A being non empty set holds 1. (RAlgebra A) = RealFuncUnit A
proof end;

theorem Th45: :: FUNCSDOM:45
canceled;

theorem Th46: :: FUNCSDOM:46
canceled;

theorem Th47: :: FUNCSDOM:47
canceled;

theorem Th48: :: FUNCSDOM:48
canceled;

theorem Th49: :: FUNCSDOM:49
for A being non empty set
for x, y, z being Element of (RAlgebra A)
for a, b being Real holds
( x + y = y + x & (x + y) + z = x + (y + z) & x + (0. (RAlgebra A)) = x & ex t being Element of (RAlgebra A) st x + t = 0. (RAlgebra A) & x * y = y * x & (x * y) * z = x * (y * z) & x * (1. (RAlgebra A)) = x & x * (y + z) = (x * y) + (x * z) & a * (x * y) = (a * x) * y & a * (x + y) = (a * x) + (a * y) & (a + b) * x = (a * x) + (b * x) & (a * b) * x = a * (b * x) )
proof end;

definition
let IT be non empty AlgebraStr ;
attr a1 is Algebra-like means :Def20: :: FUNCSDOM:def 20
for x, y, z being Element of IT
for a, b being Real holds
( x * (1. IT) = x & x * (y + z) = (x * y) + (x * z) & a * (x * y) = (a * x) * y & a * (x + y) = (a * x) + (a * y) & (a + b) * x = (a * x) + (b * x) & (a * b) * x = a * (b * x) );
end;

:: deftheorem Def20 defines Algebra-like FUNCSDOM:def 20 :
for IT being non empty AlgebraStr holds
( IT is Algebra-like iff for x, y, z being Element of IT
for a, b being Real holds
( x * (1. IT) = x & x * (y + z) = (x * y) + (x * z) & a * (x * y) = (a * x) * y & a * (x + y) = (a * x) + (a * y) & (a + b) * x = (a * x) + (b * x) & (a * b) * x = a * (b * x) ) );

registration
cluster non empty Abelian add-associative right_zeroed right_complementable associative commutative strict Algebra-like AlgebraStr ;
existence
ex b1 being non empty AlgebraStr st
( b1 is strict & b1 is Abelian & b1 is add-associative & b1 is right_zeroed & b1 is right_complementable & b1 is commutative & b1 is associative & b1 is Algebra-like )
proof end;
end;

definition
mode Algebra is non empty Abelian add-associative right_zeroed right_complementable associative commutative Algebra-like AlgebraStr ;
end;

theorem Th50: :: FUNCSDOM:50
for A being non empty set holds RAlgebra A is Algebra
proof end;