:: ALGSTR_2 semantic presentation

Lemma1: for b1, b2 being Element of F_Real
for b3, b4 being Real st b1 = b3 & b2 = b4 holds
b1 * b2 = b3 * b4
proof end;

Lemma2: 0 = 0. F_Real
by RLVECT_1:def 2, VECTSP_1:def 15;

Lemma3: for b1, b2 being Element of F_Real st b1 <> 0. F_Real holds
ex b3 being Element of F_Real st b1 * b3 = b2
proof end;

Lemma4: for b1, b2 being Element of F_Real st b1 <> 0. F_Real holds
ex b3 being Element of F_Real st b3 * b1 = b2
proof end;

Lemma5: for b1, b2, b3 being Element of F_Real st b1 <> 0. F_Real & b1 * b2 = b1 * b3 holds
b2 = b3
by VECTSP_1:33;

Lemma6: for b1, b2, b3 being Element of F_Real st b1 <> 0. F_Real & b2 * b1 = b3 * b1 holds
b2 = b3
by VECTSP_1:33;

Lemma7: for b1 being Element of F_Real holds b1 * (0. F_Real ) = 0. F_Real
by VECTSP_1:44;

Lemma8: for b1 being Element of F_Real holds (0. F_Real ) * b1 = 0. F_Real
by VECTSP_1:44;

registration
cluster F_Real -> multLoop_0-like ;
coherence
F_Real is multLoop_0-like
by Lemma3, Lemma4, Lemma5, Lemma6, Lemma7, Lemma8, ALGSTR_1:34;
end;

definition
let c1 be non empty add-left-cancelable add-right-invertible LoopStr ;
let c2 be Element of c1;
canceled;
canceled;
canceled;
canceled;
canceled;
canceled;
func - c2 -> Element of a1 means :Def7: :: ALGSTR_2:def 7
a2 + a3 = 0. a1;
existence
ex b1 being Element of c1 st c2 + b1 = 0. c1
by ALGSTR_1:def 9;
uniqueness
for b1, b2 being Element of c1 st c2 + b1 = 0. c1 & c2 + b2 = 0. c1 holds
b1 = b2
by ALGSTR_1:def 6;
end;

:: deftheorem Def1 ALGSTR_2:def 1 :
canceled;

:: deftheorem Def2 ALGSTR_2:def 2 :
canceled;

:: deftheorem Def3 ALGSTR_2:def 3 :
canceled;

:: deftheorem Def4 ALGSTR_2:def 4 :
canceled;

:: deftheorem Def5 ALGSTR_2:def 5 :
canceled;

:: deftheorem Def6 ALGSTR_2:def 6 :
canceled;

:: deftheorem Def7 defines - ALGSTR_2:def 7 :
for b1 being non empty add-left-cancelable add-right-invertible LoopStr
for b2, b3 being Element of b1 holds
( b3 = - b2 iff b2 + b3 = 0. b1 );

definition
let c1 be non empty add-left-cancelable add-right-invertible LoopStr ;
let c2, c3 be Element of c1;
func c2 - c3 -> Element of a1 equals :: ALGSTR_2:def 8
a2 + (- a3);
correctness
coherence
c2 + (- c3) is Element of c1
;
;
end;

:: deftheorem Def8 defines - ALGSTR_2:def 8 :
for b1 being non empty add-left-cancelable add-right-invertible LoopStr
for b2, b3 being Element of b1 holds b2 - b3 = b2 + (- b3);

registration
cluster non empty Abelian add-associative right_zeroed unital associative commutative strict distributive non degenerated left_zeroed Loop-like multLoop_0-like doubleLoopStr ;
existence
ex b1 being non empty doubleLoopStr st
( b1 is strict & b1 is Abelian & b1 is add-associative & b1 is commutative & b1 is associative & b1 is distributive & not b1 is degenerated & b1 is left_zeroed & b1 is right_zeroed & b1 is Loop-like & b1 is unital & b1 is multLoop_0-like )
proof end;
end;

definition
mode doubleLoop is non empty right_zeroed unital left_zeroed Loop-like multLoop_0-like doubleLoopStr ;
end;

