:: TERMORD semantic presentation

registration
cluster non trivial LoopStr ;
existence
not for b1 being LoopStr holds b1 is trivial
proof end;
end;

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

definition
let c1 be set ;
let c2 be bag of c1;
attr a2 is non-zero means :: TERMORD:def 1
a2 <> EmptyBag a1;
end;

:: deftheorem Def1 defines non-zero TERMORD:def 1 :
for b1 being set
for b2 being bag of b1 holds
( b2 is non-zero iff b2 <> EmptyBag b1 );

theorem Th1: :: TERMORD:1
for b1 being set
for b2, b3 being bag of b1 holds
( b2 divides b3 iff ex b4 being bag of b1 st b3 = b2 + b4 )
proof end;

theorem Th2: :: TERMORD:2
for b1 being Ordinal
for b2 being non empty add-associative right_zeroed right_complementable unital distributive doubleLoopStr
for b3 being Series of b1,b2 holds (0_ b1,b2) *' b3 = 0_ b1,b2
proof end;

registration
let c1 be Ordinal;
let c2 be non empty add-associative right_zeroed right_complementable unital distributive doubleLoopStr ;
let c3, c4 be Monomial of c1,c2;
cluster a3 *' a4 -> monomial-like ;
coherence
c3 *' c4 is monomial-like
proof end;
end;

registration
let c1 be Ordinal;
let c2 be non empty add-associative right_zeroed right_complementable distributive doubleLoopStr ;
let c3, c4 be ConstPoly of c1,c2;
cluster a3 *' a4 -> Constant ;
coherence
c3 *' c4 is Constant
proof end;
end;

theorem Th3: :: TERMORD:3
for b1 being Ordinal
for b2 being add-associative right_zeroed right_complementable unital distributive non trivial domRing-like doubleLoopStr
for b3, b4 being bag of b1
for b5, b6 being non-zero Element of b2 holds Monom (b5 * b6),(b3 + b4) = (Monom b5,b3) *' (Monom b6,b4)
proof end;

theorem Th4: :: TERMORD:4
for b1 being Ordinal
for b2 being add-associative right_zeroed right_complementable unital distributive non trivial domRing-like doubleLoopStr
for b3, b4 being Element of b2 holds (b3 * b4) | b1,b2 = (b3 | b1,b2) *' (b4 | b1,b2)
proof end;

Lemma4: for b1 being Ordinal
for b2 being TermOrder of b1
for b3 being set st b3 in field b2 holds
b3 is bag of b1
proof end;

registration
let c1 be Ordinal;
cluster connected admissible Relation of Bags a1, Bags a1;
existence
ex b1 being TermOrder of c1 st
( b1 is admissible & b1 is connected )
proof end;
end;

registration
let c1 be Nat;
cluster admissible -> admissible well_founded Relation of Bags a1, Bags a1;
coherence
for b1 being admissible TermOrder of c1 holds b1 is well_founded
proof end;
end;

definition
let c1 be Ordinal;
let c2 be TermOrder of c1;
let c3, c4 be bag of c1;
pred c3 <= c4,c2 means :Def2: :: TERMORD:def 2
[a3,a4] in a2;
end;

:: deftheorem Def2 defines <= TERMORD:def 2 :
for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4 being bag of b1 holds
( b3 <= b4,b2 iff [b3,b4] in b2 );

definition
let c1 be Ordinal;
let c2 be TermOrder of c1;
let c3, c4 be bag of c1;
pred c3 < c4,c2 means :Def3: :: TERMORD:def 3
( a3 <= a4,a2 & a3 <> a4 );
end;

:: deftheorem Def3 defines < TERMORD:def 3 :
for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4 being bag of b1 holds
( b3 < b4,b2 iff ( b3 <= b4,b2 & b3 <> b4 ) );

