Invariantes e interface para Maria
Considere a seguinte classe do Haskell que especifica uma rede P/T.
{-# OPTIONS -fglasgow-exts #-}
module PTNet where
import Data.Set
import Data.Map
class (Eq p, Show p, Eq t, Show t) => PTNet n p t where
places :: n p t -> Set p
trans :: n p t -> Set t
pre :: n p t -> Map (p,t) Int
pos :: n p t -> Map (t,p) Int
capacity :: n p t -> Map p Int
initial :: n p t -> Map p Int
Os tipos de dados Set e Map implementam, respectivamente, conjuntos e funções finitas e fazem parte das bibliotecas hierárquicas do GHC.
Pretende-se neste projecto implementar o algoritmo para cálculo de invariantes de lugar apresentado nas aulas teóricas. A função implementada deve aceitar qualquer rede que implemente a interface acima definida.
Também se pretende um gerador de descrições de rede compatível com a ferramenta Maria, para que se possa fazer a verificação de fórmulas LTL sobre uma qualquer rede definida em Haskell.