:: SCMFSA8B semantic presentation

set c1 = the Instruction-Locations of SCM+FSA ;

set c2 = Int-Locations \/ FinSeq-Locations ;

Lemma1: for b1 being Instruction-Location of SCM+FSA holds goto b1 <> halt SCM+FSA
by SCMFSA_2:47, SCMFSA_2:124;

Lemma2: for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds b1 =0_goto b2 <> halt SCM+FSA
by SCMFSA_2:48, SCMFSA_2:124;

Lemma3: for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds b1 >0_goto b2 <> halt SCM+FSA
by SCMFSA_2:49, SCMFSA_2:124;

Lemma4: for b1, b2 being Macro-Instruction holds ProgramPart (Relocated b2,(card b1)) c= b1 ';' b2
proof end;

theorem Th1: :: SCMFSA8B:1
for b1 being State of SCM+FSA holds IC SCM+FSA in dom b1
proof end;

theorem Th2: :: SCMFSA8B:2
for b1 being State of SCM+FSA
for b2 being Instruction-Location of SCM+FSA holds b2 in dom b1
proof end;

theorem Th3: :: SCMFSA8B:3
for b1 being Macro-Instruction
for b2 being State of SCM+FSA st b1 is_closed_on b2 holds
insloc 0 in dom b1
proof end;

theorem Th4: :: SCMFSA8B:4
for b1 being State of SCM+FSA
for b2, b3 being Instruction-Location of SCM+FSA holds (b1 +* (Start-At b2)) +* (Start-At b3) = b1 +* (Start-At b3)
proof end;

theorem Th5: :: SCMFSA8B:5
for b1 being State of SCM+FSA
for b2 being Macro-Instruction holds (Initialize b1) | (Int-Locations \/ FinSeq-Locations ) = (b1 +* (Initialized b2)) | (Int-Locations \/ FinSeq-Locations )
proof end;

theorem Th6: :: SCMFSA8B:6
for b1, b2 being State of SCM+FSA
for b3 being Macro-Instruction st b1 | (Int-Locations \/ FinSeq-Locations ) = b2 | (Int-Locations \/ FinSeq-Locations ) & b3 is_closed_on b1 holds
b3 is_closed_on b2
proof end;

theorem Th7: :: SCMFSA8B:7
for b1, b2 being State of SCM+FSA
for b3, b4 being Macro-Instruction st b1 | (Int-Locations \/ FinSeq-Locations ) = b2 | (Int-Locations \/ FinSeq-Locations ) holds
b1 +* (b3 +* (Start-At (insloc 0))),b2 +* (b4 +* (Start-At (insloc 0))) equal_outside the Instruction-Locations of SCM+FSA
proof end;

theorem Th8: :: SCMFSA8B:8
for b1, b2 being State of SCM+FSA
for b3 being Macro-Instruction st b1 | (Int-Locations \/ FinSeq-Locations ) = b2 | (Int-Locations \/ FinSeq-Locations ) & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( b3 is_closed_on b2 & b3 is_halting_on b2 )
proof end;

theorem Th9: :: SCMFSA8B:9
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction holds
( b2 is_closed_on Initialize b1 iff b2 is_closed_on b1 +* (Initialized b3) )
proof end;

theorem Th10: :: SCMFSA8B:10
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being Instruction-Location of SCM+FSA holds
( b2 is_closed_on b1 iff b2 is_closed_on b1 +* (b2 +* (Start-At b4)) )
proof end;

theorem Th11: :: SCMFSA8B:11
for b1, b2 being State of SCM+FSA
for b3 being Macro-Instruction st b3 +* (Start-At (insloc 0)) c= b1 & b3 is_closed_on b1 holds
for b4 being 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 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 ) )
proof end;

theorem Th12: :: SCMFSA8B:12
for b1 being State of SCM+FSA
for b2 being parahalting keeping_0 Instruction of SCM+FSA
for b3 being parahalting Macro-Instruction
for b4 being Int-Location holds (IExec (b2 ';' b3),b1) . b4 = (IExec b3,(Exec b2,(Initialize b1))) . b4
proof end;