definition
let c1 be Ordinal;
let c2 be TermOrder of c1;
let c3, c4 be bag of c1;
func min c3,c4,c2 -> bag of a1 equals :Def4: :: TERMORD:def 4
a3 if a3 <= a4,a2
otherwise a4;
correctness
coherence
( ( c3 <= c4,c2 implies c3 is bag of c1 ) & ( not c3 <= c4,c2 implies c4 is bag of c1 ) )
;
consistency
for b1 being bag of c1 holds verum
;
;
func max c3,c4,c2 -> bag of a1 equals :Def5: :: TERMORD:def 5
a3 if a4 <= a3,a2
otherwise a4;
correctness
coherence
( ( c4 <= c3,c2 implies c3 is bag of c1 ) & ( not c4 <= c3,c2 implies c4 is bag of c1 ) )
;
consistency
for b1 being bag of c1 holds verum
;
;
end;

:: deftheorem Def4 defines min TERMORD:def 4 :
for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4 being bag of b1 holds
( ( b3 <= b4,b2 implies min b3,b4,b2 = b3 ) & ( not b3 <= b4,b2 implies min b3,b4,b2 = b4 ) );

:: deftheorem Def5 defines max TERMORD:def 5 :
for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4 being bag of b1 holds
( ( b4 <= b3,b2 implies max b3,b4,b2 = b3 ) & ( not b4 <= b3,b2 implies max b3,b4,b2 = b4 ) );

Lemma9: for b1 being Ordinal
for b2 being TermOrder of b1
for b3 being bag of b1 holds b3 <= b3,b2
proof end;

Lemma10: for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4 being bag of b1 st b3 <= b4,b2 & b4 <= b3,b2 holds
b3 = b4
proof end;

Lemma11: for b1 being Ordinal
for b2 being TermOrder of b1
for b3 being bag of b1 holds b3 in field b2
proof end;

theorem Th5: :: TERMORD:5
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3, b4 being bag of b1 holds
( b3 <= b4,b2 iff not b4 < b3,b2 )
proof end;

Lemma13: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3, b4 being bag of b1 holds
( b3 <= b4,b2 or b4 <= b3,b2 )
proof end;

theorem Th6: :: TERMORD:6
for b1 being Ordinal
for b2 being TermOrder of b1
for b3 being bag of b1 holds b3 <= b3,b2 by Lemma9;

theorem Th7: :: TERMORD:7
for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4 being bag of b1 st b3 <= b4,b2 & b4 <= b3,b2 holds
b3 = b4 by Lemma10;

theorem Th8: :: TERMORD:8
for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4, b5 being bag of b1 st b3 <= b4,b2 & b4 <= b5,b2 holds
b3 <= b5,b2
proof end;

theorem Th9: :: TERMORD:9
for b1 being Ordinal
for b2 being admissible TermOrder of b1
for b3 being bag of b1 holds EmptyBag b1 <= b3,b2
proof end;

theorem Th10: :: TERMORD:10
for b1 being Ordinal
for b2 being admissible TermOrder of b1
for b3, b4 being bag of b1 st b3 divides b4 holds
b3 <= b4,b2
proof end;

theorem Th11: :: TERMORD:11
for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4 being bag of b1 holds
( min b3,b4,b2 = b3 or min b3,b4,b2 = b4 )
proof end;

theorem Th12: :: TERMORD:12
for b1 being Ordinal
for b2 being TermOrder of b1
for b3, b4 being bag of b1 holds
( max b3,b4,b2 = b3 or max b3,b4,b2 = b4 )
proof end;

Lemma18: for b1 being Ordinal
for b2 being TermOrder of b1
for b3 being bag of b1 holds
( min b3,b3,b2 = b3 & max b3,b3,b2 = b3 )
proof end;

theorem Th13: :: TERMORD:13
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3, b4 being bag of b1 holds
( min b3,b4,b2 <= b3,b2 & min b3,b4,b2 <= b4,b2 )
proof end;

theorem Th14: :: TERMORD:14
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3, b4 being bag of b1 holds
( b3 <= max b3,b4,b2,b2 & b4 <= max b3,b4,b2,b2 )
proof end;

