let O be non empty connected Poset; for A being non empty finite 0 -based array of O ex C being 0 -based arr_computation of A st C is complete
let A be non empty finite 0 -based array of O; ex C being 0 -based arr_computation of A st C is complete
reconsider rA = rng A as non empty Subset of O by RELAT_1:def 19;
reconsider a = dom A as Ordinal ;
set X = Funcs (a,rA);
deffunc H1( array of O) -> set = card (inversions $1);
defpred S9[ Element of Funcs (a,rA), Element of Funcs (a,rA)] means ex p, q being Element of dom A st
( [p,q] in inversions $1 & $2 = Swap ($1,p,q) );
A is permutation of A
by Th38;
then A1:
A in Funcs (a,rA)
by Th82;
A2:
H1(A) is finite
;
A3:
for x being Element of Funcs (a,rA) st H1(x) <> {} holds
ex y being Element of Funcs (a,rA) st
( S9[x,y] & H1(y) c< H1(x) )
proof
let x be
Element of
Funcs (
a,
rA);
( H1(x) <> {} implies ex y being Element of Funcs (a,rA) st
( S9[x,y] & H1(y) c< H1(x) ) )
reconsider c =
x as
array of
O ;
set z = the
Element of
inversions c;
set Fx =
H1(
x);
assume
H1(
x)
<> {}
;
ex y being Element of Funcs (a,rA) st
( S9[x,y] & H1(y) c< H1(x) )
then A4:
inversions c <> {}
;
then
( the
Element of
inversions c in inversions c &
inversions c is
Relation of
(dom x),
(dom x) )
by Th47;
then consider p,
q being
object such that A5:
( the
Element of
inversions c = [p,q] &
p in dom x &
q in dom x )
by RELSET_1:2;
set y =
Swap (
x,
p,
q);
A6:
(
dom (Swap (x,p,q)) = dom x &
rng (Swap (x,p,q)) = rng x )
by FUNCT_7:99, FUNCT_7:103;
(
dom x = dom A &
rng x c= rng A )
by FUNCT_2:92;
then reconsider y =
Swap (
x,
p,
q) as
Element of
Funcs (
a,
rA)
by A6, FUNCT_2:def 2;
reconsider b =
y as
array of
O ;
set Fy =
H1(
y);
take
y
;
( S9[x,y] & H1(y) c< H1(x) )
thus
S9[
x,
y]
by A4, A5;
H1(y) c< H1(x)
H1(
b)
in H1(
c)
by A4, A5, Th73;
hence
(
H1(
y)
c= H1(
x) &
H1(
y)
<> H1(
x) )
by ORDINAL1:def 2;
XBOOLE_0:def 8 verum
end;
consider f being non empty finite 0 -based array, k being Element of Funcs (a,rA) such that
A7:
( k = last f & H1(k) = {} & f . 0 = A )
and
A8:
for a being Ordinal st succ a in dom f holds
ex x, y being Element of Funcs (a,rA) st
( x = f . a & y = f . (succ a) & S9[x,y] )
from EXCHSORT:sch 2(A1, A2, A3);
f is arr_computation of A
proof
thus
f . (base- f) = A
by A7, Th24;
EXCHSORT:def 14 ( ( for a being Ordinal st a in dom f holds
f . a is array of O ) & ( for a being Ordinal st a in dom f & succ a in dom f holds
ex R being array of O ex x, y being set st
( [x,y] in inversions R & f . a = R & f . (succ a) = Swap (R,x,y) ) ) )
thus
for
a being
Ordinal st
a in dom f holds
f . a is
array of
O
for a being Ordinal st a in dom f & succ a in dom f holds
ex R being array of O ex x, y being set st
( [x,y] in inversions R & f . a = R & f . (succ a) = Swap (R,x,y) )
let a be
Ordinal;
( a in dom f & succ a in dom f implies ex R being array of O ex x, y being set st
( [x,y] in inversions R & f . a = R & f . (succ a) = Swap (R,x,y) ) )
assume
(
a in dom f &
succ a in dom f )
;
ex R being array of O ex x, y being set st
( [x,y] in inversions R & f . a = R & f . (succ a) = Swap (R,x,y) )
then
ex
x,
y being
Element of
Funcs (
a,
rA) st
(
x = f . a &
y = f . (succ a) &
S9[
x,
y] )
by A8;
hence
ex
R being
array of
O ex
x,
y being
set st
(
[x,y] in inversions R &
f . a = R &
f . (succ a) = Swap (
R,
x,
y) )
;
verum
end;
then reconsider f = f as 0 -based arr_computation of A ;
take
f
; f is complete
inversions (last f) = {}
by A7;
hence
last f is ascending
by Th48; EXCHSORT:def 15 verum