:: SCMFSA10 semantic presentation

theorem Th1: :: SCMFSA10:1
for b1 being Function
for b2, b3, b4, b5, b6, b7 being set st b2 <> b4 & b2 <> b6 holds
(((b1 +* (b2 .--> b3)) +* (b4 .--> b5)) +* (b6 .--> b7)) . b2 = b3
proof end;

theorem Th2: :: SCMFSA10:2
for b1, b2 being set holds <*b1*> +* 1,b2 = <*b2*>
proof end;

definition
let c1, c2 be Int-Location ;
let c3, c4 be Integer;
redefine func --> as c1,c2 --> c3,c4 -> FinPartState of SCM+FSA ;
coherence
c1,c2 --> c3,c4 is FinPartState of SCM+FSA
proof end;
end;

theorem Th3: :: SCMFSA10:3
for b1 being Int-Location holds not b1 in the Instruction-Locations of SCM+FSA
proof end;

theorem Th4: :: SCMFSA10:4
for b1 being FinSeq-Location holds not b1 in the Instruction-Locations of SCM+FSA
proof end;

theorem Th5: :: SCMFSA10:5
SCM+FSA-Data-Loc <> the Instruction-Locations of SCM+FSA
proof end;

theorem Th6: :: SCMFSA10:6
SCM+FSA-Data*-Loc <> the Instruction-Locations of SCM+FSA
proof end;

theorem Th7: :: SCMFSA10:7
for b1 being Object of SCM+FSA holds
( b1 = IC SCM+FSA or b1 in the Instruction-Locations of SCM+FSA or b1 is Int-Location or b1 is FinSeq-Location )
proof end;

theorem Th8: :: SCMFSA10:8
for b1, b2 being Instruction-Location of SCM+FSA st b1 <> b2 holds
Next b1 <> Next b2
proof end;

theorem Th9: :: SCMFSA10:9
for b1, b2 being Int-Location holds b1 := b2 = [1,<*b1,b2*>]
proof end;

theorem Th10: :: SCMFSA10:10
for b1, b2 being Int-Location holds AddTo b1,b2 = [2,<*b1,b2*>]
proof end;

theorem Th11: :: SCMFSA10:11
for b1, b2 being Int-Location holds SubFrom b1,b2 = [3,<*b1,b2*>]
proof end;

theorem Th12: :: SCMFSA10:12
for b1, b2 being Int-Location holds MultBy b1,b2 = [4,<*b1,b2*>]
proof end;

theorem Th13: :: SCMFSA10:13
for b1, b2 being Int-Location holds Divide b1,b2 = [5,<*b1,b2*>]
proof end;

theorem Th14: :: SCMFSA10:14
for b1 being Instruction-Location of SCM+FSA holds goto b1 = [6,<*b1*>]
proof end;

theorem Th15: :: SCMFSA10:15
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds b1 =0_goto b2 = [7,<*b2,b1*>]
proof end;

theorem Th16: :: SCMFSA10:16
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds b1 >0_goto b2 = [8,<*b2,b1*>]
proof end;

Lemma17: for b1, b2 being set st b1 in dom <*b2*> holds
b1 = 1
proof end;

Lemma18: for b1, b2, b3 being set holds
( not b1 in dom <*b2,b3*> or b1 = 1 or b1 = 2 )
proof end;

Lemma19: for b1, b2, b3, b4 being set holds
( not b1 in dom <*b2,b3,b4*> or b1 = 1 or b1 = 2 or b1 = 3 )
proof end;

Lemma20: for b1 being InsType of SCM+FSA holds
( 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 or b1 = 12 )
proof end;

theorem Th17: :: SCMFSA10:17
AddressPart (halt SCM+FSA ) = {} by AMI_3:71, MCART_1:def 2, SCMFSA_2:123;

theorem Th18: :: SCMFSA10:18
for b1, b2 being Int-Location holds AddressPart (b1 := b2) = <*b1,b2*>
proof end;

theorem Th19: :: SCMFSA10:19
for b1, b2 being Int-Location holds AddressPart (AddTo b1,b2) = <*b1,b2*>
proof end;

theorem Th20: :: SCMFSA10:20
for b1, b2 being Int-Location holds AddressPart (SubFrom b1,b2) = <*b1,b2*>
proof end;

theorem Th21: :: SCMFSA10:21
for b1, b2 being Int-Location holds AddressPart (MultBy b1,b2) = <*b1,b2*>
proof end;

