reserve p for preProgram of SCM+FSA,
  ic for Instruction of SCM+FSA,
  i,j,k for Nat,
  fa,f for FinSeq-Location,
  a,b,da,db for Int-Location,
  la,lb for Nat;
reserve p1,p2,q for Instruction-Sequence of SCM+FSA;
reserve n for Nat;

theorem Th21:
  for f being FinSeq-Location holds
  UsedILoc (bubble-sort f) = {intloc 0,intloc 1,intloc 2,intloc 3, intloc 4,
  intloc 5,intloc 6}
proof
  let f be FinSeq-Location;
  set i1= a4:=a3, i2= SubFrom(a3,a0), i3= (a5:=(f,a3)), i4= (a6:=(f,a4)),
  i5= SubFrom(a6,a5), i6= ((f,a3):=a6), i7= ((f,a4):=a5),
  ifc=if>0(a6,i4 ";" i6 ";" i7,Stop SCM+FSA), Sif= UsedILoc ifc,
  body2= i1 ";" i2 ";" i3 ";" i4 ";" i5 ";" ifc;
A1: Sif = {a6} \/ UsedILoc (i4 ";" i6 ";" i7) \/ {} by SCMFSA9A:3,43
    .= {a6} \/ (UsedILoc (i4 ";" i6) \/ UsedIntLoc i7) by SF_MASTR:30
    .= {a6} \/ (UsedILoc (i4 ";" i6) \/ {a4,a5}) by SF_MASTR:17
    .= {a6} \/ (UsedIntLoc i4 \/ UsedIntLoc i6 \/ {a4,a5}) by SF_MASTR:31
    .= {a6} \/ (UsedIntLoc i4 \/ {a3,a6} \/ {a4,a5}) by SF_MASTR:17
    .= {a6} \/ ({a4,a6} \/ {a3,a6} \/ {a4,a5}) by SF_MASTR:17
    .= {a6} \/ ({a4,a6,a3,a6} \/ {a4,a5}) by ENUMSET1:5
    .= {a6} \/ ({a6,a6,a3,a4} \/ {a4,a5}) by ENUMSET1:75
    .= {a6} \/ {a6,a6,a3,a4} \/ {a4,a5} by XBOOLE_1:4
    .= {a6,a6,a6,a3,a4} \/ {a4,a5} by ENUMSET1:7
    .= {a6,a3,a4} \/ {a4,a5} by ENUMSET1:38
    .= {a6,a3} \/ {a4} \/ {a4,a5} by ENUMSET1:3
    .= {a6,a3} \/ ({a4} \/ {a4,a5}) by XBOOLE_1:4
    .= {a6,a3} \/ {a4,a4,a5} by ENUMSET1:2
    .= {a4,a5} \/ {a6,a3} by ENUMSET1:30
    .= {a4,a5,a6,a3} by ENUMSET1:5
    .= {a4,a3,a6,a5} by ENUMSET1:64;
  set ui12=UsedILoc(i1 ";" i2);
