let a be Int-Location ; :: thesis: for k being Integer holds rng (aSeq a,k) c= {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))}
let k be Integer; :: thesis: rng (aSeq a,k) c= {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))}
now
let x be set ; :: thesis: ( x in rng (aSeq a,k) implies b1 in {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))} )
assume A1: x in rng (aSeq a,k) ; :: thesis: b1 in {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))}
per cases ( ( k > 0 & k = 0 + 1 ) or ( k > 0 & k <> 1 ) or not k > 0 ) ;
suppose A2: ( k > 0 & k = 0 + 1 ) ; :: thesis: b1 in {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))}
then consider k1 being Element of NAT such that
A3: k1 + 1 = k and
A4: aSeq a,k = <*(a := (intloc 0 ))*> ^ (k1 |-> (AddTo a,(intloc 0 ))) by SCMFSA_7:def 3;
aSeq a,k = <*(a := (intloc 0 ))*> ^ {} by A2, A3, A4
.= <*(a := (intloc 0 ))*> by FINSEQ_1:47 ;
then rng (aSeq a,k) = {(a := (intloc 0 ))} by FINSEQ_1:55;
then x = a := (intloc 0 ) by A1, TARSKI:def 1;
hence x in {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))} by ENUMSET1:def 1; :: thesis: verum
end;
suppose A5: ( k > 0 & k <> 1 ) ; :: thesis: b1 in {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))}
then consider k1 being Element of NAT such that
A6: k1 + 1 = k and
A7: aSeq a,k = <*(a := (intloc 0 ))*> ^ (k1 |-> (AddTo a,(intloc 0 ))) by SCMFSA_7:def 3;
k1 <> 0 by A5, A6;
then A8: k1 in Seg k1 by FINSEQ_1:5;
rng (aSeq a,k) = (rng <*(a := (intloc 0 ))*>) \/ (rng (k1 |-> (AddTo a,(intloc 0 )))) by A7, FINSEQ_1:44
.= {(a := (intloc 0 ))} \/ (rng ((Seg k1) --> (AddTo a,(intloc 0 )))) by FINSEQ_1:55
.= {(a := (intloc 0 ))} \/ {(AddTo a,(intloc 0 ))} by A8, FUNCOP_1:14 ;
then ( x in {(a := (intloc 0 ))} or x in {(AddTo a,(intloc 0 ))} ) by A1, XBOOLE_0:def 3;
then ( x = a := (intloc 0 ) or x = AddTo a,(intloc 0 ) ) by TARSKI:def 1;
hence x in {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))} by ENUMSET1:def 1; :: thesis: verum
end;
suppose A9: not k > 0 ; :: thesis: b1 in {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))}
then consider k1 being Element of NAT such that
A10: k1 + k = 1 and
A11: aSeq a,k = <*(a := (intloc 0 ))*> ^ (k1 |-> (SubFrom a,(intloc 0 ))) by SCMFSA_7:def 3;
k1 <> 0 by A9, A10;
then A12: k1 in Seg k1 by FINSEQ_1:5;
rng (aSeq a,k) = (rng <*(a := (intloc 0 ))*>) \/ (rng (k1 |-> (SubFrom a,(intloc 0 )))) by A11, FINSEQ_1:44
.= {(a := (intloc 0 ))} \/ (rng ((Seg k1) --> (SubFrom a,(intloc 0 )))) by FINSEQ_1:55
.= {(a := (intloc 0 ))} \/ {(SubFrom a,(intloc 0 ))} by A12, FUNCOP_1:14 ;
then ( x in {(a := (intloc 0 ))} or x in {(SubFrom a,(intloc 0 ))} ) by A1, XBOOLE_0:def 3;
then ( x = a := (intloc 0 ) or x = SubFrom a,(intloc 0 ) ) by TARSKI:def 1;
hence x in {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))} by ENUMSET1:def 1; :: thesis: verum
end;
end;
end;
hence rng (aSeq a,k) c= {(a := (intloc 0 )),(AddTo a,(intloc 0 )),(SubFrom a,(intloc 0 ))} by TARSKI:def 3; :: thesis: verum