theorem Th22: :: SCMFSA10:22
for b1, b2 being Int-Location holds AddressPart (Divide b1,b2) = <*b1,b2*>
proof end;

theorem Th23: :: SCMFSA10:23
for b1 being Instruction-Location of SCM+FSA holds AddressPart (goto b1) = <*b1*>
proof end;

theorem Th24: :: SCMFSA10:24
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds AddressPart (b1 =0_goto b2) = <*b2,b1*>
proof end;

theorem Th25: :: SCMFSA10:25
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds AddressPart (b1 >0_goto b2) = <*b2,b1*>
proof end;

theorem Th26: :: SCMFSA10:26
for b1, b2 being Int-Location
for b3 being FinSeq-Location holds AddressPart (b1 := b3,b2) = <*b1,b3,b2*>
proof end;

theorem Th27: :: SCMFSA10:27
for b1, b2 being Int-Location
for b3 being FinSeq-Location holds AddressPart (b3,b1 := b2) = <*b2,b3,b1*>
proof end;

theorem Th28: :: SCMFSA10:28
for b1 being Int-Location
for b2 being FinSeq-Location holds AddressPart (b1 :=len b2) = <*b1,b2*>
proof end;

theorem Th29: :: SCMFSA10:29
for b1 being Int-Location
for b2 being FinSeq-Location holds AddressPart (b2 :=<0,...,0> b1) = <*b1,b2*>
proof end;

theorem Th30: :: SCMFSA10:30
for b1 being InsType of SCM+FSA st b1 = 0 holds
AddressParts b1 = {0}
proof end;

registration
let c1 be InsType of SCM+FSA ;
cluster AddressParts a1 -> non empty ;
coherence
not AddressParts c1 is empty
proof end;
end;

theorem Th31: :: SCMFSA10:31
for b1 being InsType of SCM+FSA st b1 = 1 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th32: :: SCMFSA10:32
for b1 being InsType of SCM+FSA st b1 = 2 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th33: :: SCMFSA10:33
for b1 being InsType of SCM+FSA st b1 = 3 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th34: :: SCMFSA10:34
for b1 being InsType of SCM+FSA st b1 = 4 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th35: :: SCMFSA10:35
for b1 being InsType of SCM+FSA st b1 = 5 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th36: :: SCMFSA10:36
for b1 being InsType of SCM+FSA st b1 = 6 holds
dom (PA (AddressParts b1)) = {1}
proof end;

theorem Th37: :: SCMFSA10:37
for b1 being InsType of SCM+FSA st b1 = 7 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th38: :: SCMFSA10:38
for b1 being InsType of SCM+FSA st b1 = 8 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th39: :: SCMFSA10:39
for b1 being InsType of SCM+FSA st b1 = 9 holds
dom (PA (AddressParts b1)) = {1,2,3}
proof end;

theorem Th40: :: SCMFSA10:40
for b1 being InsType of SCM+FSA st b1 = 10 holds
dom (PA (AddressParts b1)) = {1,2,3}
proof end;

theorem Th41: :: SCMFSA10:41
for b1 being InsType of SCM+FSA st b1 = 11 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th42: :: SCMFSA10:42
for b1 being InsType of SCM+FSA st b1 = 12 holds
dom (PA (AddressParts b1)) = {1,2}
proof end;

theorem Th43: :: SCMFSA10:43
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (b1 := b2)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th44: :: SCMFSA10:44
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (b1 := b2)))) . 2 = SCM+FSA-Data-Loc
proof end;

theorem Th45: :: SCMFSA10:45
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (AddTo b1,b2)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th46: :: SCMFSA10:46
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (AddTo b1,b2)))) . 2 = SCM+FSA-Data-Loc
proof end;

theorem Th47: :: SCMFSA10:47
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (SubFrom b1,b2)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th48: :: SCMFSA10:48
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (SubFrom b1,b2)))) . 2 = SCM+FSA-Data-Loc
proof end;

theorem Th49: :: SCMFSA10:49
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (MultBy b1,b2)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th50: :: SCMFSA10:50
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (MultBy b1,b2)))) . 2 = SCM+FSA-Data-Loc
proof end;

theorem Th51: :: SCMFSA10:51
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (Divide b1,b2)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th52: :: SCMFSA10:52
for b1, b2 being Int-Location holds (PA (AddressParts (InsCode (Divide b1,b2)))) . 2 = SCM+FSA-Data-Loc
proof end;

