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.
esult has TransitionSegment(cp_inp.copy, nctm_elem_inp.copy)<br />
)) <strong>and</strong> (<br />
exists npm_elem_inp2:new_port_map . (<br />
(npm_elem_inp2.orig.one = cp_inp.orig.Port.Model or<br />
npm_elem_inp2.orig.two = cp_inp.orig.Port.Model<br />
) <strong>and</strong><br />
exists new_port_cinp:new MIFPort . (<br />
result has Port(cp_inp.copy, new_port_cinp) <strong>and</strong><br />
result has Model(new_port_cinp, npm_elem_inp2.copy)<br />
)) or<br />
exists ncpm_elem_inp:new_copy_port_map . (<br />
ncpm_elem_inp.orig = cp_inp.orig.Port.Model <strong>and</strong><br />
exists new_port_inp2:new MIFPort . (<br />
result has Port(cp_inp.copy, new_port_inp2) <strong>and</strong><br />
result has Model(new_port_inp2, ncpm_elem_inp.copy)<br />
))) <strong>and</strong><br />
exists nmt_cinp:new MIFTerm . (<br />
result has Pattern(cp_inp.copy, nmt_cinp) <strong>and</strong><br />
run setCopiedMIFTerm(cp_inp.orig.Pattern, nmt_cinp,<br />
new_constructor_map, new_copy_constructor_map, new_appl_map,<br />
new_copy_appl_map, new_lvcn_map, new_copy_lvcn_map)<br />
))) <strong>and</strong><br />
/* build outputs */<br />
exists new_output_map:map orig:output_map to copy:new Output . (<br />
forall nom1:new_output_map . forall nom2:new_output_map . (<br />
nom1.orig = nom2.orig equiv nom1.copy = nom2.copy<br />
) <strong>and</strong><br />
forall mk_outp:new_output_map . (<br />
exists ntm_elem_outp:new_transition_map . (<br />
ntm_elem_outp.orig.one=mk_outp.orig.one.TransitionSegment <strong>and</strong><br />
ntm_elem_outp.orig.two=mk_outp.orig.two.TransitionSegment <strong>and</strong><br />
result has TransitionSegment(mk_outp.copy, ntm_elem_outp.copy)<br />
) <strong>and</strong><br />
exists npm_elem_outp:new_port_map . (<br />
npm_elem_outp.orig.one = mk_outp.orig.one.Port.Model <strong>and</strong><br />
npm_elem_outp.orig.two = mk_outp.orig.two.Port.Model <strong>and</strong><br />
exists new_port_outp:new MIFPort . (<br />
result has Port(mk_outp.copy, new_port_outp) <strong>and</strong><br />
result has Model(new_port_outp, npm_elem_outp.copy)<br />
)<br />
) <strong>and</strong><br />
exists nmt_outp:new MIFTerm . (<br />
result has Expression(mk_outp.copy, nmt_outp) <strong>and</strong><br />
run setUnifiedMIFTerm(mk_outp.orig.one.Expression,<br />
mk_outp.orig.two.Expression, nmt_outp, new_constructor_map,<br />
new_appl_map, new_lvcn_map)<br />
))) <strong>and</strong><br />
/* copy outputs */<br />
89