definition
mode leftQuasi-Field is Abelian add-associative right-distributive non degenerated doubleLoop;
end;

theorem Th1: :: ALGSTR_2:1
canceled;

theorem Th2: :: ALGSTR_2:2
canceled;

theorem Th3: :: ALGSTR_2:3
canceled;

theorem Th4: :: ALGSTR_2:4
canceled;

theorem Th5: :: ALGSTR_2:5
canceled;

theorem Th6: :: ALGSTR_2:6
canceled;

theorem Th7: :: ALGSTR_2:7
canceled;

theorem Th8: :: ALGSTR_2:8
canceled;

theorem Th9: :: ALGSTR_2:9
canceled;

theorem Th10: :: ALGSTR_2:10
canceled;

theorem Th11: :: ALGSTR_2:11
canceled;

theorem Th12: :: ALGSTR_2:12
for b1 being non empty doubleLoopStr holds
( b1 is leftQuasi-Field iff ( ( for b2 being Element of b1 holds b2 + (0. b1) = b2 ) & ( for b2 being Element of b1 ex b3 being Element of b1 st b2 + b3 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b2 + b3) + b4 = b2 + (b3 + b4) ) & ( for b2, b3 being Element of b1 holds b2 + b3 = b3 + b2 ) & 0. b1 <> 1. b1 & ( for b2 being Element of b1 holds b2 * (1. b1) = b2 ) & ( for b2 being Element of b1 holds (1. b1) * b2 = b2 ) & ( for b2, b3 being Element of b1 st b2 <> 0. b1 holds
ex b4 being Element of b1 st b2 * b4 = b3 ) & ( for b2, b3 being Element of b1 st b2 <> 0. b1 holds
ex b4 being Element of b1 st b4 * b2 = b3 ) & ( for b2, b3, b4 being Element of b1 st b2 <> 0. b1 & b2 * b3 = b2 * b4 holds
b3 = b4 ) & ( for b2, b3, b4 being Element of b1 st b2 <> 0. b1 & b3 * b2 = b4 * b2 holds
b3 = b4 ) & ( for b2 being Element of b1 holds b2 * (0. b1) = 0. b1 ) & ( for b2 being Element of b1 holds (0. b1) * b2 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) ) ) )
proof end;

theorem Th13: :: ALGSTR_2:13
canceled;

theorem Th14: :: ALGSTR_2:14
for b1 being Abelian right-distributive doubleLoop
for b2, b3 being Element of b1 holds b2 * (- b3) = - (b2 * b3)
proof end;

theorem Th15: :: ALGSTR_2:15
for b1 being non empty Abelian add-left-cancelable add-right-invertible LoopStr
for b2 being Element of b1 holds - (- b2) = b2
proof end;

theorem Th16: :: ALGSTR_2:16
for b1 being Abelian right-distributive doubleLoop holds (- (1. b1)) * (- (1. b1)) = 1. b1
proof end;

theorem Th17: :: ALGSTR_2:17
for b1 being Abelian right-distributive doubleLoop
for b2, b3, b4 being Element of b1 holds b2 * (b3 - b4) = (b2 * b3) - (b2 * b4)
proof end;

definition
mode rightQuasi-Field is Abelian add-associative left-distributive non degenerated doubleLoop;
end;

theorem Th18: :: ALGSTR_2:18
canceled;

theorem Th19: :: ALGSTR_2:19
for b1 being non empty doubleLoopStr holds
( b1 is rightQuasi-Field iff ( ( for b2 being Element of b1 holds b2 + (0. b1) = b2 ) & ( for b2 being Element of b1 ex b3 being Element of b1 st b2 + b3 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b2 + b3) + b4 = b2 + (b3 + b4) ) & ( for b2, b3 being Element of b1 holds b2 + b3 = b3 + b2 ) & 0. b1 <> 1. b1 & ( for b2 being Element of b1 holds b2 * (1. b1) = b2 ) & ( for b2 being Element of b1 holds (1. b1) * b2 = b2 ) & ( for b2, b3 being Element of b1 st b2 <> 0. b1 holds
ex b4 being Element of b1 st b2 * b4 = b3 ) & ( for b2, b3 being Element of b1 st b2 <> 0. b1 holds
ex b4 being Element of b1 st b4 * b2 = b3 ) & ( for b2, b3, b4 being Element of b1 st b2 <> 0. b1 & b2 * b3 = b2 * b4 holds
b3 = b4 ) & ( for b2, b3, b4 being Element of b1 st b2 <> 0. b1 & b3 * b2 = b4 * b2 holds
b3 = b4 ) & ( for b2 being Element of b1 holds b2 * (0. b1) = 0. b1 ) & ( for b2 being Element of b1 holds (0. b1) * b2 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b3 + b4) * b2 = (b3 * b2) + (b4 * b2) ) ) )
proof end;