theorem Th53: :: SCMFSA10:53
for b1 being Instruction-Location of SCM+FSA holds (PA (AddressParts (InsCode (goto b1)))) . 1 = the Instruction-Locations of SCM+FSA
proof end;

theorem Th54: :: SCMFSA10:54
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds (PA (AddressParts (InsCode (b1 =0_goto b2)))) . 1 = the Instruction-Locations of SCM+FSA
proof end;

theorem Th55: :: SCMFSA10:55
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds (PA (AddressParts (InsCode (b1 =0_goto b2)))) . 2 = SCM+FSA-Data-Loc
proof end;

theorem Th56: :: SCMFSA10:56
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds (PA (AddressParts (InsCode (b1 >0_goto b2)))) . 1 = the Instruction-Locations of SCM+FSA
proof end;

theorem Th57: :: SCMFSA10:57
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds (PA (AddressParts (InsCode (b1 >0_goto b2)))) . 2 = SCM+FSA-Data-Loc
proof end;

theorem Th58: :: SCMFSA10:58
for b1, b2 being Int-Location
for b3 being FinSeq-Location holds (PA (AddressParts (InsCode (b1 := b3,b2)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th59: :: SCMFSA10:59
for b1, b2 being Int-Location
for b3 being FinSeq-Location holds (PA (AddressParts (InsCode (b1 := b3,b2)))) . 2 = SCM+FSA-Data*-Loc
proof end;

theorem Th60: :: SCMFSA10:60
for b1, b2 being Int-Location
for b3 being FinSeq-Location holds (PA (AddressParts (InsCode (b1 := b3,b2)))) . 3 = SCM+FSA-Data-Loc
proof end;

theorem Th61: :: SCMFSA10:61
for b1, b2 being Int-Location
for b3 being FinSeq-Location holds (PA (AddressParts (InsCode (b3,b1 := b2)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th62: :: SCMFSA10:62
for b1, b2 being Int-Location
for b3 being FinSeq-Location holds (PA (AddressParts (InsCode (b3,b1 := b2)))) . 2 = SCM+FSA-Data*-Loc
proof end;

theorem Th63: :: SCMFSA10:63
for b1, b2 being Int-Location
for b3 being FinSeq-Location holds (PA (AddressParts (InsCode (b3,b1 := b2)))) . 3 = SCM+FSA-Data-Loc
proof end;

theorem Th64: :: SCMFSA10:64
for b1 being Int-Location
for b2 being FinSeq-Location holds (PA (AddressParts (InsCode (b1 :=len b2)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th65: :: SCMFSA10:65
for b1 being Int-Location
for b2 being FinSeq-Location holds (PA (AddressParts (InsCode (b1 :=len b2)))) . 2 = SCM+FSA-Data*-Loc
proof end;

theorem Th66: :: SCMFSA10:66
for b1 being Int-Location
for b2 being FinSeq-Location holds (PA (AddressParts (InsCode (b2 :=<0,...,0> b1)))) . 1 = SCM+FSA-Data-Loc
proof end;

theorem Th67: :: SCMFSA10:67
for b1 being Int-Location
for b2 being FinSeq-Location holds (PA (AddressParts (InsCode (b2 :=<0,...,0> b1)))) . 2 = SCM+FSA-Data*-Loc
proof end;

Lemma72: for b1 being Instruction-Location of SCM+FSA
for b2 being Instruction of SCM+FSA st ( for b3 being State of SCM+FSA st IC b3 = b1 & b3 . b1 = b2 holds
(Exec b2,b3) . (IC SCM+FSA ) = Next (IC b3) ) holds
NIC b2,b1 = {(Next b1)}
proof end;

Lemma73: for b1 being Instruction of SCM+FSA st ( for b2 being Instruction-Location of SCM+FSA holds NIC b1,b2 = {(Next b2)} ) holds
JUMP b1 is empty
proof end;

theorem Th68: :: SCMFSA10:68
for b1 being Instruction-Location of SCM+FSA holds NIC (halt SCM+FSA ),b1 = {b1}
proof end;

registration
cluster JUMP (halt SCM+FSA ) -> empty ;
coherence
JUMP (halt SCM+FSA ) is empty
proof end;
end;

theorem Th69: :: SCMFSA10:69
for b1, b2 being Int-Location
for b3 being Instruction-Location of SCM+FSA holds NIC (b1 := b2),b3 = {(Next b3)}
proof end;

registration
let c1, c2 be Int-Location ;
cluster JUMP (a1 := a2) -> empty ;
coherence
JUMP (c1 := c2) is empty
proof end;
end;

theorem Th70: :: SCMFSA10:70
for b1, b2 being Int-Location
for b3 being Instruction-Location of SCM+FSA holds NIC (AddTo b1,b2),b3 = {(Next b3)}
proof end;

registration
let c1, c2 be Int-Location ;
cluster JUMP (AddTo a1,a2) -> empty ;
coherence
JUMP (AddTo c1,c2) is empty
proof end;
end;

theorem Th71: :: SCMFSA10:71
for b1, b2 being Int-Location
for b3 being Instruction-Location of SCM+FSA holds NIC (SubFrom b1,b2),b3 = {(Next b3)}
proof end;

registration
let c1, c2 be Int-Location ;
cluster JUMP (SubFrom a1,a2) -> empty ;
coherence
JUMP (SubFrom c1,c2) is empty
proof end;
end;

theorem Th72: :: SCMFSA10:72
for b1, b2 being Int-Location
for b3 being Instruction-Location of SCM+FSA holds NIC (MultBy b1,b2),b3 = {(Next b3)}
proof end;

registration
let c1, c2 be Int-Location ;
cluster JUMP (MultBy a1,a2) -> empty ;
coherence
JUMP (MultBy c1,c2) is empty
proof end;
end;

theorem Th73: :: SCMFSA10:73
for b1, b2 being Int-Location
for b3 being Instruction-Location of SCM+FSA holds NIC (Divide b1,b2),b3 = {(Next b3)}
proof end;

registration
let c1, c2 be Int-Location ;
cluster JUMP (Divide a1,a2) -> empty ;
coherence
JUMP (Divide c1,c2) is empty
proof end;
end;

theorem Th74: :: SCMFSA10:74
for b1, b2 being Instruction-Location of SCM+FSA holds NIC (goto b1),b2 = {b1}
proof end;

theorem Th75: :: SCMFSA10:75
for b1 being Instruction-Location of SCM+FSA holds JUMP (goto b1) = {b1}
proof end;

registration
let c1 be Instruction-Location of SCM+FSA ;
cluster JUMP (goto a1) -> non empty trivial ;
coherence
( not JUMP (goto c1) is empty & JUMP (goto c1) is trivial )
proof end;
end;

theorem Th76: :: SCMFSA10:76
for b1 being Int-Location
for b2, b3 being Instruction-Location of SCM+FSA holds NIC (b1 =0_goto b2),b3 = {b2,(Next b3)}
proof end;

theorem Th77: :: SCMFSA10:77
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds JUMP (b1 =0_goto b2) = {b2}
proof end;

registration
let c1 be Int-Location ;
let c2 be Instruction-Location of SCM+FSA ;
cluster JUMP (a1 =0_goto a2) -> non empty trivial ;
coherence
( not JUMP (c1 =0_goto c2) is empty & JUMP (c1 =0_goto c2) is trivial )
proof end;
end;

theorem Th78: :: SCMFSA10:78
for b1 being Int-Location
for b2, b3 being Instruction-Location of SCM+FSA holds NIC (b1 >0_goto b2),b3 = {b2,(Next b3)}
proof end;

theorem Th79: :: SCMFSA10:79
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA holds JUMP (b1 >0_goto b2) = {b2}
proof end;

registration
let c1 be Int-Location ;
let c2 be Instruction-Location of SCM+FSA ;
cluster JUMP (a1 >0_goto a2) -> non empty trivial ;
coherence
( not JUMP (c1 >0_goto c2) is empty & JUMP (c1 >0_goto c2) is trivial )
proof end;
end;

theorem Th80: :: SCMFSA10:80
for b1, b2 being Int-Location
for b3 being FinSeq-Location
for b4 being Instruction-Location of SCM+FSA holds NIC (b1 := b3,b2),b4 = {(Next b4)}
proof end;

registration
let c1, c2 be Int-Location ;
let c3 be FinSeq-Location ;
cluster JUMP (a1 := a3,a2) -> empty ;
coherence
JUMP (c1 := c3,c2) is empty
proof end;
end;

theorem Th81: :: SCMFSA10:81
for b1, b2 being Int-Location
for b3 being FinSeq-Location
for b4 being Instruction-Location of SCM+FSA holds NIC (b3,b1 := b2),b4 = {(Next b4)}
proof end;

registration
let c1, c2 be Int-Location ;
let c3 be FinSeq-Location ;
cluster JUMP (a3,a2 := a1) -> empty ;
coherence
JUMP (c3,c2 := c1) is empty
proof end;
end;

theorem Th82: :: SCMFSA10:82
for b1 being Int-Location
for b2 being FinSeq-Location
for b3 being Instruction-Location of SCM+FSA holds NIC (b1 :=len b2),b3 = {(Next b3)}
proof end;

registration
let c1 be Int-Location ;
let c2 be FinSeq-Location ;
cluster JUMP (a1 :=len a2) -> empty ;
coherence
JUMP (c1 :=len c2) is empty
proof end;
end;

theorem Th83: :: SCMFSA10:83
for b1 being Int-Location
for b2 being FinSeq-Location
for b3 being Instruction-Location of SCM+FSA holds NIC (b2 :=<0,...,0> b1),b3 = {(Next b3)}
proof end;

registration
let c1 be Int-Location ;
let c2 be FinSeq-Location ;
cluster JUMP (a2 :=<0,...,0> a1) -> empty ;
coherence
JUMP (c2 :=<0,...,0> c1) is empty
proof end;
end;

theorem Th84: :: SCMFSA10:84
for b1 being Instruction-Location of SCM+FSA holds SUCC b1 = {b1,(Next b1)}
proof end;

theorem Th85: :: SCMFSA10:85
for b1 being Function of NAT ,the Instruction-Locations of SCM+FSA st ( for b2 being Nat holds b1 . b2 = insloc b2 ) holds
( b1 is bijective & ( for b2 being Nat holds
( b1 . (b2 + 1) in SUCC (b1 . b2) & ( for b3 being Nat st b1 . b3 in SUCC (b1 . b2) holds
b2 <= b3 ) ) ) )
proof end;

registration
cluster SCM+FSA -> standard ;
coherence
SCM+FSA is standard
proof end;
end;

theorem Th86: :: SCMFSA10:86
for b1 being natural number holds il. SCM+FSA ,b1 = insloc b1
proof end;

theorem Th87: :: SCMFSA10:87
for b1 being natural number holds Next (il. SCM+FSA ,b1) = il. SCM+FSA ,(b1 + 1)
proof end;

theorem Th88: :: SCMFSA10:88
for b1 being Instruction-Location of SCM+FSA holds Next b1 = NextLoc b1
proof end;

registration
cluster InsCode (halt SCM+FSA ) -> jump-only ;
coherence
InsCode (halt SCM+FSA ) is jump-only
proof end;
end;

registration
cluster halt SCM+FSA -> jump-only ;
coherence
halt SCM+FSA is jump-only
proof end;
end;

registration
let c1 be Instruction-Location of SCM+FSA ;
cluster InsCode (goto a1) -> jump-only ;
coherence
InsCode (goto c1) is jump-only
proof end;
end;

registration
let c1 be Instruction-Location of SCM+FSA ;
cluster goto a1 -> jump-only non sequential non ins-loc-free ;
coherence
( goto c1 is jump-only & not goto c1 is sequential & not goto c1 is ins-loc-free )
proof end;
end;

registration
let c1 be Int-Location ;
let c2 be Instruction-Location of SCM+FSA ;
cluster InsCode (a1 =0_goto a2) -> jump-only ;
coherence
InsCode (c1 =0_goto c2) is jump-only
proof end;
cluster InsCode (a1 >0_goto a2) -> jump-only ;
coherence
InsCode (c1 >0_goto c2) is jump-only
proof end;
end;

registration
let c1 be Int-Location ;
let c2 be Instruction-Location of SCM+FSA ;
cluster a1 =0_goto a2 -> jump-only non sequential non ins-loc-free ;
coherence
( c1 =0_goto c2 is jump-only & not c1 =0_goto c2 is sequential & not c1 =0_goto c2 is ins-loc-free )
proof end;
cluster a1 >0_goto a2 -> jump-only non sequential non ins-loc-free ;
coherence
( c1 >0_goto c2 is jump-only & not c1 >0_goto c2 is sequential & not c1 >0_goto c2 is ins-loc-free )
proof end;
end;

registration
let c1, c2 be Int-Location ;
cluster InsCode (a1 := a2) -> non jump-only ;
coherence
not InsCode (c1 := c2) is jump-only
proof end;
cluster InsCode (AddTo a1,a2) -> non jump-only ;
coherence
not InsCode (AddTo c1,c2) is jump-only
proof end;
cluster InsCode (SubFrom a1,a2) -> non jump-only ;
coherence
not InsCode (SubFrom c1,c2) is jump-only
proof end;
cluster InsCode (MultBy a1,a2) -> non jump-only ;
coherence
not InsCode (MultBy c1,c2) is jump-only
proof end;
cluster InsCode (Divide a1,a2) -> non jump-only ;
coherence
not InsCode (Divide c1,c2) is jump-only
proof end;
end;

registration
let c1, c2 be Int-Location ;
cluster a1 := a2 -> non jump-only sequential ;
coherence
( not c1 := c2 is jump-only & c1 := c2 is sequential )
proof end;
cluster AddTo a1,a2 -> non jump-only sequential ;
coherence
( not AddTo c1,c2 is jump-only & AddTo c1,c2 is sequential )
proof end;
cluster SubFrom a1,a2 -> non jump-only sequential ;
coherence
( not SubFrom c1,c2 is jump-only & SubFrom c1,c2 is sequential )
proof end;
cluster MultBy a1,a2 -> non jump-only sequential ;
coherence
( not MultBy c1,c2 is jump-only & MultBy c1,c2 is sequential )
proof end;
cluster Divide a1,a2 -> non jump-only sequential ;
coherence
( not Divide c1,c2 is jump-only & Divide c1,c2 is sequential )
proof end;
end;

registration
let c1, c2 be Int-Location ;
let c3 be FinSeq-Location ;
cluster InsCode (a2 := a3,a1) -> non jump-only ;
coherence
not InsCode (c2 := c3,c1) is jump-only
proof end;
cluster InsCode (a3,a1 := a2) -> non jump-only ;
coherence
not InsCode (c3,c1 := c2) is jump-only
proof end;
end;

registration
let c1, c2 be Int-Location ;
let c3 be FinSeq-Location ;
cluster a2 := a3,a1 -> non jump-only sequential ;
coherence
( not c2 := c3,c1 is jump-only & c2 := c3,c1 is sequential )
proof end;
cluster a3,a1 := a2 -> non jump-only sequential ;
coherence
( not c3,c1 := c2 is jump-only & c3,c1 := c2 is sequential )
proof end;
end;

registration
let c1 be Int-Location ;
let c2 be FinSeq-Location ;
cluster InsCode (a1 :=len a2) -> non jump-only ;
coherence
not InsCode (c1 :=len c2) is jump-only
proof end;
cluster InsCode (a2 :=<0,...,0> a1) -> non jump-only ;
coherence
not InsCode (c2 :=<0,...,0> c1) is jump-only
proof end;
end;

registration
let c1 be Int-Location ;
let c2 be FinSeq-Location ;
cluster a1 :=len a2 -> non jump-only sequential ;
coherence
( not c1 :=len c2 is jump-only & c1 :=len c2 is sequential )
proof end;
cluster a2 :=<0,...,0> a1 -> non jump-only sequential ;
coherence
( not c2 :=<0,...,0> c1 is jump-only & c2 :=<0,...,0> c1 is sequential )
proof end;
end;

registration
cluster SCM+FSA -> standard homogeneous with_explicit_jumps without_implicit_jumps ;
coherence
( SCM+FSA is homogeneous & SCM+FSA is with_explicit_jumps & SCM+FSA is without_implicit_jumps )
proof end;
end;

registration
cluster SCM+FSA -> standard homogeneous with_explicit_jumps without_implicit_jumps regular ;
coherence
SCM+FSA is regular
proof end;
end;

theorem Th89: :: SCMFSA10:89
for b1 being Instruction-Location of SCM+FSA
for b2 being natural number holds IncAddr (goto b1),b2 = goto (il. SCM+FSA ,((locnum b1) + b2))
proof end;

theorem Th90: :: SCMFSA10:90
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA
for b3 being natural number holds IncAddr (b1 =0_goto b2),b3 = b1 =0_goto (il. SCM+FSA ,((locnum b2) + b3))
proof end;

theorem Th91: :: SCMFSA10:91
for b1 being Int-Location
for b2 being Instruction-Location of SCM+FSA
for b3 being natural number holds IncAddr (b1 >0_goto b2),b3 = b1 >0_goto (il. SCM+FSA ,((locnum b2) + b3))
proof end;

registration
cluster SCM+FSA -> standard homogeneous with_explicit_jumps without_implicit_jumps regular IC-good Exec-preserving ;
coherence
( SCM+FSA is IC-good & SCM+FSA is Exec-preserving )
proof end;
end;