:: SCMPDS_6 semantic presentation

set c1 = the Instruction-Locations of SCMPDS ;

set c2 = SCM-Data-Loc ;

theorem Th1: :: SCMPDS_6:1
for b1 being State of SCMPDS holds dom (b1 | the Instruction-Locations of SCMPDS ) = the Instruction-Locations of SCMPDS
proof end;

theorem Th2: :: SCMPDS_6:2
for b1 being State of SCMPDS st b1 is halting holds
for b2 being Nat st LifeSpan b1 <= b2 holds
CurInstr ((Computation b1) . b2) = halt SCMPDS
proof end;

theorem Th3: :: SCMPDS_6:3
for b1 being State of SCMPDS st b1 is halting holds
for b2 being Nat st LifeSpan b1 <= b2 holds
IC ((Computation b1) . b2) = IC ((Computation b1) . (LifeSpan b1))
proof end;

theorem Th4: :: SCMPDS_6:4
for b1, b2 being State of SCMPDS holds
( b1,b2 equal_outside the Instruction-Locations of SCMPDS iff ( IC b1 = IC b2 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc ) )
proof end;

theorem Th5: :: SCMPDS_6:5
for b1 being State of SCMPDS
for b2 being Program-block holds (Initialized b1) +* (Initialized b2) = b1 +* (Initialized b2)
proof end;

theorem Th6: :: SCMPDS_6:6
for b1 being Program-block
for b2 being Instruction-Location of SCMPDS holds b1 c= b1 +* (Start-At b2)
proof end;

theorem Th7: :: SCMPDS_6:7
for b1 being State of SCMPDS
for b2 being Instruction-Location of SCMPDS holds b1 | SCM-Data-Loc = (b1 +* (Start-At b2)) | SCM-Data-Loc
proof end;

theorem Th8: :: SCMPDS_6:8
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Instruction-Location of SCMPDS holds b1 | SCM-Data-Loc = (b1 +* (b2 +* (Start-At b3))) | SCM-Data-Loc
proof end;

theorem Th9: :: SCMPDS_6:9
for b1 being State of SCMPDS
for b2 being Program-block holds b1 | SCM-Data-Loc = (b1 +* (Initialized b2)) | SCM-Data-Loc
proof end;

theorem Th10: :: SCMPDS_6:10
for b1 being State of SCMPDS
for b2 being Instruction-Location of SCMPDS holds dom (b1 | the Instruction-Locations of SCMPDS ) misses dom (Start-At b2)
proof end;

theorem Th11: :: SCMPDS_6:11
for b1 being State of SCMPDS
for b2, b3 being Program-block
for b4 being Instruction-Location of SCMPDS holds b1 +* (b2 +* (Start-At b4)),b1 +* (b3 +* (Start-At b4)) equal_outside the Instruction-Locations of SCMPDS
proof end;

theorem Th12: :: SCMPDS_6:12
for b1, b2 being State of SCMPDS
for b3, b4 being Program-block st b1 | SCM-Data-Loc = b2 | SCM-Data-Loc holds
b1 +* (Initialized b3),b2 +* (Initialized b4) equal_outside the Instruction-Locations of SCMPDS
proof end;

theorem Th13: :: SCMPDS_6:13
canceled;

theorem Th14: :: SCMPDS_6:14
for b1 being State of SCMPDS
for b2, b3 being Instruction-Location of SCMPDS holds (b1 +* (Start-At b2)) +* (Start-At b3) = b1 +* (Start-At b3)
proof end;

theorem Th15: :: SCMPDS_6:15
for b1 being Instruction of SCMPDS
for b2 being Program-block holds card (b1 ';' b2) = (card b2) + 1
proof end;

theorem Th16: :: SCMPDS_6:16
for b1 being Instruction of SCMPDS
for b2 being Program-block holds (b1 ';' b2) . (inspos 0) = b1
proof end;

theorem Th17: :: SCMPDS_6:17
for b1 being Program-block holds b1 c= Initialized (stop b1)
proof end;

theorem Th18: :: SCMPDS_6:18
for b1 being Instruction-Location of SCMPDS
for b2 being Program-block st b1 in dom b2 holds
b1 in dom (stop b2)
proof end;

theorem Th19: :: SCMPDS_6:19
for b1 being Instruction-Location of SCMPDS
for b2 being Program-block st b1 in dom b2 holds
(stop b2) . b1 = b2 . b1
proof end;

theorem Th20: :: SCMPDS_6:20
for b1 being Instruction-Location of SCMPDS
for b2 being Program-block st b1 in dom b2 holds
(Initialized (stop b2)) . b1 = b2 . b1
proof end;

theorem Th21: :: SCMPDS_6:21
for b1 being State of SCMPDS
for b2 being Program-block holds IC (b1 +* (Initialized b2)) = inspos 0
proof end;

theorem Th22: :: SCMPDS_6:22
for b1 being Instruction of SCMPDS
for b2 being State of SCMPDS
for b3 being Program-block holds CurInstr (b2 +* (Initialized (stop (b1 ';' b3)))) = b1
proof end;

theorem Th23: :: SCMPDS_6:23
for b1 being State of SCMPDS
for b2, b3 being Nat st IC b1 = inspos b2 holds
ICplusConst b1,b3 = inspos (b2 + b3)
proof end;

theorem Th24: :: SCMPDS_6:24
for b1, b2 being Program-block holds Shift (stop b2),(card b1) c= stop (b1 ';' b2)
proof end;

theorem Th25: :: SCMPDS_6:25
for b1 being Program-block holds
( inspos (card b1) in dom (stop b1) & (stop b1) . (inspos (card b1)) = halt SCMPDS )
proof end;

theorem Th26: :: SCMPDS_6:26
for b1 being State of SCMPDS
for b2, b3 being Program-block
for b4, b5 being Instruction-Location of SCMPDS holds (IExec b2,b1) . b4 = ((IExec b3,b1) +* (Start-At b5)) . b4
proof end;