theorem Th13: :: SCMFSA8B:13
for b1 being State of SCM+FSA
for b2 being parahalting keeping_0 Instruction of SCM+FSA
for b3 being parahalting Macro-Instruction
for b4 being FinSeq-Location holds (IExec (b2 ';' b3),b1) . b4 = (IExec b3,(Exec b2,(Initialize b1))) . b4
proof end;

definition
let c3 be Int-Location ;
let c4, c5 be Macro-Instruction;
func if=0 c1,c2,c3 -> Macro-Instruction equals :: SCMFSA8B:def 1
((((a1 =0_goto (insloc ((card a3) + 3))) ';' a3) ';' (Goto (insloc ((card a2) + 1)))) ';' a2) ';' SCM+FSA-Stop ;
coherence
((((c3 =0_goto (insloc ((card c5) + 3))) ';' c5) ';' (Goto (insloc ((card c4) + 1)))) ';' c4) ';' SCM+FSA-Stop is Macro-Instruction
;
func if>0 c1,c2,c3 -> Macro-Instruction equals :: SCMFSA8B:def 2
((((a1 >0_goto (insloc ((card a3) + 3))) ';' a3) ';' (Goto (insloc ((card a2) + 1)))) ';' a2) ';' SCM+FSA-Stop ;
coherence
((((c3 >0_goto (insloc ((card c5) + 3))) ';' c5) ';' (Goto (insloc ((card c4) + 1)))) ';' c4) ';' SCM+FSA-Stop is Macro-Instruction
;
end;

:: deftheorem Def1 defines if=0 SCMFSA8B:def 1 :
for b1 being Int-Location
for b2, b3 being Macro-Instruction holds if=0 b1,b2,b3 = ((((b1 =0_goto (insloc ((card b3) + 3))) ';' b3) ';' (Goto (insloc ((card b2) + 1)))) ';' b2) ';' SCM+FSA-Stop ;

:: deftheorem Def2 defines if>0 SCMFSA8B:def 2 :
for b1 being Int-Location
for b2, b3 being Macro-Instruction holds if>0 b1,b2,b3 = ((((b1 >0_goto (insloc ((card b3) + 3))) ';' b3) ';' (Goto (insloc ((card b2) + 1)))) ';' b2) ';' SCM+FSA-Stop ;

definition
let c3 be Int-Location ;
let c4, c5 be Macro-Instruction;
func if<0 c1,c2,c3 -> Macro-Instruction equals :: SCMFSA8B:def 3
if=0 a1,a3,(if>0 a1,a3,a2);
coherence
if=0 c3,c5,(if>0 c3,c5,c4) is Macro-Instruction
;
end;

:: deftheorem Def3 defines if<0 SCMFSA8B:def 3 :
for b1 being Int-Location
for b2, b3 being Macro-Instruction holds if<0 b1,b2,b3 = if=0 b1,b3,(if>0 b1,b3,b2);

Lemma18: for b1 being Int-Location
for b2, b3 being Macro-Instruction holds
( insloc 0 in dom (if=0 b1,b2,b3) & insloc 1 in dom (if=0 b1,b2,b3) & insloc 0 in dom (if>0 b1,b2,b3) & insloc 1 in dom (if>0 b1,b2,b3) )
proof end;

Lemma19: for b1 being Int-Location
for b2, b3 being Macro-Instruction 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) )
proof end;

theorem Th14: :: SCMFSA8B:14
for b1, b2 being Macro-Instruction
for b3 being Int-Location holds card (if=0 b3,b1,b2) = ((card b1) + (card b2)) + 4
proof end;

theorem Th15: :: SCMFSA8B:15
for b1, b2 being Macro-Instruction
for b3 being Int-Location holds card (if>0 b3,b1,b2) = ((card b1) + (card b2)) + 4
proof end;

theorem Th16: :: SCMFSA8B:16
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 = 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if=0 b4,b2,b3 is_closed_on b1 & if=0 b4,b2,b3 is_halting_on b1 )
proof end;

theorem Th17: :: SCMFSA8B:17
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 = 0 & b2 is_closed_on Initialize b1 & b2 is_halting_on Initialize b1 holds
IExec (if=0 b4,b2,b3),b1 = (IExec b2,b1) +* (Start-At (insloc (((card b2) + (card b3)) + 3)))
proof end;

