Algebraic Petri net とは

代数ペトリネット(APN)は、既知のペトリネットの進化であり、ユーザ定義データ型の要素(代数抽象データ型(AADT)と呼ばれる)がブラックトークンを置き換える。この形式主義は、多くの面で色付きペトリネット(CPN)と比較することができます。しかし、APNの場合、データ型のセマンティクスは、それに対する証明と計算を可能にする公理によって与えられる。
代数的ペトリネットは、博士論文で85年にJacques Vautherinによって考案され、後にWolfang Reisigによって改良されました。
形式主義には2つの側面があります。
 ペトリネットによって処理される制御部分。 1つまたは複数のAADTによって処理されるデータ部分。
AADT自体は2つの部分に分割することができます。
 有効な定数と項代数の演算を与えるシグネチャ(下の例では、SortとOps)。署名部分に記述されている操作の意味を与える公理(以下の例の公理)。
次の図は、「食事哲学者問題」の代数的ペトリネットモデルを示しています。このモデルには2つのAADTがあり、1つはフォーク代数用、もう1つは哲学者代数用です。哲学者のAADTはフォークAADTを使用しています。すべての哲学者は右フォークを取ることなく左フォークを取ることができるので、このモデルを実行するとデッドロックが発生する可能性があります。
制御部は、
 場所にはトークンのマルチセット(バッグ)が含まれています。これらのトークンは、AADTの署名(この例では、哲学者またはフォークのいずれかを表す用語)上に構築された項代数の要素です。それぞれの場所には、用語集合のマルチセットが1つだけ含まれています。場所はマルチセットによって入力されます。アークは、閉じたまたはフリーの項のマルチセットでラベル付けすることができます。再び用語はAADT署名から構築されます。トランジションとは、十分なリソース(すべての入力アークを満たすための入力場所に十分なトークン)とトランジションのガード(発火条件)があるときに起動できるイベントです。次に、生成されたトークンを出力アークのターゲット場所に配置します。通常、条件の成立を確認し、出力条件を計算するために、操作のセマンティクスに用語再書き込みが使用されます。
以下の例では、最初はtransition goEatだけが幻滅です。 1つのgoEatが起動され、takeLとtakeRも有効になり、したがって起動することもできます。
代数的ペトリネットは、CO-OPNのようなより高度なものの基本的な形式である。