let aa, bb, cc be Int-Location ; :: thesis: for I being Program of SCM+FSA holds {aa,bb,cc} \/ (UsedIntLoc I) c= UsedIntLoc (for-up aa,bb,cc,I)
let I be Program of SCM+FSA ; :: thesis: {aa,bb,cc} \/ (UsedIntLoc I) c= UsedIntLoc (for-up aa,bb,cc,I)
set aux = 1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I));
set i0 = (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))) := cc;
set i1 = SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb;
set i2 = AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 );
set i3 = aa := bb;
set I4 = while>0 (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),((I ';' (AddTo aa,(intloc 0 ))) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )));
A1: UsedIntLoc (((((1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))) := cc) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb)) ';' (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 ))) ';' (aa := bb)) = (UsedIntLoc ((((1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))) := cc) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb)) ';' (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) \/ (UsedIntLoc (aa := bb)) by SF_MASTR:34
.= ((UsedIntLoc (((1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))) := cc) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb))) \/ (UsedIntLoc (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) \/ (UsedIntLoc (aa := bb)) by SF_MASTR:34
.= (((UsedIntLoc ((1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))) := cc)) \/ (UsedIntLoc (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb))) \/ (UsedIntLoc (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) \/ (UsedIntLoc (aa := bb)) by SF_MASTR:35
.= (({(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),cc} \/ (UsedIntLoc (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb))) \/ (UsedIntLoc (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) \/ (UsedIntLoc (aa := bb)) by SF_MASTR:18
.= (({(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),cc} \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb}) \/ (UsedIntLoc (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) \/ (UsedIntLoc (aa := bb)) by SF_MASTR:18
.= (({(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),cc} \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb}) \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )}) \/ (UsedIntLoc (aa := bb)) by SF_MASTR:18
.= (({(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),cc} \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb}) \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )}) \/ {aa,bb} by SF_MASTR:18 ;
A2: UsedIntLoc (while>0 (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),((I ';' (AddTo aa,(intloc 0 ))) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) = {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I)))} \/ (UsedIntLoc ((I ';' (AddTo aa,(intloc 0 ))) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) by SCMFSA9A:30
.= {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I)))} \/ ((UsedIntLoc (I ';' (AddTo aa,(intloc 0 )))) \/ (UsedIntLoc (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) by SF_MASTR:34
.= {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I)))} \/ (((UsedIntLoc I) \/ (UsedIntLoc (AddTo aa,(intloc 0 )))) \/ (UsedIntLoc (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) by SF_MASTR:34
.= {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I)))} \/ ((UsedIntLoc I) \/ ((UsedIntLoc (AddTo aa,(intloc 0 ))) \/ (UsedIntLoc (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 ))))) by XBOOLE_1:4
.= (UsedIntLoc I) \/ ({(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I)))} \/ ((UsedIntLoc (AddTo aa,(intloc 0 ))) \/ (UsedIntLoc (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 ))))) by XBOOLE_1:4 ;
A3: UsedIntLoc (for-up aa,bb,cc,I) = (UsedIntLoc (((((1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))) := cc) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb)) ';' (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 ))) ';' (aa := bb))) \/ (UsedIntLoc (while>0 (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),((I ';' (AddTo aa,(intloc 0 ))) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 ))))) by SF_MASTR:31;
let x be set ; :: according to TARSKI:def 3 :: thesis: ( not x in {aa,bb,cc} \/ (UsedIntLoc I) or x in UsedIntLoc (for-up aa,bb,cc,I) )
assume x in {aa,bb,cc} \/ (UsedIntLoc I) ; :: thesis: x in UsedIntLoc (for-up aa,bb,cc,I)
then A4: ( x in {aa,bb,cc} or x in UsedIntLoc I ) by XBOOLE_0:def 3;
per cases ( x = aa or x = bb or x = cc or x in UsedIntLoc I ) by A4, ENUMSET1:def 1;
suppose x = aa ; :: thesis: x in UsedIntLoc (for-up aa,bb,cc,I)
then x in {aa,bb} by TARSKI:def 2;
then x in UsedIntLoc (((((1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))) := cc) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb)) ';' (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 ))) ';' (aa := bb)) by A1, XBOOLE_0:def 3;
hence x in UsedIntLoc (for-up aa,bb,cc,I) by A3, XBOOLE_0:def 3; :: thesis: verum
end;
suppose x = bb ; :: thesis: x in UsedIntLoc (for-up aa,bb,cc,I)
then x in {aa,bb} by TARSKI:def 2;
then x in UsedIntLoc (((((1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))) := cc) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb)) ';' (AddTo (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 ))) ';' (aa := bb)) by A1, XBOOLE_0:def 3;
hence x in UsedIntLoc (for-up aa,bb,cc,I) by A3, XBOOLE_0:def 3; :: thesis: verum
end;
suppose x = cc ; :: thesis: x in UsedIntLoc (for-up aa,bb,cc,I)
then x in {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),cc} by TARSKI:def 2;
then x in {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),cc} \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb} by XBOOLE_0:def 3;
then x in ({(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),cc} \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb}) \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )} by XBOOLE_0:def 3;
then x in (({(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),cc} \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),bb}) \/ {(1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )}) \/ {aa,bb} by XBOOLE_0:def 3;
hence x in UsedIntLoc (for-up aa,bb,cc,I) by A1, A3, XBOOLE_0:def 3; :: thesis: verum
end;
suppose x in UsedIntLoc I ; :: thesis: x in UsedIntLoc (for-up aa,bb,cc,I)
then x in UsedIntLoc (while>0 (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),((I ';' (AddTo aa,(intloc 0 ))) ';' (SubFrom (1 -stRWNotIn ({aa,bb,cc} \/ (UsedIntLoc I))),(intloc 0 )))) by A2, XBOOLE_0:def 3;
hence x in UsedIntLoc (for-up aa,bb,cc,I) by A3, XBOOLE_0:def 3; :: thesis: verum
end;
end;