Article SCMFSA_9, MML version 4.99.1005

:: SCMFSA_9:th 1
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Int-Location holds
   card if=0(b2,b1 ';' Goto insloc 0,SCM+FSA-Stop) = (card b1) + 6;

:: SCMFSA_9:th 2
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Int-Location holds
   card if>0(b2,b1 ';' Goto insloc 0,SCM+FSA-Stop) = (card b1) + 6;

:: SCMFSA_9:funcnot 1 => SCMFSA_9:func 1
definition
  let a1 be Int-Location;
  let a2 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  func while=0(A1,A2) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
    (if=0(a1,a2 ';' Goto insloc 0,SCM+FSA-Stop)) +* ((insloc ((card a2) + 4)) .--> goto insloc 0);
end;

:: SCMFSA_9:def 1
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   while=0(b1,b2) = (if=0(b1,b2 ';' Goto insloc 0,SCM+FSA-Stop)) +* ((insloc ((card b2) + 4)) .--> goto insloc 0);

:: SCMFSA_9:funcnot 2 => SCMFSA_9:func 2
definition
  let a1 be Int-Location;
  let a2 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  func while>0(A1,A2) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
    (if>0(a1,a2 ';' Goto insloc 0,SCM+FSA-Stop)) +* ((insloc ((card a2) + 4)) .--> goto insloc 0);
end;

:: SCMFSA_9:def 2
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   while>0(b1,b2) = (if>0(b1,b2 ';' Goto insloc 0,SCM+FSA-Stop)) +* ((insloc ((card b2) + 4)) .--> goto insloc 0);

:: SCMFSA_9:th 3
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Int-Location holds
   card if=0(b2,SCM+FSA-Stop,if>0(b2,SCM+FSA-Stop,b1 ';' Goto insloc 0)) = (card b1) + 11;

:: SCMFSA_9:funcnot 3 => SCMFSA_9:func 3
definition
  let a1 be Int-Location;
  let a2 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  func while<0(A1,A2) -> finite programmed initial Element of sproduct the Object-Kind of SCM+FSA equals
    (if=0(a1,SCM+FSA-Stop,if>0(a1,SCM+FSA-Stop,a2 ';' Goto insloc 0))) +* ((insloc ((card a2) + 4)) .--> goto insloc 0);
end;

:: SCMFSA_9:def 3
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   while<0(b1,b2) = (if=0(b1,SCM+FSA-Stop,if>0(b1,SCM+FSA-Stop,b2 ';' Goto insloc 0))) +* ((insloc ((card b2) + 4)) .--> goto insloc 0);

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

:: SCMFSA_9:th 5
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Int-Location holds
   card while>0(b2,b1) = (card b1) + 6;

:: SCMFSA_9:th 6
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being Int-Location holds
   card while<0(b2,b1) = (card b1) + 11;

:: SCMFSA_9:th 7
theorem
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds
   b1 =0_goto b2 <> halt SCM+FSA;

:: SCMFSA_9:th 8
theorem
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds
   b1 >0_goto b2 <> halt SCM+FSA;

:: SCMFSA_9:th 9
theorem
for b1 being Instruction-Location of SCM+FSA holds
   goto b1 <> halt SCM+FSA;

:: SCMFSA_9:th 10
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   insloc 0 in proj1 while=0(b1,b2) & insloc 1 in proj1 while=0(b1,b2) & insloc 0 in proj1 while>0(b1,b2) & insloc 1 in proj1 while>0(b1,b2);

:: SCMFSA_9:th 11
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while=0(b1,b2)) . insloc 0 = b1 =0_goto insloc 4 &
    (while=0(b1,b2)) . insloc 1 = goto insloc 2 &
    (while>0(b1,b2)) . insloc 0 = b1 >0_goto insloc 4 &
    (while>0(b1,b2)) . insloc 1 = goto insloc 2;

:: SCMFSA_9:th 12
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
      st b3 < 6
   holds insloc b3 in proj1 while=0(b1,b2);

:: SCMFSA_9:th 13
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
      st b3 < 6
   holds (card b2) + b3 in proj1 while=0(b1,b2);

