set R = RelStr(# (Bags n),(DivOrder n) #);
set S = product (Carrier (n --> OrderedNAT ));
set SJ = Carrier (n --> OrderedNAT );
set P = product (n --> OrderedNAT );
set J = n --> OrderedNAT ;
defpred S1[ set , set ] means ( n in product (Carrier (n --> OrderedNAT )) & ex b being bag of st
( b = c2 & b = n ) );
A1:
for x being set st x in product (Carrier (n --> OrderedNAT )) holds
for g being Function st x = g holds
( dom g = n & ( for y being set st y in dom g holds
g . y in NAT ) )
proof
let x be
set ;
:: thesis: ( x in product (Carrier (n --> OrderedNAT )) implies for g being Function st x = g holds
( dom g = n & ( for y being set st y in dom g holds
g . y in NAT ) ) )
assume
x in product (Carrier (n --> OrderedNAT ))
;
:: thesis: for g being Function st x = g holds
( dom g = n & ( for y being set st y in dom g holds
g . y in NAT ) )
then consider g being
Function such that A2:
x = g
and A3:
dom g = dom (Carrier (n --> OrderedNAT ))
and A4:
for
y being
set st
y in dom (Carrier (n --> OrderedNAT )) holds
g . y in (Carrier (n --> OrderedNAT )) . y
by CARD_3:def 5;
let g' be
Function;
:: thesis: ( x = g' implies ( dom g' = n & ( for y being set st y in dom g' holds
g' . y in NAT ) ) )
assume A5:
x = g'
;
:: thesis: ( dom g' = n & ( for y being set st y in dom g' holds
g' . y in NAT ) )
hence
dom g' = n
by A2, A3, PARTFUN1:def 4;
:: thesis: for y being set st y in dom g' holds
g' . y in NAT
thus
for
y being
set st
y in dom g' holds
g' . y in NAT
:: thesis: verumproof
let y be
set ;
:: thesis: ( y in dom g' implies g' . y in NAT )
assume A6:
y in dom g'
;
:: thesis: g' . y in NAT
then A7:
y in n
by A5, A2, A3, PARTFUN1:def 4;
then consider R being
1-sorted such that A8:
R = (n --> OrderedNAT ) . y
and A9:
(Carrier (n --> OrderedNAT )) . y = the
carrier of
R
by PRALG_1:def 13;
g . y in the
carrier of
R
by A5, A2, A3, A4, A6, A9;
hence
g' . y in NAT
by A5, A2, A7, A8, DICKSON:def 15, FUNCOP_1:13;
:: thesis: verum
end;
end;
A10:
for x being set st x in product (Carrier (n --> OrderedNAT )) holds
ex y being set st S1[x,y]
proof
let x be
set ;
:: thesis: ( x in product (Carrier (n --> OrderedNAT )) implies ex y being set st S1[x,y] )
assume A11:
x in product (Carrier (n --> OrderedNAT ))
;
:: thesis: ex y being set st S1[x,y]
then consider g being
Function such that A12:
x = g
and
dom g = dom (Carrier (n --> OrderedNAT ))
and
for
y being
set st
y in dom (Carrier (n --> OrderedNAT )) holds
g . y in (Carrier (n --> OrderedNAT )) . y
by CARD_3:def 5;
defpred S2[
set ,
set ]
means c2 = g . n;
A13:
for
x being
set st
x in n holds
ex
y being
set st
S2[
x,
y]
;
consider b being
Function such that A14:
(
dom b = n & ( for
x being
set st
x in n holds
S2[
x,
b . x] ) )
from CLASSES1:sch 1(A13);
reconsider b =
b as
ManySortedSet of
by A14, PARTFUN1:def 4, RELAT_1:def 18;
A15:
dom g = n
by A1, A11, A12;
then
rng b c= NAT
by TARSKI:def 3;
then reconsider b =
b as
bag of
by VALUED_0:def 6;
take
b
;
:: thesis: S1[x,b]
thus
x in product (Carrier (n --> OrderedNAT ))
by A11;
:: thesis: ex b being bag of st
( b = b & b = x )
take
b
;
:: thesis: ( b = b & b = x )
thus
b = b
;
:: thesis: b = x
thus
b = x
by A12, A15, A14, FUNCT_1:9;
:: thesis: verum
end;
consider i being Function such that
A17:
( dom i = product (Carrier (n --> OrderedNAT )) & ( for x being set st x in product (Carrier (n --> OrderedNAT )) holds
S1[x,i . x] ) )
from CLASSES1:sch 1(A10);
A18:
for x being Element of RelStr(# (Bags n),(DivOrder n) #) ex u being Element of (product (n --> OrderedNAT )) st
( u in dom i & i . u = x )
now let N be
Subset of
RelStr(#
(Bags n),
(DivOrder n) #);
:: thesis: ex B being set st
( B is_Dickson-basis_of N, RelStr(# (Bags n),(DivOrder n) #) & B is finite )set N' =
i " N;
A28:
i " N c= product (Carrier (n --> OrderedNAT ))
by A17, RELAT_1:167;
then reconsider N' =
i " N as
Subset of
(product (n --> OrderedNAT )) by YELLOW_1:def 4;
consider B' being
set such that A29:
B' is_Dickson-basis_of N',
product (n --> OrderedNAT )
and A30:
B' is
finite
by DICKSON:def 10;
set B =
i .: B';
A31:
B' c= N'
by A29, DICKSON:def 9;
A32:
for
a,
b being
Element of
(product (n --> OrderedNAT )) for
ta,
tb being
Element of
Bags n st
a = ta &
b = tb &
a in product (Carrier (n --> OrderedNAT )) &
a <= b holds
ta divides tb
proof
let a,
b be
Element of
(product (n --> OrderedNAT ));
:: thesis: for ta, tb being Element of Bags n st a = ta & b = tb & a in product (Carrier (n --> OrderedNAT )) & a <= b holds
ta divides tblet ta,
tb be
Element of
Bags n;
:: thesis: ( a = ta & b = tb & a in product (Carrier (n --> OrderedNAT )) & a <= b implies ta divides tb )
assume that A33:
(
a = ta &
b = tb )
and A34:
a in product (Carrier (n --> OrderedNAT ))
;
:: thesis: ( not a <= b or ta divides tb )
assume
a <= b
;
:: thesis: ta divides tb
then consider f,
g being
Function such that A35:
(
f = a &
g = b )
and A36:
for
i being
set st
i in n holds
ex
R being
RelStr ex
ai,
bi being
Element of
R st
(
R = (n --> OrderedNAT ) . i &
ai = f . i &
bi = g . i &
ai <= bi )
by A34, YELLOW_1:def 4;
now let k be
set ;
:: thesis: ( k in n implies ta . k <= tb . k )assume A37:
k in n
;
:: thesis: ta . k <= tb . kthen consider R being
RelStr ,
ak,
bk being
Element of
R such that A38:
R = (n --> OrderedNAT ) . k
and A39:
(
ak = f . k &
bk = g . k )
and A40:
ak <= bk
by A36;
(n --> OrderedNAT ) . k = OrderedNAT
by A37, FUNCOP_1:13;
then
[ak,bk] in NATOrd
by A38, A40, DICKSON:def 15, ORDERS_2:def 9;
then consider a',
b' being
Element of
NAT such that A41:
[a',b'] = [ak,bk]
and A42:
a' <= b'
by DICKSON:def 14;
A43:
b' =
[ak,bk] `2
by A41, MCART_1:def 2
.=
bk
by MCART_1:def 2
;
a' =
[ak,bk] `1
by A41, MCART_1:def 1
.=
ak
by MCART_1:def 1
;
hence
ta . k <= tb . k
by A33, A35, A39, A42, A43;
:: thesis: verum end;
hence
ta divides tb
by PRE_POLY:46;
:: thesis: verum
end; A44:
for
a being
Element of
RelStr(#
(Bags n),
(DivOrder n) #) st
a in N holds
ex
b being
Element of
RelStr(#
(Bags n),
(DivOrder n) #) st
(
b in i .: B' &
b <= a )
proof
let a be
Element of
RelStr(#
(Bags n),
(DivOrder n) #);
:: thesis: ( a in N implies ex b being Element of RelStr(# (Bags n),(DivOrder n) #) st
( b in i .: B' & b <= a ) )
consider a' being
Element of
(product (n --> OrderedNAT )) such that A45:
a' in dom i
and A46:
i . a' = a
by A18;
A47:
ex
b being
bag of st
(
b = i . a' &
b = a' )
by A17, A45;
assume
a in N
;
:: thesis: ex b being Element of RelStr(# (Bags n),(DivOrder n) #) st
( b in i .: B' & b <= a )
then
a' in N'
by A45, A46, FUNCT_1:def 13;
then consider b' being
Element of
(product (n --> OrderedNAT )) such that A48:
b' in B'
and A49:
b' <= a'
by A29, DICKSON:def 9;
set b =
i . b';
A50:
B' c= product (Carrier (n --> OrderedNAT ))
by A28, A31, XBOOLE_1:1;
then
i . b' in rng i
by A17, A48, FUNCT_1:def 5;
then reconsider b =
i . b' as
Element of
Bags n by A25;
reconsider b =
b as
Element of
RelStr(#
(Bags n),
(DivOrder n) #) ;
take
b
;
:: thesis: ( b in i .: B' & b <= a )
thus
b in i .: B'
by A17, A48, A50, FUNCT_1:def 12;
:: thesis: b <= a
reconsider aa =
a,
bb =
b as
Element of
Bags n ;
ex
b1 being
bag of st
(
b1 = i . b' &
b1 = b' )
by A17, A48, A50;
then
bb divides aa
by A32, A46, A47, A48, A49, A50;
then
[b,a] in DivOrder n
by Def5;
hence
b <= a
by ORDERS_2:def 9;
:: thesis: verum
end; then
i .: B' c= N
by TARSKI:def 3;
then
i .: B' is_Dickson-basis_of N,
RelStr(#
(Bags n),
(DivOrder n) #)
by A44, DICKSON:def 9;
hence
ex
B being
set st
(
B is_Dickson-basis_of N,
RelStr(#
(Bags n),
(DivOrder n) #) &
B is
finite )
by A30;
:: thesis: verum end;
hence
RelStr(# (Bags n),(DivOrder n) #) is Dickson
by DICKSON:def 10; :: thesis: verum