theorem Th27: :: SCMPDS_6:27
for b1 being State of SCMPDS
for b2 being Program-block
for b3, b4 being Instruction-Location of SCMPDS holds (IExec b2,b1) . b3 = (b1 +* (Start-At b4)) . b3
proof end;

theorem Th28: :: SCMPDS_6:28
for b1 being State of SCMPDS
for b2 being No-StopCode parahalting Instruction of SCMPDS
for b3 being parahalting shiftable Program-block
for b4 being Int_position holds (IExec (b2 ';' b3),b1) . b4 = (IExec b3,(Exec b2,(Initialized b1))) . b4
proof end;

theorem Th29: :: SCMPDS_6:29
for b1 being Int_position
for b2, b3 being Integer holds b1,b2 <>0_goto b3 <> halt SCMPDS
proof end;

theorem Th30: :: SCMPDS_6:30
for b1 being Int_position
for b2, b3 being Integer holds b1,b2 <=0_goto b3 <> halt SCMPDS
proof end;

theorem Th31: :: SCMPDS_6:31
for b1 being Int_position
for b2, b3 being Integer holds b1,b2 >=0_goto b3 <> halt SCMPDS
proof end;

definition
let c3 be Integer;
func Goto c1 -> Program-block equals :: SCMPDS_6:def 1
Load (goto a1);
coherence
Load (goto c3) is Program-block
;
end;

:: deftheorem Def1 defines Goto SCMPDS_6:def 1 :
for b1 being Integer holds Goto b1 = Load (goto b1);

registration
let c3 be Nat;
cluster goto (a1 + 1) -> No-StopCode ;
correctness
coherence
goto (c3 + 1) is No-StopCode
;
by SCMPDS_5:25;
cluster goto (- (a1 + 1)) -> No-StopCode ;
correctness
coherence
goto (- (c3 + 1)) is No-StopCode
;
proof end;
end;

registration
let c3 be Nat;
cluster Goto (a1 + 1) -> No-StopCode ;
correctness
coherence
Goto (c3 + 1) is No-StopCode
;
;
cluster Goto (- (a1 + 1)) -> No-StopCode ;
correctness
coherence
Goto (- (c3 + 1)) is No-StopCode
;
;
end;

theorem Th32: :: SCMPDS_6:32
for b1 being Integer holds card (Goto b1) = 1 by SCMPDS_5:6;

Lemma28: for b1 being Integer holds
( inspos 0 in dom ((inspos 0) .--> (goto b1)) & ((inspos 0) .--> (goto b1)) . (inspos 0) = goto b1 )
proof end;

theorem Th33: :: SCMPDS_6:33
for b1 being Integer holds
( inspos 0 in dom (Goto b1) & (Goto b1) . (inspos 0) = goto b1 )
proof end;

definition
let c3 be Program-block;
let c4 be State of SCMPDS ;
pred c1 is_closed_on c2 means :Def2: :: SCMPDS_6:def 2
for b1 being Nat holds IC ((Computation (a2 +* (Initialized (stop a1)))) . b1) in dom (stop a1);
pred c1 is_halting_on c2 means :Def3: :: SCMPDS_6:def 3
a2 +* (Initialized (stop a1)) is halting;
end;

:: deftheorem Def2 defines is_closed_on SCMPDS_6:def 2 :
for b1 being Program-block
for b2 being State of SCMPDS holds
( b1 is_closed_on b2 iff for b3 being Nat holds IC ((Computation (b2 +* (Initialized (stop b1)))) . b3) in dom (stop b1) );

:: deftheorem Def3 defines is_halting_on SCMPDS_6:def 3 :
for b1 being Program-block
for b2 being State of SCMPDS holds
( b1 is_halting_on b2 iff b2 +* (Initialized (stop b1)) is halting );

theorem Th34: :: SCMPDS_6:34
for b1 being Program-block holds
( b1 is paraclosed iff for b2 being State of SCMPDS holds b1 is_closed_on b2 )
proof end;

theorem Th35: :: SCMPDS_6:35
for b1 being Program-block holds
( b1 is parahalting iff for b2 being State of SCMPDS holds b1 is_halting_on b2 )
proof end;

theorem Th36: :: SCMPDS_6:36
for b1, b2 being State of SCMPDS
for b3 being Program-block st b1 | SCM-Data-Loc = b2 | SCM-Data-Loc & b3 is_closed_on b1 holds
b3 is_closed_on b2
proof end;

theorem Th37: :: SCMPDS_6:37
for b1, b2 being State of SCMPDS
for b3 being Program-block st b1 | SCM-Data-Loc = b2 | SCM-Data-Loc & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( b3 is_closed_on b2 & b3 is_halting_on b2 )
proof end;

theorem Th38: :: SCMPDS_6:38
for b1 being State of SCMPDS
for b2, b3 being Program-block holds
( b2 is_closed_on b1 iff b2 is_closed_on b1 +* (Initialized b3) )
proof end;

theorem Th39: :: SCMPDS_6:39
for b1, b2 being Program-block
for b3 being State of SCMPDS st b1 is_closed_on b3 & b1 is_halting_on b3 holds
( ( for b4 being Nat st b4 <= LifeSpan (b3 +* (Initialized (stop b1))) holds
IC ((Computation (b3 +* (Initialized (stop b1)))) . b4) = IC ((Computation (b3 +* (Initialized (stop (b1 ';' b2))))) . b4) ) & ((Computation (b3 +* (Initialized (stop b1)))) . (LifeSpan (b3 +* (Initialized (stop b1))))) | SCM-Data-Loc = ((Computation (b3 +* (Initialized (stop (b1 ';' b2))))) . (LifeSpan (b3 +* (Initialized (stop b1))))) | SCM-Data-Loc )
proof end;

theorem Th40: :: SCMPDS_6:40
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Nat st b2 is_closed_on b1 & b2 is_halting_on b1 & b3 < LifeSpan (b1 +* (Initialized (stop b2))) holds
IC ((Computation (b1 +* (Initialized (stop b2)))) . b3) in dom b2
proof end;