:: SCMFSA_9:th 14
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while=0(b1,b2)) . ((card b2) + 5) = halt SCM+FSA;

:: SCMFSA_9:th 15
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while=0(b1,b2)) . insloc 3 = goto insloc ((card b2) + 5);

:: SCMFSA_9:th 16
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while=0(b1,b2)) . insloc 2 = goto insloc 3;

:: SCMFSA_9:th 17
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
      st b3 < (card b2) + 6
   holds insloc b3 in proj1 while=0(b1,b2);

:: SCMFSA_9: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
for b3 being read-write Int-Location
      st b1 . b3 <> 0
   holds while=0(b3,b2) is_halting_on b1 & while=0(b3,b2) is_closed_on b1;

:: SCMFSA_9:th 19
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of product the Object-Kind of SCM+FSA
for b4 being Element of NAT
      st b2 is_closed_on b3 &
         b2 is_halting_on b3 &
         b4 < LifeSpan (b3 +* (b2 +* Start-At insloc 0)) &
         IC Computation(b3 +* ((while=0(b1,b2)) +* Start-At insloc 0),1 + b4) = (IC Computation(b3 +* (b2 +* Start-At insloc 0),b4)) + 4 &
         (Computation(b3 +* ((while=0(b1,b2)) +* Start-At insloc 0),1 + b4)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b3 +* (b2 +* Start-At insloc 0),b4)) | (Int-Locations \/ FinSeq-Locations)
   holds IC Computation(b3 +* ((while=0(b1,b2)) +* Start-At insloc 0),(1 + b4) + 1) = (IC Computation(b3 +* (b2 +* Start-At insloc 0),b4 + 1)) + 4 &
    (Computation(b3 +* ((while=0(b1,b2)) +* Start-At insloc 0),(1 + b4) + 1)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b3 +* (b2 +* Start-At insloc 0),b4 + 1)) | (Int-Locations \/ FinSeq-Locations);

:: SCMFSA_9:th 20
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of product the Object-Kind of SCM+FSA
      st b2 is_closed_on b3 &
         b2 is_halting_on b3 &
         IC Computation(b3 +* ((while=0(b1,b2)) +* Start-At insloc 0),1 + LifeSpan (b3 +* (b2 +* Start-At insloc 0))) = (IC Computation(b3 +* (b2 +* Start-At insloc 0),LifeSpan (b3 +* (b2 +* Start-At insloc 0)))) + 4
   holds CurInstr Computation(b3 +* ((while=0(b1,b2)) +* Start-At insloc 0),1 + LifeSpan (b3 +* (b2 +* Start-At insloc 0))) = goto insloc ((card b2) + 4);

:: SCMFSA_9:th 21
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while=0(b1,b2)) . insloc ((card b2) + 4) = goto insloc 0;

:: SCMFSA_9: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
for b3 being read-write Int-Location
      st b2 is_closed_on b1 & b2 is_halting_on b1 & b1 . b3 = 0
   holds IC Computation(b1 +* ((while=0(b3,b2)) +* Start-At insloc 0),(LifeSpan (b1 +* (b2 +* Start-At insloc 0))) + 3) = insloc 0 &
    (for b4 being Element of NAT
          st b4 <= (LifeSpan (b1 +* (b2 +* Start-At insloc 0))) + 3
       holds IC Computation(b1 +* ((while=0(b3,b2)) +* Start-At insloc 0),b4) in proj1 while=0(b3,b2));

:: SCMFSA_9:funcnot 4 => SCMFSA_9:func 4
definition
  let a1 be Element of product the Object-Kind of SCM+FSA;
  let a2 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  let a3 be read-write Int-Location;
  func StepWhile=0(A3,A2,A1) -> Function-like quasi_total Relation of NAT,product the Object-Kind of SCM+FSA means
    it . 0 = a1 &
     (for b1 being natural set holds
        it . (b1 + 1) = Computation((it . b1) +* ((while=0(a3,a2)) +* Start-At insloc 0),(LifeSpan ((it . b1) +* (a2 +* Start-At insloc 0))) + 3));
