|
| 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 |