:: IDEAL_1 semantic presentation

registration
cluster non empty add-associative right_zeroed left_zeroed LoopStr ;
existence
ex b1 being non empty LoopStr st
( b1 is add-associative & b1 is left_zeroed & b1 is right_zeroed )
proof end;
end;

registration
cluster non empty unital associative commutative Abelian add-associative right_zeroed distributive add-cancelable left_zeroed non trivial doubleLoopStr ;
existence
ex b1 being non empty doubleLoopStr st
( b1 is Abelian & b1 is left_zeroed & b1 is right_zeroed & b1 is add-cancelable & b1 is unital & b1 is add-associative & b1 is associative & b1 is commutative & b1 is distributive & not b1 is trivial )
proof end;
end;

theorem Th1: :: IDEAL_1:1
for b1 being non empty add-associative right_zeroed left_zeroed LoopStr
for b2, b3 being Element of b1 holds Sum <*b2,b3*> = b2 + b3
proof end;

definition
let c1 be non empty LoopStr ;
let c2 be Subset of c1;
attr a2 is add-closed means :Def1: :: IDEAL_1:def 1
for b1, b2 being Element of a1 st b1 in a2 & b2 in a2 holds
b1 + b2 in a2;
end;

:: deftheorem Def1 defines add-closed IDEAL_1:def 1 :
for b1 being non empty LoopStr
for b2 being Subset of b1 holds
( b2 is add-closed iff for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
b3 + b4 in b2 );

definition
let c1 be non empty HGrStr ;
let c2 be Subset of c1;
attr a2 is left-ideal means :Def2: :: IDEAL_1:def 2
for b1, b2 being Element of a1 st b2 in a2 holds
b1 * b2 in a2;
attr a2 is right-ideal means :Def3: :: IDEAL_1:def 3
for b1, b2 being Element of a1 st b2 in a2 holds
b2 * b1 in a2;
end;

:: deftheorem Def2 defines left-ideal IDEAL_1:def 2 :
for b1 being non empty HGrStr
for b2 being Subset of b1 holds
( b2 is left-ideal iff for b3, b4 being Element of b1 st b4 in b2 holds
b3 * b4 in b2 );

:: deftheorem Def3 defines right-ideal IDEAL_1:def 3 :
for b1 being non empty HGrStr
for b2 being Subset of b1 holds
( b2 is right-ideal iff for b3, b4 being Element of b1 st b4 in b2 holds
b4 * b3 in b2 );

registration
let c1 be non empty LoopStr ;
cluster non empty add-closed Element of bool the carrier of a1;
existence
ex b1 being non empty Subset of c1 st b1 is add-closed
proof end;
end;

registration
let c1 be non empty HGrStr ;
cluster non empty left-ideal Element of bool the carrier of a1;
existence
ex b1 being non empty Subset of c1 st b1 is left-ideal
proof end;
cluster non empty right-ideal Element of bool the carrier of a1;
existence
ex b1 being non empty Subset of c1 st b1 is right-ideal
proof end;
end;

registration
let c1 be non empty doubleLoopStr ;
cluster non empty add-closed left-ideal right-ideal Element of bool the carrier of a1;
existence
ex b1 being non empty Subset of c1 st
( b1 is add-closed & b1 is left-ideal & b1 is right-ideal )
proof end;
cluster non empty add-closed right-ideal Element of bool the carrier of a1;
existence
ex b1 being non empty Subset of c1 st
( b1 is add-closed & b1 is right-ideal )
proof end;
cluster non empty add-closed left-ideal Element of bool the carrier of a1;
existence
ex b1 being non empty Subset of c1 st
( b1 is add-closed & b1 is left-ideal )
proof end;
end;

registration
let c1 be non empty commutative HGrStr ;
cluster non empty left-ideal -> non empty right-ideal Element of bool the carrier of a1;
coherence
for b1 being non empty Subset of c1 st b1 is left-ideal holds
b1 is right-ideal
proof end;
cluster non empty right-ideal -> non empty left-ideal Element of bool the carrier of a1;
coherence
for b1 being non empty Subset of c1 st b1 is right-ideal holds
b1 is left-ideal
proof end;
end;

definition
let c1 be non empty doubleLoopStr ;
mode Ideal of a1 is non empty add-closed left-ideal right-ideal Subset of a1;
end;

definition
let c1 be non empty doubleLoopStr ;
mode RightIdeal of a1 is non empty add-closed right-ideal Subset of a1;
end;

definition
let c1 be non empty doubleLoopStr ;
mode LeftIdeal of a1 is non empty add-closed left-ideal Subset of a1;
end;

theorem Th2: :: IDEAL_1:2
for b1 being non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr
for b2 being non empty left-ideal Subset of b1 holds 0. b1 in b2
proof end;

theorem Th3: :: IDEAL_1:3
for b1 being non empty right-distributive left_zeroed add-right-cancelable doubleLoopStr
for b2 being non empty right-ideal Subset of b1 holds 0. b1 in b2
proof end;

theorem Th4: :: IDEAL_1:4
for b1 being non empty right_zeroed LoopStr holds {(0. b1)} is add-closed
proof end;

theorem Th5: :: IDEAL_1:5
for b1 being non empty right-distributive left_zeroed add-right-cancelable doubleLoopStr holds {(0. b1)} is left-ideal
proof end;

theorem Th6: :: IDEAL_1:6
for b1 being non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr holds {(0. b1)} is right-ideal
proof end;

registration
let c1 be non empty right_zeroed LoopStr ;
cluster {(0. a1)} -> add-closed ;
coherence
{(0. c1)} is add-closed Subset of c1
by Th4;
end;

registration
let c1 be non empty right-distributive left_zeroed add-right-cancelable doubleLoopStr ;
cluster {(0. a1)} -> left-ideal ;
coherence
{(0. c1)} is left-ideal Subset of c1
by Th5;
end;

registration
let c1 be non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr ;
cluster {(0. a1)} -> right-ideal ;
coherence
{(0. c1)} is right-ideal Subset of c1
by Th6;
end;

theorem Th7: :: IDEAL_1:7
for b1 being non empty add-associative right_zeroed right_complementable distributive doubleLoopStr holds {(0. b1)} is Ideal of b1
proof end;

theorem Th8: :: IDEAL_1:8
for b1 being non empty add-associative right_zeroed right_complementable right-distributive doubleLoopStr holds {(0. b1)} is LeftIdeal of b1
proof end;

theorem Th9: :: IDEAL_1:9
for b1 being non empty add-associative right_zeroed right_complementable left-distributive doubleLoopStr holds {(0. b1)} is RightIdeal of b1
proof end;

theorem Th10: :: IDEAL_1:10
for b1 being non empty doubleLoopStr holds the carrier of b1 is Ideal of b1
proof end;

theorem Th11: :: IDEAL_1:11
for b1 being non empty doubleLoopStr holds the carrier of b1 is LeftIdeal of b1
proof end;

theorem Th12: :: IDEAL_1:12
for b1 being non empty doubleLoopStr holds the carrier of b1 is RightIdeal of b1
proof end;

definition
let c1 be non empty right_zeroed distributive add-cancelable left_zeroed doubleLoopStr ;
let c2 be Ideal of c1;
redefine attr trivial as a2 is trivial means :: IDEAL_1:def 4
a2 = {(0. a1)};
compatibility
( c2 is trivial iff c2 = {(0. c1)} )
proof end;
end;

:: deftheorem Def4 defines trivial IDEAL_1:def 4 :
for b1 being non empty right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being Ideal of b1 holds
( b2 is trivial iff b2 = {(0. b1)} );

