Spezifikationsmodule - Software and Systems Engineering - TUM
Spezifikationsmodule - Software and Systems Engineering - TUM
Spezifikationsmodule - Software and Systems Engineering - TUM
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
)) <strong>and</strong><br />
/* copy constructors not merged */<br />
exists new_copy_constructor_map:map orig:copy_constructor_set<br />
to copy:new Constructor . (<br />
forall nccm1:new_copy_constructor_map .<br />
forall nccm2:new_copy_constructor_map . (<br />
nccm1.orig = nccm2.orig equiv nccm1.copy = nccm2.copy<br />
) <strong>and</strong><br />
forall cp_cons:new_copy_constructor_map . (<br />
result has Name(cp_cons.copy, cp_cons.orig.Name) <strong>and</strong><br />
result has Consts(new_dtd_module, cp_cons.copy) <strong>and</strong><br />
exists ntm_elem_ccons:new_typedef_map . (<br />
(cp_cons.orig.DataDef = ntm_elem_ccons.orig.one or<br />
cp_cons.orig.DataDef = ntm_elem_ccons.orig.two<br />
) <strong>and</strong><br />
result has Constructors(ntm_elem_ccons.copy, cp_cons.copy)<br />
)) <strong>and</strong><br />
/* build selectors */<br />
exists new_selector_map:map orig:selector_map<br />
to copy:new Selector . (<br />
forall nselm1:new_selector_map .<br />
forall nselm2:new_selector_map . (<br />
nselm1.orig = nselm2.orig equiv nselm1.copy = nselm2.copy<br />
) <strong>and</strong><br />
forall mk_sels:new_selector_map . (<br />
result has Name(mk_sels.copy,<br />
concat(mk_sels.orig.one.Name,mk_sels.orig.two.Name)) <strong>and</strong><br />
result has Consts(new_dtd_module, mk_sels.copy) <strong>and</strong><br />
exists ncm_elem_sels:new_constructor_map . (<br />
mk_sels.orig.one.Constructor = ncm_elem_sels.orig.one <strong>and</strong><br />
mk_sels.orig.two.Constructor = ncm_elem_sels.orig.two <strong>and</strong><br />
result has Selectors(ncm_elem_sels.copy, mk_sels.copy,<br />
indexOf(mk_sels.orig.one,<br />
mk_sels.orig.one.Constructor, "Selectors"))<br />
) <strong>and</strong><br />
exists ntappl1:new TAppl . (<br />
exists tcnst1:TConst . (<br />
tcnst1.Name = "->" <strong>and</strong><br />
result has THead(ntappl1, tcnst1)<br />
) <strong>and</strong><br />
exists ntcm1_elem_sels:new_tconst_map . (<br />
mk_sels.orig.one.Constructor.DataDef =<br />
ntcm1_elem_sels.orig.one <strong>and</strong><br />
mk_sels.orig.two.Constructor.DataDef =<br />
ntcm1_elem_sels.orig.two <strong>and</strong><br />
result has TArgs(ntappl1, ntcm1_elem_sels.copy, 0)<br />
) <strong>and</strong><br />
exists ntcm2_elem_sels:new_tconst_map . (<br />
80