A2: UsedILoc body2 = (UsedILoc (i1 ";" i2 ";"i3 ";"i4 ";" i5) )
  \/ Sif by SF_MASTR:27
    .= (UsedILoc (i1 ";" i2 ";"i3 ";" i4)) \/ (UsedIntLoc i5) \/ Sif
  by SF_MASTR:30
    .= (UsedILoc (i1 ";" i2 ";"i3 ";" i4)) \/ {a6,a5} \/ Sif
  by SF_MASTR:14
    .= (UsedILoc (i1 ";" i2 ";"i3 )) \/ (UsedIntLoc i4) \/ {a6,a5} \/ Sif
  by SF_MASTR:30
    .= (UsedILoc (i1 ";" i2 ";"i3)) \/ {a6,a4} \/ {a6,a5} \/ Sif
  by SF_MASTR:17
    .= ui12 \/ UsedIntLoc i3 \/ {a6,a4} \/ {a6,a5} \/ Sif by SF_MASTR:30
    .= ui12 \/ {a5,a3} \/ {a6,a4} \/ {a6,a5} \/ Sif by SF_MASTR:17
    .= ui12 \/ ({a5,a3} \/ {a6,a4}) \/ {a6,a5} \/ Sif by XBOOLE_1:4
    .= ui12 \/ {a5,a3,a6,a4} \/ {a6,a5} \/ Sif by ENUMSET1:5
    .= ui12 \/ {a4,a3,a6,a5} \/ {a6,a5} \/ Sif by ENUMSET1:75
    .= ui12 \/ ({a4,a3} \/ {a6,a5}) \/ {a6,a5} \/ Sif by ENUMSET1:5
    .= ui12 \/ {a4,a3} \/ {a6,a5} \/ {a6,a5} \/ Sif by XBOOLE_1:4
    .= ui12 \/ {a4,a3} \/ ({a6,a5} \/ {a6,a5}) \/ Sif by XBOOLE_1:4
    .= ui12 \/ ({a4,a3} \/ {a6,a5}) \/ Sif by XBOOLE_1:4
    .= ui12 \/ {a4,a3,a6,a5} \/ Sif by ENUMSET1:5
    .= ui12 \/ ({a4,a3,a6,a5} \/ Sif) by XBOOLE_1:4
    .= (UsedIntLoc i1 ) \/ (UsedIntLoc i2) \/ {a4,a3,a6,a5} by A1,SF_MASTR:31
    .= (UsedIntLoc i1 ) \/ {a3,a0} \/ {a4,a3,a6,a5} by SF_MASTR:14
    .= {a3,a4} \/ {a3,a0} \/ {a4,a3,a6,a5} by SF_MASTR:14
    .= {a3,a4,a3,a0} \/ {a4,a3,a6,a5} by ENUMSET1:5
    .= {a3,a3,a4,a0} \/ {a4,a3,a6,a5} by ENUMSET1:62
    .= {a3,a4,a0} \/ {a4,a3,a6,a5} by ENUMSET1:31
    .= {a0,a4,a3} \/ {a4,a3,a6,a5} by ENUMSET1:60
    .= {a0} \/ {a4,a3} \/ {a4,a3,a6,a5} by ENUMSET1:2
    .= {a0} \/ {a4,a3} \/ ({a4,a3} \/ {a6,a5}) by ENUMSET1:5
    .= {a0} \/ {a4,a3} \/ {a4,a3} \/ {a6,a5} by XBOOLE_1:4
    .= {a0} \/ ({a4,a3} \/ {a4,a3}) \/ {a6,a5} by XBOOLE_1:4
    .= {a0} \/ ({a4,a3} \/ {a6,a5}) by XBOOLE_1:4
    .= {a0} \/ {a4,a3,a6,a5} by ENUMSET1:5;
  set j1= a2 := a1, j2= SubFrom(a2,a0), j3= (a3:=len f),
  Sfor= UsedILoc Times(a2,body2),
  body1= j1 ";" j2 ";" j3 ";" Times(a2,body2);
A3: Sfor={a4,a3,a6,a5} \/ {a0} \/ {a2,a0} by A2,SCMFSA9A:44
    .={a4,a3,a6,a5} \/ ({a0} \/ {a2,a0}) by XBOOLE_1:4
    .={a4,a3,a6,a5} \/ {a0,a0,a2} by ENUMSET1:2
    .={a4,a3,a6,a5} \/ {a0,a2} by ENUMSET1:30
    .={a4,a5,a6,a3} \/ {a0,a2} by ENUMSET1:64
    .={a4,a5,a6} \/ {a3} \/ {a0,a2} by ENUMSET1:6
    .={a4,a5,a6} \/ ({a3} \/ {a0,a2}) by XBOOLE_1:4
    .={a4,a5,a6} \/ {a0,a2,a3} by ENUMSET1:3;
  A4: UsedILoc body1 = UsedILoc (j1 ";" j2 ";"j3) \/ Sfor by SF_MASTR:27
    .= UsedILoc (j1 ";" j2) \/ UsedIntLoc j3 \/ Sfor by SF_MASTR:30
    .= UsedILoc (j1 ";" j2) \/ {a3} \/ Sfor by SF_MASTR:18
    .= UsedIntLoc j1 \/ UsedIntLoc j2 \/ {a3} \/ Sfor by SF_MASTR:31
    .= UsedIntLoc j1 \/ {a2,a0} \/ {a3} \/ Sfor by SF_MASTR:14
    .= {a2,a1} \/ {a2,a0} \/ {a3} \/ Sfor by SF_MASTR:14
    .= {a2,a1} \/ ({a0,a2} \/ {a3}) \/ Sfor by XBOOLE_1:4
    .= {a2,a1} \/ {a0,a2,a3} \/ Sfor by ENUMSET1:3
    .= {a2,a1} \/ {a0,a2,a3} \/ {a0,a2,a3} \/ {a4,a5,a6} by A3,XBOOLE_1:4
    .= {a2,a1} \/ ({a0,a2,a3} \/ {a0,a2,a3}) \/ {a4,a5,a6} by XBOOLE_1:4
    .= {a2,a1} \/ ({a0,a2} \/ {a3}) \/ {a4,a5,a6} by ENUMSET1:3
    .= {a2,a1} \/ {a0,a2} \/ {a3} \/ {a4,a5,a6} by XBOOLE_1:4
    .= {a2,a1,a0,a2} \/ {a3} \/ {a4,a5,a6} by ENUMSET1:5
    .= {a2,a2,a0,a1} \/ {a3} \/ {a4,a5,a6} by ENUMSET1:64
    .= {a2,a0,a1} \/ {a3} \/ {a4,a5,a6} by ENUMSET1:31
    .= {a0,a1,a2} \/ {a3} \/ {a4,a5,a6} by ENUMSET1:59
    .= {a0,a1,a2,a3} \/ {a4,a5,a6} by ENUMSET1:6
    .= {a0,a1,a2,a3,a4,a5,a6} by ENUMSET1:19;
  set k2= a2:= a0, k3= a3:= a0, k4= a4:= a0, k5= a5:= a0;
