Article SCMFSA8C, MML version 4.99.1005
:: SCMFSA8C:th 2
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_pseudo-closed_on b1
for b3 being Element of NAT
st for b4 being Element of NAT
st b4 <= b3
holds IC Computation(b1 +* (b2 +* Start-At insloc 0),b4) in proj1 b2
holds b3 < pseudo-LifeSpan(b1,b2);
:: SCMFSA8C:th 8
theorem
for b1 being Element of the Instructions of SCM+FSA holds
IncAddr(b1,0) = b1;
:: SCMFSA8C:th 9
theorem
for b1 being finite programmed Element of sproduct the Object-Kind of SCM+FSA holds
ProgramPart Relocated(b1,0) = b1;
:: SCMFSA8C:th 10
theorem
for b1, b2 being finite Element of sproduct the Object-Kind of SCM+FSA
st b1 c= b2
holds ProgramPart b1 c= ProgramPart b2;
:: SCMFSA8C:th 12
theorem
for b1, b2 being finite Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
st b1 c= b2
holds ProgramPart Relocated(b1,b3) c= ProgramPart Relocated(b2,b3);
:: SCMFSA8C:th 13
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
st card b1 <= b3 & b3 < (card b1) + card b2
for b4 being Element of the Instructions of SCM+FSA
st b4 = b2 . insloc (b3 -' card b1)
holds (b1 ';' b2) . insloc b3 = IncAddr(b4,card b1);
:: SCMFSA8C:th 14
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
st b1 . intloc 0 = 1 & IC b1 = insloc 0
holds Initialize b1 = b1;
:: SCMFSA8C:th 15
theorem
for b1 being Element of product the Object-Kind of SCM+FSA holds
Initialize Initialize b1 = Initialize b1;
:: SCMFSA8C:th 16
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
b1 +* ((Initialized b2) +* Start-At insloc 0) = (Initialize b1) +* (b2 +* Start-At insloc 0);
:: SCMFSA8C:th 17
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
IExec(b2,b1) = IExec(b2,Initialize b1);
:: SCMFSA8C:th 18
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b1 . intloc 0 = 1
holds b1 +* (b2 +* Start-At insloc 0) = b1 +* Initialized b2;
:: SCMFSA8C:th 19
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
b1 +* Start-At insloc 0 c= Initialized b1;
:: SCMFSA8C:th 20
theorem
for b1 being Instruction-Location of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
b1 in proj1 b2
iff
b1 in proj1 Initialized b2;
:: SCMFSA8C:th 21
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
Initialized b2 is_closed_on b1
iff
b2 is_closed_on Initialize b1;
:: SCMFSA8C:th 22
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
Initialized b2 is_halting_on b1
iff
b2 is_halting_on Initialize b1;
:: SCMFSA8C:th 23
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st for b2 being Element of product the Object-Kind of SCM+FSA holds
b1 is_halting_on Initialize b2
holds Initialized b1 is halting(NAT, {INT,INT *}, SCM+FSA);
:: SCMFSA8C:th 24
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st for b2 being Element of product the Object-Kind of SCM+FSA holds
Initialized b1 is_halting_on b2
holds Initialized b1 is halting(NAT, {INT,INT *}, SCM+FSA);
:: SCMFSA8C:th 25
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
ProgramPart Initialized b1 = b1;
:: SCMFSA8C:th 26
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Instruction-Location of SCM+FSA
for b4 being set
st b4 in proj1 b2
holds b2 . b4 = (b1 +* (b2 +* Start-At b3)) . b4;
:: SCMFSA8C:th 27
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
st b1 . intloc 0 = 1
holds (Initialize b1) | (Int-Locations \/ FinSeq-Locations) = b1 | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 28
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location
for b4 being Instruction-Location of SCM+FSA holds
(b1 +* (b2 +* Start-At b4)) . b3 = b1 . b3;
:: SCMFSA8C:th 29
theorem
for b1 being finite programmed Element of sproduct the Object-Kind of SCM+FSA
for b2 being Instruction-Location of SCM+FSA holds
IC SCM+FSA in proj1 (b1 +* Start-At b2);
:: SCMFSA8C:th 30
theorem
for b1 being finite programmed Element of sproduct the Object-Kind of SCM+FSA
for b2 being Instruction-Location of SCM+FSA holds
(b1 +* Start-At b2) . IC SCM+FSA = b2;
:: SCMFSA8C:th 31
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite Element of sproduct the Object-Kind of SCM+FSA
for b3 being Instruction-Location of SCM+FSA holds
IC (b1 +* (b2 +* Start-At b3)) = b3;
:: SCMFSA8C:th 32
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being Element of the Instructions of SCM+FSA
st InsCode b2 in {0,6,7,8}
holds (Exec(b2,b1)) | (Int-Locations \/ FinSeq-Locations) = b1 | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 33
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
st b1 . intloc 0 = b2 . intloc 0 &
(for b3 being read-write Int-Location holds
b1 . b3 = b2 . b3) &
(for b3 being FinSeq-Location holds
b1 . b3 = b2 . b3)
holds b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 34
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed Element of sproduct the Object-Kind of SCM+FSA holds
(b1 +* b2) | (Int-Locations \/ FinSeq-Locations) = b1 | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 35
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA holds
(b1 +* (b2 | NAT)) | (Int-Locations \/ FinSeq-Locations) = b1 | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 36
theorem
for b1 being Element of product the Object-Kind of SCM+FSA holds
(Initialize b1) | NAT = b1 | NAT;
:: SCMFSA8C:th 37
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
(b2 +* (b1 | NAT)) | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 38
theorem
for b1 being Element of product the Object-Kind of SCM+FSA holds
IExec(SCM+FSA-Stop,b1) = (Initialize b1) +* Start-At insloc 0;
:: SCMFSA8C:th 39
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_closed_on b1
holds insloc 0 in proj1 b2;
:: SCMFSA8C:th 40
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial paraclosed Element of sproduct the Object-Kind of SCM+FSA holds
insloc 0 in proj1 b2;
:: SCMFSA8C:th 41
theorem
for b1 being Element of the Instructions of SCM+FSA holds
proj2 Macro b1 = {b1,halt SCM+FSA};
:: SCMFSA8C:th 42
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b3 is_closed_on b1 & b3 +* Start-At insloc 0 c= b1
for b4 being Element of NAT
st ProgramPart Relocated(b3,b4) c= b2 &
IC b2 = insloc b4 &
b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations)
for b5 being Element of NAT holds
(IC Computation(b1,b5)) + b4 = IC Computation(b2,b5) &
IncAddr(CurInstr Computation(b1,b5),b4) = CurInstr Computation(b2,b5) &
(Computation(b1,b5)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b2,b5)) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 43
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b3 is_closed_on b1 &
b3 +* Start-At insloc 0 c= b1 &
b3 +* Start-At insloc 0 c= b2 &
b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations)
for b4 being Element of NAT holds
IC Computation(b1,b4) = IC Computation(b2,b4) &
CurInstr Computation(b1,b4) = CurInstr Computation(b2,b4) &
(Computation(b1,b4)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b2,b4)) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 44
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b3 is_closed_on b1 &
b3 is_halting_on b1 &
b3 +* Start-At insloc 0 c= b1 &
b3 +* Start-At insloc 0 c= b2 &
b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations)
holds LifeSpan b1 = LifeSpan b2;
:: SCMFSA8C:th 45
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b1 . intloc 0 = 1 &
b3 is_closed_on b1 &
b3 is_halting_on b1 &
(for b4 being read-write Int-Location holds
b1 . b4 = b2 . b4) &
(for b4 being FinSeq-Location holds
b1 . b4 = b2 . b4)
holds (IExec(b3,b1)) | (Int-Locations \/ FinSeq-Locations) = (IExec(b3,b2)) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 46
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b1 . intloc 0 = 1 &
b3 is_closed_on b1 &
b3 is_halting_on b1 &
b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations)
holds (IExec(b3,b1)) | (Int-Locations \/ FinSeq-Locations) = (IExec(b3,b2)) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:funcreg 1
registration
let a1 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
cluster Initialized a1 -> finite initial;
end;
:: SCMFSA8C:th 47
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
Initialized b2 is_pseudo-closed_on b1
iff
b2 is_pseudo-closed_on Initialize b1;
:: SCMFSA8C:th 48
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_pseudo-closed_on Initialize b1
holds pseudo-LifeSpan(b1,Initialized b2) = pseudo-LifeSpan(Initialize b1,b2);
:: SCMFSA8C:th 49
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st Initialized b2 is_pseudo-closed_on b1
holds pseudo-LifeSpan(b1,Initialized b2) = pseudo-LifeSpan(Initialize b1,b2);
:: SCMFSA8C:th 50
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_pseudo-closed_on b1
holds b2 is_pseudo-closed_on b1 +* (b2 +* Start-At insloc 0) &
pseudo-LifeSpan(b1,b2) = pseudo-LifeSpan(b1 +* (b2 +* Start-At insloc 0),b2);
:: SCMFSA8C:th 51
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b3 +* Start-At insloc 0 c= b1 & b3 is_pseudo-closed_on b1
for b4 being Element of NAT
st ProgramPart Relocated(b3,b4) c= b2 &
IC b2 = insloc b4 &
b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations)
holds (for b5 being Element of NAT
st b5 < pseudo-LifeSpan(b1,b3)
holds IncAddr(CurInstr Computation(b1,b5),b4) = CurInstr Computation(b2,b5)) &
(for b5 being Element of NAT
st b5 <= pseudo-LifeSpan(b1,b3)
holds (IC Computation(b1,b5)) + b4 = IC Computation(b2,b5) &
(Computation(b1,b5)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b2,b5)) | (Int-Locations \/ FinSeq-Locations));
:: SCMFSA8C:th 52
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations) &
b3 is_pseudo-closed_on b1
holds b3 is_pseudo-closed_on b2;
:: SCMFSA8C:th 53
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b1 . intloc 0 = 1
holds b2 is_pseudo-closed_on b1
iff
b2 is_pseudo-closed_on Initialize b1;
:: SCMFSA8C:th 54
theorem
for b1 being Int-Location
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
insloc 0 in proj1 if=0(b1,b2,b3) & insloc 1 in proj1 if=0(b1,b2,b3) & insloc 0 in proj1 if>0(b1,b2,b3) & insloc 1 in proj1 if>0(b1,b2,b3);
:: SCMFSA8C:th 55
theorem
for b1 being Int-Location
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
(if=0(b1,b2,b3)) . insloc 0 = b1 =0_goto insloc ((card b3) + 3) &
(if=0(b1,b2,b3)) . insloc 1 = goto insloc 2 &
(if>0(b1,b2,b3)) . insloc 0 = b1 >0_goto insloc ((card b3) + 3) &
(if>0(b1,b2,b3)) . insloc 1 = goto insloc 2;
:: SCMFSA8C:th 56
theorem
for b1 being Int-Location
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being Element of NAT
st b4 < ((card b2) + card b3) + 3
holds b4 in proj1 if=0(b1,b2,b3) &
(if=0(b1,b2,b3)) . b4 <> halt SCM+FSA;
:: SCMFSA8C:th 57
theorem
for b1 being Int-Location
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being Element of NAT
st b4 < ((card b2) + card b3) + 3
holds b4 in proj1 if>0(b1,b2,b3) &
(if>0(b1,b2,b3)) . b4 <> halt SCM+FSA;
:: SCMFSA8C:th 58
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st Directed b2 is_pseudo-closed_on b1
holds b2 ';' SCM+FSA-Stop is_closed_on b1 &
b2 ';' SCM+FSA-Stop is_halting_on b1 &
LifeSpan (b1 +* ((b2 ';' SCM+FSA-Stop) +* Start-At insloc 0)) = pseudo-LifeSpan(b1,Directed b2) &
(for b3 being Element of NAT
st b3 < pseudo-LifeSpan(b1,Directed b2)
holds IC Computation(b1 +* (b2 +* Start-At insloc 0),b3) = IC Computation(b1 +* ((b2 ';' SCM+FSA-Stop) +* Start-At insloc 0),b3)) &
(for b3 being Element of NAT
st b3 <= pseudo-LifeSpan(b1,Directed b2)
holds (Computation(b1 +* (b2 +* Start-At insloc 0),b3)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b1 +* ((b2 ';' SCM+FSA-Stop) +* Start-At insloc 0),b3)) | (Int-Locations \/ FinSeq-Locations));
:: SCMFSA8C:th 59
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st Directed b2 is_pseudo-closed_on b1
holds (Result (b1 +* ((b2 ';' SCM+FSA-Stop) +* Start-At insloc 0))) | (Int-Locations \/ FinSeq-Locations) = (Computation(b1 +* (b2 +* Start-At insloc 0),pseudo-LifeSpan(b1,Directed b2))) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 60
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b1 . intloc 0 = 1 & Directed b2 is_pseudo-closed_on b1
holds (IExec(b2 ';' SCM+FSA-Stop,b1)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b1 +* (b2 +* Start-At insloc 0),pseudo-LifeSpan(b1,Directed b2))) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 61
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location holds
(if=0(b3,b1,b2)) . insloc (((card b1) + card b2) + 3) = halt SCM+FSA;
:: SCMFSA8C:th 62
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location holds
(if>0(b3,b1,b2)) . insloc (((card b1) + card b2) + 3) = halt SCM+FSA;
:: SCMFSA8C:th 63
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location holds
(if=0(b3,b1,b2)) . insloc ((card b2) + 2) = goto insloc (((card b1) + card b2) + 3);
:: SCMFSA8C:th 64
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location holds
(if>0(b3,b1,b2)) . insloc ((card b2) + 2) = goto insloc (((card b1) + card b2) + 3);
:: SCMFSA8C:th 65
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Int-Location holds
(if=0(b2,Goto insloc 2,b1)) . insloc ((card b1) + 3) = goto insloc ((card b1) + 5);
:: SCMFSA8C:th 66
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st b1 . b4 = 0 & Directed b2 is_pseudo-closed_on b1
holds if=0(b4,b2,b3) is_halting_on b1 &
if=0(b4,b2,b3) is_closed_on b1 &
LifeSpan (b1 +* ((if=0(b4,b2,b3)) +* Start-At insloc 0)) = (LifeSpan (b1 +* ((b2 ';' SCM+FSA-Stop) +* Start-At insloc 0))) + 1;
:: SCMFSA8C:th 67
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st b1 . intloc 0 = 1 & b1 . b4 = 0 & Directed b2 is_pseudo-closed_on b1
holds (IExec(if=0(b4,b2,b3),b1)) | (Int-Locations \/ FinSeq-Locations) = (IExec(b2 ';' SCM+FSA-Stop,b1)) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 68
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st 0 < b1 . b4 & Directed b2 is_pseudo-closed_on b1
holds if>0(b4,b2,b3) is_halting_on b1 &
if>0(b4,b2,b3) is_closed_on b1 &
LifeSpan (b1 +* ((if>0(b4,b2,b3)) +* Start-At insloc 0)) = (LifeSpan (b1 +* ((b2 ';' SCM+FSA-Stop) +* Start-At insloc 0))) + 1;
:: SCMFSA8C:th 69
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st b1 . intloc 0 = 1 & 0 < b1 . b4 & Directed b2 is_pseudo-closed_on b1
holds (IExec(if>0(b4,b2,b3),b1)) | (Int-Locations \/ FinSeq-Locations) = (IExec(b2 ';' SCM+FSA-Stop,b1)) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 70
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st b1 . b4 <> 0 & Directed b3 is_pseudo-closed_on b1
holds if=0(b4,b2,b3) is_halting_on b1 &
if=0(b4,b2,b3) is_closed_on b1 &
LifeSpan (b1 +* ((if=0(b4,b2,b3)) +* Start-At insloc 0)) = (LifeSpan (b1 +* ((b3 ';' SCM+FSA-Stop) +* Start-At insloc 0))) + 3;
:: SCMFSA8C:th 71
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st b1 . intloc 0 = 1 & b1 . b4 <> 0 & Directed b3 is_pseudo-closed_on b1
holds (IExec(if=0(b4,b2,b3),b1)) | (Int-Locations \/ FinSeq-Locations) = (IExec(b3 ';' SCM+FSA-Stop,b1)) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 72
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st b1 . b4 <= 0 & Directed b3 is_pseudo-closed_on b1
holds if>0(b4,b2,b3) is_halting_on b1 &
if>0(b4,b2,b3) is_closed_on b1 &
LifeSpan (b1 +* ((if>0(b4,b2,b3)) +* Start-At insloc 0)) = (LifeSpan (b1 +* ((b3 ';' SCM+FSA-Stop) +* Start-At insloc 0))) + 3;
:: SCMFSA8C:th 73
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st b1 . intloc 0 = 1 & b1 . b4 <= 0 & Directed b3 is_pseudo-closed_on b1
holds (IExec(if>0(b4,b2,b3),b1)) | (Int-Locations \/ FinSeq-Locations) = (IExec(b3 ';' SCM+FSA-Stop,b1)) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 74
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st Directed b2 is_pseudo-closed_on b1 & Directed b3 is_pseudo-closed_on b1
holds if=0(b4,b2,b3) is_closed_on b1 & if=0(b4,b2,b3) is_halting_on b1;
:: SCMFSA8C:th 75
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location
st Directed b2 is_pseudo-closed_on b1 & Directed b3 is_pseudo-closed_on b1
holds if>0(b4,b2,b3) is_closed_on b1 & if>0(b4,b2,b3) is_halting_on b1;
:: SCMFSA8C:th 76
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Int-Location
st b1 does_not_destroy b2
holds Directed b1 does_not_destroy b2;
:: SCMFSA8C:th 77
theorem
for b1 being Element of the Instructions of SCM+FSA
for b2 being Int-Location
st b1 does_not_destroy b2
holds Macro b1 does_not_destroy b2;
:: SCMFSA8C:th 78
theorem
for b1 being Int-Location holds
halt SCM+FSA does_not_refer b1;
:: SCMFSA8C:th 79
theorem
for b1, b2, b3 being Int-Location
st b1 <> b2
holds AddTo(b3,b2) does_not_refer b1;
:: SCMFSA8C:th 80
theorem
for b1 being Element of the Instructions of SCM+FSA
for b2 being Int-Location
st b1 does_not_refer b2
holds Macro b1 does_not_refer b2;
:: SCMFSA8C:th 81
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location
st b1 does_not_destroy b3 & b2 does_not_destroy b3
holds b1 ';' b2 does_not_destroy b3;
:: SCMFSA8C:th 82
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Element of the Instructions of SCM+FSA
for b3 being Int-Location
st b2 does_not_destroy b3 & b1 does_not_destroy b3
holds b2 ';' b1 does_not_destroy b3;
:: SCMFSA8C:th 83
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Element of the Instructions of SCM+FSA
for b3 being Int-Location
st b1 does_not_destroy b3 & b2 does_not_destroy b3
holds b1 ';' b2 does_not_destroy b3;
:: SCMFSA8C:th 84
theorem
for b1, b2 being Element of the Instructions of SCM+FSA
for b3 being Int-Location
st b1 does_not_destroy b3 & b2 does_not_destroy b3
holds b1 ';' b2 does_not_destroy b3;
:: SCMFSA8C:th 85
theorem
for b1 being Int-Location holds
SCM+FSA-Stop does_not_destroy b1;
:: SCMFSA8C:th 86
theorem
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds
Goto b2 does_not_destroy b1;
:: SCMFSA8C:th 87
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_halting_on Initialize b1
holds (for b3 being read-write Int-Location holds
(IExec(b2,b1)) . b3 = (Computation((Initialize b1) +* (b2 +* Start-At insloc 0),LifeSpan ((Initialize b1) +* (b2 +* Start-At insloc 0)))) . b3) &
(for b3 being FinSeq-Location holds
(IExec(b2,b1)) . b3 = (Computation((Initialize b1) +* (b2 +* Start-At insloc 0),LifeSpan ((Initialize b1) +* (b2 +* Start-At insloc 0)))) . b3);
:: SCMFSA8C:th 88
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location holds
(IExec(b2,b1)) . b3 = (Computation((Initialize b1) +* (b2 +* Start-At insloc 0),LifeSpan ((Initialize b1) +* (b2 +* Start-At insloc 0)))) . b3;
:: SCMFSA8C:th 89
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location
for b4 being Element of NAT
st b2 is_closed_on Initialize b1 & b2 is_halting_on Initialize b1 & b2 does_not_destroy b3
holds (IExec(b2,b1)) . b3 = (Computation((Initialize b1) +* (b2 +* Start-At insloc 0),b4)) . b3;
:: SCMFSA8C:th 90
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location
for b4 being Element of NAT
st b2 does_not_destroy b3
holds (IExec(b2,b1)) . b3 = (Computation((Initialize b1) +* (b2 +* Start-At insloc 0),b4)) . b3;
:: SCMFSA8C:th 91
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location
st b2 does_not_destroy b3
holds (IExec(b2,b1)) . b3 = (Initialize b1) . b3;
:: SCMFSA8C:th 92
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial keeping_0 Element of sproduct the Object-Kind of SCM+FSA
st b2 is_halting_on Initialize b1
holds (IExec(b2,b1)) . intloc 0 = 1 &
(for b3 being Element of NAT holds
(Computation((Initialize b1) +* (b2 +* Start-At insloc 0),b3)) . intloc 0 = 1);
:: SCMFSA8C:th 93
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location
st b2 does_not_destroy b3
for b4 being Element of NAT
st IC Computation(b1 +* (b2 +* Start-At insloc 0),b4) in proj1 b2
holds (Computation(b1 +* (b2 +* Start-At insloc 0),b4 + 1)) . b3 = (Computation(b1 +* (b2 +* Start-At insloc 0),b4)) . b3;
:: SCMFSA8C:th 94
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location
st b2 does_not_destroy b3
for b4 being Element of NAT
st for b5 being Element of NAT
st b5 < b4
holds IC Computation(b1 +* (b2 +* Start-At insloc 0),b5) in proj1 b2
for b5 being Element of NAT
st b5 <= b4
holds (Computation(b1 +* (b2 +* Start-At insloc 0),b5)) . b3 = b1 . b3;
:: SCMFSA8C:th 95
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial good Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
st for b4 being Element of NAT
st b4 < b3
holds IC Computation(b1 +* (b2 +* Start-At insloc 0),b4) in proj1 b2
for b4 being Element of NAT
st b4 <= b3
holds (Computation(b1 +* (b2 +* Start-At insloc 0),b4)) . intloc 0 = b1 . intloc 0;
:: SCMFSA8C:th 96
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial good Element of sproduct the Object-Kind of SCM+FSA
st b2 is_halting_on Initialize b1 & b2 is_closed_on Initialize b1
holds (IExec(b2,b1)) . intloc 0 = 1 &
(for b3 being Element of NAT holds
(Computation((Initialize b1) +* (b2 +* Start-At insloc 0),b3)) . intloc 0 = 1);
:: SCMFSA8C:th 97
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial good Element of sproduct the Object-Kind of SCM+FSA
st b2 is_closed_on b1
for b3 being Element of NAT holds
(Computation(b1 +* (b2 +* Start-At insloc 0),b3)) . intloc 0 = b1 . intloc 0;
:: SCMFSA8C:th 98
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting keeping_0 Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
st b2 does_not_destroy b3
holds (Computation((Initialize b1) +* ((b2 ';' SubFrom(b3,intloc 0)) +* Start-At insloc 0),LifeSpan ((Initialize b1) +* ((b2 ';' SubFrom(b3,intloc 0)) +* Start-At insloc 0)))) . b3 = (b1 . b3) - 1;
:: SCMFSA8C:th 99
theorem
for b1 being Element of the Instructions of SCM+FSA
st b1 does_not_destroy intloc 0
holds Macro b1 is good;
:: SCMFSA8C:th 100
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b3 is_closed_on b1 &
b3 is_halting_on b1 &
b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations)
for b4 being Element of NAT holds
Computation(b1 +* (b3 +* Start-At insloc 0),b4),Computation(b2 +* (b3 +* Start-At insloc 0),b4) equal_outside NAT &
CurInstr Computation(b1 +* (b3 +* Start-At insloc 0),b4) = CurInstr Computation(b2 +* (b3 +* Start-At insloc 0),b4);
:: SCMFSA8C:th 101
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b3 is_closed_on b1 &
b3 is_halting_on b1 &
b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations)
holds LifeSpan (b1 +* (b3 +* Start-At insloc 0)) = LifeSpan (b2 +* (b3 +* Start-At insloc 0)) &
Result (b1 +* (b3 +* Start-At insloc 0)),Result (b2 +* (b3 +* Start-At insloc 0)) equal_outside NAT;
:: SCMFSA8C:th 103
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b3 is_closed_on b1 &
b3 is_halting_on b1 &
b3 +* Start-At insloc 0 c= b1 &
b3 +* Start-At insloc 0 c= b2 &
(ex b4 being Element of NAT st
Computation(b1,b4),b2 equal_outside NAT)
holds Result b1,Result b2 equal_outside NAT;
:: SCMFSA8C:funcreg 2
registration
let a1 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
let a2 be Element of NAT;
cluster IncAddr(a1,a2) -> finite programmed initial;
end;
:: SCMFSA8C:funcnot 1 => SCMFSA8C:func 1
definition
let a1 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
func loop A1 -> finite programmed initial halt-free Element of sproduct the Object-Kind of SCM+FSA equals
a1 * ((id the Instructions of SCM+FSA) +* ((halt SCM+FSA) .--> goto insloc 0));
end;
:: SCMFSA8C:def 4
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
loop b1 = b1 * ((id the Instructions of SCM+FSA) +* ((halt SCM+FSA) .--> goto insloc 0));
:: SCMFSA8C:th 105
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Int-Location
st b1 does_not_destroy b2
holds loop b1 does_not_destroy b2;
:: SCMFSA8C:funcreg 3
registration
let a1 be finite programmed initial good Element of sproduct the Object-Kind of SCM+FSA;
cluster loop a1 -> finite programmed initial good halt-free;
end;
:: SCMFSA8C:th 106
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
proj1 loop b1 = proj1 b1;
:: SCMFSA8C:th 107
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
not halt SCM+FSA in proj2 loop b1;
:: SCMFSA8C:th 108
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being set
st b1 . b2 <> halt SCM+FSA
holds (loop b1) . b2 = b1 . b2;
:: SCMFSA8C:th 109
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_closed_on b1 & b2 is_halting_on b1
for b3 being Element of NAT
st b3 <= LifeSpan (b1 +* (b2 +* Start-At insloc 0))
holds Computation(b1 +* (b2 +* Start-At insloc 0),b3),Computation(b1 +* ((loop b2) +* Start-At insloc 0),b3) equal_outside NAT;
:: SCMFSA8C:th 110
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_closed_on b1 & b2 is_halting_on b1
for b3 being Element of NAT
st b3 < LifeSpan (b1 +* (b2 +* Start-At insloc 0))
holds CurInstr Computation(b1 +* (b2 +* Start-At insloc 0),b3) = CurInstr Computation(b1 +* ((loop b2) +* Start-At insloc 0),b3);
:: SCMFSA8C:th 111
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_closed_on b1 & b2 is_halting_on b1
for b3 being Element of NAT
st b3 <= LifeSpan (b1 +* (b2 +* Start-At insloc 0))
holds CurInstr Computation(b1 +* ((loop b2) +* Start-At insloc 0),b3) <> halt SCM+FSA;
:: SCMFSA8C:th 112
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
st b2 is_closed_on b1 & b2 is_halting_on b1
holds CurInstr Computation(b1 +* ((loop b2) +* Start-At insloc 0),LifeSpan (b1 +* (b2 +* Start-At insloc 0))) = goto insloc 0;
:: SCMFSA8C:th 113
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial paraclosed Element of sproduct the Object-Kind of SCM+FSA
st b2 +* Start-At insloc 0 c= b1 &
b1 is halting(NAT, {INT,INT *}, SCM+FSA)
for b3 being Element of NAT
st b3 <= LifeSpan b1
holds Computation(b1,b3),Computation(b1 +* loop b2,b3) equal_outside NAT;
:: SCMFSA8C:th 114
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
st Initialized b2 c= b1
for b3 being Element of NAT
st b3 <= LifeSpan b1
holds CurInstr Computation(b1 +* loop b2,b3) <> halt SCM+FSA;
:: SCMFSA8C:funcnot 2 => SCMFSA8C:func 2
definition
let a1 be Int-Location;
let a2 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
func Times(A1,A2) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
if>0(a1,loop if=0(a1,Goto insloc 2,a2 ';' SubFrom(a1,intloc 0)),SCM+FSA-Stop);
end;
:: SCMFSA8C:def 5
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
Times(b1,b2) = if>0(b1,loop if=0(b1,Goto insloc 2,b2 ';' SubFrom(b1,intloc 0)),SCM+FSA-Stop);
:: SCMFSA8C:th 115
theorem
for b1 being finite programmed initial good Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location holds
if=0(b2,Goto insloc 2,b1 ';' SubFrom(b2,intloc 0)) is good;
:: SCMFSA8C:th 116
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location holds
(if=0(b3,Goto insloc 2,b1 ';' SubFrom(b3,intloc 0))) . insloc ((card (b1 ';' SubFrom(b3,intloc 0))) + 3) = goto insloc ((card (b1 ';' SubFrom(b3,intloc 0))) + 5);
:: SCMFSA8C:th 117
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting good Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
st b2 does_not_destroy b3 & b1 . intloc 0 = 1 & 0 < b1 . b3
holds loop if=0(b3,Goto insloc 2,b2 ';' SubFrom(b3,intloc 0)) is_pseudo-closed_on b1;
:: SCMFSA8C:th 118
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting good Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
st b2 does_not_destroy b3 & 0 < b1 . b3
holds Initialized loop if=0(b3,Goto insloc 2,b2 ';' SubFrom(b3,intloc 0)) is_pseudo-closed_on b1;
:: SCMFSA8C:th 119
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting good Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
st b2 does_not_destroy b3 & b1 . intloc 0 = 1
holds Times(b3,b2) is_closed_on b1 & Times(b3,b2) is_halting_on b1;
:: SCMFSA8C:th 120
theorem
for b1 being finite programmed initial parahalting good Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
st b1 does_not_destroy b2
holds Initialized Times(b2,b1) is halting(NAT, {INT,INT *}, SCM+FSA);
:: SCMFSA8C:th 121
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3, b4 being Int-Location
st b1 does_not_destroy b4 & b2 does_not_destroy b4
holds if=0(b3,b1,b2) does_not_destroy b4 & if>0(b3,b1,b2) does_not_destroy b4;
:: SCMFSA8C:th 122
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting good Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
st b2 does_not_destroy b3 & b1 . intloc 0 = 1 & 0 < b1 . b3
holds ex b4 being Element of product the Object-Kind of SCM+FSA st
ex b5 being Element of NAT st
b4 = b1 +* ((loop if=0(b3,Goto insloc 2,b2 ';' SubFrom(b3,intloc 0))) +* Start-At insloc 0) &
b5 = (LifeSpan (b1 +* ((if=0(b3,Goto insloc 2,b2 ';' SubFrom(b3,intloc 0))) +* Start-At insloc 0))) + 1 &
(Computation(b4,b5)) . b3 = (b1 . b3) - 1 &
(Computation(b4,b5)) . intloc 0 = 1 &
(for b6 being read-write Int-Location
st b6 <> b3
holds (Computation(b4,b5)) . b6 = (IExec(b2,b1)) . b6) &
(for b6 being FinSeq-Location holds
(Computation(b4,b5)) . b6 = (IExec(b2,b1)) . b6) &
IC Computation(b4,b5) = insloc 0 &
(for b6 being Element of NAT
st b6 <= b5
holds IC Computation(b4,b6) in proj1 loop if=0(b3,Goto insloc 2,b2 ';' SubFrom(b3,intloc 0)));
:: SCMFSA8C:th 123
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting good Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
st b1 . intloc 0 = 1 & b1 . b3 <= 0
holds (IExec(Times(b3,b2),b1)) | (Int-Locations \/ FinSeq-Locations) = b1 | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 124
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being finite programmed initial parahalting good Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
st b2 does_not_destroy b3 & 0 < b1 . b3
holds (IExec(b2 ';' SubFrom(b3,intloc 0),b1)) . b3 = (b1 . b3) - 1 &
(IExec(Times(b3,b2),b1)) | (Int-Locations \/ FinSeq-Locations) = (IExec(Times(b3,b2),IExec(b2 ';' SubFrom(b3,intloc 0),b1))) | (Int-Locations \/ FinSeq-Locations);
:: SCMFSA8C:th 125
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3, b4 being read-write Int-Location
st b2 <> b3 & b2 <> b4 & b3 <> b4 & 0 <= b1 . b2
holds (IExec(Times(b2,Macro AddTo(b3,b4)),b1)) . b3 = (b1 . b3) + ((b1 . b4) * (b1 . b2));