[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to exchange high level net annotations



Dear all,

this is a response to some postings some weeks ago -- sorry
for the delay.

Kind regards,
Ekkart
--

1. There was some discussion on "flexible arcs".  Though I am
   in favour of having flexible arcs, I don't consider it as
   an attribute of the arc itself---in contrast to inhibitor or
   read arcs:
   It depends on the annotatation (arc-inscription) whether
   an arc is flexibel or not.  Thus, it depends on the constraints
   on annotations whether an arc is flexible or not (cf.
   contribution of Karsten Schmidt). 

   Therefore, I propose to delete all kinds of flexible arcs from
   the list of arc-types and make it an issue of high-level
   inscriptions, which is my next issue.  (However, there
   could be a different kind of label indicating that the arc is
   flexible---as proposed by Karsten Schmidt. This would help those
   tools that are not able to interprete the arc-inscriptions.)


2. I would like to put forward Karsten's proposals:
   I support Karsten's proposal to have as much common syntax
   (and semantics) for all high-level nets as possible.
   What we need is a format for
   a. defining new syntactical objects:
      * sorts  (this includes the definition of template sorts
                such as a stack over any given sort)
      * operation symbols
      Basically, we need a format for defining a signature.

      (I am not sure, where to place the definition of variables;
       they could be defined locally at each transition or globally
       for the whole net.)
       

   b. defining the semantics of these syntactical
      objects
      * a domain for a particular sort
      * a concrete operation (function) for an operation symbol

   In my opinion, a format for b. is out of range at the current
   stage. So, we should focus on a format for a.  Are there any
   proposals on this format? (If there are no proposals, I would
   choose some ACT ONE like format for signatures.)

   In order to have as much common syntax and semantics,
   we should fix some syntax and give it a fixed (common sense)
   semantics.
   Here is a proposal to start with (surely incomplete, but it
   gives an impression; names are subject to discussion):
   Predefined sorts:
      nat, int, bool, dot
      (where dot represents a sort with a single element: the
       black token)

      Maybe, there could be ranges; e.g.  int[1,..,27]

   Predefined template sorts:
      Pair, Triple, (Tuples in general), Bag
      (Bag(s) represents the bags---finite positive multisets---
       over sort s; maybe, we should call them multisets in order
       to meet the terminology of the PN standard;
       we could also include sequences, lists etc.)

   Predefined operations (and constants):
      d: -> dot

      true, false : -> bool
      not : bool -> bool
      and, or, implies, equiv: bool bool -> bool

      0, 1, 2, 3, ... : -> nat
      +, *, div, mod: nat nat -> nat          (how about - ?)
      =, <, <=, >, >= : nat nat -> bool

      ... -2, -1, 0, 1, 2, ... : -> int
      +, -, *, div, mod: int int -> int
      =, <, <=, >, >= : int int -> bool

 
      empty : -> Bag(s)
      + : Bag(s) Bag(s) -> Bag(s)             (how about - ?)
      =, <, <=, >, >= : Bag(s) Bag(s) -> bool
      Card : Bag(s) -> nat
      inj : s -> Bag(s)                (makes an element of
                                        s a singleton bag)
      * : nat Bag(s) -> Bag(s)         (scalar multiplication)
      count : Bag(s) s -> nat          (counts the number of
                                        occurrences of some
                                        element of s in a bag
                                        over s)

   Maybe, there could be some addiional conventions.  For example,
   a term t of sort s could be considered as inj(t) if a
   bag over s is expected ...

   Except for the operation . x . the corresponding Bag(s)-Terms
   give us non-flexible arcs.  As long as this
   operation is not used, Karsten's constraints on counting the 
   number of tokens (without knowing details on the datatype)
   is met.  I have included the scalar multiplication because
   it is in the PN standard.

   In this setting, a high-level net would consist of the
   following labels/annotations:
    - the net has a label representing the signature
      (maybe another label representing the variables)
    - each place has label representing its sort s and
      labels representing its initial and current marking
      (a Bag(s)-term).  A capacity could be represented also
      by a marking.
    - the corresponding arcs have a label (arc-inscriptions),
      which is Bag(s) term.
      This applies to all kinds of arcs (inhibitors, clear/reset,
      read and normal arcs).  I am not sure wether it is
      possible to have a default for arc-inscriptions in the
      case of high-level nets (maybe, it is inj(x) for some
      predefined variable x).
    - a transition can have a label that represents a guard,
      which is a term of sort bool (true is the default).