horname-0.1.3.0: Rename function definitions returned by SMT solvers

Safe HaskellSafe
LanguageHaskell2010

Horname.Internal.SMT

Synopsis

Documentation

newtype VarName Source #

Constructors

VarName Text 

Instances

Eq VarName Source # 

Methods

(==) :: VarName -> VarName -> Bool #

(/=) :: VarName -> VarName -> Bool #

Data VarName Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> VarName -> c VarName #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c VarName #

toConstr :: VarName -> Constr #

dataTypeOf :: VarName -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c VarName) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c VarName) #

gmapT :: (forall b. Data b => b -> b) -> VarName -> VarName #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> VarName -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> VarName -> r #

gmapQ :: (forall d. Data d => d -> u) -> VarName -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> VarName -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> VarName -> m VarName #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> VarName -> m VarName #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> VarName -> m VarName #

Ord VarName Source # 
Show VarName Source # 

newtype Sort Source #

Constructors

Sort Text 

Instances

Eq Sort Source # 

Methods

(==) :: Sort -> Sort -> Bool #

(/=) :: Sort -> Sort -> Bool #

Data Sort Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Sort -> c Sort #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Sort #

toConstr :: Sort -> Constr #

dataTypeOf :: Sort -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Sort) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Sort) #

gmapT :: (forall b. Data b => b -> b) -> Sort -> Sort #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sort -> r #

gmapQ :: (forall d. Data d => d -> u) -> Sort -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Sort -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Sort -> m Sort #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Sort -> m Sort #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Sort -> m Sort #

Ord Sort Source # 

Methods

compare :: Sort -> Sort -> Ordering #

(<) :: Sort -> Sort -> Bool #

(<=) :: Sort -> Sort -> Bool #

(>) :: Sort -> Sort -> Bool #

(>=) :: Sort -> Sort -> Bool #

max :: Sort -> Sort -> Sort #

min :: Sort -> Sort -> Sort #

Show Sort Source # 

Methods

showsPrec :: Int -> Sort -> ShowS #

show :: Sort -> String #

showList :: [Sort] -> ShowS #

data Arg Source #

Constructors

Arg 

Fields

Instances

Eq Arg Source # 

Methods

(==) :: Arg -> Arg -> Bool #

(/=) :: Arg -> Arg -> Bool #

Data Arg Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Arg -> c Arg #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Arg #

toConstr :: Arg -> Constr #

dataTypeOf :: Arg -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Arg) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Arg) #

gmapT :: (forall b. Data b => b -> b) -> Arg -> Arg #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arg -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arg -> r #

gmapQ :: (forall d. Data d => d -> u) -> Arg -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Arg -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Arg -> m Arg #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Arg -> m Arg #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Arg -> m Arg #

Ord Arg Source # 

Methods

compare :: Arg -> Arg -> Ordering #

(<) :: Arg -> Arg -> Bool #

(<=) :: Arg -> Arg -> Bool #

(>) :: Arg -> Arg -> Bool #

(>=) :: Arg -> Arg -> Bool #

max :: Arg -> Arg -> Arg #

min :: Arg -> Arg -> Arg #

Show Arg Source # 

Methods

showsPrec :: Int -> Arg -> ShowS #

show :: Arg -> String #

showList :: [Arg] -> ShowS #

data DefineFun Source #

Constructors

DefineFun 

Fields

Instances

Eq DefineFun Source # 
Data DefineFun Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DefineFun -> c DefineFun #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DefineFun #

toConstr :: DefineFun -> Constr #

dataTypeOf :: DefineFun -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c DefineFun) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DefineFun) #

gmapT :: (forall b. Data b => b -> b) -> DefineFun -> DefineFun #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DefineFun -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DefineFun -> r #

gmapQ :: (forall d. Data d => d -> u) -> DefineFun -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DefineFun -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DefineFun -> m DefineFun #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DefineFun -> m DefineFun #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DefineFun -> m DefineFun #

Ord DefineFun Source # 
Show DefineFun Source # 

data SExpr Source #

Constructors

IntLit !Integer 
StringLit !Text 
List ![SExpr] 

Instances

Eq SExpr Source # 

Methods

(==) :: SExpr -> SExpr -> Bool #

(/=) :: SExpr -> SExpr -> Bool #

Data SExpr Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SExpr -> c SExpr #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SExpr #

toConstr :: SExpr -> Constr #

dataTypeOf :: SExpr -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SExpr) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SExpr) #

gmapT :: (forall b. Data b => b -> b) -> SExpr -> SExpr #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SExpr -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SExpr -> r #

gmapQ :: (forall d. Data d => d -> u) -> SExpr -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SExpr -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SExpr -> m SExpr #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SExpr -> m SExpr #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SExpr -> m SExpr #

Ord SExpr Source # 

Methods

compare :: SExpr -> SExpr -> Ordering #

(<) :: SExpr -> SExpr -> Bool #

(<=) :: SExpr -> SExpr -> Bool #

(>) :: SExpr -> SExpr -> Bool #

(>=) :: SExpr -> SExpr -> Bool #

max :: SExpr -> SExpr -> SExpr #

min :: SExpr -> SExpr -> SExpr #

Show SExpr Source # 

Methods

showsPrec :: Int -> SExpr -> ShowS #

show :: SExpr -> String #

showList :: [SExpr] -> ShowS #

inlineLets :: SExpr -> SExpr Source #

This is not correct in the case of quantifiers but ignoring this simplifies the implementation and seems to be enough for z3 and eldarica

partition :: (a -> Either b c) -> [a] -> ([b], [c]) Source #

select :: (a -> Either b c) -> a -> ([b], [c]) -> ([b], [c]) Source #

pattern And :: [SExpr] -> SExpr Source #

pattern Neg :: SExpr -> SExpr Source #

pattern Or :: [SExpr] -> SExpr Source #

pattern BinOp :: Text -> SExpr -> SExpr -> SExpr Source #