LabGraph = map NodeId to (map ArcId to NodeId) inv g ==
UniqueArcIds(g) and forall m insetrng g & rng m subsetdom g;
AcyclicLabGraph = LabGraph inv acg == notexists id insetdom acg &
id inset AllLabDesc(acg,id);
NodeId = nat;
ArcId = nat
functions
AllLabDesc: LabGraph * NodeId -> setof NodeId
AllLabDesc(g,id) == dunion {LabDescendents(g,c,{})| c insetrng g(id)} pre id insetdom g;
measureLabGraphReached : LabGraph * Id * setof Id -> nat
measureLabGraphReached(g,-,reached) == carddom g - card reached;
LabDescendents: LabGraph * NodeId * setof NodeId -> setof NodeId
LabDescendents(g,id,reached) == if id inset reached then {} else {id} union dunion {LabDescendents(g,c,reached union {id})
| c insetrng g(id)} pre id insetdom g measure measureLabGraphReached;
UniqueArcIds: map NodeId to (map ArcId to NodeId) -> bool
UniqueArcIds(g) == let m = {nid |-> dom g(nid) | nid insetdom g} in forall nid1, nid2 insetdom m &
nid1 <> nid2 => m(nid1) inter m(nid2) = {}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.13Bemerkung:
(vorverarbeitet)
¤