theorem Th41: :: SCMPDS_6:41
for b1, b2 being Program-block
for b3 being State of SCMPDS
for b4 being Nat st b1 is_closed_on b3 & b1 is_halting_on b3 & b4 < LifeSpan (b3 +* (Initialized (stop b1))) holds
CurInstr ((Computation (b3 +* (Initialized (stop b1)))) . b4) = CurInstr ((Computation (b3 +* (Initialized (stop (b1 ';' b2))))) . b4)
proof end;

theorem Th42: :: SCMPDS_6:42
for b1 being No-StopCode Program-block
for b2 being State of SCMPDS
for b3 being Nat st b1 is_closed_on b2 & b1 is_halting_on b2 & b3 < LifeSpan (b2 +* (Initialized (stop b1))) holds
CurInstr ((Computation (b2 +* (Initialized (stop b1)))) . b3) <> halt SCMPDS
proof end;

theorem Th43: :: SCMPDS_6:43
for b1 being No-StopCode Program-block
for b2 being State of SCMPDS st b1 is_closed_on b2 & b1 is_halting_on b2 holds
IC ((Computation (b2 +* (Initialized (stop b1)))) . (LifeSpan (b2 +* (Initialized (stop b1))))) = inspos (card b1)
proof end;

Lemma41: for b1 being No-StopCode Program-block
for b2 being Program-block
for b3 being State of SCMPDS st b1 is_closed_on b3 & b1 is_halting_on b3 holds
( IC ((Computation (b3 +* (Initialized (stop ((b1 ';' (Goto ((card b2) + 1))) ';' b2))))) . ((LifeSpan (b3 +* (Initialized (stop b1)))) + 1)) = inspos (((card b1) + (card b2)) + 1) & ((Computation (b3 +* (Initialized (stop b1)))) . (LifeSpan (b3 +* (Initialized (stop b1))))) | SCM-Data-Loc = ((Computation (b3 +* (Initialized (stop ((b1 ';' (Goto ((card b2) + 1))) ';' b2))))) . ((LifeSpan (b3 +* (Initialized (stop b1)))) + 1)) | SCM-Data-Loc & ( for b4 being Nat st b4 <= LifeSpan (b3 +* (Initialized (stop b1))) holds
CurInstr ((Computation (b3 +* (Initialized (stop ((b1 ';' (Goto ((card b2) + 1))) ';' b2))))) . b4) <> halt SCMPDS ) & IC ((Computation (b3 +* (Initialized (stop ((b1 ';' (Goto ((card b2) + 1))) ';' b2))))) . (LifeSpan (b3 +* (Initialized (stop b1))))) = inspos (card b1) & b3 +* (Initialized (stop ((b1 ';' (Goto ((card b2) + 1))) ';' b2))) is halting & LifeSpan (b3 +* (Initialized (stop ((b1 ';' (Goto ((card b2) + 1))) ';' b2)))) = (LifeSpan (b3 +* (Initialized (stop b1)))) + 1 )
proof end;

theorem Th44: :: SCMPDS_6:44
for b1, b2 being Program-block
for b3 being State of SCMPDS st b1 is_closed_on b3 & b1 is_halting_on b3 holds
( (b1 ';' (Goto ((card b2) + 1))) ';' b2 is_halting_on b3 & (b1 ';' (Goto ((card b2) + 1))) ';' b2 is_closed_on b3 )
proof end;

theorem Th45: :: SCMPDS_6:45
for b1, b2 being State of SCMPDS
for b3 being shiftable Program-block st Initialized (stop b3) c= b1 & b3 is_closed_on b1 holds
for b4 being Nat st Shift (stop b3),b4 c= b2 & IC b2 = inspos b4 & b1 | SCM-Data-Loc = b2 | SCM-Data-Loc holds
for b5 being Nat holds
( (IC ((Computation b1) . b5)) + b4 = IC ((Computation b2) . b5) & CurInstr ((Computation b1) . b5) = CurInstr ((Computation b2) . b5) & ((Computation b1) . b5) | SCM-Data-Loc = ((Computation b2) . b5) | SCM-Data-Loc )
proof end;

Lemma44: for b1 being State of SCMPDS
for b2, b3 being shiftable Program-block
for b4 being Nat holds (b2 ';' (Goto b4)) ';' b3 is shiftable
proof end;

theorem Th46: :: SCMPDS_6:46
for b1 being State of SCMPDS
for b2 being No-StopCode Program-block
for b3 being Program-block st b2 is_closed_on b1 & b2 is_halting_on b1 holds
IC (IExec ((b2 ';' (Goto ((card b3) + 1))) ';' b3),b1) = inspos (((card b2) + (card b3)) + 1)
proof end;

theorem Th47: :: SCMPDS_6:47
for b1 being State of SCMPDS
for b2 being No-StopCode Program-block
for b3 being Program-block st b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec ((b2 ';' (Goto ((card b3) + 1))) ';' b3),b1 = (IExec b2,b1) +* (Start-At (inspos (((card b2) + (card b3)) + 1)))
proof end;

theorem Th48: :: SCMPDS_6:48
for b1 being State of SCMPDS
for b2 being No-StopCode Program-block st b2 is_closed_on b1 & b2 is_halting_on b1 holds
IC (IExec b2,b1) = inspos (card b2)
proof end;

definition
let c3 be Int_position ;
let c4 be Integer;
let c5, c6 be Program-block;
func if=0 c1,c2,c3,c4 -> Program-block equals :: SCMPDS_6:def 4
(((a1,a2 <>0_goto ((card a3) + 2)) ';' a3) ';' (Goto ((card a4) + 1))) ';' a4;
coherence
(((c3,c4 <>0_goto ((card c5) + 2)) ';' c5) ';' (Goto ((card c6) + 1))) ';' c6 is Program-block
;
func if>0 c1,c2,c3,c4 -> Program-block equals :: SCMPDS_6:def 5
(((a1,a2 <=0_goto ((card a3) + 2)) ';' a3) ';' (Goto ((card a4) + 1))) ';' a4;
coherence
(((c3,c4 <=0_goto ((card c5) + 2)) ';' c5) ';' (Goto ((card c6) + 1))) ';' c6 is Program-block
;
func if<0 c1,c2,c3,c4 -> Program-block equals :: SCMPDS_6:def 6
(((a1,a2 >=0_goto ((card a3) + 2)) ';' a3) ';' (Goto ((card a4) + 1))) ';' a4;
coherence
(((c3,c4 >=0_goto ((card c5) + 2)) ';' c5) ';' (Goto ((card c6) + 1))) ';' c6 is Program-block
;
end;

