Article SCMFSA8B, MML version 4.99.1005

:: SCMFSA8B:th 1
theorem
for b1 being Element of product the Object-Kind of SCM+FSA holds
   IC SCM+FSA in proj1 b1;

:: SCMFSA8B:th 2
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being Instruction-Location of SCM+FSA holds
   b2 in proj1 b1;

:: SCMFSA8B:th 3
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Element of product the Object-Kind of SCM+FSA
      st b1 is_closed_on b2
   holds insloc 0 in proj1 b1;

:: SCMFSA8B:th 4
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being Instruction-Location of SCM+FSA holds
(b1 +* Start-At b2) +* Start-At b3 = b1 +* Start-At b3;

:: SCMFSA8B:th 5
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
   (Initialize b1) | (Int-Locations \/ FinSeq-Locations) = (b1 +* Initialized b2) | (Int-Locations \/ FinSeq-Locations);

:: SCMFSA8B:th 6
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_closed_on b1
   holds b3 is_closed_on b2;

:: SCMFSA8B:th 7
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3, b4 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
      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 NAT;

:: SCMFSA8B:th 8
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_closed_on b1 &
         b3 is_halting_on b1
   holds b3 is_closed_on b2 & b3 is_halting_on b2;

:: SCMFSA8B:th 9
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 holds
   b2 is_closed_on Initialize b1
iff
   b2 is_closed_on b1 +* Initialized b3;

:: SCMFSA8B:th 10
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 Instruction-Location of SCM+FSA holds
      b2 is_closed_on b1
   iff
      b2 is_closed_on b1 +* (b2 +* Start-At b4);

:: SCMFSA8B:th 11
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_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)
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);

:: SCMFSA8B:th 12
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being parahalting keeping_0 Element of the Instructions of SCM+FSA
for b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b4 being Int-Location holds
   (IExec(b2 ';' b3,b1)) . b4 = (IExec(b3,Exec(b2,Initialize b1))) . b4;

:: SCMFSA8B:th 13
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2 being parahalting keeping_0 Element of the Instructions of SCM+FSA
for b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b4 being FinSeq-Location holds
   (IExec(b2 ';' b3,b1)) . b4 = (IExec(b3,Exec(b2,Initialize b1))) . b4;

:: SCMFSA8B:funcnot 1 => SCMFSA8B:func 1
definition
  let a1 be Int-Location;
  let a2, a3 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  func if=0(A1,A2,A3) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
    ((((a1 =0_goto insloc ((card a3) + 3)) ';' a3) ';' Goto insloc ((card a2) + 1)) ';' a2) ';' SCM+FSA-Stop;
end;

:: SCMFSA8B:def 1
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) = ((((b1 =0_goto insloc ((card b3) + 3)) ';' b3) ';' Goto insloc ((card b2) + 1)) ';' b2) ';' SCM+FSA-Stop;

:: SCMFSA8B:funcnot 2 => SCMFSA8B:func 2
definition
  let a1 be Int-Location;
  let a2, a3 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  func if>0(A1,A2,A3) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
    ((((a1 >0_goto insloc ((card a3) + 3)) ';' a3) ';' Goto insloc ((card a2) + 1)) ';' a2) ';' SCM+FSA-Stop;
end;

:: SCMFSA8B:def 2
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) = ((((b1 >0_goto insloc ((card b3) + 3)) ';' b3) ';' Goto insloc ((card b2) + 1)) ';' b2) ';' SCM+FSA-Stop;

:: SCMFSA8B:funcnot 3 => SCMFSA8B:func 3
definition
  let a1 be Int-Location;
  let a2, a3 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  func if<0(A1,A2,A3) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
    if=0(a1,a3,if>0(a1,a3,a2));
end;

:: SCMFSA8B:def 3
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) = if=0(b1,b3,if>0(b1,b3,b2));

:: SCMFSA8B:th 14
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location holds
   card if=0(b3,b1,b2) = ((card b1) + card b2) + 4;

:: SCMFSA8B:th 15
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Int-Location holds
   card if>0(b3,b1,b2) = ((card b1) + card b2) + 4;

:: SCMFSA8B:th 16
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 & 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;

:: SCMFSA8B:th 17
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 & 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);

:: SCMFSA8B:th 18
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 & 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;

:: SCMFSA8B:th 19
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
for b4 being Element of product the Object-Kind 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);

:: SCMFSA8B:th 20
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
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 or IExec(if=0(b4,b2,b3),b1) = (IExec(b3,b1)) +* Start-At insloc (((card b2) + card b3) + 3));

:: SCMFSA8B:th 21
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
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 or (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));

