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

SMCDEL.Symbolic.K

Description

The implementation in SMCDEL.Symbolic.S5 only works for models where the epistemic accessibility relation is an equivalence relation. This is because only those can be described by sets of observational variables. In fact, not even every S5 relation on distinctly valuated worlds can be modeled with observational variables --- this is why our translation procedure S5 has to add additional atomic propositions.

To overcome this limitation, here we generalize the definition of knowledge structures. Using well-known methods from temporal model checking, arbitrary relations can also be represented as BDDs. See for example~cite{GoroRyan02:BelRevBDD}. Remember that in a knowledge structure we can identify states with boolean assignments and those are just sets of propositions. Hence a relation on states with unique valuations can be seen as a relation between sets of propositions. We can therefore represent it with the BDD of a characteristic function on a double vocabulary, as described in~cite[Section 5.2]{ClarkeGrumbergPeled1999:MC}. Intuitively, we construct (the BDD of) a formula which is true exactly for the pairs of boolean assignments that are connected by the relation.

Our symbolic model checker can then also be used for non-S5 models.

For further explanations, see~cite[Section 8]{BEGS17:SMCDELbeyond}.

Synopsis

Translating relations to type-safe BDDs

unmvcpP :: Prp -> Prp Source #

Map p or p' in double vocabulary to p in single vocabulary.

mv :: [Prp] -> [Prp] Source #

cp :: [Prp] -> [Prp] Source #

unmv :: [Prp] -> [Prp] Source #

Go from p in double vocabulary to p in single vocabulary.

uncp :: [Prp] -> [Prp] Source #

Go from p' in double vocabulary to p in single vocabulary.

data Dubbel Source #

Instances

Instances details
TagBdd Dubbel Source # 
Instance details

Defined in SMCDEL.Symbolic.K

class TagBdd a where Source #

Minimal complete definition

Nothing

Methods

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

Instances

Instances details
TagBdd Dubbel Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Describing Kripke Models with BDDs

We now want to use BDDs to represent the relations of multiple agents in a general Kripke Model. Suppose we have a model for the vocabulary $V$ in which the valuation function assigns to every state a distinct set of true propositions. To simplify the notation we also write $s$ for the set of propositions true at $s$.

relBddOfIn :: Agent -> KripkeModel -> RelBDD Source #

Translate an agent's relation of worlds to a relation of sets of propositions. The given model must have distinct valuations.

Belief Structures

data BelStruct Source #

Constructors

BlS [Prp] Bdd (Map Agent RelBDD) 

Instances

Instances details
Arbitrary BelStruct Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Show BelStruct Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Eq BelStruct Source # 
Instance details

Defined in SMCDEL.Symbolic.K

TexAble BelScene Source # 
Instance details

Defined in SMCDEL.Symbolic.K

TexAble BelStruct Source # 
Instance details

Defined in SMCDEL.Symbolic.K

TexAble MultipointedBelScene Source # 
Instance details

Defined in SMCDEL.Symbolic.K

HasAgents BelStruct Source # 
Instance details

Defined in SMCDEL.Symbolic.K

HasVocab BelStruct Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Methods

vocabOf :: BelStruct -> [Prp] Source #

Optimizable BelStruct Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Optimizable MultipointedBelScene Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Semantics BelScene Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Methods

isTrue :: BelScene -> Form -> Bool Source #

Semantics BelStruct Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Methods

isTrue :: BelStruct -> Form -> Bool Source #

Semantics MultipointedBelScene Source # 
Instance details

Defined in SMCDEL.Symbolic.K

HasPerspective MultipointedBelScene Source #

See ...

Instance details

Defined in SMCDEL.Other.Planning

Pointed BelStruct Bdd Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Pointed BelStruct State Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update BelScene Form Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update BelScene Event Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update BelScene MultipointedEvent Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update BelStruct Form Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update BelStruct Transformer Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update MultipointedBelScene MultipointedEvent Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Convertable KnowScene BelScene Source #

Every knowledge structure is also a belief structure. We replace each \(O_i\) with \(\Omega_i := \bigwedge_{p \in O_i} (p \leftrightarrow p')\).

Instance details

Defined in SMCDEL.Translations.Convert

bddOf :: BelStruct -> Form -> Bdd Source #

Given a formula, compute a BDD that is equivalent to that formula, on a given belief structure.

statesOf :: BelStruct -> [State] Source #

Get all states of a knowledge structure.

Visualizing Belief Structures

data Transformer Source #

Constructors

Trf [Prp] Form (Map Prp Bdd) (Map Agent RelBDD) 

Instances

Instances details
Show Transformer Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Eq Transformer Source # 
Instance details

Defined in SMCDEL.Symbolic.K

TexAble Event Source # 
Instance details

Defined in SMCDEL.Symbolic.K

TexAble MultipointedEvent Source # 
Instance details

Defined in SMCDEL.Symbolic.K

TexAble Transformer Source # 
Instance details

Defined in SMCDEL.Symbolic.K

HasAgents Transformer Source # 
Instance details

Defined in SMCDEL.Symbolic.K

HasPrecondition Event Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Methods

preOf :: Event -> Form Source #

HasPrecondition MultipointedEvent Source # 
Instance details

Defined in SMCDEL.Symbolic.K

HasPrecondition Transformer Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Pointed Transformer Bdd Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Pointed Transformer State Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update BelScene Event Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update BelScene MultipointedEvent Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update BelStruct Transformer Source # 
Instance details

Defined in SMCDEL.Symbolic.K

Update MultipointedBelScene MultipointedEvent Source # 
Instance details

Defined in SMCDEL.Symbolic.K

shiftPrepare :: BelStruct -> Transformer -> (Transformer, [(Prp, Prp)]) Source #

shift addprops to ensure that props and newprops are disjoint: