:: FUNCSDOM semantic presentation

definition
let c1, c2 be non empty set ;
let c3 be BinOp of Funcs c1,c2;
let c4, c5 be Element of Funcs c1,c2;
redefine func . as c3 . c4,c5 -> Element of Funcs a1,a2;
coherence
c3 . c4,c5 is Element of Funcs c1,c2
proof end;
end;

definition
let c1, c2, c3, c4 be non empty set ;
let c5 be Function of [:c3,c4:], Funcs c1,c2;
let c6 be Element of [:c3,c4:];
redefine func . as c5 . c6 -> Element of Funcs a1,a2;
coherence
c5 . c6 is Element of Funcs c1,c2
proof end;
end;

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

:: deftheorem Def1 defines @ FUNCSDOM:def 1 :
for b1, b2 being non empty set
for b3 being Function of b1,b2 holds @ b3 = b3;

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

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

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

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

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

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

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

:: deftheorem Def4 defines RealFuncExtMult FUNCSDOM:def 4 :
for b1 being non empty set
for b2 being Function of [:REAL ,(Funcs b1,REAL ):], Funcs b1,REAL holds
( b2 = RealFuncExtMult b1 iff for b3 being Real
for b4 being Element of Funcs b1,REAL
for b5 being Element of b1 holds (b2 . [b3,b4]) . b5 = b3 * (b4 . b5) );

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

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

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

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

Lemma4: for b1, b2 being non empty set
for b3 being Element of b1
for b4 being Function of b1,b2 holds b3 in dom b4
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 b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,REAL holds
( b2 = (RealFuncAdd b1) . b3,b4 iff for b5 being Element of b1 holds b2 . b5 = (b3 . b5) + (b4 . b5) )
proof end;

theorem Th11: :: FUNCSDOM:11
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,REAL holds
( b2 = (RealFuncMult b1) . b3,b4 iff for b5 being Element of b1 holds b2 . b5 = (b3 . b5) * (b4 . b5) )
proof end;

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

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

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

theorem Th15: :: FUNCSDOM:15
for b1 being non empty set
for b2, b3 being Element of Funcs b1,REAL
for b4 being Real holds
( b2 = (RealFuncExtMult b1) . [b4,b3] iff for b5 being Element of b1 holds b2 . b5 = b4 * (b3 . b5) )
proof end;

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

theorem Th17: :: FUNCSDOM:17
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,REAL holds (RealFuncAdd b1) . b2,((RealFuncAdd b1) . b3,b4) = (RealFuncAdd b1) . ((RealFuncAdd b1) . b2,b3),b4
proof end;

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

theorem Th19: :: FUNCSDOM:19
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,REAL holds (RealFuncMult b1) . b2,((RealFuncMult b1) . b3,b4) = (RealFuncMult b1) . ((RealFuncMult b1) . b2,b3),b4
proof end;

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

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

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

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

theorem Th24: :: FUNCSDOM:24
for b1 being non empty set
for b2 being Element of Funcs b1,REAL
for b3, b4 being Real holds (RealFuncExtMult b1) . [b3,((RealFuncExtMult b1) . [b4,b2])] = (RealFuncExtMult b1) . [(b3 * b4),b2]
proof end;

theorem Th25: :: FUNCSDOM:25
for b1 being non empty set
for b2 being Element of Funcs b1,REAL
for b3, b4 being Real holds (RealFuncAdd b1) . ((RealFuncExtMult b1) . [b3,b2]),((RealFuncExtMult b1) . [b4,b2]) = (RealFuncExtMult b1) . [(b3 + b4),b2]
proof end;

Lemma20: for b1 being non empty set
for b2, b3 being Element of Funcs b1,REAL
for b4 being Real holds (RealFuncAdd b1) . ((RealFuncExtMult b1) . [b4,b2]),((RealFuncExtMult b1) . [b4,b3]) = (RealFuncExtMult b1) . [b4,((RealFuncAdd b1) . b2,b3)]
proof end;

