|
Moltap.Prover.TableauState | Portability | portable | Stability | experimental | Maintainer | twanvl@gmail.com |
|
|
|
|
|
Description |
The state type for tableau computations.
|
|
Synopsis |
|
|
|
Documentation |
|
module Moltap.Prover.SplitStateMonad |
|
Tableau and state types
|
|
data GenTableau p e |
A tableau for a single world
| Constructors | | Instances | |
|
|
data GenTableauState p e |
State in a tableau computation,
generalized over proof type.
| Constructors | TableauState | | tabZipper :: (GenTableauTree p e) | The tableaux for the current world
| tabAxioms :: Axioms | Axioms that hold for different agents
|
|
| Instances | |
|
|
emptyTableauState :: Axioms -> GenTableauState p e |
The initial tableau state
|
|
type GenTableauM p e a = SSM (GenTableauState p e) e a |
|
type GenTableauM_ p e = GenTableauM p e () |
|
Functions on the state
|
|
Navigating the tree
|
|
tabLocalDown :: (Show p, Monoid e) => Agents -> GenTableauM_ p e -> GenTableauM_ p e |
Perform a tableau computation in a new world reachable from the current one by the given agents.
|
|
tabLocalUpIf |
:: Monoid e | | => (AxiomSet -> Bool) | required axioms
| -> Agents | agents to match
| -> GenTableauM_ p e | action to perform locally
| -> GenTableauM_ p e | action to perform otherwise
| -> GenTableauM_ p e | | Perform a tableau computation in a world from which the current one is reachable,
and it is reached by an agent matching the test.
|
|
|
Adding formulas
|
|
tabAddUniv :: Monoid e => Agents -> GenTableauM_ p e -> GenTableauM_ p e |
Add a universal, instantiate it for matching worlds
|
|
tabMemo |
:: (Formula -> p -> p -> GenTableauM p e a) | The formula was already processed before
| -> (Formula -> p -> GenTableauM p e a) | The formula was not processed before
| -> Formula | | -> p | Formula and proof
| -> GenTableauM p e a | | Memoize a formula.
If the formula was already seen perform old to merge the possible conflict.
Otherwise memoize it and perform new.
|
|
|
Testing for axioms
|
|
tabWrapIfAxiom :: (AxiomSet -> Bool) -> Agents -> (GenTableauM_ p e -> GenTableauM_ p e) -> GenTableauM_ p e -> GenTableauM_ p e |
If an axiom holds, wrap a, else don't change anything
|
|
tabWhenAxiom :: (AxiomSet -> Bool) -> Agents -> GenTableauM_ p e -> GenTableauM_ p e |
If an axiom holds, perform an axiom, otherwise do nothing
|
|
Extracting results
|
|
tabGraph :: GenTableauState p e -> [(Int, GenTableau p e, [(Int, Agents)])] |
Convert the tableau state to a graph of tableaux
|
|
Produced by Haddock version 0.8 |