theorem Th18: :: SCMFSA8B:18
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 <> 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( if=0 b4,b2,b3 is_closed_on b1 & if=0 b4,b2,b3 is_halting_on b1 )
proof end;

theorem Th19: :: SCMFSA8B:19
for b1, b2 being Macro-Instruction
for b3 being read-write Int-Location
for b4 being State of SCM+FSA st b4 . b3 <> 0 & b2 is_closed_on Initialize b4 & b2 is_halting_on Initialize b4 holds
IExec (if=0 b3,b1,b2),b4 = (IExec b2,b4) +* (Start-At (insloc (((card b1) + (card b2)) + 3)))
proof end;

theorem Th20: :: SCMFSA8B:20
for b1 being State of SCM+FSA
for b2, b3 being parahalting Macro-Instruction
for b4 being read-write Int-Location holds
( if=0 b4,b2,b3 is parahalting & ( b1 . b4 = 0 implies IExec (if=0 b4,b2,b3),b1 = (IExec b2,b1) +* (Start-At (insloc (((card b2) + (card b3)) + 3))) ) & ( b1 . b4 <> 0 implies IExec (if=0 b4,b2,b3),b1 = (IExec b3,b1) +* (Start-At (insloc (((card b2) + (card b3)) + 3))) ) )
proof end;

theorem Th21: :: SCMFSA8B:21
for b1 being State of SCM+FSA
for b2, b3 being parahalting Macro-Instruction
for b4 being read-write Int-Location holds
( IC (IExec (if=0 b4,b2,b3),b1) = insloc (((card b2) + (card b3)) + 3) & ( b1 . b4 = 0 implies ( ( for b5 being Int-Location holds (IExec (if=0 b4,b2,b3),b1) . b5 = (IExec b2,b1) . b5 ) & ( for b5 being FinSeq-Location holds (IExec (if=0 b4,b2,b3),b1) . b5 = (IExec b2,b1) . b5 ) ) ) & ( b1 . b4 <> 0 implies ( ( for b5 being Int-Location holds (IExec (if=0 b4,b2,b3),b1) . b5 = (IExec b3,b1) . b5 ) & ( for b5 being FinSeq-Location holds (IExec (if=0 b4,b2,b3),b1) . b5 = (IExec b3,b1) . b5 ) ) ) )
proof end;

theorem Th22: :: SCMFSA8B:22
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 > 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if>0 b4,b2,b3 is_closed_on b1 & if>0 b4,b2,b3 is_halting_on b1 )
proof end;

theorem Th23: :: SCMFSA8B:23
for b1, b2 being Macro-Instruction
for b3 being read-write Int-Location
for b4 being State of SCM+FSA st b4 . b3 > 0 & b1 is_closed_on Initialize b4 & b1 is_halting_on Initialize b4 holds
IExec (if>0 b3,b1,b2),b4 = (IExec b1,b4) +* (Start-At (insloc (((card b1) + (card b2)) + 3)))
proof end;

theorem Th24: :: SCMFSA8B:24
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 <= 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( if>0 b4,b2,b3 is_closed_on b1 & if>0 b4,b2,b3 is_halting_on b1 )
proof end;

theorem Th25: :: SCMFSA8B:25
for b1, b2 being Macro-Instruction
for b3 being read-write Int-Location
for b4 being State of SCM+FSA st b4 . b3 <= 0 & b2 is_closed_on Initialize b4 & b2 is_halting_on Initialize b4 holds
IExec (if>0 b3,b1,b2),b4 = (IExec b2,b4) +* (Start-At (insloc (((card b1) + (card b2)) + 3)))
proof end;

theorem Th26: :: SCMFSA8B:26
for b1 being State of SCM+FSA
for b2, b3 being parahalting Macro-Instruction
for b4 being read-write Int-Location holds
( if>0 b4,b2,b3 is parahalting & ( b1 . b4 > 0 implies IExec (if>0 b4,b2,b3),b1 = (IExec b2,b1) +* (Start-At (insloc (((card b2) + (card b3)) + 3))) ) & ( b1 . b4 <= 0 implies IExec (if>0 b4,b2,b3),b1 = (IExec b3,b1) +* (Start-At (insloc (((card b2) + (card b3)) + 3))) ) )
proof end;

