:: On the compositions of macro instructions
:: by Andrzej Trybulec , Yatsuka Nakamura and Noriko Asamoto
::
:: Received June 20, 1996
:: Copyright (c) 1996-2012 Association of Mizar Users
begin
definition
let
P
be
NAT
-defined
the
InstructionsF
of
SCM+FSA
-valued
finite
Function
;
let
l
be
Element
of
NAT
;
func
Directed
(
P
,
l
)
->
preProgram
of
SCM+FSA
equals
:: SCMFSA6A:def 1
P
+~
(
(
halt
SCM+FSA
)
,
(
goto
l
)
);
coherence
P
+~
(
(
halt
SCM+FSA
)
,
(
goto
l
)
) is
preProgram
of
SCM+FSA
;
end;
::
deftheorem
defines
Directed
SCMFSA6A:def 1 :
for
P
being
NAT
-defined
the
InstructionsF
of
SCM+FSA
-valued
finite
Function
for
l
being
Element
of
NAT
holds
Directed
(
P
,
l
)
=
P
+~
(
(
halt
SCM+FSA
)
,
(
goto
l
)
);
definition
let
P
be
NAT
-defined
the
InstructionsF
of
SCM+FSA
-valued
finite
Function
;
func
Directed
P
->
preProgram
of
SCM+FSA
equals
:: SCMFSA6A:def 2
Directed
(
P
,
(
card
P
)
);
coherence
Directed
(
P
,
(
card
P
)
) is
preProgram
of
SCM+FSA
;
end;
::
deftheorem
defines
Directed
SCMFSA6A:def 2 :
for
P
being
NAT
-defined
the
InstructionsF
of
SCM+FSA
-valued
finite
Function
holds
Directed
P
=
Directed
(
P
,
(
card
P
)
);
registration
let
I
be
Program
of ;
cluster
Directed
I
->
non
empty
initial
;
coherence
(
Directed
I
is
initial
& not
Directed
I
is
empty
)
proof
end;
end;
theorem
:: SCMFSA6A:1
for
I
being
Program
of holds not
halt
SCM+FSA
in
rng
(
Directed
I
)
by
FUNCT_4:100
;
theorem
:: SCMFSA6A:2
for
m
being
Element
of
NAT
for
I
being
Program
of holds
Reloc
(
(
Directed
I
)
,
m
)
=
(
(
id
the
InstructionsF
of
SCM+FSA
)
+*
(
(
halt
SCM+FSA
)
.-->
(
goto
(
m
+
(
card
I
)
)
)
)
)
*
(
Reloc
(
I
,
m
)
)
proof
end;
set
q
=
(
intloc
0
)
.-->
1;
set
f
=
the_Values_of
SCM+FSA
;
theorem
Th23
:
:: SCMFSA6A:3
for
i
being
Instruction
of
SCM+FSA
for
s
being
State
of
SCM+FSA
holds
(
InsCode
i
in
{
0
,6,7,8
}
or
(
Exec
(
i
,
s
)
)
.
(
IC
)
=
succ
(
IC
s
)
)
proof
end;
theorem
:: SCMFSA6A:4
canceled;
theorem
:: SCMFSA6A:5
canceled;
theorem
:: SCMFSA6A:6
canceled;
theorem
:: SCMFSA6A:7
canceled;
theorem
:: SCMFSA6A:8
for
s1
,
s2
being
State
of
SCM+FSA
for
n
being
Element
of
NAT
for
i
being
Instruction
of
SCM+FSA
st
(
IC
s1
)
+
n
=
IC
s2
&
DataPart
s1
=
DataPart
s2
holds
(
(
IC
(
Exec
(
i
,
s1
)
)
)
+
n
=
IC
(
Exec
(
(
IncAddr
(
i
,
n
)
)
,
s2
)
)
&
DataPart
(
Exec
(
i
,
s1
)
)
=
DataPart
(
Exec
(
(
IncAddr
(
i
,
n
)
)
,
s2
)
)
)
proof
end;
theorem
:: SCMFSA6A:9
canceled;
theorem
:: SCMFSA6A:10
canceled;
theorem
:: SCMFSA6A:11
canceled;
theorem
:: SCMFSA6A:12
canceled;
theorem
:: SCMFSA6A:13
canceled;
theorem
:: SCMFSA6A:14
canceled;
begin
definition
canceled;
let
I
,
J
be
Program
of ;
func
I
";"
J
->
Program
of
equals
:: SCMFSA6A:def 4
(
Directed
(
CutLastLoc
(
stop
I
)
)
)
+*
(
Reloc
(
J
,
(
card
I
)
)
)
;
coherence
(
Directed
(
CutLastLoc
(
stop
I
)
)
)
+*
(
Reloc
(
J
,
(
card
I
)
)
)
is
Program
of
proof
end;
correctness
;
end;
::
deftheorem
SCMFSA6A:def 3 :
canceled;
::
deftheorem
defines
";"
SCMFSA6A:def 4 :
for
I
,
J
being
Program
of holds
I
";"
J
=
(
Directed
(
CutLastLoc
(
stop
I
)
)
)
+*
(
Reloc
(
J
,
(
card
I
)
)
)
;
registration
let
I
be
Program
of ;
let
J
be non
halt-free
Program
of ;
cluster
I
";"
J
->
non
halt-free
;
coherence
not
I
";"
J
is
halt-free
;
end;
theorem
:: SCMFSA6A:15
for
I
,
J
being
Program
of
for
l
being
Element
of
NAT
st
l
in
dom
I
&
I
.
l
<>
halt
SCM+FSA
holds
(
I
";"
J
)
.
l
=
I
.
l
proof
end;
theorem
:: SCMFSA6A:16
for
I
,
J
being
Program
of holds
Directed
I
c=
I
";"
J
proof
end;
theorem
Th56
:
:: SCMFSA6A:17
for
I
,
J
being
Program
of holds
dom
I
c=
dom
(
I
";"
J
)
proof
end;
theorem
:: SCMFSA6A:18
for
I
,
J
being
Program
of holds
I
+*
(
I
";"
J
)
=
I
";"
J
proof
end;
begin
definition
let
i
be
Instruction
of
SCM+FSA
;
let
J
be
Program
of ;
func
i
";"
J
->
Program
of
equals
:: SCMFSA6A:def 5
(
Macro
i
)
";"
J
;
correctness
coherence
(
Macro
i
)
";"
J
is
Program
of
;
;
end;
::
deftheorem
defines
";"
SCMFSA6A:def 5 :
for
i
being
Instruction
of
SCM+FSA
for
J
being
Program
of holds
i
";"
J
=
(
Macro
i
)
";"
J
;
definition
let
I
be
Program
of ;
let
j
be
Instruction
of
SCM+FSA
;
func
I
";"
j
->
Program
of
equals
:: SCMFSA6A:def 6
I
";"
(
Macro
j
)
;
correctness
coherence
I
";"
(
Macro
j
)
is
Program
of
;
;
end;
::
deftheorem
defines
";"
SCMFSA6A:def 6 :
for
I
being
Program
of
for
j
being
Instruction
of
SCM+FSA
holds
I
";"
j
=
I
";"
(
Macro
j
)
;
definition
let
i
,
j
be
Instruction
of
SCM+FSA
;
func
i
";"
j
->
Program
of
equals
:: SCMFSA6A:def 7
(
Macro
i
)
";"
(
Macro
j
)
;
correctness
coherence
(
Macro
i
)
";"
(
Macro
j
)
is
Program
of
;
;
end;
::
deftheorem
defines
";"
SCMFSA6A:def 7 :
for
i
,
j
being
Instruction
of
SCM+FSA
holds
i
";"
j
=
(
Macro
i
)
";"
(
Macro
j
)
;
theorem
:: SCMFSA6A:19
for
i
,
j
being
Instruction
of
SCM+FSA
holds
i
";"
j
=
(
Macro
i
)
";"
j
;
theorem
:: SCMFSA6A:20
for
i
,
j
being
Instruction
of
SCM+FSA
holds
i
";"
j
=
i
";"
(
Macro
j
)
;
theorem
Th61
:
:: SCMFSA6A:21
for
I
,
J
being
Program
of holds
card
(
I
";"
J
)
=
(
card
I
)
+
(
card
J
)
proof
end;
registration
let
P
be
preProgram
of
SCM+FSA
;
let
l
be
Element
of
NAT
;
cluster
Directed
(
P
,
l
)
->
halt-free
;
correctness
coherence
Directed
(
P
,
l
) is
halt-free
;
proof
end;
end;
registration
let
P
be
preProgram
of
SCM+FSA
;
cluster
Directed
P
->
halt-free
;
correctness
coherence
Directed
P
is
halt-free
;
;
end;
theorem
Th63
:
:: SCMFSA6A:22
for
I
being
preProgram
of
SCM+FSA
for
l
being
Element
of
NAT
st
I
is
halt-free
holds
Directed
(
I
,
l
)
=
I
proof
end;
theorem
Th65
:
:: SCMFSA6A:23
for
I
being
preProgram
of
SCM+FSA
for
k
being
Element
of
NAT
holds
Reloc
(
(
Directed
I
)
,
k
)
=
Directed
(
(
Reloc
(
I
,
k
)
)
,
(
(
card
I
)
+
k
)
)
proof
end;
theorem
Th66
:
:: SCMFSA6A:24
for
I
,
J
being
Program
of holds
Directed
(
I
";"
J
)
=
I
";"
(
Directed
J
)
proof
end;
theorem
Th67
:
:: SCMFSA6A:25
for
I
,
J
,
K
being
Program
of holds
(
I
";"
J
)
";"
K
=
I
";"
(
J
";"
K
)
proof
end;
theorem
:: SCMFSA6A:26
for
k
being
Instruction
of
SCM+FSA
for
I
,
J
being
Program
of holds
(
I
";"
J
)
";"
k
=
I
";"
(
J
";"
k
)
by
Th67
;
theorem
:: SCMFSA6A:27
for
j
being
Instruction
of
SCM+FSA
for
I
,
K
being
Program
of holds
(
I
";"
j
)
";"
K
=
I
";"
(
j
";"
K
)
by
Th67
;
theorem
:: SCMFSA6A:28
for
j
,
k
being
Instruction
of
SCM+FSA
for
I
being
Program
of holds
(
I
";"
j
)
";"
k
=
I
";"
(
j
";"
k
)
by
Th67
;
theorem
:: SCMFSA6A:29
for
i
being
Instruction
of
SCM+FSA
for
J
,
K
being
Program
of holds
(
i
";"
J
)
";"
K
=
i
";"
(
J
";"
K
)
by
Th67
;
theorem
:: SCMFSA6A:30
for
i
,
k
being
Instruction
of
SCM+FSA
for
J
being
Program
of holds
(
i
";"
J
)
";"
k
=
i
";"
(
J
";"
k
)
by
Th67
;
theorem
:: SCMFSA6A:31
for
i
,
j
being
Instruction
of
SCM+FSA
for
K
being
Program
of holds
(
i
";"
j
)
";"
K
=
i
";"
(
j
";"
K
)
by
Th67
;
theorem
:: SCMFSA6A:32
for
i
,
j
,
k
being
Instruction
of
SCM+FSA
holds
(
i
";"
j
)
";"
k
=
i
";"
(
j
";"
k
)
by
Th67
;
theorem
:: SCMFSA6A:33
for
i
being
Instruction
of
SCM+FSA
for
J
being
Program
of holds
card
(
i
";"
J
)
=
(
card
J
)
+
2
proof
end;
theorem
:: SCMFSA6A:34
for
j
being
Instruction
of
SCM+FSA
for
I
being
Program
of holds
card
(
I
";"
j
)
=
(
card
I
)
+
2
proof
end;
theorem
:: SCMFSA6A:35
for
i
,
j
being
Instruction
of
SCM+FSA
holds
card
(
i
";"
j
)
=
4
proof
end;