:: SCMFSA8B:th 22
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 & 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;

:: SCMFSA8B:th 23
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
for b4 being Element of product the Object-Kind of SCM+FSA
      st 0 < b4 . b3 & 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);

:: SCMFSA8B:th 24
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 & 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;

:: SCMFSA8B:th 25
theorem
for b1, b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being read-write Int-Location
for b4 being Element of product the Object-Kind 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);

:: SCMFSA8B:th 26
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location holds
   if>0(b4,b2,b3) is parahalting &
    (b1 . b4 <= 0 or 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));

:: SCMFSA8B:th 27
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
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 or (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));

:: SCMFSA8B:th 28
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 & 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;

:: SCMFSA8B:th 29
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 & 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);

:: SCMFSA8B:th 30
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 & 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;

:: SCMFSA8B:th 31
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 & 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);

:: SCMFSA8B:th 32
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 & 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;

:: SCMFSA8B:th 33
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 & 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);

:: SCMFSA8B:th 34
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b4 being read-write Int-Location holds
   if<0(b4,b2,b3) is parahalting &
    (0 <= b1 . b4 or IExec(if<0(b4,b2,b3),b1) = (IExec(b2,b1)) +* Start-At insloc ((((card b2) + card b3) + card b3) + 7)) &
    (0 <= b1 . b4 implies IExec(if<0(b4,b2,b3),b1) = (IExec(b3,b1)) +* Start-At insloc ((((card b2) + card b3) + card b3) + 7));

:: SCMFSA8B:funcreg 1
registration
  let a1, a2 be finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA;
  let a3 be read-write Int-Location;
  cluster if=0(a3,a1,a2) -> finite programmed initial parahalting;
end;

:: SCMFSA8B:funcreg 2
registration
  let a1, a2 be finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA;
  let a3 be read-write Int-Location;
  cluster if>0(a3,a1,a2) -> finite programmed initial parahalting;
end;

:: SCMFSA8B:funcnot 4 => SCMFSA8B:func 4
definition
  let a1, a2 be Int-Location;
  let a3, a4 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  func if=0(A1,A2,A3,A4) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
    (SubFrom(a1,a2)) ';' if=0(a1,a3,a4);
end;

:: SCMFSA8B:def 4
theorem
for b1, b2 being Int-Location
for b3, b4 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
if=0(b1,b2,b3,b4) = (SubFrom(b1,b2)) ';' if=0(b1,b3,b4);

:: SCMFSA8B:funcnot 5 => SCMFSA8B:func 5
definition
  let a1, a2 be Int-Location;
  let a3, a4 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  func if>0(A1,A2,A3,A4) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
    (SubFrom(a1,a2)) ';' if>0(a1,a3,a4);
end;

:: SCMFSA8B:def 5
theorem
for b1, b2 being Int-Location
for b3, b4 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
if>0(b1,b2,b3,b4) = (SubFrom(b1,b2)) ';' if>0(b1,b3,b4);

:: SCMFSA8B:funcnot 6 => SCMFSA8B:func 5
notation
  let a1, a2 be Int-Location;
  let a3, a4 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  synonym if<0(a2,a1,a3,a4) for if>0(a1,a2,a3,a4);
end;

:: SCMFSA8B:funcreg 3
registration
  let a1, a2 be finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA;
  let a3, a4 be read-write Int-Location;
  cluster if=0(a3,a4,a1,a2) -> finite programmed initial parahalting;
end;

:: SCMFSA8B:funcreg 4
registration
  let a1, a2 be finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA;
  let a3, a4 be read-write Int-Location;
  cluster if>0(a3,a4,a1,a2) -> finite programmed initial parahalting;
end;

:: SCMFSA8B:th 35
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
   (Result (b1 +* Initialized b2)) | (Int-Locations \/ FinSeq-Locations) = (IExec(b2,b1)) | (Int-Locations \/ FinSeq-Locations);

:: SCMFSA8B:th 36
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 holds
   Result (b1 +* Initialized b2),IExec(b2,b1) equal_outside NAT;

:: SCMFSA8B:th 37
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
for b3 being Element of the Instructions 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);

:: SCMFSA8B:th 38
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
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
for b5 being Element of 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);

:: SCMFSA8B:th 39
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 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);

:: SCMFSA8B:th 40
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
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;

:: SCMFSA8B:th 41
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
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);

:: SCMFSA8B:th 42
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
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 or (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));

:: SCMFSA8B:th 43
theorem
for b1 being Element of product the Object-Kind of SCM+FSA
for b2, b3 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
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 or (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));