theorem Th27: :: SCMFSA8B:27
for b1 being State of SCM+FSA
for b2, b3 being parahalting Macro-Instruction
for b4 being read-write Int-Location holds
( IC (IExec (if>0 b4,b2,b3),b1) = insloc (((card b2) + (card b3)) + 3) & ( b1 . b4 > 0 implies ( ( for b5 being Int-Location holds (IExec (if>0 b4,b2,b3),b1) . b5 = (IExec b2,b1) . b5 ) & ( for b5 being FinSeq-Location holds (IExec (if>0 b4,b2,b3),b1) . b5 = (IExec b2,b1) . b5 ) ) ) & ( b1 . b4 <= 0 implies ( ( for b5 being Int-Location holds (IExec (if>0 b4,b2,b3),b1) . b5 = (IExec b3,b1) . b5 ) & ( for b5 being FinSeq-Location holds (IExec (if>0 b4,b2,b3),b1) . b5 = (IExec b3,b1) . b5 ) ) ) )
proof end;

theorem Th28: :: SCMFSA8B:28
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 < 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if<0 b4,b2,b3 is_closed_on b1 & if<0 b4,b2,b3 is_halting_on b1 )
proof end;

theorem Th29: :: SCMFSA8B:29
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 < 0 & b2 is_closed_on Initialize b1 & b2 is_halting_on Initialize b1 holds
IExec (if<0 b4,b2,b3),b1 = (IExec b2,b1) +* (Start-At (insloc ((((card b2) + (card b3)) + (card b3)) + 7)))
proof end;

theorem Th30: :: SCMFSA8B:30
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 = 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( if<0 b4,b2,b3 is_closed_on b1 & if<0 b4,b2,b3 is_halting_on b1 ) by Th16;

theorem Th31: :: SCMFSA8B:31
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 = 0 & b3 is_closed_on Initialize b1 & b3 is_halting_on Initialize b1 holds
IExec (if<0 b4,b2,b3),b1 = (IExec b3,b1) +* (Start-At (insloc ((((card b2) + (card b3)) + (card b3)) + 7)))
proof end;

theorem Th32: :: SCMFSA8B:32
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 > 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( if<0 b4,b2,b3 is_closed_on b1 & if<0 b4,b2,b3 is_halting_on b1 )
proof end;

theorem Th33: :: SCMFSA8B:33
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being read-write Int-Location st b1 . b4 > 0 & b3 is_closed_on Initialize b1 & b3 is_halting_on Initialize b1 holds
IExec (if<0 b4,b2,b3),b1 = (IExec b3,b1) +* (Start-At (insloc ((((card b2) + (card b3)) + (card b3)) + 7)))
proof end;

theorem Th34: :: SCMFSA8B:34
for b1 being State of SCM+FSA
for b2, b3 being parahalting Macro-Instruction
for b4 being read-write Int-Location holds
( if<0 b4,b2,b3 is parahalting & ( b1 . b4 < 0 implies IExec (if<0 b4,b2,b3),b1 = (IExec b2,b1) +* (Start-At (insloc ((((card b2) + (card b3)) + (card b3)) + 7))) ) & ( b1 . b4 >= 0 implies IExec (if<0 b4,b2,b3),b1 = (IExec b3,b1) +* (Start-At (insloc ((((card b2) + (card b3)) + (card b3)) + 7))) ) )
proof end;

registration
let c3, c4 be parahalting Macro-Instruction;
let c5 be read-write Int-Location ;
cluster if=0 a3,a1,a2 -> parahalting ;
correctness
coherence
if=0 c5,c3,c4 is parahalting
;
by Th20;
cluster if>0 a3,a1,a2 -> parahalting ;
correctness
coherence
if>0 c5,c3,c4 is parahalting
;
by Th26;
end;

definition
let c3, c4 be Int-Location ;
let c5, c6 be Macro-Instruction;
func if=0 c1,c2,c3,c4 -> Macro-Instruction equals :: SCMFSA8B:def 4
(SubFrom a1,a2) ';' (if=0 a1,a3,a4);
coherence
(SubFrom c3,c4) ';' (if=0 c3,c5,c6) is Macro-Instruction
;
func if>0 c1,c2,c3,c4 -> Macro-Instruction equals :: SCMFSA8B:def 5
(SubFrom a1,a2) ';' (if>0 a1,a3,a4);
coherence
(SubFrom c3,c4) ';' (if>0 c3,c5,c6) is Macro-Instruction
;
end;

