:: On the compositions of macro instructions, Part III
:: by Noriko Asamoto , Yatsuka Nakamura , Piotr Rudnicki and Andrzej Trybulec
::
:: Received July 22, 1996
:: Copyright (c) 1996 Association of Mizar Users
set SA0 = Start-At (insloc 0 );
theorem :: SCMFSA6C:1
theorem :: SCMFSA6C:2
:: deftheorem Def1 defines parahalting SCMFSA6C:def 1 :
:: deftheorem Def2 defines keeping_0 SCMFSA6C:def 2 :
Lm1:
Macro (halt SCM+FSA ) is parahalting
Lm2:
( Macro (halt SCM+FSA ) is keeping_0 & Macro (halt SCM+FSA ) is parahalting )
registration
let a,
b be
Int-Location ;
cluster a := b -> parahalting ;
coherence
a := b is parahalting
cluster AddTo a,
b -> parahalting ;
coherence
AddTo a,b is parahalting
cluster SubFrom a,
b -> parahalting ;
coherence
SubFrom a,b is parahalting
cluster MultBy a,
b -> parahalting ;
coherence
MultBy a,b is parahalting
cluster Divide a,
b -> parahalting ;
coherence
Divide a,b is parahalting
let f be
FinSeq-Location ;
cluster b := f,
a -> parahalting ;
coherence
b := f,a is parahalting
cluster f,
a := b -> parahalting keeping_0 ;
coherence
( f,a := b is parahalting & f,a := b is keeping_0 )
end;
:: deftheorem defines Initialize SCMFSA6C:def 3 :
theorem Th3: :: SCMFSA6C:3
theorem Th4: :: SCMFSA6C:4
theorem Th5: :: SCMFSA6C:5
Lm3:
now
let I be
parahalting keeping_0 Program of
SCM+FSA ;
:: thesis: for s being State of SCM+FSA holds DataPart (Initialize (IExec I,s)) = DataPart (IExec I,s)let s be
State of
SCM+FSA ;
:: thesis: DataPart (Initialize (IExec I,s)) = DataPart (IExec I,s)set IE =
IExec I,
s;
set IF =
Int-Locations \/ FinSeq-Locations ;
now
A1:
(
dom (Initialize (IExec I,s)) = the
carrier of
SCM+FSA &
dom (IExec I,s) = the
carrier of
SCM+FSA )
by AMI_1:79;
hence A2:
dom (DataPart (Initialize (IExec I,s))) = (dom (IExec I,s)) /\ (Int-Locations \/ FinSeq-Locations )
by RELAT_1:90, SCMFSA_2:127;
:: thesis: for x being set st x in dom (DataPart (Initialize (IExec I,s))) holds
(DataPart (Initialize (IExec I,s))) . b2 = (IExec I,s) . b2let x be
set ;
:: thesis: ( x in dom (DataPart (Initialize (IExec I,s))) implies (DataPart (Initialize (IExec I,s))) . b1 = (IExec I,s) . b1 )assume A3:
x in dom (DataPart (Initialize (IExec I,s)))
;
:: thesis: (DataPart (Initialize (IExec I,s))) . b1 = (IExec I,s) . b1
dom (Initialize (IExec I,s)) = (Int-Locations \/ FinSeq-Locations ) \/ ({(IC SCM+FSA )} \/ NAT )
by A1, SCMFSA_2:8, XBOOLE_1:4;
then A4:
dom (DataPart (Initialize (IExec I,s))) = Int-Locations \/ FinSeq-Locations
by A1, A2, XBOOLE_1:21;
end;
hence
DataPart (Initialize (IExec I,s)) = DataPart (IExec I,s)
by FUNCT_1:68, SCMFSA_2:127;
:: thesis: verum
end;
theorem Th6: :: SCMFSA6C:6
theorem Th7: :: SCMFSA6C:7
theorem Th8: :: SCMFSA6C:8
theorem Th9: :: SCMFSA6C:9
theorem :: SCMFSA6C:10
:: deftheorem defines swap SCMFSA6C:def 4 :
theorem :: SCMFSA6C:11
theorem :: SCMFSA6C:12