:: deftheorem Def4 defines if=0 SCMPDS_6:def 4 :
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds if=0 b1,b2,b3,b4 = (((b1,b2 <>0_goto ((card b3) + 2)) ';' b3) ';' (Goto ((card b4) + 1))) ';' b4;

:: deftheorem Def5 defines if>0 SCMPDS_6:def 5 :
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds if>0 b1,b2,b3,b4 = (((b1,b2 <=0_goto ((card b3) + 2)) ';' b3) ';' (Goto ((card b4) + 1))) ';' b4;

:: deftheorem Def6 defines if<0 SCMPDS_6:def 6 :
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds if<0 b1,b2,b3,b4 = (((b1,b2 >=0_goto ((card b3) + 2)) ';' b3) ';' (Goto ((card b4) + 1))) ';' b4;

definition
let c3 be Int_position ;
let c4 be Integer;
let c5 be Program-block;
func if=0 c1,c2,c3 -> Program-block equals :: SCMPDS_6:def 7
(a1,a2 <>0_goto ((card a3) + 1)) ';' a3;
coherence
(c3,c4 <>0_goto ((card c5) + 1)) ';' c5 is Program-block
;
func if<>0 c1,c2,c3 -> Program-block equals :: SCMPDS_6:def 8
((a1,a2 <>0_goto 2) ';' (goto ((card a3) + 1))) ';' a3;
coherence
((c3,c4 <>0_goto 2) ';' (goto ((card c5) + 1))) ';' c5 is Program-block
;
func if>0 c1,c2,c3 -> Program-block equals :: SCMPDS_6:def 9
(a1,a2 <=0_goto ((card a3) + 1)) ';' a3;
coherence
(c3,c4 <=0_goto ((card c5) + 1)) ';' c5 is Program-block
;
func if<=0 c1,c2,c3 -> Program-block equals :: SCMPDS_6:def 10
((a1,a2 <=0_goto 2) ';' (goto ((card a3) + 1))) ';' a3;
coherence
((c3,c4 <=0_goto 2) ';' (goto ((card c5) + 1))) ';' c5 is Program-block
;
func if<0 c1,c2,c3 -> Program-block equals :: SCMPDS_6:def 11
(a1,a2 >=0_goto ((card a3) + 1)) ';' a3;
coherence
(c3,c4 >=0_goto ((card c5) + 1)) ';' c5 is Program-block
;
func if>=0 c1,c2,c3 -> Program-block equals :: SCMPDS_6:def 12
((a1,a2 >=0_goto 2) ';' (goto ((card a3) + 1))) ';' a3;
coherence
((c3,c4 >=0_goto 2) ';' (goto ((card c5) + 1))) ';' c5 is Program-block
;
end;

:: deftheorem Def7 defines if=0 SCMPDS_6:def 7 :
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds if=0 b1,b2,b3 = (b1,b2 <>0_goto ((card b3) + 1)) ';' b3;

:: deftheorem Def8 defines if<>0 SCMPDS_6:def 8 :
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds if<>0 b1,b2,b3 = ((b1,b2 <>0_goto 2) ';' (goto ((card b3) + 1))) ';' b3;

:: deftheorem Def9 defines if>0 SCMPDS_6:def 9 :
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds if>0 b1,b2,b3 = (b1,b2 <=0_goto ((card b3) + 1)) ';' b3;

:: deftheorem Def10 defines if<=0 SCMPDS_6:def 10 :
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds if<=0 b1,b2,b3 = ((b1,b2 <=0_goto 2) ';' (goto ((card b3) + 1))) ';' b3;

:: deftheorem Def11 defines if<0 SCMPDS_6:def 11 :
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds if<0 b1,b2,b3 = (b1,b2 >=0_goto ((card b3) + 1)) ';' b3;

:: deftheorem Def12 defines if>=0 SCMPDS_6:def 12 :
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds if>=0 b1,b2,b3 = ((b1,b2 >=0_goto 2) ';' (goto ((card b3) + 1))) ';' b3;

Lemma48: for b1 being Nat
for b2 being Instruction of SCMPDS
for b3, b4 being Program-block holds card (((b2 ';' b3) ';' (Goto b1)) ';' b4) = ((card b3) + (card b4)) + 2
proof end;

theorem Th49: :: SCMPDS_6:49
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds card (if=0 b1,b2,b3,b4) = ((card b3) + (card b4)) + 2 by Lemma48;

theorem Th50: :: SCMPDS_6:50
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds
( inspos 0 in dom (if=0 b1,b2,b3,b4) & inspos 1 in dom (if=0 b1,b2,b3,b4) )
proof end;

Lemma50: for b1 being Instruction of SCMPDS
for b2, b3, b4 being Program-block holds (((b1 ';' b2) ';' b3) ';' b4) . (inspos 0) = b1
proof end;

theorem Th51: :: SCMPDS_6:51
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds (if=0 b1,b2,b3,b4) . (inspos 0) = b1,b2 <>0_goto ((card b3) + 2) by Lemma50;

Lemma51: for b1 being Nat
for b2 being Instruction of SCMPDS
for b3 being State of SCMPDS
for b4 being Program-block holds Shift (stop b4),1 c= (Computation (b3 +* (Initialized (stop (b2 ';' b4))))) . b1
proof end;

Lemma52: for b1 being Nat
for b2, b3 being Instruction of SCMPDS
for b4 being State of SCMPDS
for b5 being Program-block holds Shift (stop b5),2 c= (Computation (b4 +* (Initialized (stop ((b2 ';' b3) ';' b5))))) . b1
proof end;