end;

:: SCMFSA_9:def 4
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 read-write Int-Location
for b4 being Function-like quasi_total Relation of NAT,product the Object-Kind of SCM+FSA holds
      b4 = StepWhile=0(b3,b2,b1)
   iff
      b4 . 0 = b1 &
       (for b5 being natural set holds
          b4 . (b5 + 1) = Computation((b4 . b5) +* ((while=0(b3,b2)) +* Start-At insloc 0),(LifeSpan ((b4 . b5) +* (b2 +* Start-At insloc 0))) + 3));

:: SCMFSA_9:th 25
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 read-write Int-Location
for b4 being Element of NAT holds
   (StepWhile=0(b3,b2,b1)) . (b4 + 1) = (StepWhile=0(b3,b2,(StepWhile=0(b3,b2,b1)) . b4)) . 1;

:: SCMFSA_9:th 26
theorem
for b1, b2 being Relation-like Function-like set holds
(b1 +* b2) +* b2 = b1 +* b2;

:: SCMFSA_9:th 27
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set
      st (b1 +* b2) | b4 = b3 | b4
   holds (b3 +* b2) | b4 = (b1 +* b2) | b4;

:: SCMFSA_9:th 28
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set
      st b1 | b4 = b3 | b4
   holds (b3 +* b2) | b4 = (b1 +* b2) | b4;

:: SCMFSA_9:th 29
theorem
for b1, b2 being Element of product the Object-Kind of SCM+FSA
      st IC b1 = IC b2 &
         b1 | (Int-Locations \/ FinSeq-Locations) = b2 | (Int-Locations \/ FinSeq-Locations) &
         b1 | NAT = b2 | NAT
   holds b1 = b2;

:: SCMFSA_9:th 30
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
for b3 being Element of product the Object-Kind of SCM+FSA holds
   (StepWhile=0(b2,b1,b3)) . (0 + 1) = Computation(b3 +* ((while=0(b2,b1)) +* Start-At insloc 0),(LifeSpan (b3 +* (b1 +* Start-At insloc 0))) + 3);

:: SCMFSA_9:th 31
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
for b3 being Element of product the Object-Kind of SCM+FSA
for b4, b5 being Element of NAT
      st IC ((StepWhile=0(b2,b1,b3)) . b4) = insloc 0 &
         (StepWhile=0(b2,b1,b3)) . b4 = Computation(b3 +* ((while=0(b2,b1)) +* Start-At insloc 0),b5)
   holds (StepWhile=0(b2,b1,b3)) . b4 = ((StepWhile=0(b2,b1,b3)) . b4) +* ((while=0(b2,b1)) +* Start-At insloc 0) &
    (StepWhile=0(b2,b1,b3)) . (b4 + 1) = Computation(b3 +* ((while=0(b2,b1)) +* Start-At insloc 0),b5 + ((LifeSpan (((StepWhile=0(b2,b1,b3)) . b4) +* (b1 +* Start-At insloc 0))) + 3));

:: SCMFSA_9:th 32
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
for b3 being Element of product the Object-Kind of SCM+FSA
      st (for b4 being natural set holds
            b1 is_closed_on (StepWhile=0(b2,b1,b3)) . b4 & b1 is_halting_on (StepWhile=0(b2,b1,b3)) . b4) &
         (ex b4 being Function-like quasi_total Relation of product the Object-Kind of SCM+FSA,NAT st
            for b5 being natural set holds
               (b4 . ((StepWhile=0(b2,b1,b3)) . b5) <= b4 . ((StepWhile=0(b2,b1,b3)) . (b5 + 1)) implies b4 . ((StepWhile=0(b2,b1,b3)) . b5) = 0) &
                (b4 . ((StepWhile=0(b2,b1,b3)) . b5) = 0 implies ((StepWhile=0(b2,b1,b3)) . b5) . b2 <> 0) &
                (((StepWhile=0(b2,b1,b3)) . b5) . b2 = 0 or b4 . ((StepWhile=0(b2,b1,b3)) . b5) = 0))
   holds while=0(b2,b1) is_halting_on b3 & while=0(b2,b1) is_closed_on b3;

