{- |
Module : ./DFOL/Utils.hs
Description : Utilities for first-order logic with dependent types (DFOL)
Copyright : (c) Kristina Sojakova, DFKI Bremen 2009
License : GPLv2 or higher, see LICENSE.txt
Maintainer : k.sojakova@jacobs-university.de
Stability : experimental
Portability : portable
-}
module DFOL.Utils where
import qualified Common.Result as Result
-- logical operators precedences
truePrec :: Int
truePrec = 1
falsePrec :: Int
falsePrec = 1
predPrec :: Int
predPrec = 1
equalPrec :: Int
equalPrec = 1
negPrec :: Int
negPrec = 2
conjPrec :: Int
conjPrec = 3
disjPrec :: Int
disjPrec = 3
implPrec :: Int
implPrec = 4
equivPrec :: Int
equivPrec = 4
forallPrec :: Int
forallPrec = 5
existsPrec :: Int
existsPrec = 5
sortPrec :: Int
sortPrec = 1
formPrec :: Int
formPrec = 1
univPrec :: Int
univPrec = 1
funcPrec :: Int
funcPrec = 2
piPrec :: Int
piPrec = 3
-- datatype for items annotated with diagnostic messages
data DIAGN a = Diagn
{ diags :: [Result.Diagnosis]
, item :: a
} deriving (Show, Eq)
-- conjunction for a list of truth values with diagnostic messages
andD :: [DIAGN Bool] -> DIAGN Bool
andD xs = Diagn diag result
where result = all item xs
diag = concatMap diags xs