|
|
|
|
|
| Description |
| This implements
"A pure, sound, and complete (in the sense of Cook)
Hoare logic for a language with specification statements
and recursion", February 27, 1997,
by Kai Engelhardt and Willem-Paul de Roever.
|
|
| Synopsis |
|
|
|
| Documentation |
|
| module Core.Utils |
|
| module SpecLanguage.PFormula |
|
| Syntax
|
|
| newtype SProg |
| We have to wrap the code in a constructor,
so that we can derive Typeable.
| | Constructors | | Instances | |
|
|
| type SCode = Code SSyn |
|
| data SSyn |
| Constructors | | Instances | |
|
|
| Rule helpers
|
|
| mkRuleResult_ :: SProg -> Region -> (SCode, [Condition]) -> Either Error (RuleResult SProg) |
|
| substitution :: String -> SCode -> SCode -> SCode |
|
| Rules
|
|
| compFun :: SCode -> PFormula -> Maybe SCode |
|
| choiceFun :: SCode -> Maybe SCode |
|
| consFun :: SCode -> PFormula -> PFormula -> Maybe (SCode, [Condition]) |
|
| recFun :: SCode -> String -> SProg -> Maybe (SCode, [Condition]) |
| The rule for recursion is modelled after the programmers' intuition
that, if a recursive procedure works based on the assumption that
all recursive calls work, then the recusive procedure works. (To
work here means to behave according to specifications.)
|
|
| rules :: [Rule SProg] |
|
| Produced by Haddock version 0.8 |