smcdel-1.3.0: Symbolic Model Checking for Dynamic Epistemic Logic
Safe HaskellSafe-Inferred
LanguageHaskell2010

SMCDEL.Internal.TaggedBDD

Synopsis

Tagged BDDs

class TagForBDDs a where Source #

Operations on tagged BDDs. The tag a is meant to be an empty type.

Minimal complete definition

Nothing

Methods

multiplier :: Tagged a Bdd -> Int Source #

How many copies of the vocabulary do we have? This is the number of markers + 1.

unmvBdd :: Tagged a Bdd -> Bdd Source #

Move back, must be without markers!

mv :: Bdd -> Tagged a Bdd Source #

Move into double vocabulary, but do not add marker

cp :: Bdd -> Tagged a Bdd Source #

Move into extended vocabulary, add one marker

cpMany :: Int -> Bdd -> Tagged a Bdd Source #

Move into extended vocabulary, add k many markers, MUST be available!

tagBddEval :: [Prp] -> Tagged a Bdd -> Bool Source #

Evaluate a tagged BDD.

Pre-defined tags

data Dubbel Source #

Tag for BDDs using the duplicated vocabulary \(V \cup V'\).

data Tripel Source #

Tag for BDDs using the triple vocabulary \(V \cup V' \cup V''\).

data Quadrupel Source #

Tag for BDDs using the quadruple vocabulary \(V \cup V' \cup V'' \cup V'''\).

Generic definition for tagged BDDs

totalRelBdd :: Tagged a Bdd Source #

The total relation as a tagged BDD.

emptyRelBdd :: Tagged a Bdd Source #

The empty relation as a tagged BDD.

allsamebdd :: TagForBDDs a => [Prp] -> Tagged a Bdd Source #

Given a vocabulary, make a tagged BDD to say that each plain variable \(p\) and the corresponding marked variable \(p'\) variable have the same value: \( \wedge_p (p \leftrightarrow p') \). This encodes the identity relation.