:: SCMFSA_9:th 33
theorem
for b1 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
for b3 being Element of product the Object-Kind of SCM+FSA
      st ex b4 being Function-like quasi_total Relation of product the Object-Kind of SCM+FSA,NAT st
           for b5 being natural set holds
              (b4 . ((StepWhile=0(b2,b1,b3)) . b5) <= b4 . ((StepWhile=0(b2,b1,b3)) . (b5 + 1)) implies b4 . ((StepWhile=0(b2,b1,b3)) . b5) = 0) &
               (b4 . ((StepWhile=0(b2,b1,b3)) . b5) = 0 implies ((StepWhile=0(b2,b1,b3)) . b5) . b2 <> 0) &
               (((StepWhile=0(b2,b1,b3)) . b5) . b2 = 0 or b4 . ((StepWhile=0(b2,b1,b3)) . b5) = 0)
   holds while=0(b2,b1) is_halting_on b3 & while=0(b2,b1) is_closed_on b3;

:: SCMFSA_9:th 34
theorem
for b1 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
      st ex b3 being Function-like quasi_total Relation of product the Object-Kind of SCM+FSA,NAT st
           for b4 being Element of product the Object-Kind of SCM+FSA holds
              (b3 . b4 <= b3 . ((StepWhile=0(b2,b1,b4)) . 1) implies b3 . b4 = 0) &
               (b3 . b4 = 0 implies b4 . b2 <> 0) &
               (b4 . b2 = 0 or b3 . b4 = 0)
   holds while=0(b2,b1) is parahalting;

:: SCMFSA_9:th 35
theorem
for b1, b2 being Instruction-Location of SCM+FSA
for b3 being Int-Location holds
   b1 .--> goto b2 does_not_destroy b3;

:: SCMFSA_9:th 36
theorem
for b1 being Element of the Instructions of SCM+FSA
      st b1 does_not_destroy intloc 0
   holds Macro b1 is good;

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

:: SCMFSA_9:funcreg 2
registration
  let a1 be finite programmed initial good Element of sproduct the Object-Kind of SCM+FSA;
  let a2 be Int-Location;
  cluster while=0(a2,a1) -> finite programmed initial good;
end;

:: SCMFSA_9:th 37
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
      st b3 < 6
   holds insloc b3 in proj1 while>0(b1,b2);

:: SCMFSA_9:th 38
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
      st b3 < 6
   holds (card b2) + b3 in proj1 while>0(b1,b2);

:: SCMFSA_9:th 39
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while>0(b1,b2)) . ((card b2) + 5) = halt SCM+FSA;

:: SCMFSA_9:th 40
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while>0(b1,b2)) . insloc 3 = goto insloc ((card b2) + 5);

:: SCMFSA_9:th 41
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while>0(b1,b2)) . insloc 2 = goto insloc 3;

:: SCMFSA_9:th 42
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of NAT
      st b3 < (card b2) + 6
   holds insloc b3 in proj1 while>0(b1,b2);

:: SCMFSA_9:th 43
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 read-write Int-Location
      st b1 . b3 <= 0
   holds while>0(b3,b2) is_halting_on b1 & while>0(b3,b2) is_closed_on b1;

:: SCMFSA_9:th 44
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of product the Object-Kind of SCM+FSA
for b4 being Element of NAT
      st b2 is_closed_on b3 &
         b2 is_halting_on b3 &
         b4 < LifeSpan (b3 +* (b2 +* Start-At insloc 0)) &
         IC Computation(b3 +* ((while>0(b1,b2)) +* Start-At insloc 0),1 + b4) = (IC Computation(b3 +* (b2 +* Start-At insloc 0),b4)) + 4 &
         (Computation(b3 +* ((while>0(b1,b2)) +* Start-At insloc 0),1 + b4)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b3 +* (b2 +* Start-At insloc 0),b4)) | (Int-Locations \/ FinSeq-Locations)
   holds IC Computation(b3 +* ((while>0(b1,b2)) +* Start-At insloc 0),(1 + b4) + 1) = (IC Computation(b3 +* (b2 +* Start-At insloc 0),b4 + 1)) + 4 &
    (Computation(b3 +* ((while>0(b1,b2)) +* Start-At insloc 0),(1 + b4) + 1)) | (Int-Locations \/ FinSeq-Locations) = (Computation(b3 +* (b2 +* Start-At insloc 0),b4 + 1)) | (Int-Locations \/ FinSeq-Locations);