:: deftheorem Def4 defines if=0 SCMFSA8B:def 4 :
for b1, b2 being Int-Location
for b3, b4 being Macro-Instruction holds if=0 b1,b2,b3,b4 = (SubFrom b1,b2) ';' (if=0 b1,b3,b4);

:: deftheorem Def5 defines if>0 SCMFSA8B:def 5 :
for b1, b2 being Int-Location
for b3, b4 being Macro-Instruction holds if>0 b1,b2,b3,b4 = (SubFrom b1,b2) ';' (if>0 b1,b3,b4);

notation
let c3, c4 be Int-Location ;
let c5, c6 be Macro-Instruction;
synonym if<0 c2,c1,c3,c4 for if>0 c1,c2,c3,c4;
end;

registration
let c3, c4 be parahalting Macro-Instruction;
let c5, c6 be read-write Int-Location ;
cluster if=0 a3,a4,a1,a2 -> parahalting ;
correctness
coherence
if=0 c5,c6,c3,c4 is parahalting
;
;
cluster if>0 a3,a4,a1,a2 -> parahalting ;
correctness
coherence
if>0 c5,c6,c3,c4 is parahalting
;
;
end;

theorem Th35: :: SCMFSA8B:35
for b1 being State of SCM+FSA
for b2 being Macro-Instruction holds (Result (b1 +* (Initialized b2))) | (Int-Locations \/ FinSeq-Locations ) = (IExec b2,b1) | (Int-Locations \/ FinSeq-Locations )
proof end;

theorem Th36: :: SCMFSA8B:36
for b1 being State of SCM+FSA
for b2 being Macro-Instruction
for b3 being Int-Location holds Result (b1 +* (Initialized b2)), IExec b2,b1 equal_outside the Instruction-Locations of SCM+FSA
proof end;

theorem Th37: :: SCMFSA8B:37
for b1, b2 being State of SCM+FSA
for b3 being Instruction of SCM+FSA
for b4 being Int-Location st ( for b5 being Int-Location st b4 <> b5 holds
b1 . b5 = b2 . b5 ) & ( for b5 being FinSeq-Location holds b1 . b5 = b2 . b5 ) & b3 does_not_refer b4 & IC b1 = IC b2 holds
( ( for b5 being Int-Location st b4 <> b5 holds
(Exec b3,b1) . b5 = (Exec b3,b2) . b5 ) & ( for b5 being FinSeq-Location holds (Exec b3,b1) . b5 = (Exec b3,b2) . b5 ) & IC (Exec b3,b1) = IC (Exec b3,b2) )
proof end;

theorem Th38: :: SCMFSA8B:38
for b1, b2 being State of SCM+FSA
for b3 being Macro-Instruction
for b4 being Int-Location st b3 does_not_refer b4 & ( for b5 being Int-Location st b4 <> b5 holds
b1 . b5 = b2 . b5 ) & ( for b5 being FinSeq-Location holds b1 . b5 = b2 . b5 ) & b3 is_closed_on b1 & b3 is_halting_on b1 holds
for b5 being Nat holds
( ( for b6 being Int-Location st b4 <> b6 holds
((Computation (b1 +* (b3 +* (Start-At (insloc 0))))) . b5) . b6 = ((Computation (b2 +* (b3 +* (Start-At (insloc 0))))) . b5) . b6 ) & ( for b6 being FinSeq-Location holds ((Computation (b1 +* (b3 +* (Start-At (insloc 0))))) . b5) . b6 = ((Computation (b2 +* (b3 +* (Start-At (insloc 0))))) . b5) . b6 ) & IC ((Computation (b1 +* (b3 +* (Start-At (insloc 0))))) . b5) = IC ((Computation (b2 +* (b3 +* (Start-At (insloc 0))))) . b5) & CurInstr ((Computation (b1 +* (b3 +* (Start-At (insloc 0))))) . b5) = CurInstr ((Computation (b2 +* (b3 +* (Start-At (insloc 0))))) . b5) )
proof end;