theorem Th15: :: TERMORD:15
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3, b4 being bag of b1 holds
( min b3,b4,b2 = min b4,b3,b2 & max b3,b4,b2 = max b4,b3,b2 )
proof end;

theorem Th16: :: TERMORD:16
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3, b4 being bag of b1 holds
( min b3,b4,b2 = b3 iff max b3,b4,b2 = b4 )
proof end;

definition
let c1 be Ordinal;
let c2 be connected TermOrder of c1;
let c3 be non empty ZeroStr ;
let c4 be Polynomial of c1,c3;
func HT c4,c2 -> Element of Bags a1 means :Def6: :: TERMORD:def 6
( ( Support a4 = {} & a5 = EmptyBag a1 ) or ( a5 in Support a4 & ( for b1 being bag of a1 st b1 in Support a4 holds
b1 <= a5,a2 ) ) );
existence
ex b1 being Element of Bags c1 st
( ( Support c4 = {} & b1 = EmptyBag c1 ) or ( b1 in Support c4 & ( for b2 being bag of c1 st b2 in Support c4 holds
b2 <= b1,c2 ) ) )
proof end;
uniqueness
for b1, b2 being Element of Bags c1 st ( ( Support c4 = {} & b1 = EmptyBag c1 ) or ( b1 in Support c4 & ( for b3 being bag of c1 st b3 in Support c4 holds
b3 <= b1,c2 ) ) ) & ( ( Support c4 = {} & b2 = EmptyBag c1 ) or ( b2 in Support c4 & ( for b3 being bag of c1 st b3 in Support c4 holds
b3 <= b2,c2 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def6 defines HT TERMORD:def 6 :
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Polynomial of b1,b3
for b5 being Element of Bags b1 holds
( b5 = HT b4,b2 iff ( ( Support b4 = {} & b5 = EmptyBag b1 ) or ( b5 in Support b4 & ( for b6 being bag of b1 st b6 in Support b4 holds
b6 <= b5,b2 ) ) ) );

definition
let c1 be Ordinal;
let c2 be connected TermOrder of c1;
let c3 be non empty ZeroStr ;
let c4 be Polynomial of c1,c3;
func HC c4,c2 -> Element of a3 equals :: TERMORD:def 7
a4 . (HT a4,a2);
correctness
coherence
c4 . (HT c4,c2) is Element of c3
;
;
end;

:: deftheorem Def7 defines HC TERMORD:def 7 :
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Polynomial of b1,b3 holds HC b4,b2 = b4 . (HT b4,b2);

definition
let c1 be Ordinal;
let c2 be connected TermOrder of c1;
let c3 be non empty ZeroStr ;
let c4 be Polynomial of c1,c3;
func HM c4,c2 -> Monomial of a1,a3 equals :: TERMORD:def 8
Monom (HC a4,a2),(HT a4,a2);
correctness
coherence
Monom (HC c4,c2),(HT c4,c2) is Monomial of c1,c3
;
;
end;

:: deftheorem Def8 defines HM TERMORD:def 8 :
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Polynomial of b1,b3 holds HM b4,b2 = Monom (HC b4,b2),(HT b4,b2);

Lemma22: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Polynomial of b1,b3 holds
( HC b4,b2 = 0. b3 iff b4 = 0_ b1,b3 )
proof end;

Lemma23: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 holds (HM b4,b2) . (HT b4,b2) = b4 . (HT b4,b2)
proof end;

Lemma24: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 st HC b4,b2 <> 0. b3 holds
HT b4,b2 in Support (HM b4,b2)
proof end;

Lemma25: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 st HC b4,b2 = 0. b3 holds
Support (HM b4,b2) = {}
proof end;

registration
let c1 be Ordinal;
let c2 be connected TermOrder of c1;
let c3 be non trivial ZeroStr ;
let c4 be non-zero Polynomial of c1,c3;
cluster HM a4,a2 -> non-zero ;
coherence
HM c4,c2 is non-zero
proof end;
cluster HC a4,a2 -> non-zero ;
coherence
HC c4,c2 is non-zero
proof end;
end;

Lemma26: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Monomial of b1,b3 holds
( HT b4,b2 = term b4 & HC b4,b2 = coefficient b4 & HM b4,b2 = b4 )
proof end;

theorem Th17: :: TERMORD:17
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Polynomial of b1,b3 holds
( HC b4,b2 = 0. b3 iff b4 = 0_ b1,b3 ) by Lemma22;

theorem Th18: :: TERMORD:18
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 holds (HM b4,b2) . (HT b4,b2) = b4 . (HT b4,b2) by Lemma23;

theorem Th19: :: TERMORD:19
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3
for b5 being bag of b1 st b5 <> HT b4,b2 holds
(HM b4,b2) . b5 = 0. b3
proof end;

Lemma28: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 holds
( Support (HM b4,b2) = {} or Support (HM b4,b2) = {(HT b4,b2)} )
proof end;

theorem Th20: :: TERMORD:20
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 holds Support (HM b4,b2) c= Support b4
proof end;

theorem Th21: :: TERMORD:21
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 holds
( Support (HM b4,b2) = {} or Support (HM b4,b2) = {(HT b4,b2)} ) by Lemma28;

theorem Th22: :: TERMORD:22
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 holds
( term (HM b4,b2) = HT b4,b2 & coefficient (HM b4,b2) = HC b4,b2 )
proof end;

theorem Th23: :: TERMORD:23
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Monomial of b1,b3 holds
( HT b4,b2 = term b4 & HC b4,b2 = coefficient b4 & HM b4,b2 = b4 ) by Lemma26;

theorem Th24: :: TERMORD:24
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being ConstPoly of b1,b3 holds
( HT b4,b2 = EmptyBag b1 & HC b4,b2 = b4 . (EmptyBag b1) )
proof end;

theorem Th25: :: TERMORD:25
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Element of b3 holds
( HT (b4 | b1,b3),b2 = EmptyBag b1 & HC (b4 | b1,b3),b2 = b4 )
proof end;

theorem Th26: :: TERMORD:26
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 holds HT (HM b4,b2),b2 = HT b4,b2
proof end;

theorem Th27: :: TERMORD:27
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non trivial ZeroStr
for b4 being Polynomial of b1,b3 holds HC (HM b4,b2),b2 = HC b4,b2
proof end;

theorem Th28: :: TERMORD:28
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty ZeroStr
for b4 being Polynomial of b1,b3 holds HM (HM b4,b2),b2 = HM b4,b2 by Lemma26;

Lemma30: for b1 being set
for b2 being Subset of b1
for b3 being Order of b1 st b3 is_linear-order holds
b3 linearly_orders b2
proof end;

Lemma31: for b1 being Ordinal
for b2 being connected admissible TermOrder of b1
for b3 being add-associative right_zeroed right_complementable unital distributive left_zeroed non trivial doubleLoopStr
for b4, b5 being non-zero Polynomial of b1,b3 holds (b4 *' b5) . ((HT b4,b2) + (HT b5,b2)) = (b4 . (HT b4,b2)) * (b5 . (HT b5,b2))
proof end;

theorem Th29: :: TERMORD:29
for b1 being Ordinal
for b2 being connected admissible TermOrder of b1
for b3 being add-associative right_zeroed right_complementable unital distributive left_zeroed non trivial domRing-like doubleLoopStr
for b4, b5 being non-zero Polynomial of b1,b3 holds (HT b4,b2) + (HT b5,b2) in Support (b4 *' b5)
proof end;

theorem Th30: :: TERMORD:30
for b1 being Ordinal
for b2 being non empty add-associative right_zeroed right_complementable unital distributive doubleLoopStr
for b3, b4 being Polynomial of b1,b2 holds Support (b3 *' b4) c= { (b5 + b6) where B is Element of Bags b1, B is Element of Bags b1 : ( b5 in Support b3 & b6 in Support b4 ) }
proof end;

theorem Th31: :: TERMORD:31
for b1 being Ordinal
for b2 being connected admissible TermOrder of b1
for b3 being add-associative right_zeroed right_complementable unital distributive non trivial domRing-like doubleLoopStr
for b4, b5 being non-zero Polynomial of b1,b3 holds HT (b4 *' b5),b2 = (HT b4,b2) + (HT b5,b2)
proof end;

theorem Th32: :: TERMORD:32
for b1 being Ordinal
for b2 being connected admissible TermOrder of b1
for b3 being add-associative right_zeroed right_complementable unital distributive non trivial domRing-like doubleLoopStr
for b4, b5 being non-zero Polynomial of b1,b3 holds HC (b4 *' b5),b2 = (HC b4,b2) * (HC b5,b2)
proof end;

theorem Th33: :: TERMORD:33
for b1 being Ordinal
for b2 being connected admissible TermOrder of b1
for b3 being add-associative right_zeroed right_complementable unital distributive non trivial domRing-like doubleLoopStr
for b4, b5 being non-zero Polynomial of b1,b3 holds HM (b4 *' b5),b2 = (HM b4,b2) *' (HM b5,b2)
proof end;

theorem Th34: :: TERMORD:34
for b1 being Ordinal
for b2 being connected admissible TermOrder of b1
for b3 being non empty right_zeroed LoopStr
for b4, b5 being Polynomial of b1,b3 holds HT (b4 + b5),b2 <= max (HT b4,b2),(HT b5,b2),b2,b2
proof end;

definition
let c1 be Ordinal;
let c2 be connected TermOrder of c1;
let c3 be non empty add-associative right_zeroed right_complementable LoopStr ;
let c4 be Polynomial of c1,c3;
func Red c4,c2 -> Polynomial of a1,a3 equals :: TERMORD:def 9
a4 - (HM a4,a2);
coherence
c4 - (HM c4,c2) is Polynomial of c1,c3
;
end;

:: deftheorem Def9 defines Red TERMORD:def 9 :
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being non empty add-associative right_zeroed right_complementable LoopStr
for b4 being Polynomial of b1,b3 holds Red b4,b2 = b4 - (HM b4,b2);

Lemma36: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3 holds not HT b4,b2 in Support (Red b4,b2)
proof end;

Lemma37: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3
for b5 being bag of b1 st b5 in Support b4 & b5 <> HT b4,b2 holds
b5 in Support (Red b4,b2)
proof end;

Lemma38: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3 holds Support (Red b4,b2) = (Support b4) \ {(HT b4,b2)}
proof end;

theorem Th35: :: TERMORD:35
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3 holds Support (Red b4,b2) c= Support b4
proof end;

theorem Th36: :: TERMORD:36
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3 holds Support (Red b4,b2) = (Support b4) \ {(HT b4,b2)} by Lemma38;

Lemma39: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3 holds (Red b4,b2) . (HT b4,b2) = 0. b3
proof end;

Lemma40: for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3
for b5 being bag of b1 st b5 <> HT b4,b2 holds
(Red b4,b2) . b5 = b4 . b5
proof end;

theorem Th37: :: TERMORD:37
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3 holds Support ((HM b4,b2) + (Red b4,b2)) = Support b4
proof end;

theorem Th38: :: TERMORD:38
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3 holds (HM b4,b2) + (Red b4,b2) = b4
proof end;

theorem Th39: :: TERMORD:39
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3 holds (Red b4,b2) . (HT b4,b2) = 0. b3 by Lemma39;

theorem Th40: :: TERMORD:40
for b1 being Ordinal
for b2 being connected TermOrder of b1
for b3 being add-associative right_zeroed right_complementable non trivial LoopStr
for b4 being Polynomial of b1,b3
for b5 being bag of b1 st b5 in Support b4 & b5 <> HT b4,b2 holds
(Red b4,b2) . b5 = b4 . b5 by Lemma40;