theorem Th26: :: FUNCSDOM:26
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,REAL holds (RealFuncMult b1) . b2,((RealFuncAdd b1) . b3,b4) = (RealFuncAdd b1) . ((RealFuncMult b1) . b2,b3),((RealFuncMult b1) . b2,b4)
proof end;

theorem Th27: :: FUNCSDOM:27
for b1 being non empty set
for b2, b3 being Element of Funcs b1,REAL
for b4 being Real holds (RealFuncMult b1) . ((RealFuncExtMult b1) . [b4,b2]),b3 = (RealFuncExtMult b1) . [b4,((RealFuncMult b1) . b2,b3)]
proof end;

theorem Th28: :: FUNCSDOM:28
for b1 being set
for b2 being non empty set ex b3, b4 being Element of Funcs b2,REAL st
( ( for b5 being set st b5 in b2 holds
( ( b5 = b1 implies b3 . b5 = 1 ) & ( b5 <> b1 implies b3 . b5 = 0 ) ) ) & ( for b5 being set st b5 in b2 holds
( ( b5 = b1 implies b4 . b5 = 0 ) & ( b5 <> b1 implies b4 . b5 = 1 ) ) ) )
proof end;

theorem Th29: :: FUNCSDOM:29
for b1, b2 being set
for b3 being non empty set
for b4, b5 being Element of Funcs b3,REAL st b1 in b3 & b2 in b3 & b1 <> b2 & ( for b6 being set st b6 in b3 holds
( ( b6 = b1 implies b4 . b6 = 1 ) & ( b6 <> b1 implies b4 . b6 = 0 ) ) ) & ( for b6 being set st b6 in b3 holds
( ( b6 = b1 implies b5 . b6 = 0 ) & ( b6 <> b1 implies b5 . b6 = 1 ) ) ) holds
for b6, b7 being Real st (RealFuncAdd b3) . ((RealFuncExtMult b3) . [b6,b4]),((RealFuncExtMult b3) . [b7,b5]) = RealFuncZero b3 holds
( b6 = 0 & b7 = 0 )
proof end;

theorem Th30: :: FUNCSDOM:30
for b1, b2 being set
for b3 being non empty set st b1 in b3 & b2 in b3 & b1 <> b2 holds
ex b4, b5 being Element of Funcs b3,REAL st
for b6, b7 being Real st (RealFuncAdd b3) . ((RealFuncExtMult b3) . [b6,b4]),((RealFuncExtMult b3) . [b7,b5]) = RealFuncZero b3 holds
( b6 = 0 & b7 = 0 )
proof end;

theorem Th31: :: FUNCSDOM:31
for b1, b2 being set
for b3 being non empty set
for b4, b5 being Element of Funcs b3,REAL st b3 = {b1,b2} & b1 <> b2 & ( for b6 being set st b6 in b3 holds
( ( b6 = b1 implies b4 . b6 = 1 ) & ( b6 <> b1 implies b4 . b6 = 0 ) ) ) & ( for b6 being set st b6 in b3 holds
( ( b6 = b1 implies b5 . b6 = 0 ) & ( b6 <> b1 implies b5 . b6 = 1 ) ) ) holds
for b6 being Element of Funcs b3,REAL ex b7, b8 being Real st b6 = (RealFuncAdd b3) . ((RealFuncExtMult b3) . [b7,b4]),((RealFuncExtMult b3) . [b8,b5])
proof end;

theorem Th32: :: FUNCSDOM:32
for b1, b2 being set
for b3 being non empty set st b3 = {b1,b2} & b1 <> b2 holds
ex b4, b5 being Element of Funcs b3,REAL st
for b6 being Element of Funcs b3,REAL ex b7, b8 being Real st b6 = (RealFuncAdd b3) . ((RealFuncExtMult b3) . [b7,b4]),((RealFuncExtMult b3) . [b8,b5])
proof end;