definition
let c1 be 1-sorted ;
let c2 be Subset of c1;
attr a2 is proper means :Def5: :: IDEAL_1:def 5
a2 <> the carrier of a1;
end;

:: deftheorem Def5 defines proper IDEAL_1:def 5 :
for b1 being 1-sorted
for b2 being Subset of b1 holds
( b2 is proper iff b2 <> the carrier of b1 );

registration
let c1 be non empty 1-sorted ;
cluster proper Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st b1 is proper
proof end;
end;

registration
let c1 be non empty right_zeroed distributive add-cancelable left_zeroed non trivial doubleLoopStr ;
cluster proper Element of bool the carrier of a1;
existence
ex b1 being Ideal of c1 st b1 is proper
proof end;
end;

theorem Th13: :: IDEAL_1:13
for b1 being non empty add-associative right_zeroed right_complementable left-distributive left_unital doubleLoopStr
for b2 being non empty left-ideal Subset of b1
for b3 being Element of b1 st b3 in b2 holds
- b3 in b2
proof end;

theorem Th14: :: IDEAL_1:14
for b1 being non empty add-associative right_zeroed right_complementable right-distributive right_unital doubleLoopStr
for b2 being non empty right-ideal Subset of b1
for b3 being Element of b1 st b3 in b2 holds
- b3 in b2
proof end;

theorem Th15: :: IDEAL_1:15
for b1 being non empty add-associative right_zeroed right_complementable left-distributive left_unital doubleLoopStr
for b2 being LeftIdeal of b1
for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
b3 - b4 in b2
proof end;

theorem Th16: :: IDEAL_1:16
for b1 being non empty add-associative right_zeroed right_complementable right-distributive right_unital doubleLoopStr
for b2 being RightIdeal of b1
for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
b3 - b4 in b2
proof end;

theorem Th17: :: IDEAL_1:17
for b1 being non empty add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being non empty add-closed right-ideal Subset of b1
for b3 being Element of b2
for b4 being Nat holds b4 * b3 in b2
proof end;

theorem Th18: :: IDEAL_1:18
for b1 being non empty unital associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being non empty right-ideal Subset of b1
for b3 being Element of b2
for b4 being Nat st b4 <> 0 holds
b3 |^ b4 in b2
proof end;

definition
let c1 be non empty LoopStr ;
let c2 be non empty add-closed Subset of c1;
func add| c2,c1 -> BinOp of a2 equals :: IDEAL_1:def 6
the add of a1 || a2;
coherence
the add of c1 || c2 is BinOp of c2
proof end;
end;

:: deftheorem Def6 defines add| IDEAL_1:def 6 :
for b1 being non empty LoopStr
for b2 being non empty add-closed Subset of b1 holds add| b2,b1 = the add of b1 || b2;

definition
let c1 be non empty HGrStr ;
let c2 be non empty right-ideal Subset of c1;
func mult| c2,c1 -> BinOp of a2 equals :: IDEAL_1:def 7
the mult of a1 || a2;
coherence
the mult of c1 || c2 is BinOp of c2
proof end;
end;

:: deftheorem Def7 defines mult| IDEAL_1:def 7 :
for b1 being non empty HGrStr
for b2 being non empty right-ideal Subset of b1 holds mult| b2,b1 = the mult of b1 || b2;

