:: DICKSON semantic presentation

theorem Th1: :: DICKSON:1
for b1 being Function
for b2 being set st dom b1 = {b2} holds
b1 = b2 .--> (b1 . b2)
proof end;

theorem Th2: :: DICKSON:2
for b1 being Nat holds b1 c= b1 + 1
proof end;

scheme :: DICKSON:sch 1
s1{ F1() -> Nat, F2() -> Nat, F3( set ) -> set , P1[ Nat] } :
{ F3(b1) where B is Nat : ( F1() < b1 & b1 <= F2() & P1[b1] ) } is finite
proof end;

theorem Th3: :: DICKSON:3
for b1 being infinite set ex b2 being Function of NAT ,b1 st b2 is one-to-one
proof end;

definition
let c1 be RelStr ;
let c2 be sequence of c1;
attr a2 is ascending means :: DICKSON:def 1
for b1 being Nat holds
( a2 . (b1 + 1) <> a2 . b1 & [(a2 . b1),(a2 . (b1 + 1))] in the InternalRel of a1 );
end;

:: deftheorem Def1 defines ascending DICKSON:def 1 :
for b1 being RelStr
for b2 being sequence of b1 holds
( b2 is ascending iff for b3 being Nat holds
( b2 . (b3 + 1) <> b2 . b3 & [(b2 . b3),(b2 . (b3 + 1))] in the InternalRel of b1 ) );

definition
let c1 be RelStr ;
let c2 be sequence of c1;
attr a2 is weakly-ascending means :Def2: :: DICKSON:def 2
for b1 being Nat holds [(a2 . b1),(a2 . (b1 + 1))] in the InternalRel of a1;
end;

:: deftheorem Def2 defines weakly-ascending DICKSON:def 2 :
for b1 being RelStr
for b2 being sequence of b1 holds
( b2 is weakly-ascending iff for b3 being Nat holds [(b2 . b3),(b2 . (b3 + 1))] in the InternalRel of b1 );

theorem Th4: :: DICKSON:4
for b1 being non empty transitive RelStr
for b2 being sequence of b1 st b2 is weakly-ascending holds
for b3, b4 being Nat st b3 < b4 holds
b2 . b3 <= b2 . b4
proof end;

theorem Th5: :: DICKSON:5
for b1 being non empty RelStr holds
( b1 is connected iff the InternalRel of b1 is_strongly_connected_in the carrier of b1 )
proof end;

theorem Th6: :: DICKSON:6
canceled;

theorem Th7: :: DICKSON:7
for b1 being RelStr
for b2, b3 being set holds
( ( the InternalRel of b1 -Seg b3 misses b2 & b3 in b2 ) iff b3 is_minimal_wrt b2,the InternalRel of b1 )
proof end;

theorem Th8: :: DICKSON:8
for b1 being non empty transitive antisymmetric RelStr
for b2 being Element of b1
for b3, b4 being set st b3 is_minimal_wrt (the InternalRel of b1 -Seg b2) /\ b4,the InternalRel of b1 holds
b3 is_minimal_wrt b4,the InternalRel of b1
proof end;

definition
let c1 be RelStr ;
attr a1 is quasi_ordered means :Def3: :: DICKSON:def 3
( a1 is reflexive & a1 is transitive );
end;

:: deftheorem Def3 defines quasi_ordered DICKSON:def 3 :
for b1 being RelStr holds
( b1 is quasi_ordered iff ( b1 is reflexive & b1 is transitive ) );

definition
let c1 be RelStr ;
assume E10: c1 is quasi_ordered ;
func EqRel c1 -> Equivalence_Relation of the carrier of a1 equals :Def4: :: DICKSON:def 4
the InternalRel of a1 /\ (the InternalRel of a1 ~ );
coherence
the InternalRel of c1 /\ (the InternalRel of c1 ~ ) is Equivalence_Relation of the carrier of c1
proof end;
end;

:: deftheorem Def4 defines EqRel DICKSON:def 4 :
for b1 being RelStr st b1 is quasi_ordered holds
EqRel b1 = the InternalRel of b1 /\ (the InternalRel of b1 ~ );

