let I be Instruction of SCM+FSA; :: according to AMISTD_2:def 19 :: thesis: I is IC-good
per cases ( I = [0,{},{}] or ex a, b being Int-Location st I = a := b or ex a, b being Int-Location st I = AddTo (a,b) or ex a, b being Int-Location st I = SubFrom (a,b) or ex a, b being Int-Location st I = MultBy (a,b) or ex a, b being Int-Location st I = Divide (a,b) or ex i1 being Element of NAT st I = goto i1 or ex i1 being Element of NAT ex a being Int-Location st I = a =0_goto i1 or ex i1 being Element of NAT ex a being Int-Location st I = a >0_goto i1 or ex a, b being Int-Location ex f being FinSeq-Location st I = b := (f,a) or ex a, b being Int-Location ex f being FinSeq-Location st I = (f,a) := b or ex a being Int-Location ex f being FinSeq-Location st I = a :=len f or ex a being Int-Location ex f being FinSeq-Location st I = f :=<0,...,0> a ) by SCMFSA_2:120;
suppose I = [0,{},{}] ; :: thesis: I is IC-good
end;
suppose ex a, b being Int-Location st I = a := b ; :: thesis: I is IC-good
end;
suppose ex a, b being Int-Location st I = AddTo (a,b) ; :: thesis: I is IC-good
end;
suppose ex a, b being Int-Location st I = SubFrom (a,b) ; :: thesis: I is IC-good
end;
suppose ex a, b being Int-Location st I = MultBy (a,b) ; :: thesis: I is IC-good
end;
suppose ex a, b being Int-Location st I = Divide (a,b) ; :: thesis: I is IC-good
end;
suppose A1: ex i1 being Element of NAT st I = goto i1 ; :: thesis: I is IC-good
let k be natural number ; :: according to AMISTD_2:def 18 :: thesis: for b1 being set holds (IC (Exec (I,b1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (b1,k))))
let s1 be State of SCM+FSA; :: thesis: (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k))))
set s2 = IncrIC (s1,k);
consider i1 being Element of NAT such that
A2: I = goto i1 by A1;
IC (Exec (I,s1)) = i1 by A2, SCMFSA_2:95;
hence (IC (Exec (I,s1))) + k = IC (Exec ((goto (i1 + k)),(IncrIC (s1,k)))) by SCMFSA_2:95
.= IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k)))) by A2, Th89 ;
:: thesis: verum
end;
suppose ex i1 being Element of NAT ex a being Int-Location st I = a =0_goto i1 ; :: thesis: I is IC-good
then consider a being Int-Location , i1 being Element of NAT such that
A3: I = a =0_goto i1 ;
let k be natural number ; :: according to AMISTD_2:def 18 :: thesis: for b1 being set holds (IC (Exec (I,b1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (b1,k))))
let s1 be State of SCM+FSA; :: thesis: (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k))))
set s2 = IncrIC (s1,k);
A5: dom ((IC SCM+FSA) .--> ((IC s1) + k)) = {(IC SCM+FSA)} by FUNCOP_1:19;
a <> IC SCM+FSA by SCMFSA_2:81;
then not a in dom ((IC SCM+FSA) .--> ((IC s1) + k)) by A5, TARSKI:def 1;
then A6: s1 . a = (IncrIC (s1,k)) . a by FUNCT_4:12;
now
per cases ( s1 . a = 0 or s1 . a <> 0 ) ;
suppose A7: s1 . a = 0 ; :: thesis: (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k))))
then IC (Exec (I,s1)) = i1 by A3, SCMFSA_2:96;
hence (IC (Exec (I,s1))) + k = IC (Exec ((a =0_goto (i1 + k)),(IncrIC (s1,k)))) by A6, A7, SCMFSA_2:96
.= IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k)))) by A3, Th90 ;
:: thesis: verum
end;
suppose A8: s1 . a <> 0 ; :: thesis: (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k))))
dom ((IC SCM+FSA) .--> ((IC s1) + k)) = {(IC SCM+FSA)} by FUNCOP_1:19;
then IC SCM+FSA in dom ((IC SCM+FSA) .--> ((IC s1) + k)) by TARSKI:def 1;
then A9: IC (IncrIC (s1,k)) = ((IC SCM+FSA) .--> ((IC s1) + k)) . (IC SCM+FSA) by FUNCT_4:14
.= (IC s1) + k by FUNCOP_1:87 ;
A10: IC (Exec (I,s1)) = succ (IC s1) by A3, A8, SCMFSA_2:96
.= (IC s1) + 1 ;
IC (Exec (I,(IncrIC (s1,k)))) = succ (IC (IncrIC (s1,k))) by A3, A6, A8, SCMFSA_2:96
.= ((IC s1) + k) + 1 by A9 ;
hence (IC (Exec (I,s1))) + k = succ (IC (IncrIC (s1,k))) by A3, A6, A8, A10, SCMFSA_2:96
.= IC (Exec ((a =0_goto (i1 + k)),(IncrIC (s1,k)))) by A6, A8, SCMFSA_2:96
.= IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k)))) by A3, Th90 ;
:: thesis: verum
end;
end;
end;
hence (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k)))) ; :: thesis: verum
end;
suppose ex i1 being Element of NAT ex a being Int-Location st I = a >0_goto i1 ; :: thesis: I is IC-good
then consider a being Int-Location , i1 being Element of NAT such that
A11: I = a >0_goto i1 ;
let k be natural number ; :: according to AMISTD_2:def 18 :: thesis: for b1 being set holds (IC (Exec (I,b1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (b1,k))))
let s1 be State of SCM+FSA; :: thesis: (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k))))
set s2 = IncrIC (s1,k);
A13: dom ((IC SCM+FSA) .--> ((IC s1) + k)) = {(IC SCM+FSA)} by FUNCOP_1:19;
a <> IC SCM+FSA by SCMFSA_2:81;
then not a in dom ((IC SCM+FSA) .--> ((IC s1) + k)) by A13, TARSKI:def 1;
then A14: s1 . a = (IncrIC (s1,k)) . a by FUNCT_4:12;
now
per cases ( s1 . a > 0 or s1 . a <= 0 ) ;
suppose A15: s1 . a > 0 ; :: thesis: (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k))))
then IC (Exec (I,s1)) = i1 by A11, SCMFSA_2:97;
hence (IC (Exec (I,s1))) + k = IC (Exec ((a >0_goto (i1 + k)),(IncrIC (s1,k)))) by A14, A15, SCMFSA_2:97
.= IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k)))) by A11, Th91 ;
:: thesis: verum
end;
suppose A16: s1 . a <= 0 ; :: thesis: (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k))))
dom ((IC SCM+FSA) .--> ((IC s1) + k)) = {(IC SCM+FSA)} by FUNCOP_1:19;
then IC SCM+FSA in dom ((IC SCM+FSA) .--> ((IC s1) + k)) by TARSKI:def 1;
then A17: IC (IncrIC (s1,k)) = ((IC SCM+FSA) .--> ((IC s1) + k)) . (IC SCM+FSA) by FUNCT_4:14
.= (IC s1) + k by FUNCOP_1:87 ;
A18: IC (Exec (I,s1)) = succ (IC s1) by A11, A16, SCMFSA_2:97
.= (IC s1) + 1 ;
IC (Exec (I,(IncrIC (s1,k)))) = succ (IC (IncrIC (s1,k))) by A11, A14, A16, SCMFSA_2:97
.= ((IC s1) + k) + 1 by A17 ;
hence (IC (Exec (I,s1))) + k = succ (IC (IncrIC (s1,k))) by A11, A14, A16, A18, SCMFSA_2:97
.= IC (Exec ((a >0_goto (i1 + k)),(IncrIC (s1,k)))) by A14, A16, SCMFSA_2:97
.= IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k)))) by A11, Th91 ;
:: thesis: verum
end;
end;
end;
hence (IC (Exec (I,s1))) + k = IC (Exec ((IncAddr (I,k)),(IncrIC (s1,k)))) ; :: thesis: verum
end;
suppose ex a, b being Int-Location ex f being FinSeq-Location st I = b := (f,a) ; :: thesis: I is IC-good
end;
suppose ex a, b being Int-Location ex f being FinSeq-Location st I = (f,a) := b ; :: thesis: I is IC-good
end;
suppose ex a being Int-Location ex f being FinSeq-Location st I = a :=len f ; :: thesis: I is IC-good
end;
suppose ex a being Int-Location ex f being FinSeq-Location st I = f :=<0,...,0> a ; :: thesis: I is IC-good
end;
end;