theorem Th52: :: SCMPDS_6:52
for b1 being State of SCMPDS
for b2, b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) = 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if=0 b4,b5,b2,b3 is_closed_on b1 & if=0 b4,b5,b2,b3 is_halting_on b1 )
proof end;

theorem Th53: :: SCMPDS_6:53
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) <> 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( if=0 b4,b5,b2,b3 is_closed_on b1 & if=0 b4,b5,b2,b3 is_halting_on b1 )
proof end;

theorem Th54: :: SCMPDS_6:54
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) = 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if=0 b4,b5,b2,b3),b1 = (IExec b2,b1) +* (Start-At (inspos (((card b2) + (card b3)) + 2)))
proof end;

theorem Th55: :: SCMPDS_6:55
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being shiftable No-StopCode Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) <> 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
IExec (if=0 b4,b5,b2,b3),b1 = (IExec b3,b1) +* (Start-At (inspos (((card b2) + (card b3)) + 2)))
proof end;

registration
let c3, c4 be parahalting shiftable Program-block;
let c5 be Int_position ;
let c6 be Integer;
cluster if=0 a3,a4,a1,a2 -> parahalting shiftable ;
correctness
coherence
( if=0 c5,c6,c3,c4 is shiftable & if=0 c5,c6,c3,c4 is parahalting )
;
proof end;
end;

registration
let c3, c4 be No-StopCode Program-block;
let c5 be Int_position ;
let c6 be Integer;
cluster if=0 a3,a4,a1,a2 -> No-StopCode ;
coherence
if=0 c5,c6,c3,c4 is No-StopCode
;
end;

theorem Th56: :: SCMPDS_6:56
for b1 being State of SCMPDS
for b2, b3 being parahalting shiftable No-StopCode Program-block
for b4 being Int_position
for b5 being Integer holds IC (IExec (if=0 b4,b5,b2,b3),b1) = inspos (((card b2) + (card b3)) + 2)
proof end;

theorem Th57: :: SCMPDS_6:57
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being shiftable Program-block
for b4, b5 being Int_position
for b6 being Integer st b1 . (DataLoc (b1 . b4),b6) = 0 holds
(IExec (if=0 b4,b6,b2,b3),b1) . b5 = (IExec b2,b1) . b5
proof end;

theorem Th58: :: SCMPDS_6:58
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being parahalting shiftable No-StopCode Program-block
for b4, b5 being Int_position
for b6 being Integer st b1 . (DataLoc (b1 . b4),b6) <> 0 holds
(IExec (if=0 b4,b6,b2,b3),b1) . b5 = (IExec b3,b1) . b5
proof end;

theorem Th59: :: SCMPDS_6:59
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds card (if=0 b1,b2,b3) = (card b3) + 1 by Th15;

theorem Th60: :: SCMPDS_6:60
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds inspos 0 in dom (if=0 b1,b2,b3)
proof end;

theorem Th61: :: SCMPDS_6:61
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds (if=0 b1,b2,b3) . (inspos 0) = b1,b2 <>0_goto ((card b3) + 1) by Th16;

theorem Th62: :: SCMPDS_6:62
for b1 being State of SCMPDS
for b2 being shiftable Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) = 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if=0 b3,b4,b2 is_closed_on b1 & if=0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th63: :: SCMPDS_6:63
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) <> 0 holds
( if=0 b3,b4,b2 is_closed_on b1 & if=0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th64: :: SCMPDS_6:64
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) = 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if=0 b3,b4,b2),b1 = (IExec b2,b1) +* (Start-At (inspos ((card b2) + 1)))
proof end;

Lemma61: for b1 being State of SCMPDS
for b2 being Instruction-Location of SCMPDS holds (b1 +* (Start-At b2)) . (IC SCMPDS ) = b2
proof end;

theorem Th65: :: SCMPDS_6:65
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) <> 0 holds
IExec (if=0 b3,b4,b2),b1 = b1 +* (Start-At (inspos ((card b2) + 1)))
proof end;

registration
let c3 be parahalting shiftable Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if=0 a2,a3,a1 -> parahalting shiftable ;
correctness
coherence
( if=0 c4,c5,c3 is shiftable & if=0 c4,c5,c3 is parahalting )
;
proof end;
end;

registration
let c3 be No-StopCode Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if=0 a2,a3,a1 -> No-StopCode ;
coherence
if=0 c4,c5,c3 is No-StopCode
;
end;

theorem Th66: :: SCMPDS_6:66
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer holds IC (IExec (if=0 b3,b4,b2),b1) = inspos ((card b2) + 1)
proof end;

theorem Th67: :: SCMPDS_6:67
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) = 0 holds
(IExec (if=0 b3,b5,b2),b1) . b4 = (IExec b2,b1) . b4
proof end;

theorem Th68: :: SCMPDS_6:68
for b1 being State of SCMPDS
for b2 being Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) <> 0 holds
(IExec (if=0 b3,b5,b2),b1) . b4 = b1 . b4
proof end;

Lemma63: for b1, b2 being Instruction of SCMPDS
for b3 being Program-block holds card ((b1 ';' b2) ';' b3) = (card b3) + 2
proof end;

theorem Th69: :: SCMPDS_6:69
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds card (if<>0 b1,b2,b3) = (card b3) + 2 by Lemma63;

Lemma65: for b1, b2 being Instruction of SCMPDS
for b3 being Program-block holds
( inspos 0 in dom ((b1 ';' b2) ';' b3) & inspos 1 in dom ((b1 ';' b2) ';' b3) )
proof end;

theorem Th70: :: SCMPDS_6:70
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds
( inspos 0 in dom (if<>0 b1,b2,b3) & inspos 1 in dom (if<>0 b1,b2,b3) ) by Lemma65;

Lemma67: for b1, b2 being Instruction of SCMPDS
for b3 being Program-block holds
( ((b1 ';' b2) ';' b3) . (inspos 0) = b1 & ((b1 ';' b2) ';' b3) . (inspos 1) = b2 )
proof end;

theorem Th71: :: SCMPDS_6:71
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds
( (if<>0 b1,b2,b3) . (inspos 0) = b1,b2 <>0_goto 2 & (if<>0 b1,b2,b3) . (inspos 1) = goto ((card b3) + 1) ) by Lemma67;