:: SCMFSA_9:th 45
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b3 being Element of product the Object-Kind of SCM+FSA
      st b2 is_closed_on b3 &
         b2 is_halting_on b3 &
         IC Computation(b3 +* ((while>0(b1,b2)) +* Start-At insloc 0),1 + LifeSpan (b3 +* (b2 +* Start-At insloc 0))) = (IC Computation(b3 +* (b2 +* Start-At insloc 0),LifeSpan (b3 +* (b2 +* Start-At insloc 0)))) + 4
   holds CurInstr Computation(b3 +* ((while>0(b1,b2)) +* Start-At insloc 0),1 + LifeSpan (b3 +* (b2 +* Start-At insloc 0))) = goto insloc ((card b2) + 4);

:: SCMFSA_9:th 46
theorem
for b1 being Int-Location
for b2 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA holds
   (while>0(b1,b2)) . insloc ((card b2) + 4) = goto insloc 0;

:: SCMFSA_9: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
for b3 being read-write Int-Location
      st b2 is_closed_on b1 & b2 is_halting_on b1 & 0 < b1 . b3
   holds IC Computation(b1 +* ((while>0(b3,b2)) +* Start-At insloc 0),(LifeSpan (b1 +* (b2 +* Start-At insloc 0))) + 3) = insloc 0 &
    (for b4 being Element of NAT
          st b4 <= (LifeSpan (b1 +* (b2 +* Start-At insloc 0))) + 3
       holds IC Computation(b1 +* ((while>0(b3,b2)) +* Start-At insloc 0),b4) in proj1 while>0(b3,b2));

:: SCMFSA_9:funcnot 5 => SCMFSA_9:func 5
definition
  let a1 be Element of product the Object-Kind of SCM+FSA;
  let a2 be finite programmed initial Element of sproduct the Object-Kind of SCM+FSA;
  let a3 be read-write Int-Location;
  func StepWhile>0(A3,A2,A1) -> Function-like quasi_total Relation of NAT,product the Object-Kind of SCM+FSA means
    it . 0 = a1 &
     (for b1 being natural set holds
        it . (b1 + 1) = Computation((it . b1) +* ((while>0(a3,a2)) +* Start-At insloc 0),(LifeSpan ((it . b1) +* (a2 +* Start-At insloc 0))) + 3));
end;

:: SCMFSA_9:def 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
for b3 being read-write Int-Location
for b4 being Function-like quasi_total Relation of NAT,product the Object-Kind of SCM+FSA holds
      b4 = StepWhile>0(b3,b2,b1)
   iff
      b4 . 0 = b1 &
       (for b5 being natural set holds
          b4 . (b5 + 1) = Computation((b4 . b5) +* ((while>0(b3,b2)) +* Start-At insloc 0),(LifeSpan ((b4 . b5) +* (b2 +* Start-At insloc 0))) + 3));

:: SCMFSA_9:th 50
theorem
for b1 being Element of NAT
for 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 read-write Int-Location holds
   (StepWhile>0(b4,b3,b2)) . (b1 + 1) = (StepWhile>0(b4,b3,(StepWhile>0(b4,b3,b2)) . b1)) . 1;

:: SCMFSA_9:th 51
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
for b3 being Element of product the Object-Kind of SCM+FSA holds
   (StepWhile>0(b2,b1,b3)) . (0 + 1) = Computation(b3 +* ((while>0(b2,b1)) +* Start-At insloc 0),(LifeSpan (b3 +* (b1 +* Start-At insloc 0))) + 3);