theorem Th20: :: ALGSTR_2:20
canceled;

theorem Th21: :: ALGSTR_2:21
for b1 being left-distributive doubleLoop
for b2, b3 being Element of b1 holds (- b2) * b3 = - (b2 * b3)
proof end;

theorem Th22: :: ALGSTR_2:22
canceled;

theorem Th23: :: ALGSTR_2:23
for b1 being Abelian left-distributive doubleLoop holds (- (1. b1)) * (- (1. b1)) = 1. b1
proof end;

theorem Th24: :: ALGSTR_2:24
for b1 being left-distributive doubleLoop
for b2, b3, b4 being Element of b1 holds (b2 - b3) * b4 = (b2 * b4) - (b3 * b4)
proof end;

definition
mode doublesidedQuasi-Field is Abelian add-associative distributive non degenerated doubleLoop;
end;

theorem Th25: :: ALGSTR_2:25
canceled;

theorem Th26: :: ALGSTR_2:26
for b1 being non empty doubleLoopStr holds
( b1 is doublesidedQuasi-Field iff ( ( for b2 being Element of b1 holds b2 + (0. b1) = b2 ) & ( for b2 being Element of b1 ex b3 being Element of b1 st b2 + b3 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b2 + b3) + b4 = b2 + (b3 + b4) ) & ( for b2, b3 being Element of b1 holds b2 + b3 = b3 + b2 ) & 0. b1 <> 1. b1 & ( for b2 being Element of b1 holds b2 * (1. b1) = b2 ) & ( for b2 being Element of b1 holds (1. b1) * b2 = b2 ) & ( for b2, b3 being Element of b1 st b2 <> 0. b1 holds
ex b4 being Element of b1 st b2 * b4 = b3 ) & ( for b2, b3 being Element of b1 st b2 <> 0. b1 holds
ex b4 being Element of b1 st b4 * b2 = b3 ) & ( for b2, b3, b4 being Element of b1 st b2 <> 0. b1 & b2 * b3 = b2 * b4 holds
b3 = b4 ) & ( for b2, b3, b4 being Element of b1 st b2 <> 0. b1 & b3 * b2 = b4 * b2 holds
b3 = b4 ) & ( for b2 being Element of b1 holds b2 * (0. b1) = 0. b1 ) & ( for b2 being Element of b1 holds (0. b1) * b2 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) ) & ( for b2, b3, b4 being Element of b1 holds (b3 + b4) * b2 = (b3 * b2) + (b4 * b2) ) ) )
proof end;

definition
mode _Skew-Field is associative doublesidedQuasi-Field;
end;

Lemma13: for b1 being non empty doubleLoopStr
for b2, b3 being Element of b1 st 0. b1 <> 1. b1 & ( for b4 being Element of b1 holds b4 * (1. b1) = b4 ) & ( for b4 being Element of b1 st b4 <> 0. b1 holds
ex b5 being Element of b1 st b4 * b5 = 1. b1 ) & ( for b4, b5, b6 being Element of b1 holds (b4 * b5) * b6 = b4 * (b5 * b6) ) & ( for b4 being Element of b1 holds b4 * (0. b1) = 0. b1 ) & ( for b4 being Element of b1 holds (0. b1) * b4 = 0. b1 ) & b2 * b3 = 1. b1 holds
b3 * b2 = 1. b1
proof end;

