Skip to content
/ lts Public

An implementation of both Sergot's Labelled Transition System and Bench-Capon's Action-Based LTS

Notifications You must be signed in to change notification settings

erolm-a/lts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Labelled Transition System

Authors: Enrico Trombetta, Francesco Perrone

In theoretical computer science, a transition system is a concept used in the study of computation. It is used to describe the potential behavior of discrete systems. It consists of states and transitions between states, which may be labeled with labels chosen from a set; the same label may appear on more than one transition. If the label set is a singleton, the system is essentially unlabeled, and a simpler definition that omits the labels is possible.

Taken from Wikipedia.

This is the scenario I've started working on:

The problem involves two agents, Hal and Carla. Hal, diabetic, lost his insulin by accident and urgently needs to take some to stay alive. He doesn't have enough time to buy a new supply, but he knows that Carla keeps some insulin at home, very close by. Hal doesn't have permission to access Carla's property, besides Hal knows that Carla is diabetic too and he might be putting her life in danger by taking her supply. On the other hand, Hal believes that Carla may be able to buy some insulin later on.

A brief discussion about this scenario can be found in notes/LTS_insulin.pdf (LaTex source is available under the src folder).

An implementation sketch is provided in src/LTS.pl in Prolog (in particular, we decided to adopt SWI Prolog).

To invoke a path, load the knowledgebase in the interpreter, load the initial state and execute a path.

For example:

?- [LTS].
initial_state(InitialState), path(InitialState, Path).
InitialState = ...
Path = ...
[And a bunch of alternative paths]
true.

?- initial_state(InitialState), export_tree("tree.csv", InitialState).
InitialState = ...
true.

The latter command should write down a csv list of every path. The format is documented in src/LTS.pl, but should be (hopefully) pretty straightforward.

Milestone:

[ ] Finish the LTS implementation of the tree function.

[ ] Implement a parser

[ ] Improve the discussion of the LTS

[ ] Add labeling to transitions.

[ ] ...

About

An implementation of both Sergot's Labelled Transition System and Bench-Capon's Action-Based LTS

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published