CurryInfo: flatcurry-smt-2.0.0 / FlatCurry.Names2SMT

classes:

              
documentation:
-----------------------------------------------------------------------------
--- Definition of some names of primitive operations occurring in FlatCurry
--- programs, like arithmetic and relational operators, and their
--- counterparts used in SMT solvers.
---
--- @author  Michael Hanus
--- @version September 2024
---------------------------------------------------------------------------
name:
FlatCurry.Names2SMT
operations:
binaryPrimOps unaryPrimOps
sourcecode:
module FlatCurry.Names2SMT where

----------------------------------------------------------------------------
--- Primitive unary operations of the prelude and their SMT names.
unaryPrimOps :: [(String,String)]
unaryPrimOps =
  [("_impl#negate#Prelude.Num#Prelude.Int#","-")
  ,("_impl#sqrt#Prelude.Floating#Prelude.Float#","sqrt")
  ,("not","not")
  ]

--- Primitive binary operations of the prelude and their SMT names.
binaryPrimOps :: [(String,String)]
binaryPrimOps =
  [("&&","and")
  ,("||","or")
  ,("==","=")
  ,("constrEq","=")
  ,("_impl#==#Prelude.Eq#Prelude.Int#","=")
  ,("_impl#==#Prelude.Eq#Prelude.Float#","=")
  ,("_impl#==#Prelude.Eq#Prelude.Char#","=")
  ,("/=","/=")  -- should be translated as negated '='
  ,("_impl#/=#Prelude.Eq#Prelude.Int#","/=")
  ,("_impl#/=#Prelude.Eq#Prelude.Float#","/=")
  ,("_impl#/=#Prelude.Eq#Prelude.Char#","/=")
  ,("_impl#+#Prelude.Num#Prelude.Int#","+")
  ,("_impl#-#Prelude.Num#Prelude.Int#","-")
  ,("_impl#*#Prelude.Num#Prelude.Int#","*")
  ,("_impl#negate#Prelude.Num#Prelude.Int#","-")
  ,("_impl#div#Prelude.Integral#Prelude.Int#","div")
  ,("_impl#mod#Prelude.Integral#Prelude.Int#","mod")
  ,("_impl#rem#Prelude.Integral#Prelude.Int#","rem")
  ,("_impl#>#Prelude.Ord#Prelude.Int#",">")
  ,("_impl#<#Prelude.Ord#Prelude.Int#","<")
  ,("_impl#>=#Prelude.Ord#Prelude.Int#",">=")
  ,("_impl#<=#Prelude.Ord#Prelude.Int#","<=")
  ,("_impl#+#Prelude.Num#Prelude.Float#","+")
  ,("_impl#-#Prelude.Num#Prelude.Float#","-")
  ,("_impl#*#Prelude.Num#Prelude.Float#","*")
  ,("_impl#/#Prelude.Num#Prelude.Float#","/")
  ,("_impl#>#Prelude.Ord#Prelude.Float#",">")
  ,("_impl#<#Prelude.Ord#Prelude.Float#","<")
  ,("_impl#>=#Prelude.Ord#Prelude.Float#",">=")
  ,("_impl#<=#Prelude.Ord#Prelude.Float#","<=")
  ,("_impl#>#Prelude.Ord#Prelude.Char#",">")
  ,("_impl#<#Prelude.Ord#Prelude.Char#","<")
  ,("_impl#>=#Prelude.Ord#Prelude.Char#",">=")
  ,("_impl#<=#Prelude.Ord#Prelude.Char#","<=")
  ]

----------------------------------------------------------------------------
types:

              
unsafe:
safe