Lemma14: for b1 being non empty doubleLoopStr
for b2 being Element of b1 st 0. b1 <> 1. b1 & ( for b3 being Element of b1 holds b3 * (1. b1) = b3 ) & ( for b3 being Element of b1 st b3 <> 0. b1 holds
ex b4 being Element of b1 st b3 * b4 = 1. b1 ) & ( for b3, b4, b5 being Element of b1 holds (b3 * b4) * b5 = b3 * (b4 * b5) ) & ( for b3 being Element of b1 holds b3 * (0. b1) = 0. b1 ) & ( for b3 being Element of b1 holds (0. b1) * b3 = 0. b1 ) holds
(1. b1) * b2 = b2 * (1. b1)
proof end;

Lemma15: for b1 being non empty doubleLoopStr st 0. b1 <> 1. b1 & ( for b2 being Element of b1 holds b2 * (1. b1) = b2 ) & ( for b2 being Element of b1 st b2 <> 0. b1 holds
ex b3 being Element of b1 st b2 * b3 = 1. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b2 * b3) * b4 = b2 * (b3 * b4) ) & ( for b2 being Element of b1 holds b2 * (0. b1) = 0. b1 ) & ( for b2 being Element of b1 holds (0. b1) * b2 = 0. b1 ) holds
for b2 being Element of b1 st b2 <> 0. b1 holds
ex b3 being Element of b1 st b3 * b2 = 1. b1
proof end;

theorem Th27: :: ALGSTR_2:27
canceled;

theorem Th28: :: ALGSTR_2:28
canceled;

theorem Th29: :: ALGSTR_2:29
canceled;

theorem Th30: :: ALGSTR_2:30
canceled;

theorem Th31: :: ALGSTR_2:31
canceled;

theorem Th32: :: ALGSTR_2:32
for b1 being non empty doubleLoopStr holds
( b1 is _Skew-Field iff ( ( for b2 being Element of b1 holds b2 + (0. b1) = b2 ) & ( for b2 being Element of b1 ex b3 being Element of b1 st b2 + b3 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b2 + b3) + b4 = b2 + (b3 + b4) ) & ( for b2, b3 being Element of b1 holds b2 + b3 = b3 + b2 ) & 0. b1 <> 1. b1 & ( for b2 being Element of b1 holds b2 * (1. b1) = b2 ) & ( for b2 being Element of b1 st b2 <> 0. b1 holds
ex b3 being Element of b1 st b2 * b3 = 1. b1 ) & ( for b2 being Element of b1 holds b2 * (0. b1) = 0. b1 ) & ( for b2 being Element of b1 holds (0. b1) * b2 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b2 * b3) * b4 = b2 * (b3 * b4) ) & ( for b2, b3, b4 being Element of b1 holds b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) ) & ( for b2, b3, b4 being Element of b1 holds (b3 + b4) * b2 = (b3 * b2) + (b4 * b2) ) ) )
proof end;

definition
mode _Field is commutative _Skew-Field;
end;

theorem Th33: :: ALGSTR_2:33
canceled;

theorem Th34: :: ALGSTR_2:34
for b1 being non empty doubleLoopStr holds
( b1 is _Field iff ( ( for b2 being Element of b1 holds b2 + (0. b1) = b2 ) & ( for b2 being Element of b1 ex b3 being Element of b1 st b2 + b3 = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b2 + b3) + b4 = b2 + (b3 + b4) ) & ( for b2, b3 being Element of b1 holds b2 + b3 = b3 + b2 ) & 0. b1 <> 1. b1 & ( for b2 being Element of b1 holds b2 * (1. b1) = b2 ) & ( for b2 being Element of b1 st b2 <> 0. b1 holds
ex b3 being Element of b1 st b2 * b3 = 1. b1 ) & ( for b2 being Element of b1 holds b2 * (0. b1) = 0. b1 ) & ( for b2, b3, b4 being Element of b1 holds (b2 * b3) * b4 = b2 * (b3 * b4) ) & ( for b2, b3, b4 being Element of b1 holds b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) ) & ( for b2, b3 being Element of b1 holds b2 * b3 = b3 * b2 ) ) )
proof end;