definition
let c1 be non empty LoopStr ;
let c2 be non empty add-closed Subset of c1;
func Gr c2,c1 -> non empty LoopStr equals :: IDEAL_1:def 8
LoopStr(# a2,(add| a2,a1),(In (0. a1),a2) #);
coherence
LoopStr(# c2,(add| c2,c1),(In (0. c1),c2) #) is non empty LoopStr
;
end;

:: deftheorem Def8 defines Gr IDEAL_1:def 8 :
for b1 being non empty LoopStr
for b2 being non empty add-closed Subset of b1 holds Gr b2,b1 = LoopStr(# b2,(add| b2,b1),(In (0. b1),b2) #);

registration
let c1 be non empty add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr ;
let c2 be non empty add-closed Subset of c1;
cluster Gr a2,a1 -> non empty add-associative ;
coherence
Gr c2,c1 is add-associative
proof end;
end;

registration
let c1 be non empty add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr ;
let c2 be non empty add-closed right-ideal Subset of c1;
cluster Gr a2,a1 -> non empty add-associative right_zeroed ;
coherence
Gr c2,c1 is right_zeroed
proof end;
end;

registration
let c1 be non empty Abelian doubleLoopStr ;
let c2 be non empty add-closed Subset of c1;
cluster Gr a2,a1 -> non empty Abelian ;
coherence
Gr c2,c1 is Abelian
proof end;
end;

registration
let c1 be non empty Abelian add-associative right_zeroed right_complementable right_unital distributive left_zeroed doubleLoopStr ;
let c2 be non empty add-closed right-ideal Subset of c1;
cluster Gr a2,a1 -> non empty Abelian add-associative right_zeroed right_complementable ;
coherence
Gr c2,c1 is right_complementable
proof end;
end;

Lemma18: for b1 being comRing
for b2 being Element of b1 holds { (b2 * b3) where B is Element of b1 : verum } is Ideal of b1
proof end;

theorem Th19: :: IDEAL_1:19
for b1 being non empty right_unital doubleLoopStr
for b2 being non empty left-ideal Subset of b1 holds
( b2 is proper iff not 1. b1 in b2 )
proof end;

theorem Th20: :: IDEAL_1:20
for b1 being non empty right_unital left_unital doubleLoopStr
for b2 being non empty right-ideal Subset of b1 holds
( b2 is proper iff for b3 being Element of b1 st b3 is unital holds
not b3 in b2 )
proof end;

theorem Th21: :: IDEAL_1:21
for b1 being non empty right_unital doubleLoopStr
for b2 being non empty left-ideal right-ideal Subset of b1 holds
( b2 is proper iff for b3 being Element of b1 st b3 is unital holds
not b3 in b2 )
proof end;

theorem Th22: :: IDEAL_1:22
for b1 being non degenerated comRing holds
( b1 is Field iff for b2 being Ideal of b1 holds
( b2 = {(0. b1)} or b2 = the carrier of b1 ) )
proof end;

definition
let c1 be non empty multLoopStr ;
let c2 be non empty Subset of c1;
mode LinearCombination of c2 -> FinSequence of the carrier of a1 means :Def9: :: IDEAL_1:def 9
for b1 being set st b1 in dom a3 holds
ex b2, b3 being Element of a1ex b4 being Element of a2 st a3 /. b1 = (b2 * b4) * b3;
existence
ex b1 being FinSequence of the carrier of c1 st
for b2 being set st b2 in dom b1 holds
ex b3, b4 being Element of c1ex b5 being Element of c2 st b1 /. b2 = (b3 * b5) * b4
proof end;
mode LeftLinearCombination of c2 -> FinSequence of the carrier of a1 means :Def10: :: IDEAL_1:def 10
for b1 being set st b1 in dom a3 holds
ex b2 being Element of a1ex b3 being Element of a2 st a3 /. b1 = b2 * b3;
existence
ex b1 being FinSequence of the carrier of c1 st
for b2 being set st b2 in dom b1 holds
ex b3 being Element of c1ex b4 being Element of c2 st b1 /. b2 = b3 * b4
proof end;
mode RightLinearCombination of c2 -> FinSequence of the carrier of a1 means :Def11: :: IDEAL_1:def 11
for b1 being set st b1 in dom a3 holds
ex b2 being Element of a1ex b3 being Element of a2 st a3 /. b1 = b3 * b2;
existence
ex b1 being FinSequence of the carrier of c1 st
for b2 being set st b2 in dom b1 holds
ex b3 being Element of c1ex b4 being Element of c2 st b1 /. b2 = b4 * b3
proof end;
end;

:: deftheorem Def9 defines LinearCombination IDEAL_1:def 9 :
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being FinSequence of the carrier of b1 holds
( b3 is LinearCombination of b2 iff for b4 being set st b4 in dom b3 holds
ex b5, b6 being Element of b1ex b7 being Element of b2 st b3 /. b4 = (b5 * b7) * b6 );

:: deftheorem Def10 defines LeftLinearCombination IDEAL_1:def 10 :
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being FinSequence of the carrier of b1 holds
( b3 is LeftLinearCombination of b2 iff for b4 being set st b4 in dom b3 holds
ex b5 being Element of b1ex b6 being Element of b2 st b3 /. b4 = b5 * b6 );

:: deftheorem Def11 defines RightLinearCombination IDEAL_1:def 11 :
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being FinSequence of the carrier of b1 holds
( b3 is RightLinearCombination of b2 iff for b4 being set st b4 in dom b3 holds
ex b5 being Element of b1ex b6 being Element of b2 st b3 /. b4 = b6 * b5 );

registration
let c1 be non empty multLoopStr ;
let c2 be non empty Subset of c1;
cluster non empty LinearCombination of a2;
existence
not for b1 being LinearCombination of c2 holds b1 is empty
proof end;
cluster non empty LeftLinearCombination of a2;
existence
not for b1 being LeftLinearCombination of c2 holds b1 is empty
proof end;
cluster non empty RightLinearCombination of a2;
existence
not for b1 being RightLinearCombination of c2 holds b1 is empty
proof end;
end;

definition
let c1 be non empty multLoopStr ;
let c2, c3 be non empty Subset of c1;
let c4 be LinearCombination of c2;
let c5 be LinearCombination of c3;
redefine func ^ as c4 ^ c5 -> LinearCombination of a2 \/ a3;
coherence
c4 ^ c5 is LinearCombination of c2 \/ c3
proof end;
end;

theorem Th23: :: IDEAL_1:23
for b1 being non empty associative multLoopStr
for b2 being non empty Subset of b1
for b3 being Element of b1
for b4 being LinearCombination of b2 holds b3 * b4 is LinearCombination of b2
proof end;

theorem Th24: :: IDEAL_1:24
for b1 being non empty associative multLoopStr
for b2 being non empty Subset of b1
for b3 being Element of b1
for b4 being LinearCombination of b2 holds b4 * b3 is LinearCombination of b2
proof end;

theorem Th25: :: IDEAL_1:25
for b1 being non empty right_unital multLoopStr
for b2 being non empty Subset of b1
for b3 being LeftLinearCombination of b2 holds b3 is LinearCombination of b2
proof end;

definition
let c1 be non empty multLoopStr ;
let c2, c3 be non empty Subset of c1;
let c4 be LeftLinearCombination of c2;
let c5 be LeftLinearCombination of c3;
redefine func ^ as c4 ^ c5 -> LeftLinearCombination of a2 \/ a3;
coherence
c4 ^ c5 is LeftLinearCombination of c2 \/ c3
proof end;
end;

theorem Th26: :: IDEAL_1:26
for b1 being non empty associative multLoopStr
for b2 being non empty Subset of b1
for b3 being Element of b1
for b4 being LeftLinearCombination of b2 holds b3 * b4 is LeftLinearCombination of b2
proof end;

theorem Th27: :: IDEAL_1:27
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being Element of b1
for b4 being LeftLinearCombination of b2 holds b4 * b3 is LinearCombination of b2
proof end;

theorem Th28: :: IDEAL_1:28
for b1 being non empty left_unital multLoopStr
for b2 being non empty Subset of b1
for b3 being RightLinearCombination of b2 holds b3 is LinearCombination of b2
proof end;

definition
let c1 be non empty multLoopStr ;
let c2, c3 be non empty Subset of c1;
let c4 be RightLinearCombination of c2;
let c5 be RightLinearCombination of c3;
redefine func ^ as c4 ^ c5 -> RightLinearCombination of a2 \/ a3;
coherence
c4 ^ c5 is RightLinearCombination of c2 \/ c3
proof end;
end;

theorem Th29: :: IDEAL_1:29
for b1 being non empty associative multLoopStr
for b2 being non empty Subset of b1
for b3 being Element of b1
for b4 being RightLinearCombination of b2 holds b4 * b3 is RightLinearCombination of b2
proof end;

theorem Th30: :: IDEAL_1:30
for b1 being non empty associative multLoopStr
for b2 being non empty Subset of b1
for b3 being Element of b1
for b4 being RightLinearCombination of b2 holds b3 * b4 is LinearCombination of b2
proof end;

theorem Th31: :: IDEAL_1:31
for b1 being non empty associative commutative multLoopStr
for b2 being non empty Subset of b1
for b3 being LinearCombination of b2 holds
( b3 is LeftLinearCombination of b2 & b3 is RightLinearCombination of b2 )
proof end;

theorem Th32: :: IDEAL_1:32
for b1 being non empty doubleLoopStr
for b2 being non empty Subset of b1
for b3 being non empty LinearCombination of b2 ex b4 being LinearCombination of b2ex b5 being Element of b1 st
( b3 = b4 ^ <*b5*> & <*b5*> is LinearCombination of b2 )
proof end;

theorem Th33: :: IDEAL_1:33
for b1 being non empty doubleLoopStr
for b2 being non empty Subset of b1
for b3 being non empty LeftLinearCombination of b2 ex b4 being LeftLinearCombination of b2ex b5 being Element of b1 st
( b3 = b4 ^ <*b5*> & <*b5*> is LeftLinearCombination of b2 )
proof end;

theorem Th34: :: IDEAL_1:34
for b1 being non empty doubleLoopStr
for b2 being non empty Subset of b1
for b3 being non empty RightLinearCombination of b2 ex b4 being RightLinearCombination of b2ex b5 being Element of b1 st
( b3 = b4 ^ <*b5*> & <*b5*> is RightLinearCombination of b2 )
proof end;

definition
let c1 be non empty multLoopStr ;
let c2 be non empty Subset of c1;
let c3 be LinearCombination of c2;
let c4 be FinSequence of [:the carrier of c1,the carrier of c1,the carrier of c1:];
pred c4 represents c3 means :Def12: :: IDEAL_1:def 12
( len a4 = len a3 & ( for b1 being set st b1 in dom a3 holds
( a3 . b1 = (((a4 /. b1) `1 ) * ((a4 /. b1) `2 )) * ((a4 /. b1) `3 ) & (a4 /. b1) `2 in a2 ) ) );
end;

:: deftheorem Def12 defines represents IDEAL_1:def 12 :
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being LinearCombination of b2
for b4 being FinSequence of [:the carrier of b1,the carrier of b1,the carrier of b1:] holds
( b4 represents b3 iff ( len b4 = len b3 & ( for b5 being set st b5 in dom b3 holds
( b3 . b5 = (((b4 /. b5) `1 ) * ((b4 /. b5) `2 )) * ((b4 /. b5) `3 ) & (b4 /. b5) `2 in b2 ) ) ) );

theorem Th35: :: IDEAL_1:35
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being LinearCombination of b2 ex b4 being FinSequence of [:the carrier of b1,the carrier of b1,the carrier of b1:] st b4 represents b3
proof end;

theorem Th36: :: IDEAL_1:36
for b1, b2 being non empty multLoopStr
for b3 being non empty Subset of b1
for b4 being LinearCombination of b3
for b5 being non empty Subset of b2
for b6 being Function of the carrier of b1,the carrier of b2
for b7 being FinSequence of [:the carrier of b1,the carrier of b1,the carrier of b1:] st b6 .: b3 c= b5 & b7 represents b4 holds
ex b8 being LinearCombination of b5 st
( len b4 = len b8 & ( for b9 being set st b9 in dom b8 holds
b8 . b9 = ((b6 . ((b7 /. b9) `1 )) * (b6 . ((b7 /. b9) `2 ))) * (b6 . ((b7 /. b9) `3 )) ) )
proof end;

definition
let c1 be non empty multLoopStr ;
let c2 be non empty Subset of c1;
let c3 be LeftLinearCombination of c2;
let c4 be FinSequence of [:the carrier of c1,the carrier of c1:];
pred c4 represents c3 means :Def13: :: IDEAL_1:def 13
( len a4 = len a3 & ( for b1 being set st b1 in dom a3 holds
( a3 . b1 = ((a4 /. b1) `1 ) * ((a4 /. b1) `2 ) & (a4 /. b1) `2 in a2 ) ) );
end;

:: deftheorem Def13 defines represents IDEAL_1:def 13 :
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being LeftLinearCombination of b2
for b4 being FinSequence of [:the carrier of b1,the carrier of b1:] holds
( b4 represents b3 iff ( len b4 = len b3 & ( for b5 being set st b5 in dom b3 holds
( b3 . b5 = ((b4 /. b5) `1 ) * ((b4 /. b5) `2 ) & (b4 /. b5) `2 in b2 ) ) ) );

theorem Th37: :: IDEAL_1:37
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being LeftLinearCombination of b2 ex b4 being FinSequence of [:the carrier of b1,the carrier of b1:] st b4 represents b3
proof end;

theorem Th38: :: IDEAL_1:38
for b1, b2 being non empty multLoopStr
for b3 being non empty Subset of b1
for b4 being LeftLinearCombination of b3
for b5 being non empty Subset of b2
for b6 being Function of the carrier of b1,the carrier of b2
for b7 being FinSequence of [:the carrier of b1,the carrier of b1:] st b6 .: b3 c= b5 & b7 represents b4 holds
ex b8 being LeftLinearCombination of b5 st
( len b4 = len b8 & ( for b9 being set st b9 in dom b8 holds
b8 . b9 = (b6 . ((b7 /. b9) `1 )) * (b6 . ((b7 /. b9) `2 )) ) )
proof end;

definition
let c1 be non empty multLoopStr ;
let c2 be non empty Subset of c1;
let c3 be RightLinearCombination of c2;
let c4 be FinSequence of [:the carrier of c1,the carrier of c1:];
pred c4 represents c3 means :Def14: :: IDEAL_1:def 14
( len a4 = len a3 & ( for b1 being set st b1 in dom a3 holds
( a3 . b1 = ((a4 /. b1) `1 ) * ((a4 /. b1) `2 ) & (a4 /. b1) `1 in a2 ) ) );
end;

:: deftheorem Def14 defines represents IDEAL_1:def 14 :
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being RightLinearCombination of b2
for b4 being FinSequence of [:the carrier of b1,the carrier of b1:] holds
( b4 represents b3 iff ( len b4 = len b3 & ( for b5 being set st b5 in dom b3 holds
( b3 . b5 = ((b4 /. b5) `1 ) * ((b4 /. b5) `2 ) & (b4 /. b5) `1 in b2 ) ) ) );

theorem Th39: :: IDEAL_1:39
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being RightLinearCombination of b2 ex b4 being FinSequence of [:the carrier of b1,the carrier of b1:] st b4 represents b3
proof end;

theorem Th40: :: IDEAL_1:40
for b1, b2 being non empty multLoopStr
for b3 being non empty Subset of b1
for b4 being RightLinearCombination of b3
for b5 being non empty Subset of b2
for b6 being Function of the carrier of b1,the carrier of b2
for b7 being FinSequence of [:the carrier of b1,the carrier of b1:] st b6 .: b3 c= b5 & b7 represents b4 holds
ex b8 being RightLinearCombination of b5 st
( len b4 = len b8 & ( for b9 being set st b9 in dom b8 holds
b8 . b9 = (b6 . ((b7 /. b9) `1 )) * (b6 . ((b7 /. b9) `2 )) ) )
proof end;

theorem Th41: :: IDEAL_1:41
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being LinearCombination of b2
for b4 being Nat holds b3 | (Seg b4) is LinearCombination of b2
proof end;

theorem Th42: :: IDEAL_1:42
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being LeftLinearCombination of b2
for b4 being Nat holds b3 | (Seg b4) is LeftLinearCombination of b2
proof end;

theorem Th43: :: IDEAL_1:43
for b1 being non empty multLoopStr
for b2 being non empty Subset of b1
for b3 being RightLinearCombination of b2
for b4 being Nat holds b3 | (Seg b4) is RightLinearCombination of b2
proof end;

definition
let c1 be non empty doubleLoopStr ;
let c2 be Subset of c1;
assume E36: not c2 is empty ;
func c2 -Ideal -> Ideal of a1 means :Def15: :: IDEAL_1:def 15
( a2 c= a3 & ( for b1 being Ideal of a1 st a2 c= b1 holds
a3 c= b1 ) );
existence
ex b1 being Ideal of c1 st
( c2 c= b1 & ( for b2 being Ideal of c1 st c2 c= b2 holds
b1 c= b2 ) )
proof end;
uniqueness
for b1, b2 being Ideal of c1 st c2 c= b1 & ( for b3 being Ideal of c1 st c2 c= b3 holds
b1 c= b3 ) & c2 c= b2 & ( for b3 being Ideal of c1 st c2 c= b3 holds
b2 c= b3 ) holds
b1 = b2
proof end;
func c2 -LeftIdeal -> LeftIdeal of a1 means :Def16: :: IDEAL_1:def 16
( a2 c= a3 & ( for b1 being LeftIdeal of a1 st a2 c= b1 holds
a3 c= b1 ) );
existence
ex b1 being LeftIdeal of c1 st
( c2 c= b1 & ( for b2 being LeftIdeal of c1 st c2 c= b2 holds
b1 c= b2 ) )
proof end;
uniqueness
for b1, b2 being LeftIdeal of c1 st c2 c= b1 & ( for b3 being LeftIdeal of c1 st c2 c= b3 holds
b1 c= b3 ) & c2 c= b2 & ( for b3 being LeftIdeal of c1 st c2 c= b3 holds
b2 c= b3 ) holds
b1 = b2
proof end;
func c2 -RightIdeal -> RightIdeal of a1 means :Def17: :: IDEAL_1:def 17
( a2 c= a3 & ( for b1 being RightIdeal of a1 st a2 c= b1 holds
a3 c= b1 ) );
existence
ex b1 being RightIdeal of c1 st
( c2 c= b1 & ( for b2 being RightIdeal of c1 st c2 c= b2 holds
b1 c= b2 ) )
proof end;
uniqueness
for b1, b2 being RightIdeal of c1 st c2 c= b1 & ( for b3 being RightIdeal of c1 st c2 c= b3 holds
b1 c= b3 ) & c2 c= b2 & ( for b3 being RightIdeal of c1 st c2 c= b3 holds
b2 c= b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def15 defines -Ideal IDEAL_1:def 15 :
for b1 being non empty doubleLoopStr
for b2 being Subset of b1 st not b2 is empty holds
for b3 being Ideal of b1 holds
( b3 = b2 -Ideal iff ( b2 c= b3 & ( for b4 being Ideal of b1 st b2 c= b4 holds
b3 c= b4 ) ) );

:: deftheorem Def16 defines -LeftIdeal IDEAL_1:def 16 :
for b1 being non empty doubleLoopStr
for b2 being Subset of b1 st not b2 is empty holds
for b3 being LeftIdeal of b1 holds
( b3 = b2 -LeftIdeal iff ( b2 c= b3 & ( for b4 being LeftIdeal of b1 st b2 c= b4 holds
b3 c= b4 ) ) );

:: deftheorem Def17 defines -RightIdeal IDEAL_1:def 17 :
for b1 being non empty doubleLoopStr
for b2 being Subset of b1 st not b2 is empty holds
for b3 being RightIdeal of b1 holds
( b3 = b2 -RightIdeal iff ( b2 c= b3 & ( for b4 being RightIdeal of b1 st b2 c= b4 holds
b3 c= b4 ) ) );

theorem Th44: :: IDEAL_1:44
for b1 being non empty doubleLoopStr
for b2 being Ideal of b1 holds b2 -Ideal = b2
proof end;

theorem Th45: :: IDEAL_1:45
for b1 being non empty doubleLoopStr
for b2 being LeftIdeal of b1 holds b2 -LeftIdeal = b2
proof end;

theorem Th46: :: IDEAL_1:46
for b1 being non empty doubleLoopStr
for b2 being RightIdeal of b1 holds b2 -RightIdeal = b2
proof end;

definition
let c1 be non empty doubleLoopStr ;
let c2 be Ideal of c1;
mode Basis of c2 -> non empty Subset of a1 means :: IDEAL_1:def 18
a3 -Ideal = a2;
existence
ex b1 being non empty Subset of c1 st b1 -Ideal = c2
proof end;
end;

:: deftheorem Def18 defines Basis IDEAL_1:def 18 :
for b1 being non empty doubleLoopStr
for b2 being Ideal of b1
for b3 being non empty Subset of b1 holds
( b3 is Basis of b2 iff b3 -Ideal = b2 );

theorem Th47: :: IDEAL_1:47
for b1 being non empty add-associative right_zeroed right_complementable distributive doubleLoopStr holds {(0. b1)} -Ideal = {(0. b1)}
proof end;

theorem Th48: :: IDEAL_1:48
for b1 being non empty right_zeroed distributive add-cancelable left_zeroed doubleLoopStr holds {(0. b1)} -Ideal = {(0. b1)}
proof end;

theorem Th49: :: IDEAL_1:49
for b1 being non empty right_zeroed right-distributive left_zeroed add-right-cancelable doubleLoopStr holds {(0. b1)} -LeftIdeal = {(0. b1)}
proof end;

theorem Th50: :: IDEAL_1:50
for b1 being non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr holds {(0. b1)} -RightIdeal = {(0. b1)}
proof end;

theorem Th51: :: IDEAL_1:51
for b1 being non empty unital doubleLoopStr holds {(1. b1)} -Ideal = the carrier of b1
proof end;

theorem Th52: :: IDEAL_1:52
for b1 being non empty right_unital doubleLoopStr holds {(1. b1)} -LeftIdeal = the carrier of b1
proof end;

theorem Th53: :: IDEAL_1:53
for b1 being non empty left_unital doubleLoopStr holds {(1. b1)} -RightIdeal = the carrier of b1
proof end;

theorem Th54: :: IDEAL_1:54
for b1 being non empty doubleLoopStr holds ([#] b1) -Ideal = the carrier of b1
proof end;

theorem Th55: :: IDEAL_1:55
for b1 being non empty doubleLoopStr holds ([#] b1) -LeftIdeal = the carrier of b1
proof end;

theorem Th56: :: IDEAL_1:56
for b1 being non empty doubleLoopStr holds ([#] b1) -RightIdeal = the carrier of b1
proof end;

theorem Th57: :: IDEAL_1:57
for b1 being non empty doubleLoopStr
for b2, b3 being non empty Subset of b1 st b2 c= b3 holds
b2 -Ideal c= b3 -Ideal
proof end;

theorem Th58: :: IDEAL_1:58
for b1 being non empty doubleLoopStr
for b2, b3 being non empty Subset of b1 st b2 c= b3 holds
b2 -LeftIdeal c= b3 -LeftIdeal
proof end;

theorem Th59: :: IDEAL_1:59
for b1 being non empty doubleLoopStr
for b2, b3 being non empty Subset of b1 st b2 c= b3 holds
b2 -RightIdeal c= b3 -RightIdeal
proof end;

theorem Th60: :: IDEAL_1:60
for b1 being non empty unital associative add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being non empty Subset of b1
for b3 being set holds
( b3 in b2 -Ideal iff ex b4 being LinearCombination of b2 st b3 = Sum b4 )
proof end;

theorem Th61: :: IDEAL_1:61
for b1 being non empty unital associative add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being non empty Subset of b1
for b3 being set holds
( b3 in b2 -LeftIdeal iff ex b4 being LeftLinearCombination of b2 st b3 = Sum b4 )
proof end;

theorem Th62: :: IDEAL_1:62
for b1 being non empty unital associative add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being non empty Subset of b1
for b3 being set holds
( b3 in b2 -RightIdeal iff ex b4 being RightLinearCombination of b2 st b3 = Sum b4 )
proof end;

theorem Th63: :: IDEAL_1:63
for b1 being non empty unital associative commutative add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being non empty Subset of b1 holds
( b2 -Ideal = b2 -LeftIdeal & b2 -Ideal = b2 -RightIdeal )
proof end;

theorem Th64: :: IDEAL_1:64
for b1 being non empty unital associative commutative add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being Element of b1 holds {b2} -Ideal = { (b2 * b3) where B is Element of b1 : verum }
proof end;

theorem Th65: :: IDEAL_1:65
for b1 being non empty unital associative commutative Abelian add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2, b3 being Element of b1 holds {b2,b3} -Ideal = { ((b2 * b4) + (b3 * b5)) where B is Element of b1, B is Element of b1 : verum }
proof end;

theorem Th66: :: IDEAL_1:66
for b1 being non empty doubleLoopStr
for b2 being Element of b1 holds b2 in {b2} -Ideal
proof end;

theorem Th67: :: IDEAL_1:67
for b1 being non empty unital associative commutative Abelian add-associative right_zeroed right_complementable distributive left_zeroed doubleLoopStr
for b2 being non empty Subset of b1
for b3 being Element of b1 st b3 in b2 -Ideal holds
{b3} -Ideal c= b2 -Ideal
proof end;

Lemma51: for b1, b2 being set holds {b1} c= {b1,b2}
proof end;

theorem Th68: :: IDEAL_1:68
for b1 being non empty doubleLoopStr
for b2, b3 being Element of b1 holds
( b2 in {b2,b3} -Ideal & b3 in {b2,b3} -Ideal )
proof end;

theorem Th69: :: IDEAL_1:69
for b1 being non empty doubleLoopStr
for b2, b3 being Element of b1 holds
( {b2} -Ideal c= {b2,b3} -Ideal & {b3} -Ideal c= {b2,b3} -Ideal )
proof end;

definition
let c1 be non empty HGrStr ;
let c2 be Subset of c1;
let c3 be Element of c1;
func c3 * c2 -> Subset of a1 equals :: IDEAL_1:def 19
{ (a3 * b1) where B is Element of a1 : b1 in a2 } ;
coherence
{ (c3 * b1) where B is Element of c1 : b1 in c2 } is Subset of c1
proof end;
end;

:: deftheorem Def19 defines * IDEAL_1:def 19 :
for b1 being non empty HGrStr
for b2 being Subset of b1
for b3 being Element of b1 holds b3 * b2 = { (b3 * b4) where B is Element of b1 : b4 in b2 } ;

registration
let c1 be non empty multLoopStr ;
let c2 be non empty Subset of c1;
let c3 be Element of c1;
cluster a3 * a2 -> non empty ;
coherence
not c3 * c2 is empty
proof end;
end;

registration
let c1 be non empty distributive doubleLoopStr ;
let c2 be add-closed Subset of c1;
let c3 be Element of c1;
cluster a3 * a2 -> add-closed ;
coherence
c3 * c2 is add-closed
proof end;
end;

registration
let c1 be non empty associative doubleLoopStr ;
let c2 be right-ideal Subset of c1;
let c3 be Element of c1;
cluster a3 * a2 -> right-ideal ;
coherence
c3 * c2 is right-ideal
proof end;
end;

theorem Th70: :: IDEAL_1:70
for b1 being non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr
for b2 being non empty Subset of b1 holds (0. b1) * b2 = {(0. b1)}
proof end;

theorem Th71: :: IDEAL_1:71
for b1 being non empty left_unital doubleLoopStr
for b2 being Subset of b1 holds (1. b1) * b2 = b2
proof end;

definition
let c1 be non empty LoopStr ;
let c2, c3 be Subset of c1;
func c2 + c3 -> Subset of a1 equals :: IDEAL_1:def 20
{ (b1 + b2) where B is Element of a1, B is Element of a1 : ( b1 in a2 & b2 in a3 ) } ;
coherence
{ (b1 + b2) where B is Element of c1, B is Element of c1 : ( b1 in c2 & b2 in c3 ) } is Subset of c1
proof end;
end;

:: deftheorem Def20 defines + IDEAL_1:def 20 :
for b1 being non empty LoopStr
for b2, b3 being Subset of b1 holds b2 + b3 = { (b4 + b5) where B is Element of b1, B is Element of b1 : ( b4 in b2 & b5 in b3 ) } ;

registration
let c1 be non empty LoopStr ;
let c2, c3 be non empty Subset of c1;
cluster a2 + a3 -> non empty ;
coherence
not c2 + c3 is empty
proof end;
end;

definition
let c1 be non empty Abelian LoopStr ;
let c2, c3 be Subset of c1;
redefine func + as c2 + c3 -> Subset of a1;
commutativity
for b1, b2 being Subset of c1 holds b1 + b2 = b2 + b1
proof end;
end;

registration
let c1 be non empty Abelian add-associative LoopStr ;
let c2, c3 be add-closed Subset of c1;
cluster a2 + a3 -> add-closed ;
coherence
c2 + c3 is add-closed
proof end;
end;

registration
let c1 be non empty left-distributive doubleLoopStr ;
let c2, c3 be right-ideal Subset of c1;
cluster a2 + a3 -> right-ideal ;
coherence
c2 + c3 is right-ideal
proof end;
end;

registration
let c1 be non empty right-distributive doubleLoopStr ;
let c2, c3 be left-ideal Subset of c1;
cluster a2 + a3 -> left-ideal ;
coherence
c2 + c3 is left-ideal
proof end;
end;

theorem Th72: :: IDEAL_1:72
for b1 being non empty add-associative LoopStr
for b2, b3, b4 being Subset of b1 holds b2 + (b3 + b4) = (b2 + b3) + b4
proof end;

theorem Th73: :: IDEAL_1:73
for b1 being non empty right_zeroed right-distributive left_zeroed add-right-cancelable doubleLoopStr
for b2, b3 being non empty right-ideal Subset of b1 holds b2 c= b2 + b3
proof end;

theorem Th74: :: IDEAL_1:74
for b1 being non empty right-distributive left_zeroed add-right-cancelable doubleLoopStr
for b2, b3 being non empty right-ideal Subset of b1 holds b3 c= b2 + b3
proof end;

theorem Th75: :: IDEAL_1:75
for b1 being non empty LoopStr
for b2, b3 being Subset of b1
for b4 being add-closed Subset of b1 st b2 c= b4 & b3 c= b4 holds
b2 + b3 c= b4
proof end;

theorem Th76: :: IDEAL_1:76
for b1 being non empty unital associative commutative Abelian add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2, b3 being Element of b1 holds {b2,b3} -Ideal = ({b2} -Ideal ) + ({b3} -Ideal )
proof end;

definition
let c1 be non empty 1-sorted ;
let c2, c3 be Subset of c1;
redefine func /\ as c2 /\ c3 -> Subset of a1 equals :: IDEAL_1:def 21
{ b1 where B is Element of a1 : ( b1 in a2 & b1 in a3 ) } ;
coherence
c2 /\ c3 is Subset of c1
proof end;
compatibility
for b1 being Subset of c1 holds
( b1 = c2 /\ c3 iff b1 = { b2 where B is Element of c1 : ( b2 in c2 & b2 in c3 ) } )
proof end;
end;

:: deftheorem Def21 defines /\ IDEAL_1:def 21 :
for b1 being non empty 1-sorted
for b2, b3 being Subset of b1 holds b2 /\ b3 = { b4 where B is Element of b1 : ( b4 in b2 & b4 in b3 ) } ;

registration
let c1 be non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr ;
let c2, c3 be non empty left-ideal Subset of c1;
cluster a2 /\ a3 -> non empty ;
coherence
not c2 /\ c3 is empty
proof end;
end;

registration
let c1 be non empty LoopStr ;
let c2, c3 be add-closed Subset of c1;
cluster a2 /\ a3 -> add-closed ;
coherence
c2 /\ c3 is add-closed Subset of c1
proof end;
end;

registration
let c1 be non empty multLoopStr ;
let c2, c3 be left-ideal Subset of c1;
cluster a2 /\ a3 -> left-ideal ;
coherence
c2 /\ c3 is left-ideal Subset of c1
proof end;
end;

registration
let c1 be non empty multLoopStr ;
let c2, c3 be right-ideal Subset of c1;
cluster a2 /\ a3 -> right-ideal ;
coherence
c2 /\ c3 is right-ideal Subset of c1
proof end;
end;

theorem Th77: :: IDEAL_1:77
for b1 being non empty 1-sorted
for b2, b3 being Subset of b1 holds
( b2 /\ b3 c= b2 & b2 /\ b3 c= b3 ) by XBOOLE_1:17;

theorem Th78: :: IDEAL_1:78
for b1 being non empty 1-sorted
for b2, b3, b4 being Subset of b1 holds b2 /\ (b3 /\ b4) = (b2 /\ b3) /\ b4 by XBOOLE_1:16;

theorem Th79: :: IDEAL_1:79
for b1 being non empty 1-sorted
for b2, b3, b4 being Subset of b1 st b4 c= b2 & b4 c= b3 holds
b4 c= b2 /\ b3 by XBOOLE_1:19;

theorem Th80: :: IDEAL_1:80
for b1 being non empty Abelian add-associative right_zeroed right_complementable left-distributive left_unital left_zeroed doubleLoopStr
for b2 being non empty add-closed left-ideal Subset of b1
for b3 being Subset of b1
for b4 being non empty Subset of b1 st b3 c= b2 holds
b2 /\ (b3 + b4) = b3 + (b2 /\ b4)
proof end;

definition
let c1 be non empty doubleLoopStr ;
let c2, c3 be Subset of c1;
func c2 *' c3 -> Subset of a1 equals :: IDEAL_1:def 22
{ (Sum b1) where B is FinSequence of the carrier of a1 : for b1 being Nat st 1 <= b2 & b2 <= len b1 holds
ex b2, b3 being Element of a1 st
( b1 . b2 = b3 * b4 & b3 in a2 & b4 in a3 )
}
;
coherence
{ (Sum b1) where B is FinSequence of the carrier of c1 : for b1 being Nat st 1 <= b2 & b2 <= len b1 holds
ex b2, b3 being Element of c1 st
( b1 . b2 = b3 * b4 & b3 in c2 & b4 in c3 )
}
is Subset of c1
proof end;
end;

:: deftheorem Def22 defines *' IDEAL_1:def 22 :
for b1 being non empty doubleLoopStr
for b2, b3 being Subset of b1 holds b2 *' b3 = { (Sum b4) where B is FinSequence of the carrier of b1 : for b1 being Nat st 1 <= b5 & b5 <= len b4 holds
ex b2, b3 being Element of b1 st
( b4 . b5 = b6 * b7 & b6 in b2 & b7 in b3 )
}
;

registration
let c1 be non empty doubleLoopStr ;
let c2, c3 be Subset of c1;
cluster a2 *' a3 -> non empty ;
coherence
not c2 *' c3 is empty
proof end;
end;

definition
let c1 be non empty commutative doubleLoopStr ;
let c2, c3 be Subset of c1;
redefine func *' as c2 *' c3 -> Subset of a1;
commutativity
for b1, b2 being Subset of c1 holds b1 *' b2 = b2 *' b1
proof end;
end;

registration
let c1 be non empty add-associative right_zeroed doubleLoopStr ;
let c2, c3 be Subset of c1;
cluster a2 *' a3 -> non empty add-closed ;
coherence
c2 *' c3 is add-closed
proof end;
end;

registration
let c1 be non empty associative right_zeroed left-distributive add-left-cancelable doubleLoopStr ;
let c2, c3 be right-ideal Subset of c1;
cluster a2 *' a3 -> non empty right-ideal ;
coherence
c2 *' c3 is right-ideal
proof end;
end;

registration
let c1 be non empty associative right-distributive left_zeroed add-right-cancelable doubleLoopStr ;
let c2, c3 be left-ideal Subset of c1;
cluster a2 *' a3 -> non empty left-ideal ;
coherence
c2 *' c3 is left-ideal
proof end;
end;

theorem Th81: :: IDEAL_1:81
for b1 being non empty right_zeroed left-distributive left_zeroed add-left-cancelable doubleLoopStr
for b2 being non empty Subset of b1 holds {(0. b1)} *' b2 = {(0. b1)}
proof end;

theorem Th82: :: IDEAL_1:82
for b1 being non empty right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being non empty add-closed right-ideal Subset of b1
for b3 being non empty add-closed left-ideal Subset of b1 holds b2 *' b3 c= b2 /\ b3
proof end;

theorem Th83: :: IDEAL_1:83
for b1 being non empty associative Abelian add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2, b3, b4 being non empty right-ideal Subset of b1 holds b2 *' (b3 + b4) = (b2 *' b3) + (b2 *' b4)
proof end;

theorem Th84: :: IDEAL_1:84
for b1 being non empty associative commutative Abelian add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2, b3 being non empty right-ideal Subset of b1 holds (b2 + b3) *' (b2 /\ b3) c= b2 *' b3
proof end;

theorem Th85: :: IDEAL_1:85
for b1 being non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr
for b2, b3 being non empty add-closed left-ideal Subset of b1 holds (b2 + b3) *' (b2 /\ b3) c= b2 /\ b3
proof end;

definition
let c1 be non empty LoopStr ;
let c2, c3 be Subset of c1;
pred c2,c3 are_co-prime means :Def23: :: IDEAL_1:def 23
a2 + a3 = the carrier of a1;
end;

:: deftheorem Def23 defines are_co-prime IDEAL_1:def 23 :
for b1 being non empty LoopStr
for b2, b3 being Subset of b1 holds
( b2,b3 are_co-prime iff b2 + b3 = the carrier of b1 );

theorem Th86: :: IDEAL_1:86
for b1 being non empty left_unital left_zeroed doubleLoopStr
for b2, b3 being non empty Subset of b1 st b2,b3 are_co-prime holds
b2 /\ b3 c= (b2 + b3) *' (b2 /\ b3)
proof end;

theorem Th87: :: IDEAL_1:87
for b1 being non empty associative commutative Abelian add-associative right_zeroed distributive left_unital add-cancelable left_zeroed doubleLoopStr
for b2 being non empty add-closed left-ideal right-ideal Subset of b1
for b3 being non empty add-closed left-ideal Subset of b1 st b2,b3 are_co-prime holds
b2 *' b3 = b2 /\ b3
proof end;

definition
let c1 be non empty HGrStr ;
let c2, c3 be Subset of c1;
func c2 % c3 -> Subset of a1 equals :: IDEAL_1:def 24
{ b1 where B is Element of a1 : b1 * a3 c= a2 } ;
coherence
{ b1 where B is Element of c1 : b1 * c3 c= c2 } is Subset of c1
proof end;
end;

:: deftheorem Def24 defines % IDEAL_1:def 24 :
for b1 being non empty HGrStr
for b2, b3 being Subset of b1 holds b2 % b3 = { b4 where B is Element of b1 : b4 * b3 c= b2 } ;

registration
let c1 be non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr ;
let c2, c3 be non empty left-ideal Subset of c1;
cluster a2 % a3 -> non empty ;
coherence
not c2 % c3 is empty
proof end;
end;

registration
let c1 be non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr ;
let c2, c3 be non empty add-closed left-ideal Subset of c1;
cluster a2 % a3 -> non empty add-closed ;
coherence
c2 % c3 is add-closed
proof end;
end;

registration
let c1 be non empty associative commutative right_zeroed left-distributive add-left-cancelable doubleLoopStr ;
let c2, c3 be non empty left-ideal Subset of c1;
cluster a2 % a3 -> non empty left-ideal right-ideal ;
coherence
c2 % c3 is left-ideal
proof end;
cluster a2 % a3 -> non empty left-ideal right-ideal ;
coherence
c2 % c3 is right-ideal
;
end;

theorem Th88: :: IDEAL_1:88
for b1 being non empty multLoopStr
for b2 being non empty right-ideal Subset of b1
for b3 being Subset of b1 holds b2 c= b2 % b3
proof end;

theorem Th89: :: IDEAL_1:89
for b1 being non empty right_zeroed left-distributive add-left-cancelable doubleLoopStr
for b2 being non empty add-closed left-ideal Subset of b1
for b3 being Subset of b1 holds (b2 % b3) *' b3 c= b2
proof end;

theorem Th90: :: IDEAL_1:90
for b1 being non empty right-distributive left_zeroed add-right-cancelable doubleLoopStr
for b2 being non empty add-closed right-ideal Subset of b1
for b3 being Subset of b1 holds (b2 % b3) *' b3 c= b2
proof end;

theorem Th91: :: IDEAL_1:91
for b1 being non empty associative commutative right-distributive left_zeroed add-right-cancelable doubleLoopStr
for b2 being non empty add-closed right-ideal Subset of b1
for b3, b4 being Subset of b1 holds (b2 % b3) % b4 = b2 % (b3 *' b4)
proof end;

theorem Th92: :: IDEAL_1:92
for b1 being non empty multLoopStr
for b2, b3, b4 being Subset of b1 holds (b3 /\ b4) % b2 = (b3 % b2) /\ (b4 % b2)
proof end;

theorem Th93: :: IDEAL_1:93
for b1 being non empty right_zeroed right-distributive left_zeroed add-right-cancelable doubleLoopStr
for b2 being add-closed Subset of b1
for b3, b4 being non empty right-ideal Subset of b1 holds b2 % (b3 + b4) = (b2 % b3) /\ (b2 % b4)
proof end;

definition
let c1 be non empty unital doubleLoopStr ;
let c2 be Subset of c1;
func sqrt c2 -> Subset of a1 equals :: IDEAL_1:def 25
{ b1 where B is Element of a1 : ex b1 being Nat st b1 |^ b2 in a2 } ;
coherence
{ b1 where B is Element of c1 : ex b1 being Nat st b1 |^ b2 in c2 } is Subset of c1
proof end;
end;

:: deftheorem Def25 defines sqrt IDEAL_1:def 25 :
for b1 being non empty unital doubleLoopStr
for b2 being Subset of b1 holds sqrt b2 = { b3 where B is Element of b1 : ex b1 being Nat st b3 |^ b4 in b2 } ;

registration
let c1 be non empty unital doubleLoopStr ;
let c2 be non empty Subset of c1;
cluster sqrt a2 -> non empty ;
coherence
not sqrt c2 is empty
proof end;
end;

registration
let c1 be non empty unital associative commutative Abelian add-associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr ;
let c2 be non empty add-closed right-ideal Subset of c1;
cluster sqrt a2 -> non empty add-closed ;
coherence
sqrt c2 is add-closed
proof end;
end;

registration
let c1 be non empty unital associative commutative doubleLoopStr ;
let c2 be non empty left-ideal Subset of c1;
cluster sqrt a2 -> non empty left-ideal right-ideal ;
coherence
sqrt c2 is left-ideal
proof end;
cluster sqrt a2 -> non empty left-ideal right-ideal ;
coherence
sqrt c2 is right-ideal
;
end;

theorem Th94: :: IDEAL_1:94
for b1 being non empty unital associative doubleLoopStr
for b2 being non empty Subset of b1
for b3 being Element of b1 holds
( b3 in sqrt b2 iff ex b4 being Nat st b3 |^ b4 in sqrt b2 )
proof end;

theorem Th95: :: IDEAL_1:95
for b1 being non empty unital associative right_zeroed distributive add-cancelable left_zeroed doubleLoopStr
for b2 being non empty add-closed right-ideal Subset of b1
for b3 being non empty add-closed left-ideal Subset of b1 holds sqrt (b2 *' b3) = sqrt (b2 /\ b3)
proof end;

definition
let c1 be non empty doubleLoopStr ;
let c2 be Ideal of c1;
attr a2 is finitely_generated means :Def26: :: IDEAL_1:def 26
ex b1 being non empty finite Subset of a1 st a2 = b1 -Ideal ;
end;

:: deftheorem Def26 defines finitely_generated IDEAL_1:def 26 :
for b1 being non empty doubleLoopStr
for b2 being Ideal of b1 holds
( b2 is finitely_generated iff ex b3 being non empty finite Subset of b1 st b2 = b3 -Ideal );

registration
let c1 be non empty doubleLoopStr ;
cluster finitely_generated Element of bool the carrier of a1;
existence
ex b1 being Ideal of c1 st b1 is finitely_generated
proof end;
end;

registration
let c1 be non empty doubleLoopStr ;
let c2 be non empty finite Subset of c1;
cluster a2 -Ideal -> finitely_generated ;
coherence
c2 -Ideal is finitely_generated
by Def26;
end;

definition
let c1 be non empty doubleLoopStr ;
attr a1 is Noetherian means :Def27: :: IDEAL_1:def 27
for b1 being Ideal of a1 holds b1 is finitely_generated;
end;

:: deftheorem Def27 defines Noetherian IDEAL_1:def 27 :
for b1 being non empty doubleLoopStr holds
( b1 is Noetherian iff for b2 being Ideal of b1 holds b2 is finitely_generated );

registration
cluster non empty unital associative commutative Abelian add-associative right_zeroed right_complementable distributive non degenerated Euclidian doubleLoopStr ;
existence
ex b1 being non empty doubleLoopStr st
( b1 is Euclidian & b1 is Abelian & b1 is add-associative & b1 is right_zeroed & b1 is right_complementable & b1 is unital & b1 is distributive & b1 is commutative & b1 is associative & not b1 is degenerated )
proof end;
end;

definition
let c1 be non empty doubleLoopStr ;
let c2 be Ideal of c1;
attr a2 is principal means :Def28: :: IDEAL_1:def 28
ex b1 being Element of a1 st a2 = {b1} -Ideal ;
end;

:: deftheorem Def28 defines principal IDEAL_1:def 28 :
for b1 being non empty doubleLoopStr
for b2 being Ideal of b1 holds
( b2 is principal iff ex b3 being Element of b1 st b2 = {b3} -Ideal );

definition
let c1 be non empty doubleLoopStr ;
attr a1 is PID means :Def29: :: IDEAL_1:def 29
for b1 being Ideal of a1 holds b1 is principal;
end;

:: deftheorem Def29 defines PID IDEAL_1:def 29 :
for b1 being non empty doubleLoopStr holds
( b1 is PID iff for b2 being Ideal of b1 holds b2 is principal );

theorem Th96: :: IDEAL_1:96
for b1 being non empty doubleLoopStr
for b2 being non empty Subset of b1 st b2 <> {(0. b1)} holds
ex b3 being Element of b1 st
( b3 <> 0. b1 & b3 in b2 )
proof end;

theorem Th97: :: IDEAL_1:97
for b1 being non empty add-associative right_zeroed right_complementable distributive left_unital Euclidian left_zeroed doubleLoopStr holds b1 is PID
proof end;

theorem Th98: :: IDEAL_1:98
for b1 being non empty doubleLoopStr st b1 is PID holds
b1 is Noetherian
proof end;

registration
cluster INT.Ring -> Noetherian ;
coherence
INT.Ring is Noetherian
proof end;
end;

registration
cluster non empty unital associative commutative Abelian add-associative right_zeroed right_complementable distributive non degenerated Noetherian doubleLoopStr ;
existence
ex b1 being non empty doubleLoopStr st
( b1 is Noetherian & b1 is Abelian & b1 is add-associative & b1 is right_zeroed & b1 is right_complementable & b1 is unital & b1 is distributive & b1 is commutative & b1 is associative & not b1 is degenerated )
proof end;
end;

theorem Th99: :: IDEAL_1:99
for b1 being non empty unital associative add-associative right_zeroed distributive add-cancelable left_zeroed Noetherian doubleLoopStr
for b2 being non empty Subset of b1 ex b3 being non empty finite Subset of b1 st
( b3 c= b2 & b3 -Ideal = b2 -Ideal )
proof end;

theorem Th100: :: IDEAL_1:100
for b1 being non empty doubleLoopStr st ( for b2 being non empty Subset of b1 ex b3 being non empty finite Subset of b1 st
( b3 c= b2 & b3 -Ideal = b2 -Ideal ) ) holds
for b2 being sequence of b1 ex b3 being Nat st b2 . (b3 + 1) in (rng (b2 | (Segm (b3 + 1)))) -Ideal
proof end;

registration
let c1, c2 be non empty set ;
let c3 be Function of c1,c2;
let c4 be non empty Subset of c1;
cluster a3 | a4 -> non empty ;
coherence
not c3 | c4 is empty
proof end;
end;

theorem Th101: :: IDEAL_1:101
for b1 being non empty doubleLoopStr st ( for b2 being sequence of b1 ex b3 being Nat st b2 . (b3 + 1) in (rng (b2 | (Segm (b3 + 1)))) -Ideal ) holds
for b2 being Function of NAT , bool the carrier of b1 holds
( ex b3 being Nat st b2 . b3 is not Ideal of b1 or ex b3, b4 being Nat st
( b3 < b4 & not b2 . b3 c< b2 . b4 ) )
proof end;

theorem Th102: :: IDEAL_1:102
for b1 being non empty doubleLoopStr st ( for b2 being Function of NAT , bool the carrier of b1 holds
( ex b3 being Nat st b2 . b3 is not Ideal of b1 or ex b3, b4 being Nat st
( b3 < b4 & not b2 . b3 c< b2 . b4 ) ) ) holds
b1 is Noetherian
proof end;