The petri Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The petri Reference Manual

This is the petri Reference Manual, version 0.0.1, generated automatically by Declt version 2.4 patchlevel 1 "Will Decker" on Mon Apr 08 14:45:15 2019 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

PETRI

A Common Lisp implementation of Petri nets.

Warning

This README is beta-quality. It will be fixed and extended one day.

Introduction

The original Petri net notation mentions transitions and places. Because the term "place" already has a defined meaning in Common Lisp, I have decided to instead use the term "bag" in this library. The implementations of bags I use is PHOE-TOOLBOX/BAG and all bags may be queried using the interface defined in that system: BAG-CONTENTS, BAG-INSERT, BAG-REMOVE, and BAG-COUNT.

Each Petri net is a funcallable object and invoking a Petri net happens via funcalling it.

The keyword arguments to a Petri net are:

A Petri net returns two values upon being funcalled: the primary return value is itself, and the secondary value is a boolean stating whether any errors have occurred during the execution of the Petri net. (This value is only useful if :IGNORE-ERRORS has been set.)

Petri nets are immutable after their creation. Their only mutable parts are the bag objects referenced by them.

Each transition in the Petri net is specified by a list of input bag specs, a list of output bag specs, and a callback function. Each bag spec A single bag spec may be one of the following:

In case of input bags, the count denotes how many tokens must be present in a bag for the transition to fire. When a transition fires, these tokens are automatically removed from the bag and passed to the callback by means of an input hash table, where the keys are bag names and values are lists of tokens .

In case of output bags, the count denotes how many tokens must be pushed by the callback into the output hash table under the key being the bag's hash table. If the number of tokens pushed by the transition does not match the spec, an execution-time error is signaled.

A special kind of an input bag spec is a list in form of (symbol !), where ! is any symbol with name "!". This spec denotes an inhibitor edge, meaning that the bag with the name symbol must be empty in order for the transition to fire.

A special kind of an output bag spec is a list in form of (symbol *), where * is any symbol with name "*". This spec denotes a wildcard edge, meaning that the transition may push any amount of tokens to the bag with the name symbol.

Each callback is a function that must accept a pair of arguments: an input hash table and an output hash table. The input hash table provides input for the callback and the output hash table is used for sending output. The return value of the callback is ignored.

The input hash table is fresh may freely be mutated by the callback.

PETRI pre-creates the keys in output hash table, so the callback is allowed to access the keys of that hash table in order to determine how to behave. In particular, the callback is allowed to do nothing in order to be considered valid.

PETRI solves the nondeterminism of Petri nets by means of random selection. Each time the code searches for an available transition, all transitions are searched in random order. Each time a token is removed from a bag, it is removed at random.

Execution of a Petri net stops when no more transitions are available to fire. In particular, this means that calling a Petri net may loop indefinitely.

ASDF systems

PETRI

This ASDF system defines the base code implementing Petri nets.

A Petri net (an instance of class PETRI-NET) may be created in two ways: using functional syntax (via the MAKE-PETRI-NET function) and using declarative syntax (via the PETRI-NET macro.) An individual bag of a Petri net may be accessed using the BAGS-OF function, which accepts a Petri net and the name of the bag in question. A list of all bag names may be accessed via BAG-NAMES.

Condition types defined by this system are PETRI-NET-ERROR, which is the supertype of all errors related to Petri nets, and SIMPLE-PETRI-NET-ERROR, which is a PETRI-NET-ERROR that is also a SIMPLE-ERROR. The convenience function PETRI-NET-ERROR exists for signaling this error.

PETRI/THREADED

This ASDF system contains code for a multithreaded implementation of Petri net that uses raw BORDEAUX-THREADS for execution. Each transition is executed in a separate thread as soon as enough tokens are available for it to fire.

Instances of threaded Petri nets (instances of class THREADED-PETRI-NET) may be created using the THREADED-PETRI-NET macro or the MAKE-THREADED-PETRI-NET function.

Errors cause the transition to return and are propagated to the thread calling the Petri net along with the backtrace, wrapped in a condition of type THREADED-PETRI-NET-ERROR.

PETRI/GRAPH

This ASDF system contains code for integrating PETRI with CL-DOT.

