:: SCMISORT semantic presentation
theorem Th1: :: SCMISORT:1
theorem Th2: :: SCMISORT:2
theorem Th3: :: SCMISORT:3
theorem Th4: :: SCMISORT:4
theorem Th5: :: SCMISORT:5
canceled;
theorem Th6: :: SCMISORT:6
theorem Th7: :: SCMISORT:7
theorem Th8: :: SCMISORT:8
for
b1 being
Nat holds
( not
b1 <= 11 or
b1 = 0 or
b1 = 1 or
b1 = 2 or
b1 = 3 or
b1 = 4 or
b1 = 5 or
b1 = 6 or
b1 = 7 or
b1 = 8 or
b1 = 9 or
b1 = 10 or
b1 = 11 )
theorem Th9: :: SCMISORT:9
theorem Th10: :: SCMISORT:10
theorem Th11: :: SCMISORT:11
theorem Th12: :: SCMISORT:12
theorem Th13: :: SCMISORT:13
theorem Th14: :: SCMISORT:14
theorem Th15: :: SCMISORT:15
theorem Th16: :: SCMISORT:16
theorem Th17: :: SCMISORT:17
theorem Th18: :: SCMISORT:18
theorem Th19: :: SCMISORT:19
theorem Th20: :: SCMISORT:20
theorem Th21: :: SCMISORT:21
theorem Th22: :: SCMISORT:22
definition
let c1 be
State of
SCM+FSA ;
let c2 be
Macro-Instruction;
let c3 be
read-write Int-Location ;
func StepWhile>0 c3,
c1,
c2 -> Function of
NAT ,
product the
Object-Kind of
SCM+FSA means :
Def1:
:: SCMISORT:def 1
(
a4 . 0
= a1 & ( for
b1 being
Nat holds
a4 . (b1 + 1) = (Computation ((a4 . b1) +* (Initialized (while>0 a3,a2)))) . ((LifeSpan ((a4 . b1) +* (Initialized a2))) + 3) ) );
existence
ex b1 being Function of NAT , product the Object-Kind of SCM+FSA st
( b1 . 0 = c1 & ( for b2 being Nat holds b1 . (b2 + 1) = (Computation ((b1 . b2) +* (Initialized (while>0 c3,c2)))) . ((LifeSpan ((b1 . b2) +* (Initialized c2))) + 3) ) )
uniqueness
for b1, b2 being Function of NAT , product the Object-Kind of SCM+FSA st b1 . 0 = c1 & ( for b3 being Nat holds b1 . (b3 + 1) = (Computation ((b1 . b3) +* (Initialized (while>0 c3,c2)))) . ((LifeSpan ((b1 . b3) +* (Initialized c2))) + 3) ) & b2 . 0 = c1 & ( for b3 being Nat holds b2 . (b3 + 1) = (Computation ((b2 . b3) +* (Initialized (while>0 c3,c2)))) . ((LifeSpan ((b2 . b3) +* (Initialized c2))) + 3) ) holds
b1 = b2
end;
:: deftheorem Def1 defines StepWhile>0 SCMISORT:def 1 :
theorem Th23: :: SCMISORT:23
canceled;
theorem Th24: :: SCMISORT:24
canceled;
theorem Th25: :: SCMISORT:25
theorem Th26: :: SCMISORT:26
theorem Th27: :: SCMISORT:27
for
b1 being
Macro-Instruction for
b2 being
read-write Int-Location for
b3 being
State of
SCM+FSA for
b4,
b5 being
Nat st
IC ((StepWhile>0 b2,b3,b1) . b4) = insloc 0 &
(StepWhile>0 b2,b3,b1) . b4 = (Computation (b3 +* (Initialized (while>0 b2,b1)))) . b5 &
((StepWhile>0 b2,b3,b1) . b4) . (intloc 0) = 1 holds
(
(StepWhile>0 b2,b3,b1) . b4 = ((StepWhile>0 b2,b3,b1) . b4) +* (Initialized (while>0 b2,b1)) &
(StepWhile>0 b2,b3,b1) . (b4 + 1) = (Computation (b3 +* (Initialized (while>0 b2,b1)))) . (b5 + ((LifeSpan (((StepWhile>0 b2,b3,b1) . b4) +* (Initialized b1))) + 3)) )
theorem Th28: :: SCMISORT:28
for
b1 being
Macro-Instruction for
b2 being
read-write Int-Location for
b3 being
State of
SCM+FSA st ex
b4 being
Function of
product the
Object-Kind of
SCM+FSA ,
NAT st
for
b5 being
Nat holds
( (
b4 . ((StepWhile>0 b2,b3,b1) . b5) <> 0 implies (
b4 . ((StepWhile>0 b2,b3,b1) . (b5 + 1)) < b4 . ((StepWhile>0 b2,b3,b1) . b5) &
b1 is_closed_onInit (StepWhile>0 b2,b3,b1) . b5 &
b1 is_halting_onInit (StepWhile>0 b2,b3,b1) . b5 ) ) &
((StepWhile>0 b2,b3,b1) . (b5 + 1)) . (intloc 0) = 1 & (
b4 . ((StepWhile>0 b2,b3,b1) . b5) = 0 implies
((StepWhile>0 b2,b3,b1) . b5) . b2 <= 0 ) & (
((StepWhile>0 b2,b3,b1) . b5) . b2 <= 0 implies
b4 . ((StepWhile>0 b2,b3,b1) . b5) = 0 ) ) holds
(
while>0 b2,
b1 is_halting_onInit b3 &
while>0 b2,
b1 is_closed_onInit b3 )
theorem Th29: :: SCMISORT:29
theorem Th30: :: SCMISORT:30
theorem Th31: :: SCMISORT:31
theorem Th32: :: SCMISORT:32
theorem Th33: :: SCMISORT:33
theorem Th34: :: SCMISORT:34
theorem Th35: :: SCMISORT:35
theorem Th36: :: SCMISORT:36
theorem Th37: :: SCMISORT:37
set c1 = intloc 0;
set c2 = intloc 1;
set c3 = intloc 2;
set c4 = intloc 3;
set c5 = intloc 4;
set c6 = intloc 5;
set c7 = intloc 6;
set c8 = (((((intloc 2) := (intloc 0)) ';' ((intloc 3) := (intloc 0))) ';' ((intloc 4) := (intloc 0))) ';' ((intloc 5) := (intloc 0))) ';' ((intloc 6) := (intloc 0));
definition
let c9 be
FinSeq-Location ;
func insert-sort c1 -> Macro-Instruction equals :: SCMISORT:def 2
((((((((intloc 2) := (intloc 0)) ';' ((intloc 3) := (intloc 0))) ';' ((intloc 4) := (intloc 0))) ';' ((intloc 5) := (intloc 0))) ';' ((intloc 6) := (intloc 0))) ';' ((intloc 1) :=len a1)) ';' (SubFrom (intloc 1),(intloc 0))) ';' (Times (intloc 1),(((((((((intloc 2) :=len a1) ';' (SubFrom (intloc 2),(intloc 1))) ';' ((intloc 3) := (intloc 2))) ';' (AddTo (intloc 3),(intloc 0))) ';' ((intloc 6) := a1,(intloc 3))) ';' (SubFrom (intloc 4),(intloc 4))) ';' (while>0 (intloc 2),((((intloc 5) := a1,(intloc 2)) ';' (SubFrom (intloc 5),(intloc 6))) ';' (if>0 (intloc 5),(Macro (SubFrom (intloc 2),(intloc 2))),((AddTo (intloc 4),(intloc 0)) ';' (SubFrom (intloc 2),(intloc 0))))))) ';' (Times (intloc 4),(((((((intloc 2) := (intloc 3)) ';' (SubFrom (intloc 3),(intloc 0))) ';' ((intloc 5) := a1,(intloc 2))) ';' ((intloc 6) := a1,(intloc 3))) ';' (a1,(intloc 2) := (intloc 6))) ';' (a1,(intloc 3) := (intloc 5))))));
coherence
((((((((intloc 2) := (intloc 0)) ';' ((intloc 3) := (intloc 0))) ';' ((intloc 4) := (intloc 0))) ';' ((intloc 5) := (intloc 0))) ';' ((intloc 6) := (intloc 0))) ';' ((intloc 1) :=len c9)) ';' (SubFrom (intloc 1),(intloc 0))) ';' (Times (intloc 1),(((((((((intloc 2) :=len c9) ';' (SubFrom (intloc 2),(intloc 1))) ';' ((intloc 3) := (intloc 2))) ';' (AddTo (intloc 3),(intloc 0))) ';' ((intloc 6) := c9,(intloc 3))) ';' (SubFrom (intloc 4),(intloc 4))) ';' (while>0 (intloc 2),((((intloc 5) := c9,(intloc 2)) ';' (SubFrom (intloc 5),(intloc 6))) ';' (if>0 (intloc 5),(Macro (SubFrom (intloc 2),(intloc 2))),((AddTo (intloc 4),(intloc 0)) ';' (SubFrom (intloc 2),(intloc 0))))))) ';' (Times (intloc 4),(((((((intloc 2) := (intloc 3)) ';' (SubFrom (intloc 3),(intloc 0))) ';' ((intloc 5) := c9,(intloc 2))) ';' ((intloc 6) := c9,(intloc 3))) ';' (c9,(intloc 2) := (intloc 6))) ';' (c9,(intloc 3) := (intloc 5)))))) is Macro-Instruction
;
end;
:: deftheorem Def2 defines insert-sort SCMISORT:def 2 :
for
b1 being
FinSeq-Location holds
insert-sort b1 = ((((((((intloc 2) := (intloc 0)) ';' ((intloc 3) := (intloc 0))) ';' ((intloc 4) := (intloc 0))) ';' ((intloc 5) := (intloc 0))) ';' ((intloc 6) := (intloc 0))) ';' ((intloc 1) :=len b1)) ';' (SubFrom (intloc 1),(intloc 0))) ';' (Times (intloc 1),(((((((((intloc 2) :=len b1) ';' (SubFrom (intloc 2),(intloc 1))) ';' ((intloc 3) := (intloc 2))) ';' (AddTo (intloc 3),(intloc 0))) ';' ((intloc 6) := b1,(intloc 3))) ';' (SubFrom (intloc 4),(intloc 4))) ';' (while>0 (intloc 2),((((intloc 5) := b1,(intloc 2)) ';' (SubFrom (intloc 5),(intloc 6))) ';' (if>0 (intloc 5),(Macro (SubFrom (intloc 2),(intloc 2))),((AddTo (intloc 4),(intloc 0)) ';' (SubFrom (intloc 2),(intloc 0))))))) ';' (Times (intloc 4),(((((((intloc 2) := (intloc 3)) ';' (SubFrom (intloc 3),(intloc 0))) ';' ((intloc 5) := b1,(intloc 2))) ';' ((intloc 6) := b1,(intloc 3))) ';' (b1,(intloc 2) := (intloc 6))) ';' (b1,(intloc 3) := (intloc 5))))));
:: deftheorem Def3 defines Insert-Sort-Algorithm SCMISORT:def 3 :
theorem Th38: :: SCMISORT:38
theorem Th39: :: SCMISORT:39
theorem Th40: :: SCMISORT:40
theorem Th41: :: SCMISORT:41
theorem Th42: :: SCMISORT:42
theorem Th43: :: SCMISORT:43
Lemma32:
for b1 being State of SCM+FSA st Insert-Sort-Algorithm c= b1 holds
( b1 . (insloc 0) = (intloc 2) := (intloc 0) & b1 . (insloc 1) = goto (insloc 2) & b1 . (insloc 2) = (intloc 3) := (intloc 0) & b1 . (insloc 3) = goto (insloc 4) & b1 . (insloc 4) = (intloc 4) := (intloc 0) & b1 . (insloc 5) = goto (insloc 6) & b1 . (insloc 6) = (intloc 5) := (intloc 0) & b1 . (insloc 7) = goto (insloc 8) & b1 . (insloc 8) = (intloc 6) := (intloc 0) & b1 . (insloc 9) = goto (insloc 10) & b1 . (insloc 10) = (intloc 1) :=len (fsloc 0) & b1 . (insloc 11) = goto (insloc 12) )
set c9 = fsloc 0;
set c10 = intloc (0 + 1);
set c11 = intloc (1 + 1);
set c12 = intloc (2 + 1);
set c13 = intloc (3 + 1);
set c14 = intloc (4 + 1);
set c15 = intloc (5 + 1);
set c16 = (intloc (1 + 1)) := (intloc (2 + 1));
set c17 = SubFrom (intloc (2 + 1)),(intloc 0);
set c18 = (intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1));
set c19 = (intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1));
set c20 = (fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1));
set c21 = (fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1));
set c22 = ((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1)));
set c23 = (intloc (1 + 1)) := (intloc 0);
set c24 = (intloc (2 + 1)) := (intloc 0);
set c25 = (intloc (3 + 1)) := (intloc 0);
set c26 = (intloc (4 + 1)) := (intloc 0);
set c27 = (intloc (5 + 1)) := (intloc 0);
set c28 = Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))));
set c29 = SubFrom (intloc (1 + 1)),(intloc (1 + 1));
set c30 = Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)));
set c31 = AddTo (intloc (3 + 1)),(intloc 0);
set c32 = SubFrom (intloc (1 + 1)),(intloc 0);
set c33 = if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)));
set c34 = (intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1));
set c35 = SubFrom (intloc (4 + 1)),(intloc (5 + 1));
set c36 = (((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))));
set c37 = (intloc (1 + 1)) :=len (fsloc 0);
set c38 = SubFrom (intloc (1 + 1)),(intloc (0 + 1));
set c39 = (intloc (2 + 1)) := (intloc (1 + 1));
set c40 = AddTo (intloc (2 + 1)),(intloc 0);
set c41 = (intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1));
set c42 = SubFrom (intloc (3 + 1)),(intloc (3 + 1));
set c43 = while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))));
set c44 = ((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)));
set c45 = ((((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))) ';' (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))))) ';' (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1)))));
set c46 = (((((intloc 2) := (intloc 0)) ';' ((intloc 3) := (intloc 0))) ';' ((intloc 4) := (intloc 0))) ';' ((intloc 5) := (intloc 0))) ';' ((intloc 6) := (intloc 0));
set c47 = (intloc (0 + 1)) :=len (fsloc 0);
set c48 = SubFrom (intloc (0 + 1)),(intloc 0);
Lemma33:
for b1 being State of SCM+FSA st Insert-Sort-Algorithm c= b1 & b1 starts_at insloc 0 holds
( ( for b2 being Nat st b2 > 0 & b2 < 12 holds
( ((Computation b1) . b2) . (IC SCM+FSA ) = insloc b2 & ((Computation b1) . b2) . (intloc 0) = b1 . (intloc 0) & ((Computation b1) . b2) . (fsloc 0) = b1 . (fsloc 0) ) ) & ((Computation b1) . 11) . (intloc 1) = len (b1 . (fsloc 0)) & ((Computation b1) . 11) . (intloc 2) = b1 . (intloc 0) & ((Computation b1) . 11) . (intloc 3) = b1 . (intloc 0) & ((Computation b1) . 11) . (intloc 4) = b1 . (intloc 0) & ((Computation b1) . 11) . (intloc 5) = b1 . (intloc 0) & ((Computation b1) . 11) . (intloc 6) = b1 . (intloc 0) )
Lemma34:
for b1 being State of SCM+FSA holds
( ( b1 . (intloc (4 + 1)) > 0 implies (IExec (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))),b1) . (intloc (1 + 1)) = 0 ) & ( b1 . (intloc (4 + 1)) <= 0 implies (IExec (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))),b1) . (intloc (1 + 1)) = (b1 . (intloc (1 + 1))) - 1 ) )
Lemma35:
for b1 being State of SCM+FSA holds
( (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (intloc (1 + 1)) < b1 . (intloc (1 + 1)) or (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (intloc (1 + 1)) <= 0 )
then Lemma36:
while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))) is good InitHalting Macro-Instruction
by Th30;
Lemma37:
((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))) does_not_destroy intloc (3 + 1)
Lemma38:
((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))) does_not_destroy intloc (0 + 1)
Lemma39:
(((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))) does_not_destroy intloc (0 + 1)
Lemma40:
((((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))) ';' (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))))) ';' (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))) does_not_destroy intloc (0 + 1)
Lemma41:
Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1)))) is good InitHalting Macro-Instruction
Lemma42:
((((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))) ';' (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))))) ';' (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))) is good InitHalting Macro-Instruction
Lemma43:
Times (intloc (0 + 1)),(((((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))) ';' (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))))) ';' (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1)))))) is good InitHalting Macro-Instruction
theorem Th44: :: SCMISORT:44
Lemma45:
for b1 being State of SCM+FSA holds (IExec (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))),b1) . (fsloc 0) = b1 . (fsloc 0)
Lemma46:
for b1 being State of SCM+FSA holds
( ( b1 . (intloc (4 + 1)) > 0 implies (IExec (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))),b1) . (intloc (3 + 1)) = b1 . (intloc (3 + 1)) ) & ( b1 . (intloc (4 + 1)) <= 0 implies (IExec (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))),b1) . (intloc (3 + 1)) = (b1 . (intloc (3 + 1))) + 1 ) )
Lemma47:
for b1 being read-write Int-Location
for b2 being State of SCM+FSA st b1 <> intloc (3 + 1) & b1 <> intloc (1 + 1) holds
(IExec (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))),b2) . b1 = b2 . b1
Lemma48:
for b1 being State of SCM+FSA st b1 . (intloc (1 + 1)) >= 1 & b1 . (intloc (1 + 1)) <= len (b1 . (fsloc 0)) holds
( (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (intloc (2 + 1)) = b1 . (intloc (2 + 1)) & (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (intloc (5 + 1)) = b1 . (intloc (5 + 1)) & (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (fsloc 0) = b1 . (fsloc 0) & ex b2 being Integer st
( b2 = (b1 . (fsloc 0)) . (b1 . (intloc (1 + 1))) & ( b2 - (b1 . (intloc (5 + 1))) > 0 implies ( (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (intloc (1 + 1)) = 0 & (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (intloc (3 + 1)) = b1 . (intloc (3 + 1)) ) ) & ( b2 - (b1 . (intloc (5 + 1))) <= 0 implies ( (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (intloc (1 + 1)) = (b1 . (intloc (1 + 1))) - 1 & (IExec ((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))),b1) . (intloc (3 + 1)) = (b1 . (intloc (3 + 1))) + 1 ) ) ) )
Lemma49:
for b1 being Nat
for b2 being State of SCM+FSA st b2 . (intloc (1 + 1)) = b1 & b2 . (intloc (1 + 1)) <= len (b2 . (fsloc 0)) holds
( b2 . (fsloc 0) = (IExec (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))))),b2) . (fsloc 0) & b2 . (intloc (5 + 1)) = (IExec (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))))),b2) . (intloc (5 + 1)) & b2 . (intloc (2 + 1)) = (IExec (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))))),b2) . (intloc (2 + 1)) & ( b1 = 0 or ex b3 being Natex b4 being Integer st
( b3 = ((IExec (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0)))))),b2) . (intloc (3 + 1))) - (b2 . (intloc (3 + 1))) & b3 <= b1 & ( b1 - b3 >= 1 implies ( b4 = (b2 . (fsloc 0)) . (b1 - b3) & b4 >= b2 . (intloc (5 + 1)) ) ) & ( for b5 being Nat st b5 > b1 - b3 & b5 < b1 + 1 holds
ex b6 being Integer st
( b6 = (b2 . (fsloc 0)) . b5 & b6 <= b2 . (intloc (5 + 1)) ) ) ) ) )
Lemma50:
for b1 being State of SCM+FSA holds
( (IExec (((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1)))),b1) . (intloc (2 + 1)) = (b1 . (intloc (2 + 1))) - 1 & (IExec (((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1)))),b1) . (fsloc 0) = ((b1 . (fsloc 0)) +* (abs (b1 . (intloc (2 + 1)))),((b1 . (fsloc 0)) /. (abs ((b1 . (intloc (2 + 1))) - 1)))) +* (abs ((b1 . (intloc (2 + 1))) - 1)),((b1 . (fsloc 0)) /. (abs (b1 . (intloc (2 + 1))))) )
Lemma51:
for b1 being Nat
for b2 being State of SCM+FSA st b2 . (intloc (3 + 1)) = b1 & b1 < b2 . (intloc (2 + 1)) & b2 . (intloc (2 + 1)) <= len (b2 . (fsloc 0)) holds
( b2 . (fsloc 0),(IExec (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))),b2) . (fsloc 0) are_fiberwise_equipotent & (IExec (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))),b2) . (intloc (2 + 1)) = (b2 . (intloc (2 + 1))) - b1 & ((IExec (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))),b2) . (fsloc 0)) . ((b2 . (intloc (2 + 1))) - b1) = (b2 . (fsloc 0)) . (b2 . (intloc (2 + 1))) & ( for b3 being Nat st (b2 . (intloc (2 + 1))) - b1 < b3 & b3 <= b2 . (intloc (2 + 1)) holds
((IExec (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))),b2) . (fsloc 0)) . b3 = (b2 . (fsloc 0)) . (b3 - 1) ) & ( for b3 being Nat st b2 . (intloc (2 + 1)) < b3 & b3 <= len (b2 . (fsloc 0)) holds
((IExec (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))),b2) . (fsloc 0)) . b3 = (b2 . (fsloc 0)) . b3 ) & ( for b3 being Nat st 1 <= b3 & b3 < (b2 . (intloc (2 + 1))) - b1 holds
((IExec (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))),b2) . (fsloc 0)) . b3 = (b2 . (fsloc 0)) . b3 ) )
Lemma52:
for b1 being State of SCM+FSA holds
( (IExec (((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))),b1) . (intloc (1 + 1)) = (len (b1 . (fsloc 0))) - (b1 . (intloc (0 + 1))) & (IExec (((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))),b1) . (intloc (2 + 1)) = ((len (b1 . (fsloc 0))) - (b1 . (intloc (0 + 1)))) + 1 & (IExec (((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))),b1) . (fsloc 0) = b1 . (fsloc 0) & (IExec (((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))),b1) . (intloc (3 + 1)) = 0 & (IExec (((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))),b1) . (intloc (5 + 1)) = (b1 . (fsloc 0)) /. (abs (((len (b1 . (fsloc 0))) - (b1 . (intloc (0 + 1)))) + 1)) )
set c49 = Times (intloc (0 + 1)),(((((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))) ';' (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))))) ';' (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))));
Lemma53:
for b1 being State of SCM+FSA st b1 . (intloc (0 + 1)) = (len (b1 . (fsloc 0))) - 1 holds
( b1 . (fsloc 0),(IExec (Times (intloc (0 + 1)),(((((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))) ';' (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))))) ';' (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))))),b1) . (fsloc 0) are_fiberwise_equipotent & ( for b2, b3 being Nat st b2 >= 1 & b3 <= len (b1 . (fsloc 0)) & b2 < b3 holds
for b4, b5 being Integer st b4 = ((IExec (Times (intloc (0 + 1)),(((((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))) ';' (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))))) ';' (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))))),b1) . (fsloc 0)) . b2 & b5 = ((IExec (Times (intloc (0 + 1)),(((((((((intloc (1 + 1)) :=len (fsloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc (0 + 1)))) ';' ((intloc (2 + 1)) := (intloc (1 + 1)))) ';' (AddTo (intloc (2 + 1)),(intloc 0))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' (SubFrom (intloc (3 + 1)),(intloc (3 + 1)))) ';' (while>0 (intloc (1 + 1)),((((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1))) ';' (SubFrom (intloc (4 + 1)),(intloc (5 + 1)))) ';' (if>0 (intloc (4 + 1)),(Macro (SubFrom (intloc (1 + 1)),(intloc (1 + 1)))),((AddTo (intloc (3 + 1)),(intloc 0)) ';' (SubFrom (intloc (1 + 1)),(intloc 0))))))) ';' (Times (intloc (3 + 1)),(((((((intloc (1 + 1)) := (intloc (2 + 1))) ';' (SubFrom (intloc (2 + 1)),(intloc 0))) ';' ((intloc (4 + 1)) := (fsloc 0),(intloc (1 + 1)))) ';' ((intloc (5 + 1)) := (fsloc 0),(intloc (2 + 1)))) ';' ((fsloc 0),(intloc (1 + 1)) := (intloc (5 + 1)))) ';' ((fsloc 0),(intloc (2 + 1)) := (intloc (4 + 1))))))),b1) . (fsloc 0)) . b3 holds
b4 >= b5 ) )
theorem Th45: :: SCMISORT:45
theorem Th46: :: SCMISORT:46
theorem Th47: :: SCMISORT:47
theorem Th48: :: SCMISORT:48
theorem Th49: :: SCMISORT:49