theorem Th72: :: SCMPDS_6:72
for b1 being State of SCMPDS
for b2 being shiftable Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) <> 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if<>0 b3,b4,b2 is_closed_on b1 & if<>0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th73: :: SCMPDS_6:73
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) = 0 holds
( if<>0 b3,b4,b2 is_closed_on b1 & if<>0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th74: :: SCMPDS_6:74
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) <> 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if<>0 b3,b4,b2),b1 = (IExec b2,b1) +* (Start-At (inspos ((card b2) + 2)))
proof end;

theorem Th75: :: SCMPDS_6:75
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) = 0 holds
IExec (if<>0 b3,b4,b2),b1 = b1 +* (Start-At (inspos ((card b2) + 2)))
proof end;

registration
let c3 be parahalting shiftable Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if<>0 a2,a3,a1 -> parahalting shiftable ;
correctness
coherence
( if<>0 c4,c5,c3 is shiftable & if<>0 c4,c5,c3 is parahalting )
;
proof end;
end;

registration
let c3 be No-StopCode Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if<>0 a2,a3,a1 -> No-StopCode ;
coherence
if<>0 c4,c5,c3 is No-StopCode
;
end;

theorem Th76: :: SCMPDS_6:76
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer holds IC (IExec (if<>0 b3,b4,b2),b1) = inspos ((card b2) + 2)
proof end;

theorem Th77: :: SCMPDS_6:77
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) <> 0 holds
(IExec (if<>0 b3,b5,b2),b1) . b4 = (IExec b2,b1) . b4
proof end;

theorem Th78: :: SCMPDS_6:78
for b1 being State of SCMPDS
for b2 being Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) = 0 holds
(IExec (if<>0 b3,b5,b2),b1) . b4 = b1 . b4
proof end;

theorem Th79: :: SCMPDS_6:79
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds card (if>0 b1,b2,b3,b4) = ((card b3) + (card b4)) + 2 by Lemma48;

theorem Th80: :: SCMPDS_6:80
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds
( inspos 0 in dom (if>0 b1,b2,b3,b4) & inspos 1 in dom (if>0 b1,b2,b3,b4) )
proof end;

theorem Th81: :: SCMPDS_6:81
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds (if>0 b1,b2,b3,b4) . (inspos 0) = b1,b2 <=0_goto ((card b3) + 2) by Lemma50;

theorem Th82: :: SCMPDS_6:82
for b1 being State of SCMPDS
for b2, b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) > 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if>0 b4,b5,b2,b3 is_closed_on b1 & if>0 b4,b5,b2,b3 is_halting_on b1 )
proof end;

theorem Th83: :: SCMPDS_6:83
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) <= 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( if>0 b4,b5,b2,b3 is_closed_on b1 & if>0 b4,b5,b2,b3 is_halting_on b1 )
proof end;

theorem Th84: :: SCMPDS_6:84
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) > 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if>0 b4,b5,b2,b3),b1 = (IExec b2,b1) +* (Start-At (inspos (((card b2) + (card b3)) + 2)))
proof end;

theorem Th85: :: SCMPDS_6:85
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being shiftable No-StopCode Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) <= 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
IExec (if>0 b4,b5,b2,b3),b1 = (IExec b3,b1) +* (Start-At (inspos (((card b2) + (card b3)) + 2)))
proof end;

registration
let c3, c4 be parahalting shiftable Program-block;
let c5 be Int_position ;
let c6 be Integer;
cluster if>0 a3,a4,a1,a2 -> parahalting shiftable ;
correctness
coherence
( if>0 c5,c6,c3,c4 is shiftable & if>0 c5,c6,c3,c4 is parahalting )
;
proof end;
end;

registration
let c3, c4 be No-StopCode Program-block;
let c5 be Int_position ;
let c6 be Integer;
cluster if>0 a3,a4,a1,a2 -> No-StopCode ;
coherence
if>0 c5,c6,c3,c4 is No-StopCode
;
end;

theorem Th86: :: SCMPDS_6:86
for b1 being State of SCMPDS
for b2, b3 being parahalting shiftable No-StopCode Program-block
for b4 being Int_position
for b5 being Integer holds IC (IExec (if>0 b4,b5,b2,b3),b1) = inspos (((card b2) + (card b3)) + 2)
proof end;

theorem Th87: :: SCMPDS_6:87
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being shiftable Program-block
for b4, b5 being Int_position
for b6 being Integer st b1 . (DataLoc (b1 . b4),b6) > 0 holds
(IExec (if>0 b4,b6,b2,b3),b1) . b5 = (IExec b2,b1) . b5
proof end;

theorem Th88: :: SCMPDS_6:88
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being parahalting shiftable No-StopCode Program-block
for b4, b5 being Int_position
for b6 being Integer st b1 . (DataLoc (b1 . b4),b6) <= 0 holds
(IExec (if>0 b4,b6,b2,b3),b1) . b5 = (IExec b3,b1) . b5
proof end;

theorem Th89: :: SCMPDS_6:89
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds card (if>0 b1,b2,b3) = (card b3) + 1 by Th15;

theorem Th90: :: SCMPDS_6:90
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds inspos 0 in dom (if>0 b1,b2,b3)
proof end;

theorem Th91: :: SCMPDS_6:91
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds (if>0 b1,b2,b3) . (inspos 0) = b1,b2 <=0_goto ((card b3) + 1) by Th16;

theorem Th92: :: SCMPDS_6:92
for b1 being State of SCMPDS
for b2 being shiftable Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) > 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if>0 b3,b4,b2 is_closed_on b1 & if>0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th93: :: SCMPDS_6:93
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) <= 0 holds
( if>0 b3,b4,b2 is_closed_on b1 & if>0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th94: :: SCMPDS_6:94
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) > 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if>0 b3,b4,b2),b1 = (IExec b2,b1) +* (Start-At (inspos ((card b2) + 1)))
proof end;