Loading this system defines methods on the generic functions in CL-DOT's GRAPH-OBJECT protocol that allow Petri nets to be graphed.

The only symbol exported by this package is DISPLAY-GRAPH, a convenience function which accepts a Petri net, generates a PNG graph in a temporary directory and automatically executes it using xdg-open.

PETRI/TEST

This ASDF system contains tests for PETRI and PETRI-THREADED.

You do not need to explicitly load this system to run the tests; instead, use (asdf:test-system :petri).

See the file tests.lisp for working examples in form of unit tests. Each working test is run in four manners: using functional and declarative syntax, and using single-threaded and multithreaded implementations.

Examples

Negation

;; Define the callback function for the transition.
(flet ((callback (input output)
         (push (- (pop (gethash 'foo input))) (gethash 'bar output))))
  ;; Create the petri net object.
  (let ((petri-net (make-petri-net
                    ;; Define bags FOO and BAR.
                    '(foo bar)
                    ;; Define a single transition which takes one token from FOO
                    ;; and outputs one token to BAR.
                    `((((foo 1)) ((bar 1)) ,#'callback)))))
    ;; Populate bag FOO with data.
    (dolist (i '(1 2 3))
      (bag-insert (bag-of petri-net 'foo) i))
    ;; Funcall the Petri net.
    (funcall petri-net)
    ;; Access the contents of bag BAR.
    (bag-contents (bag-of petri-net 'bar))))
;; => #(-1 -3 -2)

Generated negation graph

Due to the non-determinism of the Petri net, the output vector may have its elements in any order.

Maybe-negation

;; Define the callback functions for the transition: one which negates its
;; arguments and the other which passes them without any change.
(flet ((callback-negation (input output)
         (push (- (pop (gethash 'foo input))) (gethash 'bar output)))
       (callback-identity (input output)
         (push (pop (gethash 'foo input)) (gethash 'bar output))))
  ;; Create the petri net object.
  (let ((petri-net (make-petri-net
                    ;; Define bags FOO and BAR.
                    '(foo bar)
                    ;; Define two transitions:
                    ;; * one that takes one token from FOO, outputs one token to
                    ;;   BAR, and calls CALLBACK-IDENTITY,
                    ;; * one that takes one token from FOO, outputs one token to
                    ;;   BAR, and calls CALLBACK-NEGATION.
                    `((((foo 1)) ((bar 1)) ,#'callback-negation)
                      (((foo 1)) ((bar 1)) ,#'callback-identity)))))
    ;; Populate bag FOO with data.
    (dolist (i '(1 2 3 4 5 6 7 8 9 0))
      (bag-insert (bag-of petri-net 'foo) i))
    ;; Funcall the Petri net.
    (funcall petri-net)
    ;; Access the contents of bag BAR.
    (bag-contents (bag-of petri-net 'bar))))
;; => #(-1 -9 -3 8 -4 5 0 6 -2 -7)
;; => #(-5 8 0 2 -4 -9 -3 -1 -7 -6)
;; => #(-4 -8 -1 -2 -5 -7 -6 3 0 9)
;; => ...

Generated maybe-negation graph

Due to the non-determinism of the Petri net, the output vector may have its elements in any order, and any element might have been negated.

Graphs

A more complex Petri net may be visualized using the PETRI/GRAPH system.

(threaded-petri-net ()
  (update-digo-data-p -> #'dl-digo-data -> new-digo-data-p)
  (new-digo-data-p old-digo-data-p -> #'save-digo-data)
  (credentials -> #'login -> cookie-jars
               -> #'dl-account -> accounts (accounts-furres *))
  (accounts-furres (old-digo-data-p !)
                   -> #'dl-furre
                   -> furres
                     (furres-costumes *)
                     (furres-portraits *)
                     (furres-specitags *)
                     furres-images)
  (furres-costumes -> #'dl-costume -> costumes)
  (furres-portraits -> #'dl-portrait -> portraits)
  (furres-specitags -> #'dl-specitag -> specitags)
  (furres-images -> #'dl-image-list -> (image-metadata *))
  (image-metadata -> #'dl-image -> images))

Generated complex graph

In the above example, the programmer's intent was to store input in the CREDENTIALS bag read and output from bags ACCOUNTS, IMAGES, FURRES, COSTUMES, PORTRAITS, and SPECITAGS when the Petri net finishes executing. Each transition accepts one token from the input bag and store either one token into each output bag (edges without labels) or an arbitrary number of tokens into each output bag (edges labeled with *).

Additionally, an optional constraint is placed, in which DL-FURRE may not execute before DL-DIGO-DATA finishes executing. This is achieved via an extra place, OLD-DIGO-DATA-P, and an inhibitor edge leading from it. If this constraint is meant to be activated, then a pair of arbitrary tokens should be placed on UPDATE-DIGO-DATA-P and OLD-DIGO-DATA-P.

Extending PETRI

This system is currently not designed to be extensible. See the class definitions and generic functions defined in the file petri.lisp for details on the internal working of the system.

License

Copyright © 2018 Michał "phoe" Herda.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 petri

Author

Michał "phoe" Herda <phoe@disroot.org>

License

MIT

Description

An implementation of Petri nets

Version

0.0.1

Dependencies
Source

petri.asd (file)

Component

petri.lisp (file)


Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 petri.asd

Location

petri.asd

Systems

petri (system)


Previous: , Up: Lisp files   [Contents][Index]

3.1.2 petri/petri.lisp

Parent

petri (system)

Location

petri.lisp

Packages

petri

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

4.1 petri

Source

petri.lisp (file)

Use List
Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Macros

Macro: petri-net () &body FORMS
Package

petri

Source

petri.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Functions

Function: bag-names PETRI-NET
Package

petri

Source

petri.lisp (file)

Function: bag-of PETRI-NET NAME
Function: (setf bag-of) NEW-VALUE PETRI-NET NAME
Package

petri

Source

petri.lisp (file)

Function: make-petri-net BAGS TRANSITIONS
Package

petri

Source

petri.lisp (file)

Function: petri-net-error CONTROL &rest ARGS
Package

petri

Source

petri.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.3 Conditions

Condition: petri-net-error ()
Package

petri

Source

petri.lisp (file)

Direct superclasses

error (condition)

Direct subclasses
Condition: simple-petri-net-error ()
Package

petri

Source

petri.lisp (file)

Direct superclasses

Previous: , Up: Exported definitions   [Contents][Index]

5.1.4 Classes

Class: petri-net ()
Package

petri

Source

petri.lisp (file)

Direct superclasses

funcallable-standard-object (class)

Direct methods
Direct slots
Slot: %bags
Readers

bags (generic function)

Writers

(setf bags) (generic function)

Slot: %transitions
Readers

transitions (generic function)

Writers

(setf transitions) (generic function)

Direct Default Initargs
InitargValue
:bags(make-hash-table)
:transitions(quote nil)

Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Macros

Macro: %petri-net CONSTRUCTOR &body FORMS
Package

petri

Source

petri.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Functions

Function: bag-form-p THING
Package

petri

Source

petri.lisp (file)

Function: edges-bags-from EDGES FUNCTION-FORM
Package

petri

Source

petri.lisp (file)

Function: edges-bags-to EDGES FUNCTION-FORM
Package

petri

Source

petri.lisp (file)

Function: edges-objects EDGES
Package

petri

Source

petri.lisp (file)

Function: find-ready-transition PETRI-NET
Package

petri

Source

petri.lisp (file)

Function: form-edges FORM
Package

petri

Source

petri.lisp (file)

Function: function-form-p THING
Package

petri

Source

petri.lisp (file)

Function: inhibitor-bag-form-p THING
Package

petri

Source

petri.lisp (file)

Function: make-bags &rest SYMBOLS
Package

petri

Source

petri.lisp (file)

Function: make-output-hash-table TRANSITION
Package

petri

Source

petri.lisp (file)

Function: make-transition FROM TO CALLBACK &optional CLASS
Package

petri

Source

petri.lisp (file)

Function: no-one-element-lists X
Package

petri

Source

petri.lisp (file)

Function: transition-not-ready BAG REQUESTED-COUNT ACTUAL-COUNT
Package

petri

Source

petri.lisp (file)

Function: transition-not-ready-report CONDITION STREAM
Package

petri

Source

petri.lisp (file)

Function: transition-ready-p TRANSITION PETRI-NET &optional ERRORP
Package

petri

Source

petri.lisp (file)

Function: validate-output-hash-table OUTPUT TRANSITION
Package

petri

Source

petri.lisp (file)

Function: wildcard-bag-form-p THING
Package

petri

Source

petri.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Generic functions

Generic Function: actual-count CONDITION
Package

petri

Methods
Method: actual-count (CONDITION transition-not-ready)
Source

petri.lisp (file)

Generic Function: bags OBJECT
Generic Function: (setf bags) NEW-VALUE OBJECT
Package

petri

Methods
Method: bags (PETRI-NET petri-net)

automatically generated reader method

Source

petri.lisp (file)

Method: (setf bags) NEW-VALUE (PETRI-NET petri-net)

automatically generated writer method

Source

petri.lisp (file)

Generic Function: bags-from OBJECT
Generic Function: (setf bags-from) NEW-VALUE OBJECT
Package

petri

Methods
Method: bags-from (TRANSITION transition)

automatically generated reader method

Source

petri.lisp (file)

Method: (setf bags-from) NEW-VALUE (TRANSITION transition)

automatically generated writer method

Source

petri.lisp (file)

Generic Function: bags-to OBJECT
Generic Function: (setf bags-to) NEW-VALUE OBJECT
Package

petri

Methods
Method: bags-to (TRANSITION transition)

automatically generated reader method

Source

petri.lisp (file)

Method: (setf bags-to) NEW-VALUE (TRANSITION transition)

automatically generated writer method

Source

petri.lisp (file)

Generic Function: call-callback TRANSITION INPUT OUTPUT
Package

petri

Source

petri.lisp (file)

Methods
Method: call-callback (TRANSITION transition) (INPUT hash-table) (OUTPUT hash-table)
Generic Function: callback OBJECT
Generic Function: (setf callback) NEW-VALUE OBJECT
Package

petri

Methods
Method: callback (TRANSITION transition)

automatically generated reader method

Source

petri.lisp (file)

Method: (setf callback) NEW-VALUE (TRANSITION transition)

automatically generated writer method

Source

petri.lisp (file)

Generic Function: condition-bag CONDITION
Package

petri

Methods
Method: condition-bag (CONDITION transition-not-ready)
Source

petri.lisp (file)

Generic Function: make-petri-net-funcallable-function PETRI-NET
Package

petri

Source

petri.lisp (file)

Methods
Method: make-petri-net-funcallable-function (PETRI-NET petri-net)
Generic Function: make-transition-funcallable-function TRANSITION
Package

petri

Source

petri.lisp (file)

Methods
Method: make-transition-funcallable-function (TRANSITION transition)
Generic Function: petri-net-transition-constructor PETRI-NET
Package

petri

Source

petri.lisp (file)

Methods
Method: petri-net-transition-constructor (PETRI-NET petri-net)
Generic Function: populate-input TRANSITION PETRI-NET &optional SKIP-VALIDATION-P
Package

petri

Source

petri.lisp (file)

Methods
Method: populate-input (TRANSITION transition) (PETRI-NET petri-net) &optional SKIP-VALIDATION-P
Generic Function: populate-output TRANSITION PETRI-NET OUTPUT
Package

petri

Source

petri.lisp (file)

Methods
Method: populate-output (TRANSITION transition) (PETRI-NET petri-net) (OUTPUT hash-table)
Generic Function: requested-count CONDITION
Package

petri

Methods
Method: requested-count (CONDITION transition-not-ready)
Source

petri.lisp (file)

Generic Function: transitions OBJECT
Generic Function: (setf transitions) NEW-VALUE OBJECT
Package

petri

Methods
Method: transitions (PETRI-NET petri-net)

automatically generated reader method

Source

petri.lisp (file)

Method: (setf transitions) NEW-VALUE (PETRI-NET petri-net)

automatically generated writer method

Source

petri.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.4 Conditions

Condition: transition-not-ready ()
Package

petri

Source

petri.lisp (file)

Direct superclasses

petri-net-error (condition)

Direct methods
Direct slots
Slot: %requested-count
Initargs

:requested-count

Readers

requested-count (generic function)

Slot: %actual-count
Initargs

:actual-count

Readers

actual-count (generic function)

Slot: %bag
Initargs

:bag

Readers

condition-bag (generic function)

Direct Default Initargs
InitargValue
:bag(alexandria.0.dev:required-argument :bag)
:actual-count(alexandria.0.dev:required-argument :actual-count)
:requested-count(alexandria.0.dev:required-argument :requested-count)

Previous: , Up: Internal definitions   [Contents][Index]

5.2.5 Classes

Class: transition ()
Package

petri

Source

petri.lisp (file)

Direct superclasses

funcallable-standard-object (class)

Direct methods
Direct slots
Slot: %bags-from
Initargs

:bags-from

Readers

bags-from (generic function)

Writers

(setf bags-from) (generic function)

Slot: %bags-to
Initargs

:bags-to

Readers

bags-to (generic function)

Writers

(setf bags-to) (generic function)

Slot: %callback
Initargs

:callback

Readers

callback (generic function)

Writers

(setf callback) (generic function)

Direct Default Initargs
InitargValue
:bags-from(make-hash-table)
:bags-to(make-hash-table)
:callback(alexandria.0.dev:required-argument :callback)

Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L   P  
Index Entry  Section

F
File, Lisp, petri.asd: The petri<dot>asd file
File, Lisp, petri/petri.lisp: The petri/petri<dot>lisp file

L
Lisp File, petri.asd: The petri<dot>asd file
Lisp File, petri/petri.lisp: The petri/petri<dot>lisp file

P
petri.asd: The petri<dot>asd file
petri/petri.lisp: The petri/petri<dot>lisp file

Jump to:   F   L   P  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   %   (  
A   B   C   E   F   G   I   M   N   P   R   T   V   W  
Index Entry  Section

%
%petri-net: Internal macros

(
(setf bag-of): Exported functions
(setf bags): Internal generic functions
(setf bags): Internal generic functions
(setf bags-from): Internal generic functions
(setf bags-from): Internal generic functions
(setf bags-to): Internal generic functions
(setf bags-to): Internal generic functions
(setf callback): Internal generic functions
(setf callback): Internal generic functions
(setf transitions): Internal generic functions
(setf transitions): Internal generic functions

A
actual-count: Internal generic functions
actual-count: Internal generic functions

B
bag-form-p: Internal functions
bag-names: Exported functions
bag-of: Exported functions
bags: Internal generic functions
bags: Internal generic functions
bags-from: Internal generic functions
bags-from: Internal generic functions
bags-to: Internal generic functions
bags-to: Internal generic functions

C
call-callback: Internal generic functions
call-callback: Internal generic functions
callback: Internal generic functions
callback: Internal generic functions
condition-bag: Internal generic functions
condition-bag: Internal generic functions

E
edges-bags-from: Internal functions
edges-bags-to: Internal functions
edges-objects: Internal functions

F
find-ready-transition: Internal functions
form-edges: Internal functions
Function, (setf bag-of): Exported functions
Function, bag-form-p: Internal functions
Function, bag-names: Exported functions
Function, bag-of: Exported functions
Function, edges-bags-from: Internal functions
Function, edges-bags-to: Internal functions
Function, edges-objects: Internal functions
Function, find-ready-transition: Internal functions
Function, form-edges: Internal functions
Function, function-form-p: Internal functions
Function, inhibitor-bag-form-p: Internal functions
Function, make-bags: Internal functions
Function, make-output-hash-table: Internal functions
Function, make-petri-net: Exported functions
Function, make-transition: Internal functions
Function, no-one-element-lists: Internal functions
Function, petri-net-error: Exported functions
Function, transition-not-ready: Internal functions
Function, transition-not-ready-report: Internal functions
Function, transition-ready-p: Internal functions
Function, validate-output-hash-table: Internal functions
Function, wildcard-bag-form-p: Internal functions
function-form-p: Internal functions

G
Generic Function, (setf bags): Internal generic functions
Generic Function, (setf bags-from): Internal generic functions
Generic Function, (setf bags-to): Internal generic functions
Generic Function, (setf callback): Internal generic functions
Generic Function, (setf transitions): Internal generic functions
Generic Function, actual-count: Internal generic functions
Generic Function, bags: Internal generic functions
Generic Function, bags-from: Internal generic functions
Generic Function, bags-to: Internal generic functions
Generic Function, call-callback: Internal generic functions
Generic Function, callback: Internal generic functions
Generic Function, condition-bag: Internal generic functions
Generic Function, make-petri-net-funcallable-function: Internal generic functions
Generic Function, make-transition-funcallable-function: Internal generic functions
Generic Function, petri-net-transition-constructor: Internal generic functions
Generic Function, populate-input: Internal generic functions
Generic Function, populate-output: Internal generic functions
Generic Function, requested-count: Internal generic functions
Generic Function, transitions: Internal generic functions

I
inhibitor-bag-form-p: Internal functions

M
Macro, %petri-net: Internal macros
Macro, petri-net: Exported macros
make-bags: Internal functions
make-output-hash-table: Internal functions
make-petri-net: Exported functions
make-petri-net-funcallable-function: Internal generic functions
make-petri-net-funcallable-function: Internal generic functions
make-transition: Internal functions
make-transition-funcallable-function: Internal generic functions
make-transition-funcallable-function: Internal generic functions
Method, (setf bags): Internal generic functions
Method, (setf bags-from): Internal generic functions
Method, (setf bags-to): Internal generic functions
Method, (setf callback): Internal generic functions
Method, (setf transitions): Internal generic functions
Method, actual-count: Internal generic functions
Method, bags: Internal generic functions
Method, bags-from: Internal generic functions
Method, bags-to: Internal generic functions
Method, call-callback: Internal generic functions
Method, callback: Internal generic functions
Method, condition-bag: Internal generic functions
Method, make-petri-net-funcallable-function: Internal generic functions
Method, make-transition-funcallable-function: Internal generic functions
Method, petri-net-transition-constructor: Internal generic functions
Method, populate-input: Internal generic functions
Method, populate-output: Internal generic functions
Method, requested-count: Internal generic functions
Method, transitions: Internal generic functions

N
no-one-element-lists: Internal functions

P
petri-net: Exported macros
petri-net-error: Exported functions
petri-net-transition-constructor: Internal generic functions
petri-net-transition-constructor: Internal generic functions
populate-input: Internal generic functions
populate-input: Internal generic functions
populate-output: Internal generic functions
populate-output: Internal generic functions

R
requested-count: Internal generic functions
requested-count: Internal generic functions

T
transition-not-ready: Internal functions
transition-not-ready-report: Internal functions
transition-ready-p: Internal functions
transitions: Internal generic functions
transitions: Internal generic functions

V
validate-output-hash-table: Internal functions

W
wildcard-bag-form-p: Internal functions

Jump to:   %   (  
A   B   C   E   F   G   I   M   N   P   R   T   V   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   %  
S  
Index Entry  Section

%
%actual-count: Internal conditions
%bag: Internal conditions
%bags: Exported classes
%bags-from: Internal classes
%bags-to: Internal classes
%callback: Internal classes
%requested-count: Internal conditions
%transitions: Exported classes

S
Slot, %actual-count: Internal conditions
Slot, %bag: Internal conditions
Slot, %bags: Exported classes
Slot, %bags-from: Internal classes
Slot, %bags-to: Internal classes
Slot, %callback: Internal classes
Slot, %requested-count: Internal conditions
Slot, %transitions: Exported classes

Jump to:   %  
S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   C   P   S   T  
Index Entry  Section

C
Class, petri-net: Exported classes
Class, transition: Internal classes
Condition, petri-net-error: Exported conditions
Condition, simple-petri-net-error: Exported conditions
Condition, transition-not-ready: Internal conditions

P
Package, petri: The petri package
petri: The petri system
petri: The petri package
petri-net: Exported classes
petri-net-error: Exported conditions

S
simple-petri-net-error: Exported conditions
System, petri: The petri system

T
transition: Internal classes
transition-not-ready: Internal conditions

Jump to:   C   P   S   T