----------------------------------------------------------------------------- --- 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 --------------------------------------------------------------------------- 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#","<=") ] ----------------------------------------------------------------------------