theorem Th95: :: SCMPDS_6:95
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) <= 0 holds
IExec (if>0 b3,b4,b2),b1 = b1 +* (Start-At (inspos ((card b2) + 1)))
proof end;

registration
let c3 be parahalting shiftable Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if>0 a2,a3,a1 -> parahalting shiftable ;
correctness
coherence
( if>0 c4,c5,c3 is shiftable & if>0 c4,c5,c3 is parahalting )
;
proof end;
end;

registration
let c3 be No-StopCode Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if>0 a2,a3,a1 -> No-StopCode ;
coherence
if>0 c4,c5,c3 is No-StopCode
;
end;

theorem Th96: :: SCMPDS_6:96
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer holds IC (IExec (if>0 b3,b4,b2),b1) = inspos ((card b2) + 1)
proof end;

theorem Th97: :: SCMPDS_6:97
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) > 0 holds
(IExec (if>0 b3,b5,b2),b1) . b4 = (IExec b2,b1) . b4
proof end;

theorem Th98: :: SCMPDS_6:98
for b1 being State of SCMPDS
for b2 being Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) <= 0 holds
(IExec (if>0 b3,b5,b2),b1) . b4 = b1 . b4
proof end;

theorem Th99: :: SCMPDS_6:99
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds card (if<=0 b1,b2,b3) = (card b3) + 2 by Lemma63;

theorem Th100: :: SCMPDS_6:100
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds
( inspos 0 in dom (if<=0 b1,b2,b3) & inspos 1 in dom (if<=0 b1,b2,b3) ) by Lemma65;

theorem Th101: :: SCMPDS_6:101
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds
( (if<=0 b1,b2,b3) . (inspos 0) = b1,b2 <=0_goto 2 & (if<=0 b1,b2,b3) . (inspos 1) = goto ((card b3) + 1) ) by Lemma67;

theorem Th102: :: SCMPDS_6:102
for b1 being State of SCMPDS
for b2 being shiftable Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) <= 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if<=0 b3,b4,b2 is_closed_on b1 & if<=0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th103: :: SCMPDS_6:103
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) > 0 holds
( if<=0 b3,b4,b2 is_closed_on b1 & if<=0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th104: :: SCMPDS_6:104
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) <= 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if<=0 b3,b4,b2),b1 = (IExec b2,b1) +* (Start-At (inspos ((card b2) + 2)))
proof end;

theorem Th105: :: SCMPDS_6:105
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) > 0 holds
IExec (if<=0 b3,b4,b2),b1 = b1 +* (Start-At (inspos ((card b2) + 2)))
proof end;

registration
let c3 be parahalting shiftable Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if<=0 a2,a3,a1 -> parahalting shiftable ;
correctness
coherence
( if<=0 c4,c5,c3 is shiftable & if<=0 c4,c5,c3 is parahalting )
;
proof end;
end;

registration
let c3 be No-StopCode Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if<=0 a2,a3,a1 -> No-StopCode ;
coherence
if<=0 c4,c5,c3 is No-StopCode
;
end;

theorem Th106: :: SCMPDS_6:106
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer holds IC (IExec (if<=0 b3,b4,b2),b1) = inspos ((card b2) + 2)
proof end;

theorem Th107: :: SCMPDS_6:107
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) <= 0 holds
(IExec (if<=0 b3,b5,b2),b1) . b4 = (IExec b2,b1) . b4
proof end;

theorem Th108: :: SCMPDS_6:108
for b1 being State of SCMPDS
for b2 being Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) > 0 holds
(IExec (if<=0 b3,b5,b2),b1) . b4 = b1 . b4
proof end;

theorem Th109: :: SCMPDS_6:109
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds card (if<0 b1,b2,b3,b4) = ((card b3) + (card b4)) + 2 by Lemma48;

theorem Th110: :: SCMPDS_6:110
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds
( inspos 0 in dom (if<0 b1,b2,b3,b4) & inspos 1 in dom (if<0 b1,b2,b3,b4) )
proof end;

theorem Th111: :: SCMPDS_6:111
for b1 being Int_position
for b2 being Integer
for b3, b4 being Program-block holds (if<0 b1,b2,b3,b4) . (inspos 0) = b1,b2 >=0_goto ((card b3) + 2) by Lemma50;

theorem Th112: :: SCMPDS_6:112
for b1 being State of SCMPDS
for b2, b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) < 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if<0 b4,b5,b2,b3 is_closed_on b1 & if<0 b4,b5,b2,b3 is_halting_on b1 )
proof end;

theorem Th113: :: SCMPDS_6:113
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) >= 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
( if<0 b4,b5,b2,b3 is_closed_on b1 & if<0 b4,b5,b2,b3 is_halting_on b1 )
proof end;

theorem Th114: :: SCMPDS_6:114
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being shiftable Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) < 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if<0 b4,b5,b2,b3),b1 = (IExec b2,b1) +* (Start-At (inspos (((card b2) + (card b3)) + 2)))
proof end;

theorem Th115: :: SCMPDS_6:115
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being shiftable No-StopCode Program-block
for b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b4),b5) >= 0 & b3 is_closed_on b1 & b3 is_halting_on b1 holds
IExec (if<0 b4,b5,b2,b3),b1 = (IExec b3,b1) +* (Start-At (inspos (((card b2) + (card b3)) + 2)))
proof end;

registration
let c3, c4 be parahalting shiftable Program-block;
let c5 be Int_position ;
let c6 be Integer;
cluster if<0 a3,a4,a1,a2 -> parahalting shiftable ;
correctness
coherence
( if<0 c5,c6,c3,c4 is shiftable & if<0 c5,c6,c3,c4 is parahalting )
;
proof end;
end;

registration
let c3, c4 be No-StopCode Program-block;
let c5 be Int_position ;
let c6 be Integer;
cluster if<0 a3,a4,a1,a2 -> No-StopCode ;
coherence
if<0 c5,c6,c3,c4 is No-StopCode
;
end;

theorem Th116: :: SCMPDS_6:116
for b1 being State of SCMPDS
for b2, b3 being parahalting shiftable No-StopCode Program-block
for b4 being Int_position
for b5 being Integer holds IC (IExec (if<0 b4,b5,b2,b3),b1) = inspos (((card b2) + (card b3)) + 2)
proof end;