theorem Th9: :: DICKSON:9
for b1 being RelStr
for b2, b3 being Element of b1 st b1 is quasi_ordered holds
( b2 in Class (EqRel b1),b3 iff ( b2 <= b3 & b3 <= b2 ) )
proof end;

definition
let c1 be RelStr ;
func <=E c1 -> Relation of Class (EqRel a1) means :Def5: :: DICKSON:def 5
for b1, b2 being set holds
( [b1,b2] in a2 iff ex b3, b4 being Element of a1 st
( b1 = Class (EqRel a1),b3 & b2 = Class (EqRel a1),b4 & b3 <= b4 ) );
existence
ex b1 being Relation of Class (EqRel c1) st
for b2, b3 being set holds
( [b2,b3] in b1 iff ex b4, b5 being Element of c1 st
( b2 = Class (EqRel c1),b4 & b3 = Class (EqRel c1),b5 & b4 <= b5 ) )
proof end;
uniqueness
for b1, b2 being Relation of Class (EqRel c1) st ( for b3, b4 being set holds
( [b3,b4] in b1 iff ex b5, b6 being Element of c1 st
( b3 = Class (EqRel c1),b5 & b4 = Class (EqRel c1),b6 & b5 <= b6 ) ) ) & ( for b3, b4 being set holds
( [b3,b4] in b2 iff ex b5, b6 being Element of c1 st
( b3 = Class (EqRel c1),b5 & b4 = Class (EqRel c1),b6 & b5 <= b6 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines <=E DICKSON:def 5 :
for b1 being RelStr
for b2 being Relation of Class (EqRel b1) holds
( b2 = <=E b1 iff for b3, b4 being set holds
( [b3,b4] in b2 iff ex b5, b6 being Element of b1 st
( b3 = Class (EqRel b1),b5 & b4 = Class (EqRel b1),b6 & b5 <= b6 ) ) );

theorem Th10: :: DICKSON:10
for b1 being RelStr st b1 is quasi_ordered holds
<=E b1 partially_orders Class (EqRel b1)
proof end;

theorem Th11: :: DICKSON:11
for b1 being non empty RelStr st b1 is quasi_ordered & b1 is connected holds
<=E b1 linearly_orders Class (EqRel b1)
proof end;

definition
let c1 be Relation;
func c1 \~ -> Relation equals :: DICKSON:def 6
a1 \ (a1 ~ );
correctness
coherence
c1 \ (c1 ~ ) is Relation
;
;
end;

:: deftheorem Def6 defines \~ DICKSON:def 6 :
for b1 being Relation holds b1 \~ = b1 \ (b1 ~ );

registration
let c1 be Relation;
cluster a1 \~ -> asymmetric ;
coherence
c1 \~ is asymmetric
proof end;
end;

definition
let c1 be set ;
let c2 be Relation of c1;
redefine func \~ as c2 \~ -> Relation of a1;
coherence
c2 \~ is Relation of c1
proof end;
end;

definition
let c1 be RelStr ;
func c1 \~ -> strict RelStr equals :: DICKSON:def 7
RelStr(# the carrier of a1,(the InternalRel of a1 \~ ) #);
correctness
coherence
RelStr(# the carrier of c1,(the InternalRel of c1 \~ ) #) is strict RelStr
;
;
end;

:: deftheorem Def7 defines \~ DICKSON:def 7 :
for b1 being RelStr holds b1 \~ = RelStr(# the carrier of b1,(the InternalRel of b1 \~ ) #);

registration
let c1 be non empty RelStr ;
cluster a1 \~ -> non empty strict ;
coherence
not c1 \~ is empty
;
end;

registration
let c1 be transitive RelStr ;
cluster a1 \~ -> strict transitive ;
coherence
c1 \~ is transitive
proof end;
end;

registration
let c1 be RelStr ;
cluster a1 \~ -> strict antisymmetric ;
coherence
c1 \~ is antisymmetric
proof end;
end;

theorem Th12: :: DICKSON:12
for b1 being non empty Poset
for b2 being Element of b1 holds Class (EqRel b1),b2 = {b2}
proof end;

theorem Th13: :: DICKSON:13
for b1 being Relation holds
( b1 = b1 \~ iff b1 is asymmetric )
proof end;

theorem Th14: :: DICKSON:14
for b1 being Relation st b1 is transitive holds
b1 \~ is transitive
proof end;

theorem Th15: :: DICKSON:15
for b1 being Relation
for b2, b3 being set st b1 is antisymmetric holds
( [b2,b3] in b1 \~ iff ( [b2,b3] in b1 & b2 <> b3 ) )
proof end;

theorem Th16: :: DICKSON:16
for b1 being RelStr st b1 is well_founded holds
b1 \~ is well_founded
proof end;

theorem Th17: :: DICKSON:17
for b1 being RelStr st b1 \~ is well_founded & b1 is antisymmetric holds
b1 is well_founded
proof end;

theorem Th18: :: DICKSON:18
for b1 being RelStr
for b2 being set
for b3 being Element of (b1 \~ ) holds
( b3 is_minimal_wrt b2,the InternalRel of (b1 \~ ) iff ( b3 in b2 & ( for b4 being Element of b1 st b4 in b2 & [b4,b3] in the InternalRel of b1 holds
[b3,b4] in the InternalRel of b1 ) ) )
proof end;

theorem Th19: :: DICKSON:19
for b1, b2 being non empty RelStr
for b3 being Function of b1,b2 st b1 is quasi_ordered & b2 is antisymmetric & b2 \~ is well_founded & ( for b4, b5 being Element of b1 holds
( ( b4 <= b5 implies b3 . b4 <= b3 . b5 ) & ( b3 . b4 = b3 . b5 implies [b4,b5] in EqRel b1 ) ) ) holds
b1 \~ is well_founded
proof end;

definition
let c1 be non empty RelStr ;
let c2 be Subset of c1;
func min-classes c2 -> Subset-Family of a1 means :Def8: :: DICKSON:def 8
for b1 being set holds
( b1 in a3 iff ex b2 being Element of (a1 \~ ) st
( b2 is_minimal_wrt a2,the InternalRel of (a1 \~ ) & b1 = (Class (EqRel a1),b2) /\ a2 ) );
existence
ex b1 being Subset-Family of c1 st
for b2 being set holds
( b2 in b1 iff ex b3 being Element of (c1 \~ ) st
( b3 is_minimal_wrt c2,the InternalRel of (c1 \~ ) & b2 = (Class (EqRel c1),b3) /\ c2 ) )
proof end;
uniqueness
for b1, b2 being Subset-Family of c1 st ( for b3 being set holds
( b3 in b1 iff ex b4 being Element of (c1 \~ ) st
( b4 is_minimal_wrt c2,the InternalRel of (c1 \~ ) & b3 = (Class (EqRel c1),b4) /\ c2 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being Element of (c1 \~ ) st
( b4 is_minimal_wrt c2,the InternalRel of (c1 \~ ) & b3 = (Class (EqRel c1),b4) /\ c2 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def8 defines min-classes DICKSON:def 8 :
for b1 being non empty RelStr
for b2 being Subset of b1
for b3 being Subset-Family of b1 holds
( b3 = min-classes b2 iff for b4 being set holds
( b4 in b3 iff ex b5 being Element of (b1 \~ ) st
( b5 is_minimal_wrt b2,the InternalRel of (b1 \~ ) & b4 = (Class (EqRel b1),b5) /\ b2 ) ) );

theorem Th20: :: DICKSON:20
for b1 being non empty RelStr
for b2 being Subset of b1
for b3 being set st b1 is quasi_ordered & b3 in min-classes b2 holds
for b4 being Element of (b1 \~ ) st b4 in b3 holds
b4 is_minimal_wrt b2,the InternalRel of (b1 \~ )
proof end;

theorem Th21: :: DICKSON:21
for b1 being non empty RelStr holds
( b1 \~ is well_founded iff for b2 being Subset of b1 st b2 <> {} holds
ex b3 being set st b3 in min-classes b2 )
proof end;

theorem Th22: :: DICKSON:22
for b1 being non empty RelStr
for b2 being Subset of b1
for b3 being Element of (b1 \~ ) st b3 is_minimal_wrt b2,the InternalRel of (b1 \~ ) holds
not min-classes b2 is empty
proof end;

theorem Th23: :: DICKSON:23
for b1 being non empty RelStr
for b2 being Subset of b1
for b3 being set st b1 is quasi_ordered & b3 in min-classes b2 holds
not b3 is empty
proof end;

theorem Th24: :: DICKSON:24
for b1 being non empty RelStr st b1 is quasi_ordered holds
( ( b1 is connected & b1 \~ is well_founded ) iff for b2 being non empty Subset of b1 holds Card (min-classes b2) = 1 )
proof end;

theorem Th25: :: DICKSON:25
for b1 being non empty Poset holds
( the InternalRel of b1 well_orders the carrier of b1 iff for b2 being non empty Subset of b1 holds Card (min-classes b2) = 1 )
proof end;

definition
let c1 be RelStr ;
let c2 be Subset of c1;
let c3 be set ;
pred c3 is_Dickson-basis_of c2,c1 means :Def9: :: DICKSON:def 9
( a3 c= a2 & ( for b1 being Element of a1 st b1 in a2 holds
ex b2 being Element of a1 st
( b2 in a3 & b2 <= b1 ) ) );
end;

:: deftheorem Def9 defines is_Dickson-basis_of DICKSON:def 9 :
for b1 being RelStr
for b2 being Subset of b1
for b3 being set holds
( b3 is_Dickson-basis_of b2,b1 iff ( b3 c= b2 & ( for b4 being Element of b1 st b4 in b2 holds
ex b5 being Element of b1 st
( b5 in b3 & b5 <= b4 ) ) ) );

theorem Th26: :: DICKSON:26
for b1 being RelStr holds {} is_Dickson-basis_of {} the carrier of b1,b1
proof end;

theorem Th27: :: DICKSON:27
for b1 being non empty RelStr
for b2 being non empty Subset of b1
for b3 being set st b3 is_Dickson-basis_of b2,b1 holds
not b3 is empty
proof end;

definition
let c1 be RelStr ;
attr a1 is Dickson means :Def10: :: DICKSON:def 10
for b1 being Subset of a1 ex b2 being set st
( b2 is_Dickson-basis_of b1,a1 & b2 is finite );
end;

:: deftheorem Def10 defines Dickson DICKSON:def 10 :
for b1 being RelStr holds
( b1 is Dickson iff for b2 being Subset of b1 ex b3 being set st
( b3 is_Dickson-basis_of b2,b1 & b3 is finite ) );

theorem Th28: :: DICKSON:28
for b1 being non empty RelStr st b1 \~ is well_founded & b1 is connected holds
b1 is Dickson
proof end;

theorem Th29: :: DICKSON:29
for b1, b2 being RelStr st the InternalRel of b1 c= the InternalRel of b2 & b1 is Dickson & the carrier of b1 = the carrier of b2 holds
b2 is Dickson
proof end;

definition
let c1 be Function;
let c2 be set ;
assume that
E29: dom c1 = NAT and
E30: c2 in rng c1 ;
func c1 mindex c2 -> Nat means :Def11: :: DICKSON:def 11
( a1 . a3 = a2 & ( for b1 being Nat st a1 . b1 = a2 holds
a3 <= b1 ) );
existence
ex b1 being Nat st
( c1 . b1 = c2 & ( for b2 being Nat st c1 . b2 = c2 holds
b1 <= b2 ) )
proof end;
uniqueness
for b1, b2 being Nat st c1 . b1 = c2 & ( for b3 being Nat st c1 . b3 = c2 holds
b1 <= b3 ) & c1 . b2 = c2 & ( for b3 being Nat st c1 . b3 = c2 holds
b2 <= b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def11 defines mindex DICKSON:def 11 :
for b1 being Function
for b2 being set st dom b1 = NAT & b2 in rng b1 holds
for b3 being Nat holds
( b3 = b1 mindex b2 iff ( b1 . b3 = b2 & ( for b4 being Nat st b1 . b4 = b2 holds
b3 <= b4 ) ) );

definition
let c1 be non empty 1-sorted ;
let c2 be sequence of c1;
let c3 be set ;
let c4 be Nat;
assume E30: ex b1 being Nat st
( c4 < b1 & c2 . b1 = c3 ) ;
func c2 mindex c3,c4 -> Nat means :Def12: :: DICKSON:def 12
( a2 . a5 = a3 & a4 < a5 & ( for b1 being Nat st a4 < b1 & a2 . b1 = a3 holds
a5 <= b1 ) );
existence
ex b1 being Nat st
( c2 . b1 = c3 & c4 < b1 & ( for b2 being Nat st c4 < b2 & c2 . b2 = c3 holds
b1 <= b2 ) )
proof end;
uniqueness
for b1, b2 being Nat st c2 . b1 = c3 & c4 < b1 & ( for b3 being Nat st c4 < b3 & c2 . b3 = c3 holds
b1 <= b3 ) & c2 . b2 = c3 & c4 < b2 & ( for b3 being Nat st c4 < b3 & c2 . b3 = c3 holds
b2 <= b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def12 defines mindex DICKSON:def 12 :
for b1 being non empty 1-sorted
for b2 being sequence of b1
for b3 being set
for b4 being Nat st ex b5 being Nat st
( b4 < b5 & b2 . b5 = b3 ) holds
for b5 being Nat holds
( b5 = b2 mindex b3,b4 iff ( b2 . b5 = b3 & b4 < b5 & ( for b6 being Nat st b4 < b6 & b2 . b6 = b3 holds
b5 <= b6 ) ) );

theorem Th30: :: DICKSON:30
for b1 being non empty RelStr st b1 is quasi_ordered & b1 is Dickson holds
for b2 being sequence of b1 ex b3, b4 being Nat st
( b3 < b4 & b2 . b3 <= b2 . b4 )
proof end;

theorem Th31: :: DICKSON:31
for b1 being RelStr
for b2 being Subset of b1
for b3 being Element of (b1 \~ ) st b1 is quasi_ordered & b3 in b2 & (the InternalRel of b1 -Seg b3) /\ b2 c= Class (EqRel b1),b3 holds
b3 is_minimal_wrt b2,the InternalRel of (b1 \~ )
proof end;

theorem Th32: :: DICKSON:32
for b1 being non empty RelStr st b1 is quasi_ordered & ( for b2 being sequence of b1 ex b3, b4 being Nat st
( b3 < b4 & b2 . b3 <= b2 . b4 ) ) holds
for b2 being non empty Subset of b1 holds
( min-classes b2 is finite & not min-classes b2 is empty )
proof end;

theorem Th33: :: DICKSON:33
for b1 being non empty RelStr st b1 is quasi_ordered & ( for b2 being non empty Subset of b1 holds
( min-classes b2 is finite & not min-classes b2 is empty ) ) holds
b1 is Dickson
proof end;

theorem Th34: :: DICKSON:34
for b1 being non empty RelStr st b1 is quasi_ordered & b1 is Dickson holds
b1 \~ is well_founded
proof end;

theorem Th35: :: DICKSON:35
for b1 being non empty Poset
for b2 being non empty Subset of b1 st b1 is Dickson holds
ex b3 being set st
( b3 is_Dickson-basis_of b2,b1 & ( for b4 being set st b4 is_Dickson-basis_of b2,b1 holds
b3 c= b4 ) )
proof end;

definition
let c1 be non empty RelStr ;
let c2 be Subset of c1;
assume E36: c1 is Dickson ;
func Dickson-bases c2,c1 -> non empty Subset-Family of a1 means :Def13: :: DICKSON:def 13
for b1 being set holds
( b1 in a3 iff b1 is_Dickson-basis_of a2,a1 );
existence
ex b1 being non empty Subset-Family of c1 st
for b2 being set holds
( b2 in b1 iff b2 is_Dickson-basis_of c2,c1 )
proof end;
uniqueness
for b1, b2 being non empty Subset-Family of c1 st ( for b3 being set holds
( b3 in b1 iff b3 is_Dickson-basis_of c2,c1 ) ) & ( for b3 being set holds
( b3 in b2 iff b3 is_Dickson-basis_of c2,c1 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def13 defines Dickson-bases DICKSON:def 13 :
for b1 being non empty RelStr
for b2 being Subset of b1 st b1 is Dickson holds
for b3 being non empty Subset-Family of b1 holds
( b3 = Dickson-bases b2,b1 iff for b4 being set holds
( b4 in b3 iff b4 is_Dickson-basis_of b2,b1 ) );

theorem Th36: :: DICKSON:36
for b1 being non empty RelStr
for b2 being sequence of b1 st b1 is Dickson holds
ex b3 being sequence of b1 st
( b3 is subsequence of b2 & b3 is weakly-ascending )
proof end;

theorem Th37: :: DICKSON:37
for b1 being RelStr st b1 is empty holds
b1 is Dickson
proof end;

theorem Th38: :: DICKSON:38
for b1, b2 being RelStr st b1 is Dickson & b2 is Dickson & b1 is quasi_ordered & b2 is quasi_ordered holds
( [:b1,b2:] is quasi_ordered & [:b1,b2:] is Dickson )
proof end;

theorem Th39: :: DICKSON:39
for b1, b2 being RelStr st b1,b2 are_isomorphic & b1 is Dickson & b1 is quasi_ordered holds
( b2 is quasi_ordered & b2 is Dickson )
proof end;

theorem Th40: :: DICKSON:40
for b1 being RelStr-yielding ManySortedSet of 1
for b2 being Element of 1 holds b1 . b2, product b1 are_isomorphic
proof end;

registration
let c1 be set ;
let c2 be RelStr-yielding ManySortedSet of c1;
let c3 be Subset of c1;
cluster a2 | a3 -> RelStr-yielding ;
coherence
c2 | c3 is RelStr-yielding
proof end;
end;

theorem Th41: :: DICKSON:41
for b1 being non empty Nat
for b2 being RelStr-yielding ManySortedSet of b1 holds
( not product b2 is empty iff b2 is non-Empty )
proof end;

theorem Th42: :: DICKSON:42
for b1 being non empty Nat
for b2 being RelStr-yielding ManySortedSet of b1 + 1
for b3 being Subset of (b1 + 1)
for b4 being Element of b1 + 1 st b3 = b1 & b4 = b1 holds
[:(product (b2 | b3)),(b2 . b4):], product b2 are_isomorphic
proof end;

theorem Th43: :: DICKSON:43
for b1 being non empty Nat
for b2 being RelStr-yielding ManySortedSet of b1 st ( for b3 being Element of b1 holds
( b2 . b3 is Dickson & b2 . b3 is quasi_ordered ) ) holds
( product b2 is quasi_ordered & product b2 is Dickson )
proof end;

Lemma45: for b1 being RelStr-yielding ManySortedSet of {} holds
( not product b1 is empty & product b1 is quasi_ordered & product b1 is Dickson & product b1 is antisymmetric )
proof end;

registration
let c1 be RelStr-yielding ManySortedSet of {} ;
cluster product a1 -> non empty ;
coherence
not product c1 is empty
by Lemma45;
cluster product a1 -> antisymmetric ;
coherence
product c1 is antisymmetric
by Lemma45;
cluster product a1 -> quasi_ordered ;
coherence
product c1 is quasi_ordered
by Lemma45;
cluster product a1 -> Dickson ;
coherence
product c1 is Dickson
by Lemma45;
end;

definition
func NATOrd -> Relation of NAT equals :: DICKSON:def 14
{ [b1,b2] where B is Element of NAT , B is Element of NAT : b1 <= b2 } ;
correctness
coherence
{ [b1,b2] where B is Element of NAT , B is Element of NAT : b1 <= b2 } is Relation of NAT
;
proof end;
end;

:: deftheorem Def14 defines NATOrd DICKSON:def 14 :
NATOrd = { [b1,b2] where B is Element of NAT , B is Element of NAT : b1 <= b2 } ;

theorem Th44: :: DICKSON:44
NATOrd is_reflexive_in NAT
proof end;

theorem Th45: :: DICKSON:45
NATOrd is_antisymmetric_in NAT
proof end;

theorem Th46: :: DICKSON:46
NATOrd is_strongly_connected_in NAT
proof end;

theorem Th47: :: DICKSON:47
NATOrd is_transitive_in NAT
proof end;

definition
func OrderedNAT -> non empty RelStr equals :: DICKSON:def 15
RelStr(# NAT ,NATOrd #);
correctness
coherence
RelStr(# NAT ,NATOrd #) is non empty RelStr
;
;
end;

:: deftheorem Def15 defines OrderedNAT DICKSON:def 15 :
OrderedNAT = RelStr(# NAT ,NATOrd #);

E50: now
now
let c1, c2 be Element of OrderedNAT ;
assume not c1 <= c2 ;
then not [c1,c2] in NATOrd by ORDERS_2:def 9;
then [c2,c1] in NATOrd by Th46, RELAT_2:def 7;
hence c2 <= c1 by ORDERS_2:def 9;
end;
hence OrderedNAT is connected by WAYBEL_0:def 29;
end;

registration
cluster OrderedNAT -> non empty connected ;
coherence
OrderedNAT is connected
by Lemma50;
cluster OrderedNAT -> non empty Dickson ;
coherence
OrderedNAT is Dickson
proof end;
cluster OrderedNAT -> non empty quasi_ordered ;
coherence
OrderedNAT is quasi_ordered
proof end;
cluster OrderedNAT -> non empty antisymmetric ;
coherence
OrderedNAT is antisymmetric
by Th45, ORDERS_2:def 6;
cluster OrderedNAT -> non empty transitive ;
coherence
OrderedNAT is transitive
by Th47, ORDERS_2:def 5;
cluster OrderedNAT -> non empty well_founded ;
coherence
OrderedNAT is well_founded
proof end;
end;

E51: now
let c1 be Nat;
set c2 = product (c1 --> OrderedNAT );
per cases ( c1 is empty or not c1 is empty ) ;
suppose c1 is empty ;
end;
suppose not c1 is empty ;
then reconsider c3 = c1 as non empty Nat ;
set c4 = c3 --> OrderedNAT ;
not product (c3 --> OrderedNAT ) is empty ;
hence not product (c1 --> OrderedNAT ) is empty ;
for b1 being Element of c3 holds
( (c3 --> OrderedNAT ) . b1 is Dickson & (c3 --> OrderedNAT ) . b1 is quasi_ordered ) by FUNCOP_1:13;
hence ( product (c1 --> OrderedNAT ) is Dickson & product (c1 --> OrderedNAT ) is quasi_ordered ) by Th43;
product (c3 --> OrderedNAT ) is antisymmetric ;
hence product (c1 --> OrderedNAT ) is antisymmetric ;
end;
end;
end;

registration
let c1 be Nat;
cluster product (a1 --> OrderedNAT ) -> non empty ;
coherence
not product (c1 --> OrderedNAT ) is empty
by Lemma51;
cluster product (a1 --> OrderedNAT ) -> Dickson ;
coherence
product (c1 --> OrderedNAT ) is Dickson
by Lemma51;
cluster product (a1 --> OrderedNAT ) -> quasi_ordered ;
coherence
product (c1 --> OrderedNAT ) is quasi_ordered
by Lemma51;
cluster product (a1 --> OrderedNAT ) -> antisymmetric ;
coherence
product (c1 --> OrderedNAT ) is antisymmetric
by Lemma51;
end;

theorem Th48: :: DICKSON:48
for b1 being RelStr st b1 is Dickson & b1 is quasi_ordered holds
( [:b1,OrderedNAT :] is quasi_ordered & [:b1,OrderedNAT :] is Dickson ) by Th38;

theorem Th49: :: DICKSON:49
for b1, b2 being non empty RelStr st b1 is Dickson & b1 is quasi_ordered & b2 is quasi_ordered & the InternalRel of b1 c= the InternalRel of b2 & the carrier of b1 = the carrier of b2 holds
b2 \~ is well_founded
proof end;

theorem Th50: :: DICKSON:50
for b1 being non empty RelStr st b1 is quasi_ordered holds
( b1 is Dickson iff for b2 being non empty RelStr st b2 is quasi_ordered & the InternalRel of b1 c= the InternalRel of b2 & the carrier of b1 = the carrier of b2 holds
b2 \~ is well_founded )
proof end;