theorem Th33: :: FUNCSDOM:33
for b1, b2 being set
for b3 being non empty set st b3 = {b1,b2} & b1 <> b2 holds
ex b4, b5 being Element of Funcs b3,REAL st
( ( for b6, b7 being Real st (RealFuncAdd b3) . ((RealFuncExtMult b3) . [b6,b4]),((RealFuncExtMult b3) . [b7,b5]) = RealFuncZero b3 holds
( b6 = 0 & b7 = 0 ) ) & ( for b6 being Element of Funcs b3,REAL ex b7, b8 being Real st b6 = (RealFuncAdd b3) . ((RealFuncExtMult b3) . [b7,b4]),((RealFuncExtMult b3) . [b8,b5]) ) )
proof end;

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

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

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

Lemma28: ex b1 being non empty set ex b2, b3 being set st
( b1 = {b2,b3} & b2 <> b3 )
proof end;

theorem Th35: :: FUNCSDOM:35
canceled;

theorem Th36: :: FUNCSDOM:36
canceled;

theorem Th37: :: FUNCSDOM:37
ex b1 being strict RealLinearSpaceex b2, b3 being VECTOR of b1 st
( ( for b4, b5 being Real st (b4 * b2) + (b5 * b3) = 0. b1 holds
( b4 = 0 & b5 = 0 ) ) & ( for b4 being VECTOR of b1 ex b5, b6 being Real st b4 = (b5 * b2) + (b6 * b3) ) )
proof end;