theorem Th39: :: SCMFSA8B:39
for b1 being State of SCM+FSA
for b2, b3 being Macro-Instruction
for b4 being Instruction-Location of SCM+FSA holds
( b2 is_closed_on b1 & b2 is_halting_on b1 iff ( b2 is_closed_on b1 +* (b2 +* (Start-At b4)) & b2 is_halting_on b1 +* (b2 +* (Start-At b4)) ) )
proof end;

theorem Th40: :: SCMFSA8B:40
for b1, b2 being State of SCM+FSA
for b3 being Macro-Instruction
for b4 being Int-Location st b3 does_not_refer b4 & ( for b5 being Int-Location st b4 <> b5 holds
b1 . b5 = b2 . b5 ) & ( for b5 being FinSeq-Location holds b1 . b5 = b2 . b5 ) & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( b3 is_closed_on b2 & b3 is_halting_on b2 )
proof end;

theorem Th41: :: SCMFSA8B:41
for b1, b2 being State of SCM+FSA
for b3 being Macro-Instruction
for b4 being Int-Location st ( for b5 being read-write Int-Location st b4 <> b5 holds
b1 . b5 = b2 . b5 ) & ( for b5 being FinSeq-Location holds b1 . b5 = b2 . b5 ) & b3 does_not_refer b4 & b3 is_closed_on Initialize b1 & b3 is_halting_on Initialize b1 holds
( ( for b5 being Int-Location st b4 <> b5 holds
(IExec b3,b1) . b5 = (IExec b3,b2) . b5 ) & ( for b5 being FinSeq-Location holds (IExec b3,b1) . b5 = (IExec b3,b2) . b5 ) & IC (IExec b3,b1) = IC (IExec b3,b2) )
proof end;

theorem Th42: :: SCMFSA8B:42
for b1 being State of SCM+FSA
for b2, b3 being parahalting Macro-Instruction
for b4, b5 being read-write Int-Location st b2 does_not_refer b4 & b3 does_not_refer b4 holds
( IC (IExec (if=0 b4,b5,b2,b3),b1) = insloc (((card b2) + (card b3)) + 5) & ( b1 . b4 = b1 . b5 implies ( ( for b6 being Int-Location st b4 <> b6 holds
(IExec (if=0 b4,b5,b2,b3),b1) . b6 = (IExec b2,b1) . b6 ) & ( for b6 being FinSeq-Location holds (IExec (if=0 b4,b5,b2,b3),b1) . b6 = (IExec b2,b1) . b6 ) ) ) & ( b1 . b4 <> b1 . b5 implies ( ( for b6 being Int-Location st b4 <> b6 holds
(IExec (if=0 b4,b5,b2,b3),b1) . b6 = (IExec b3,b1) . b6 ) & ( for b6 being FinSeq-Location holds (IExec (if=0 b4,b5,b2,b3),b1) . b6 = (IExec b3,b1) . b6 ) ) ) )
proof end;

theorem Th43: :: SCMFSA8B:43
for b1 being State of SCM+FSA
for b2, b3 being parahalting Macro-Instruction
for b4, b5 being read-write Int-Location st b2 does_not_refer b4 & b3 does_not_refer b4 holds
( IC (IExec (if>0 b4,b5,b2,b3),b1) = insloc (((card b2) + (card b3)) + 5) & ( b1 . b4 > b1 . b5 implies ( ( for b6 being Int-Location st b4 <> b6 holds
(IExec (if>0 b4,b5,b2,b3),b1) . b6 = (IExec b2,b1) . b6 ) & ( for b6 being FinSeq-Location holds (IExec (if>0 b4,b5,b2,b3),b1) . b6 = (IExec b2,b1) . b6 ) ) ) & ( b1 . b4 <= b1 . b5 implies ( ( for b6 being Int-Location st b4 <> b6 holds
(IExec (if>0 b4,b5,b2,b3),b1) . b6 = (IExec b3,b1) . b6 ) & ( for b6 being FinSeq-Location holds (IExec (if>0 b4,b5,b2,b3),b1) . b6 = (IExec b3,b1) . b6 ) ) ) )
proof end;