A5: UsedILoc initializeWorkMem = UsedILoc (k2 ";" k3 ";" k4 ";" k5)
  \/ UsedIntLoc (a6:= a0) by SF_MASTR:30
    .= UsedILoc (k2 ";" k3 ";" k4 ";" k5) \/ {a6,a0} by SF_MASTR:14
    .= UsedILoc (k2 ";" k3 ";" k4 ) \/ UsedIntLoc k5 \/ {a6,a0}
  by SF_MASTR:30
    .= UsedILoc (k2 ";" k3 ";" k4 ) \/ {a5,a0} \/ {a6,a0} by SF_MASTR:14
    .= UsedILoc (k2 ";" k3 ) \/ UsedIntLoc k4 \/ {a5,a0} \/
  {a6,a0} by SF_MASTR:30
    .= UsedILoc (k2 ";" k3 ) \/ {a4,a0} \/ {a5,a0} \/ {a6,a0} by SF_MASTR:14
    .= UsedIntLoc k2 \/ UsedIntLoc k3 \/ {a4,a0} \/ {a5,a0} \/ {a6,a0}
  by SF_MASTR:31
    .= UsedIntLoc k2 \/ {a3,a0} \/ {a4,a0} \/ {a5,a0} \/
  {a6,a0} by SF_MASTR:14
    .= {a2,a0} \/ {a3,a0} \/ {a4,a0} \/ {a5,a0} \/ {a6,a0} by SF_MASTR:14
    .= {a2,a0} \/ {a3,a0} \/ {a4,a0} \/ ({a5,a0} \/ {a6,a0}) by XBOOLE_1:4
    .= {a2,a0} \/ {a3,a0} \/ {a4,a0} \/ {a0,a5,a6} by ENUMSET1:87
    .= {a0,a2,a3} \/ {a4,a0} \/ {a0,a5,a6} by ENUMSET1:87
    .= {a0,a2,a3} \/ {a4,a0} \/ ({a0} \/ {a5,a6}) by ENUMSET1:2
    .= {a0,a2,a3} \/ {a4,a0} \/ {a0} \/ {a5,a6} by XBOOLE_1:4
    .= {a0,a2,a3} \/ ({a4,a0} \/ {a0}) \/ {a5,a6} by XBOOLE_1:4
    .= {a0,a2,a3} \/ {a4,a0,a0} \/ {a5,a6} by ENUMSET1:3
    .= {a0,a2,a3} \/ ({a0,a0} \/ {a4}) \/ {a5,a6} by ENUMSET1:2
    .= {a0,a2,a3} \/ {a0,a0} \/ {a4} \/ {a5,a6} by XBOOLE_1:4
    .= {a0,a0,a0,a2,a3} \/ {a4} \/ {a5,a6} by ENUMSET1:8
    .= {a0,a2,a3} \/ {a4} \/ {a5,a6} by ENUMSET1:38
    .= {a0,a2,a3,a4} \/ {a5,a6} by ENUMSET1:6
    .= {a0,a2,a3,a4,a5,a6} by ENUMSET1:14
    .= {a0} \/ {a2,a3,a4,a5,a6} by ENUMSET1:11;
  set k7=(a1:=len f), Ut=UsedILoc Times(a1,body1);
  thus UsedILoc (bubble-sort f)
  =UsedILoc ( initializeWorkMem ";" k7 ) \/ Ut by SF_MASTR:27
    .=UsedILoc initializeWorkMem \/ UsedIntLoc k7 \/ Ut by SF_MASTR:30
    .={a0} \/ {a2,a3,a4,a5,a6} \/ {a1} \/ Ut by A5,SF_MASTR:18
    .={a0} \/ {a1} \/ {a2,a3,a4,a5,a6} \/ Ut by XBOOLE_1:4
    .={a0,a1} \/ {a2,a3,a4,a5,a6} \/ Ut by ENUMSET1:1
    .={a0,a1,a2,a3,a4,a5,a6} \/ Ut by ENUMSET1:17
    .={a0,a1,a2,a3,a4,a5,a6} \/ ({a1,a0} \/ {a0,a1,a2,a3,a4,a5,a6})
        by A4,SCMFSA9A:44
    .={a0,a1,a2,a3,a4,a5,a6} \/ {a0,a1,a2,a3,a4,a5,a6} \/ {a1,a0} by XBOOLE_1:4
    .={a2,a3,a4,a5,a6} \/ {a0,a1} \/ {a0,a1} by ENUMSET1:17
    .={a2,a3,a4,a5,a6} \/ ({a0,a1} \/ {a0,a1}) by XBOOLE_1:4
    .={a0,a1,a2,a3,a4,a5,a6} by ENUMSET1:17;
end;