theorem Th117: :: SCMPDS_6:117
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being shiftable Program-block
for b4, b5 being Int_position
for b6 being Integer st b1 . (DataLoc (b1 . b4),b6) < 0 holds
(IExec (if<0 b4,b6,b2,b3),b1) . b5 = (IExec b2,b1) . b5
proof end;

theorem Th118: :: SCMPDS_6:118
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being parahalting shiftable No-StopCode Program-block
for b4, b5 being Int_position
for b6 being Integer st b1 . (DataLoc (b1 . b4),b6) >= 0 holds
(IExec (if<0 b4,b6,b2,b3),b1) . b5 = (IExec b3,b1) . b5
proof end;

theorem Th119: :: SCMPDS_6:119
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds card (if<0 b1,b2,b3) = (card b3) + 1 by Th15;

theorem Th120: :: SCMPDS_6:120
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds inspos 0 in dom (if<0 b1,b2,b3)
proof end;

theorem Th121: :: SCMPDS_6:121
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds (if<0 b1,b2,b3) . (inspos 0) = b1,b2 >=0_goto ((card b3) + 1) by Th16;

theorem Th122: :: SCMPDS_6:122
for b1 being State of SCMPDS
for b2 being shiftable Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) < 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if<0 b3,b4,b2 is_closed_on b1 & if<0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th123: :: SCMPDS_6:123
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) >= 0 holds
( if<0 b3,b4,b2 is_closed_on b1 & if<0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th124: :: SCMPDS_6:124
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) < 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if<0 b3,b4,b2),b1 = (IExec b2,b1) +* (Start-At (inspos ((card b2) + 1)))
proof end;

theorem Th125: :: SCMPDS_6:125
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) >= 0 holds
IExec (if<0 b3,b4,b2),b1 = b1 +* (Start-At (inspos ((card b2) + 1)))
proof end;

registration
let c3 be parahalting shiftable Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if<0 a2,a3,a1 -> parahalting shiftable ;
correctness
coherence
( if<0 c4,c5,c3 is shiftable & if<0 c4,c5,c3 is parahalting )
;
proof end;
end;

registration
let c3 be No-StopCode Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if<0 a2,a3,a1 -> No-StopCode ;
coherence
if<0 c4,c5,c3 is No-StopCode
;
end;

theorem Th126: :: SCMPDS_6:126
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer holds IC (IExec (if<0 b3,b4,b2),b1) = inspos ((card b2) + 1)
proof end;

theorem Th127: :: SCMPDS_6:127
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) < 0 holds
(IExec (if<0 b3,b5,b2),b1) . b4 = (IExec b2,b1) . b4
proof end;

theorem Th128: :: SCMPDS_6:128
for b1 being State of SCMPDS
for b2 being Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) >= 0 holds
(IExec (if<0 b3,b5,b2),b1) . b4 = b1 . b4
proof end;

theorem Th129: :: SCMPDS_6:129
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds card (if>=0 b1,b2,b3) = (card b3) + 2 by Lemma63;

theorem Th130: :: SCMPDS_6:130
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds
( inspos 0 in dom (if>=0 b1,b2,b3) & inspos 1 in dom (if>=0 b1,b2,b3) ) by Lemma65;

theorem Th131: :: SCMPDS_6:131
for b1 being Int_position
for b2 being Integer
for b3 being Program-block holds
( (if>=0 b1,b2,b3) . (inspos 0) = b1,b2 >=0_goto 2 & (if>=0 b1,b2,b3) . (inspos 1) = goto ((card b3) + 1) ) by Lemma67;

theorem Th132: :: SCMPDS_6:132
for b1 being State of SCMPDS
for b2 being shiftable Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) >= 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
( if>=0 b3,b4,b2 is_closed_on b1 & if>=0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th133: :: SCMPDS_6:133
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) < 0 holds
( if>=0 b3,b4,b2 is_closed_on b1 & if>=0 b3,b4,b2 is_halting_on b1 )
proof end;

theorem Th134: :: SCMPDS_6:134
for b1 being State of SCMPDS
for b2 being shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) >= 0 & b2 is_closed_on b1 & b2 is_halting_on b1 holds
IExec (if>=0 b3,b4,b2),b1 = (IExec b2,b1) +* (Start-At (inspos ((card b2) + 2)))
proof end;

theorem Th135: :: SCMPDS_6:135
for b1 being State of SCMPDS
for b2 being Program-block
for b3 being Int_position
for b4 being Integer st b1 . (DataLoc (b1 . b3),b4) < 0 holds
IExec (if>=0 b3,b4,b2),b1 = b1 +* (Start-At (inspos ((card b2) + 2)))
proof end;

registration
let c3 be parahalting shiftable Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if>=0 a2,a3,a1 -> parahalting shiftable ;
correctness
coherence
( if>=0 c4,c5,c3 is shiftable & if>=0 c4,c5,c3 is parahalting )
;
proof end;
end;

registration
let c3 be No-StopCode Program-block;
let c4 be Int_position ;
let c5 be Integer;
cluster if>=0 a2,a3,a1 -> No-StopCode ;
coherence
if>=0 c4,c5,c3 is No-StopCode
;
end;

theorem Th136: :: SCMPDS_6:136
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3 being Int_position
for b4 being Integer holds IC (IExec (if>=0 b3,b4,b2),b1) = inspos ((card b2) + 2)
proof end;

theorem Th137: :: SCMPDS_6:137
for b1 being State of SCMPDS
for b2 being parahalting shiftable No-StopCode Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) >= 0 holds
(IExec (if>=0 b3,b5,b2),b1) . b4 = (IExec b2,b1) . b4
proof end;

theorem Th138: :: SCMPDS_6:138
for b1 being State of SCMPDS
for b2 being Program-block
for b3, b4 being Int_position
for b5 being Integer st b1 . (DataLoc (b1 . b3),b5) < 0 holds
(IExec (if>=0 b3,b5,b2),b1) . b4 = b1 . b4
proof end;