:: SCMFSA_9:th 52
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
for b3 being Element of product the Object-Kind of SCM+FSA
for b4, b5 being Element of NAT
      st IC ((StepWhile>0(b2,b1,b3)) . b4) = insloc 0 &
         (StepWhile>0(b2,b1,b3)) . b4 = Computation(b3 +* ((while>0(b2,b1)) +* Start-At insloc 0),b5)
   holds (StepWhile>0(b2,b1,b3)) . b4 = ((StepWhile>0(b2,b1,b3)) . b4) +* ((while>0(b2,b1)) +* Start-At insloc 0) &
    (StepWhile>0(b2,b1,b3)) . (b4 + 1) = Computation(b3 +* ((while>0(b2,b1)) +* Start-At insloc 0),b5 + ((LifeSpan (((StepWhile>0(b2,b1,b3)) . b4) +* (b1 +* Start-At insloc 0))) + 3));

:: SCMFSA_9:th 53
theorem
for b1 being finite programmed initial Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
for b3 being Element of product the Object-Kind of SCM+FSA
      st (for b4 being natural set holds
            b1 is_closed_on (StepWhile>0(b2,b1,b3)) . b4 & b1 is_halting_on (StepWhile>0(b2,b1,b3)) . b4) &
         (ex b4 being Function-like quasi_total Relation of product the Object-Kind of SCM+FSA,NAT st
            for b5 being natural set holds
               (b4 . ((StepWhile>0(b2,b1,b3)) . b5) <= b4 . ((StepWhile>0(b2,b1,b3)) . (b5 + 1)) implies b4 . ((StepWhile>0(b2,b1,b3)) . b5) = 0) &
                (b4 . ((StepWhile>0(b2,b1,b3)) . b5) = 0 implies ((StepWhile>0(b2,b1,b3)) . b5) . b2 <= 0) &
                (((StepWhile>0(b2,b1,b3)) . b5) . b2 <= 0 implies b4 . ((StepWhile>0(b2,b1,b3)) . b5) = 0))
   holds while>0(b2,b1) is_halting_on b3 & while>0(b2,b1) is_closed_on b3;

:: SCMFSA_9:th 54
theorem
for b1 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
for b3 being Element of product the Object-Kind of SCM+FSA
      st ex b4 being Function-like quasi_total Relation of product the Object-Kind of SCM+FSA,NAT st
           for b5 being natural set holds
              (b4 . ((StepWhile>0(b2,b1,b3)) . b5) <= b4 . ((StepWhile>0(b2,b1,b3)) . (b5 + 1)) implies b4 . ((StepWhile>0(b2,b1,b3)) . b5) = 0) &
               (b4 . ((StepWhile>0(b2,b1,b3)) . b5) = 0 implies ((StepWhile>0(b2,b1,b3)) . b5) . b2 <= 0) &
               (((StepWhile>0(b2,b1,b3)) . b5) . b2 <= 0 implies b4 . ((StepWhile>0(b2,b1,b3)) . b5) = 0)
   holds while>0(b2,b1) is_halting_on b3 & while>0(b2,b1) is_closed_on b3;

:: SCMFSA_9:th 55
theorem
for b1 being finite programmed initial parahalting Element of sproduct the Object-Kind of SCM+FSA
for b2 being read-write Int-Location
      st ex b3 being Function-like quasi_total Relation of product the Object-Kind of SCM+FSA,NAT st
           for b4 being Element of product the Object-Kind of SCM+FSA holds
              (b3 . b4 <= b3 . ((StepWhile>0(b2,b1,b4)) . 1) implies b3 . b4 = 0) &
               (b3 . b4 = 0 implies b4 . b2 <= 0) &
               (b4 . b2 <= 0 implies b3 . b4 = 0)
   holds while>0(b2,b1) is parahalting;

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

:: SCMFSA_9:funcreg 4
registration
  let a1 be finite programmed initial good Element of sproduct the Object-Kind of SCM+FSA;
  let a2 be Int-Location;
  cluster while>0(a2,a1) -> finite programmed initial good;
end;