7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa{-# LANGUAGE DeriveDataTypeable #-}
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaDescription : Symbol-related functions for TPTP.
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaCopyright : (c) Eugen Kuksa University of Magdeburg 2017
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaLicense : GPLv2 or higher, see LICENSE.txt
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaMaintainer : Eugen Kuksa <kuksa@iks.cs.ovgu.de>
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaStability : provisional
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaPortability : non-portable (imports Logic)
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksaSymbol-related functions for TPTP.
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksamodule TPTP.Morphism ( Morphism
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , symbolsOfSign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , symbolToId
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaimport TPTP.Sign as Sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaimport qualified Data.Map as Map
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksaimport qualified Data.Set as Set
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksatype Morphism = DefaultMorphism Sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksamkSymbol :: Token -> SymbolType -> Symbol
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksamkSymbol i t = Symbol { symbolId = i , symbolType = t }
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksagatherTHFSymbols :: SymbolType -> THFTypeDeclarationMap -> Set.Set Symbol
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksagatherTHFSymbols symType = Set.map fromJust . Set.filter isJust .
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa Set.map (\ x -> mkSymbolFromTHFType x symType) . Map.keysSet
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa mkSymbolFromTHFType :: THFTypeable -> SymbolType -> Maybe Symbol
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa mkSymbolFromTHFType x t = case x of
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa THFTypeConstant c -> Just $ Symbol { symbolId = c, symbolType = t }
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa THFTypeFormula _ -> Nothing
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksamkSymbolFromTFFType :: Untyped_atom -> SymbolType -> Symbol
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksamkSymbolFromTFFType x t = case x of
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa UA_constant c -> Symbol { symbolId = c, symbolType = t }
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa UA_system c -> Symbol { symbolId = c, symbolType = t }
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksamkToken :: Show a => a -> Token
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksamkToken = mkSimpleId . show
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksasymbolsOfSign :: Sign -> Set.Set Symbol
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksasymbolsOfSign sign = Set.unions [
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa Set.map (\ x -> mkSymbol x Sign.Constant) $ constantSet sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , Set.map (\ x -> mkSymbol (mkToken x) Sign.Number) $ numberSet sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , Set.map (\ x -> mkSymbol x Sign.Proposition) $ propositionSet sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , gatherTHFSymbols Sign.TypeConstant $ thfTypeConstantMap sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , Set.map (\ x -> mkSymbolFromTFFType x Sign.TypeConstant) $ Map.keysSet $ tffTypeConstantMap sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , gatherTHFSymbols Sign.Predicate $ thfPredicateMap sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , Set.map (\ x -> mkSymbolFromTFFType x Sign.Predicate) $ Map.keysSet $ tffPredicateMap sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , Set.map (\ x -> mkSymbol x Sign.Predicate) $ Map.keysSet $ fofPredicateMap sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , gatherTHFSymbols Sign.Function $ thfTypeFunctorMap sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen Kuksa , Set.map (\ x -> mkSymbolFromTFFType x Sign.Function) $ Map.keysSet $ tffTypeFunctorMap sign
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksasymbolToId :: Symbol -> Id
7bb0a9e92bc7a6f868eaa0b9c3212c0af4f96b7fEugen KuksasymbolToId = simpleIdToId . symbolId