definition
let c1 be non empty set ;
canceled;
canceled;
canceled;
canceled;
func RRing c1 -> strict doubleLoopStr equals :: FUNCSDOM:def 12
doubleLoopStr(# (Funcs a1,REAL ),(RealFuncAdd a1),(RealFuncMult a1),(RealFuncUnit a1),(RealFuncZero a1) #);
correctness
coherence
doubleLoopStr(# (Funcs c1,REAL ),(RealFuncAdd c1),(RealFuncMult c1),(RealFuncUnit c1),(RealFuncZero c1) #) 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 b1 being non empty set holds RRing b1 = doubleLoopStr(# (Funcs b1,REAL ),(RealFuncAdd b1),(RealFuncMult b1),(RealFuncUnit b1),(RealFuncZero b1) #);

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

E29: now
let c1 be non empty set ;
set c2 = RRing c1;
let c3, c4 be Element of (RRing c1);
assume E30: c4 = RealFuncUnit c1 ;
reconsider c5 = c3 as Element of Funcs c1,REAL ;
thus c3 * c4 = (RealFuncMult c1) . c3,c4
.= (RealFuncMult c1) . c3,(RealFuncUnit c1) by E30
.= (RealFuncMult c1) . (RealFuncUnit c1),c5 by Th18
.= c5 by Th20
.= c3 ;
thus c4 * c3 = (RealFuncMult c1) . c4,c3
.= (RealFuncMult c1) . (RealFuncUnit c1),c3 by E30
.= c5 by Th20
.= c3 ;
end;

registration
let c1 be non empty set ;
cluster RRing a1 -> non empty unital strict ;
coherence
RRing c1 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 b1 being non empty set holds 1. (RRing b1) = RealFuncUnit b1
proof end;

theorem Th42: :: FUNCSDOM:42
for b1 being non empty set
for b2, b3, b4 being Element of (RRing b1) holds
( b2 + b3 = b3 + b2 & (b2 + b3) + b4 = b2 + (b3 + b4) & b2 + (0. (RRing b1)) = b2 & ex b5 being Element of (RRing b1) st b2 + b5 = 0. (RRing b1) & b2 * b3 = b3 * b2 & (b2 * b3) * b4 = b2 * (b3 * b4) & b2 * (1. (RRing b1)) = b2 & (1. (RRing b1)) * b2 = b2 & b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) & (b3 + b4) * b2 = (b3 * b2) + (b4 * b2) )
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 b1 being non empty set holds RRing b1 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 c1 be non empty set ;
canceled;
canceled;
canceled;
canceled;
canceled;
canceled;
func RAlgebra c1 -> strict AlgebraStr equals :: FUNCSDOM:def 19
AlgebraStr(# (Funcs a1,REAL ),(RealFuncMult a1),(RealFuncAdd a1),(RealFuncExtMult a1),(RealFuncUnit a1),(RealFuncZero a1) #);
correctness
coherence
AlgebraStr(# (Funcs c1,REAL ),(RealFuncMult c1),(RealFuncAdd c1),(RealFuncExtMult c1),(RealFuncUnit c1),(RealFuncZero c1) #) 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 b1 being non empty set holds RAlgebra b1 = AlgebraStr(# (Funcs b1,REAL ),(RealFuncMult b1),(RealFuncAdd b1),(RealFuncExtMult b1),(RealFuncUnit b1),(RealFuncZero b1) #);

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

E32: now
let c1 be non empty set ;
set c2 = RAlgebra c1;
let c3, c4 be Element of (RAlgebra c1);
assume E33: c4 = RealFuncUnit c1 ;
reconsider c5 = c3 as Element of Funcs c1,REAL ;
thus c3 * c4 = the mult of (RAlgebra c1) . c3,c4
.= (RealFuncMult c1) . c5,(RealFuncUnit c1) by E33
.= (RealFuncMult c1) . (RealFuncUnit c1),c5 by Th18
.= c3 by Th20 ;
thus c4 * c3 = the mult of (RAlgebra c1) . c4,c3
.= (RealFuncMult c1) . (RealFuncUnit c1),c5 by E33
.= c3 by Th20 ;
end;

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

theorem Th44: :: FUNCSDOM:44
for b1 being non empty set holds 1. (RAlgebra b1) = RealFuncUnit b1
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 b1 being non empty set
for b2, b3, b4 being Element of (RAlgebra b1)
for b5, b6 being Real holds
( b2 + b3 = b3 + b2 & (b2 + b3) + b4 = b2 + (b3 + b4) & b2 + (0. (RAlgebra b1)) = b2 & ex b7 being Element of (RAlgebra b1) st b2 + b7 = 0. (RAlgebra b1) & b2 * b3 = b3 * b2 & (b2 * b3) * b4 = b2 * (b3 * b4) & b2 * (1. (RAlgebra b1)) = b2 & b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) & b5 * (b2 * b3) = (b5 * b2) * b3 & b5 * (b2 + b3) = (b5 * b2) + (b5 * b3) & (b5 + b6) * b2 = (b5 * b2) + (b6 * b2) & (b5 * b6) * b2 = b5 * (b6 * b2) )
proof end;

definition
let c1 be non empty AlgebraStr ;
attr a1 is Algebra-like means :Def20: :: FUNCSDOM:def 20
for b1, b2, b3 being Element of a1
for b4, b5 being Real holds
( b1 * (1. a1) = b1 & b1 * (b2 + b3) = (b1 * b2) + (b1 * b3) & b4 * (b1 * b2) = (b4 * b1) * b2 & b4 * (b1 + b2) = (b4 * b1) + (b4 * b2) & (b4 + b5) * b1 = (b4 * b1) + (b5 * b1) & (b4 * b5) * b1 = b4 * (b5 * b1) );
end;

:: deftheorem Def20 defines Algebra-like FUNCSDOM:def 20 :
for b1 being non empty AlgebraStr holds
( b1 is Algebra-like iff for b2, b3, b4 being Element of b1
for b5, b6 being Real holds
( b2 * (1. b1) = b2 & b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) & b5 * (b2 * b3) = (b5 * b2) * b3 & b5 * (b2 + b3) = (b5 * b2) + (b5 * b3) & (b5 + b6) * b2 = (b5 * b2) + (b6 * b2) & (b5 * b6) * b2 = b5 * (b6 * b2) ) );

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 b1 being non empty set holds RAlgebra b1 is Algebra
proof end;