printVersion
                  ::  IO ()   
                 
                
               | 
              
            
            
            
              
              
                pevalDebug
                  ::  Bool   
                 
                
               | 
              
            
            
            
              
              
                pevalAbs
                  ::  Int   
                 
                
               | 
              
            
            
            
              
              
                maxExpVars
                  ::  Int   
                 
                
               | 
              
            
            
            
              
              
                varBottom
                  ::  Expr   
                 
                
               | 
              
            
            
            
              
              
                isPevalAnnot
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                getPevalAnnotExpr
                  ::  Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                getExps
                  ::  PEvalState -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                getFuncDecls
                  ::  PEvalState -> [FuncDecl]   
                 
                
               | 
              
            
            
            
              
              
                getRenamingIndex
                  ::  PEvalState -> Int   
                 
                
               | 
              
            
            
            
              
              
                getDepth
                  ::  PEvalState -> Int   
                 
                
               | 
              
            
            
            
              
              
                updateRenamingIndex
                  ::  PEvalState -> Int -> PEvalState   
                 
                
               | 
              
            
            
            
              
              
                incrDepth
                  ::  PEvalState -> PEvalState   
                 
                
               | 
              
            
            
            
              
              
                decrDepth
                  ::  PEvalState -> PEvalState   
                 
                
               | 
              
            
            
            
              
              
                getArity
                  ::  PEvalState -> String -> Int   
                 
                
               | 
              
            
            
            
              
              
                getArityF
                  ::  [FuncDecl] -> String -> Int   
                 
                
               | 
              
            
            
            
              
              
                main
                  ::  IO ()   
                 
                
               | 
              
            
            
            
              
              
                mainProg
                  ::  String -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                mainWithExprs
                  ::  String -> [Expr] -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                main_aux
                  ::  String -> [Expr] -> Expr -> Expr -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                resultant2fundecl
                  ::  (Expr,Expr) -> FuncDecl   
                 
                
               | 
              
            
            
            
              
              
                addPEFuncDecls
                  ::  [(Expr,Expr)] -> Expr -> [FuncDecl] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                replaceFuncDecls
                  ::  Expr -> [FuncDecl] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                getEvalExprs
                  ::  Expr -> (Expr,[Expr])   
                 
                
               | 
              
            
            
            
              
              
                getFuncEvalExprs
                  ::  FuncDecl -> (FuncDecl,[Expr])   
                 
                
               | 
              
            
            
            
              
              
                getEvalExprsInExp
                  ::  Expr -> (Expr,[Expr])   
                 
                
               | 
              
            
            
            
              
              
                getEvalExprsInExps
                  ::  [Expr] -> ([Expr],[Expr])   
                 
                
               | 
              
            
            
            
              
              
                getEvalExprsInBranches
                  ::  [BranchExpr] -> ([BranchExpr],[Expr])   
                 
                
               | 
              
            
            
            
              
              
                replacePevalAnnotInFunc
                  ::  [FuncDecl] -> [(Expr,Expr)] -> FuncDecl -> FuncDecl   
                 
                
               | 
              
            
            
            
              
              
                replacePevalAnnotInExp
                  ::  [FuncDecl] -> [(Expr,Expr)] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                originalFunc
                  ::  Expr -> [(Expr,Expr)] -> Expr -> [String]   
                 
                
               | 
              
            
            
            
              
              
                originalF
                  ::  [FuncDecl] -> [(Expr,Expr)] -> Expr -> [String]   
                 
                
               | 
              
            
            
            
              
              
                funcsInExp
                  ::  Expr -> [String]   
                 
                
               | 
              
            
            
            
              
              
                funcsInExpL
                  ::  [Expr] -> [String]   
                 
                
               | 
              
            
            
            
              
              
                postUnfolding
                  ::  [(Expr,Expr)] -> [String] -> [(Expr,Expr)]   
                 
                
               | 
              
            
            
            
              
              
                postUnfoldingAux
                  ::  [(Expr,Expr)] -> [(Expr,Expr)] -> [(Expr,Expr)]   
                 
                
               | 
              
            
            
            
              
              
                try_unfold
                  ::  [(Expr,Expr)] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                try_unfoldL
                  ::  [(Expr,Expr)] -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                try_unf_cases
                  ::  [(Expr,Expr)] -> BranchExpr -> BranchExpr   
                 
                
               | 
              
            
            
            
              
              
                try_unfold_apply
                  ::  [(Expr,Expr)] -> Expr -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                getArityP
                  ::  [(Expr,Expr)] -> String -> Int   
                 
                
               | 
              
            
            
            
              
              
                unfoldFC
                  ::  [(Expr,Expr)] -> [(Expr,Expr)] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                propCaseVars
                  ::  Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                propCaseVarsBranch
                  ::  BranchExpr -> BranchExpr   
                 
                
               | 
              
            
            
            
              
              
                nonRecursive
                  ::  [(Expr,Expr)] -> String -> Bool   
                 
                
               | 
              
            
            
            
              
              
                countFuncs
                  ::  Expr -> Int   
                 
                
               | 
              
            
            
            
              
              
                countFuncsL
                  ::  [Expr] -> Int   
                 
                
               | 
              
            
            
            
              
              
                uselessFunc
                  ::  [(Expr,Expr)] -> String -> Bool   
                 
                
               | 
              
            
            
            
              
              
                countFuncCalls
                  ::  [(Expr,Expr)] -> String -> Int   
                 
                
               | 
              
            
            
            
              
              
                countFC
                  ::  Expr -> String -> Int   
                 
                
               | 
              
            
            
            
              
              
                countFCList
                  ::  [Expr] -> String -> Int   
                 
                
               | 
              
            
            
            
              
              
                removeRedundantRules
                  ::  [(Expr,a)] -> [(Expr,Expr)] -> [String] -> [(Expr,a)]   
                 
                
               | 
              
            
            
            
              
              
                funcRule
                  ::  (Expr,a) -> String   
                 
                
               | 
              
            
            
            
              
              
                removeFails
                  ::  [(Expr,Expr)] -> [(Expr,Expr)]   
                 
                
               | 
              
            
            
            
              
              
                removeFB
                  ::  Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                removeFailedBranches
                  ::  [BranchExpr] -> [BranchExpr]   
                 
                
               | 
              
            
            
            
              
              
                removeFBbranch
                  ::  BranchExpr -> BranchExpr   
                 
                
               | 
              
            
            
            
              
              
                pevalProg
                  ::  Expr -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                peval0
                  ::  [FuncDecl] -> Int -> [Expr] -> [(Expr,Expr)] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                diffPairs
                  ::  [Expr] -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                pevalL
                  ::  [FuncDecl] -> Int -> [Expr] -> [(Expr,Expr)] -> [(Expr,Expr)]   
                 
                
               | 
              
            
            
            
              
              
                pevalL_aux
                  ::  [FuncDecl] -> Int -> [Expr] -> [(Expr,Expr)] -> [(Expr,Expr)]   
                 
                
               | 
              
            
            
            
              
              
                strict
                  ::  a -> a   
                 
                
               | 
              
            
            
            
              
              
                searchPair
                  ::  Expr -> [(Expr,Expr)] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                abstract
                  ::  [FuncDecl] -> Int -> [Expr] -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                abs
                  ::  [FuncDecl] -> Int -> Expr -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                absSQ
                  ::  [FuncDecl] -> Expr -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                addPartCall
                  ::  [FuncDecl] -> Int -> String -> [Expr] -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                addPC
                  ::  [FuncDecl] -> String -> [Expr] -> Int -> [Expr] -> Int -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                absFun
                  ::  [FuncDecl] -> Int -> Expr -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                absFunWfo
                  ::  [FuncDecl] -> Int -> Expr -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                headF
                  ::  Expr -> String   
                 
                
               | 
              
            
            
            
              
              
                splitCase
                  ::  Expr -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                absFunWqo
                  ::  [FuncDecl] -> Int -> Expr -> [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                absFunWqoAux
                  ::  [FuncDecl] -> Int -> [Expr] -> Expr -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                legalBuiltin
                  ::  String -> Bool   
                 
                
               | 
              
            
            
            
              
              
                arithBuiltin
                  ::  String -> Bool   
                 
                
               | 
              
            
            
            
              
              
                nameConversion
                  ::  String -> String   
                 
                
               | 
              
            
            
            
              
              
                branches
                  ::  [BranchExpr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                constructorInstance
                  ::  [FuncDecl] -> Expr -> [Expr] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                isConstructor
                  ::  [FuncDecl] -> Subst -> Bool   
                 
                
               | 
              
            
            
            
              
              
                isCons
                  ::  [FuncDecl] -> Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                isConsCase
                  ::  [FuncDecl] -> [BranchExpr] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                complete
                  ::  [Expr] -> Int -> Int -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                completeVars
                  ::  Int -> Int -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                size
                  ::  Expr -> Int   
                 
                
               | 
              
            
            
            
              
              
                sizeBranch
                  ::  BranchExpr -> Int   
                 
                
               | 
              
            
            
            
              
              
                smaller
                  ::  Expr -> Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                embedsPre
                  ::  Expr -> [Expr] -> (Expr,[Expr])   
                 
                
               | 
              
            
            
            
              
              
                embedsP
                  ::  Expr -> [Expr] -> [Expr] -> (Expr,[Expr])   
                 
                
               | 
              
            
            
            
              
              
                embeds
                  ::  Expr -> Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                embedsSameHead
                  ::  Expr -> Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                embedsL
                  ::  [Expr] -> [Expr] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                embedsCase
                  ::  [BranchExpr] -> [BranchExpr] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                embedsArg
                  ::  Expr -> Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                embedsArgL
                  ::  [Expr] -> Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                embedsArgCase
                  ::  [BranchExpr] -> Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                int2Expr
                  ::  Int -> Expr   
                 
                
               | 
              
            
            
            
              
              
                int2ExprAux
                  ::  Int -> Expr   
                 
                
               | 
              
            
            
            
              
              
                msgT
                  ::  Expr -> Expr -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                computeMsg
                  ::  Expr -> Expr -> (Expr,Subst,Subst)   
                 
                
               | 
              
            
            
            
              
              
                msg
                  ::  Expr -> Expr -> Int -> (Expr,Int)   
                 
                
               | 
              
            
            
            
              
              
                headExpr
                  ::  Expr -> String   
                 
                
               | 
              
            
            
            
              
              
                msgSameHead
                  ::  Expr -> Expr -> Int -> (Expr,Int)   
                 
                
               | 
              
            
            
            
              
              
                msgArgs
                  ::  CombType -> String -> [Expr] -> [Expr] -> [Expr] -> Int -> (Expr,Int)   
                 
                
               | 
              
            
            
            
              
              
                comparable
                  ::  Expr -> [Expr] -> (Expr,[Expr])   
                 
                
               | 
              
            
            
            
              
              
                comp
                  ::  Expr -> [Expr] -> [Expr] -> (Expr,[Expr])   
                 
                
               | 
              
            
            
            
              
              
                ren_rho
                  ::  [FuncDecl] -> [(Expr,Expr)] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                ren_rhoPartCall
                  ::  [FuncDecl] -> [(Expr,Expr)] -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                ren_case
                  ::  [FuncDecl] -> [(Expr,Expr)] -> BranchExpr -> BranchExpr   
                 
                
               | 
              
            
            
            
              
              
                ren_rhoSQ
                  ::  [FuncDecl] -> [(Expr,Expr)] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                ren_rhoFun
                  ::  [FuncDecl] -> [(Expr,Expr)] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                ren_rhoFunRec
                  ::  [FuncDecl] -> [(Expr,Expr)] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                ren_rhoRec
                  ::  [FuncDecl] -> [(Expr,Expr)] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                subVars
                  ::  Subst -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                subTerms
                  ::  Subst -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                isVar
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                isLit
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                isCase
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                isConstr
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                build_ren
                  ::  [Expr] -> Int -> [(Expr,Expr)]   
                 
                
               | 
              
            
            
            
              
              
                nonLocalVarsInExp
                  ::  Expr -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                varsNonLocal
                  ::  BranchExpr -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                index2vars
                  ::  [Int] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                vars2index
                  ::  [Expr] -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                proceedUnfold
                  ::  PEvalState -> a -> Bool   
                 
                
               | 
              
            
            
            
              
              
                peval
                  ::  PEvalState -> Int -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_casefun
                  ::  PEvalState -> Int -> CaseType -> String -> [Expr] -> [BranchExpr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_casefun_aux
                  ::  PEvalState -> Int -> CaseType -> String -> [Expr] -> [BranchExpr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_casefun_builtin
                  ::  PEvalState -> Int -> CaseType -> String -> [Expr] -> [BranchExpr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                propBinding
                  ::  Int -> [BranchExpr] -> [BranchExpr]   
                 
                
               | 
              
            
            
            
              
              
                peval_fun
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_fun_aux
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                matchRHS
                  ::  PEvalState -> Int -> String -> [Expr] -> (PEvalState,Expr)   
                 
                
               | 
              
            
            
            
              
              
                getMatchedRHS
                  ::  PEvalState -> Int -> [FuncDecl] -> String -> [Expr] -> (PEvalState,Expr)   
                 
                
               | 
              
            
            
            
              
              
                getMatchedRHS_aux
                  ::  PEvalState -> Int -> Rule -> [Expr] -> (PEvalState,Expr)   
                 
                
               | 
              
            
            
            
              
              
                substitute
                  ::  [Int] -> [Expr] -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                substituteAll
                  ::  [Int] -> [Expr] -> Int -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                substituteAllCase
                  ::  [Int] -> [Expr] -> Int -> BranchExpr -> BranchExpr   
                 
                
               | 
              
            
            
            
              
              
                try_eval
                  ::  PEvalState -> Int -> Expr -> [Expr] -> [Int] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                try_eval2
                  ::  PEvalState -> Int -> Expr -> [Expr] -> [Int] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                caseVarArg
                  ::  [Expr] -> [Int] -> Int -> Bool   
                 
                
               | 
              
            
            
            
              
              
                caseVar
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                float_case
                  ::  Expr -> [Expr] -> [Expr] -> [Int] -> Int -> Expr   
                 
                
               | 
              
            
            
            
              
              
                float_caseAux
                  ::  Expr -> [Expr] -> Expr -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                gen_case
                  ::  Expr -> [Expr] -> [Expr] -> BranchExpr -> BranchExpr   
                 
                
               | 
              
            
            
            
              
              
                try_eval_aux
                  ::  PEvalState -> Int -> Expr -> [Expr] -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                try_eval_aux2
                  ::  Expr -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                sharedVars
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                sharedVarsAux
                  ::  [[Int]] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                shVar
                  ::  [Int] -> [Int] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                groundVars
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                reducible
                  ::  [Expr] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                condSQ
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                sqRooted
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                pevalCaseArg
                  ::  PEvalState -> Int -> Expr -> CaseType -> [BranchExpr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                isPartCall
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                peval_apply
                  ::  PEvalState -> Int -> Expr -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtin
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinEQ
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinEQaux
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinEQlit
                  ::  String -> Expr -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinEQvar1
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinEQvar2
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinEQvarAux
                  ::  PEvalState -> Int -> String -> Int -> Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                subs2branches
                  ::  Expr -> String -> [BranchExpr]   
                 
                
               | 
              
            
            
            
              
              
                dataExp
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                isConsCall
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                makeSeqCon
                  ::  String -> [Expr] -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinITE
                  ::  PEvalState -> Int -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinAND
                  ::  PEvalState -> Int -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinCAND
                  ::  PEvalState -> Int -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinARITH
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinARITHaux
                  ::  String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                isLitInt
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinMAP
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinMAP_aux
                  ::  PEvalState -> Int -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinFOLDL
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinFOLDL_aux
                  ::  PEvalState -> Int -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinFOLDR
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinFOLDR_aux
                  ::  PEvalState -> Int -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinFILTER
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinFILTER_aux
                  ::  PEvalState -> Int -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinITERATE
                  ::  PEvalState -> Int -> String -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                peval_builtinITERATE_aux
                  ::  PEvalState -> Int -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                isCaseVar
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                isCaseCons
                  ::  Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                definedFunc
                  ::  PEvalState -> String -> Bool   
                 
                
               | 
              
            
            
            
              
              
                definedFunc2
                  ::  [FuncDecl] -> String -> Bool   
                 
                
               | 
              
            
            
            
              
              
                hasName
                  ::  String -> FuncDecl -> Bool   
                 
                
               | 
              
            
            
            
              
              
                maxVarIndex
                  ::  Expr -> Int   
                 
                
               | 
              
            
            
            
              
              
                max
                  ::  Int -> Int -> Int   
                 
                
               | 
              
            
            
            
              
              
                maxList
                  ::  [Int] -> Int   
                 
                
               | 
              
            
            
            
              
              
                localVarsInExp
                  ::  Expr -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                diffList
                  ::  [Int] -> [Int] -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                varsInExp
                  ::  Expr -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                varsInCase
                  ::  BranchExpr -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                delArgs
                  ::  [Int] -> [Int] -> [Int]   
                 
                
               | 
              
            
            
            
              
              
                ppExpr
                  ::  Int -> Expr -> String   
                 
                
               | 
              
            
            
            
              
              
                ppVar
                  ::  Int -> String   
                 
                
               | 
              
            
            
            
              
              
                ppLit
                  ::  Literal -> String   
                 
                
               | 
              
            
            
            
              
              
                ppCase
                  ::  Int -> BranchExpr -> String   
                 
                
               | 
              
            
            
            
              
              
                blanks
                  ::  Int -> String   
                 
                
               | 
              
            
            
            
              
              
                ppFormatList
                  ::  (a -> String) -> [a] -> String   
                 
                
               | 
              
            
            
            
              
              
                ppList
                  ::  (a -> String) -> [a] -> String   
                 
                
               | 
              
            
            
            
              
              
                buildResultants
                  ::  Expr -> [Expr] -> [(Expr,Expr)] -> [(Expr,Expr)]   
                 
                
               | 
              
            
            
            
              
              
                ppResultants
                  ::  [(Expr,Expr)] -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                ppRen
                  ::  [(Expr,Expr)] -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                pprenLHS
                  ::  Expr -> [(Expr,Expr)] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                pprintSub
                  ::  Subst -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                pprint
                  ::  String -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                ppFuncDecls
                  ::  [FuncDecl] -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                ppRule
                  ::  String -> Rule -> IO ()   
                 
                
               | 
              
            
            
            
              
              
                deleteAll
                  :: Eq a => a -> [a] -> [a]   
                 
                
               | 
              
            
            
            
              
              
                equalMR
                  ::  [Expr] -> [Expr] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                existsRenSet
                  ::  [Expr] -> [Expr] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                existsRen
                  ::  [Expr] -> Expr -> Bool   
                 
                
               | 
              
            
            
            
              
              
                instanceOf
                  ::  Expr -> Expr -> Subst   
                 
                
               | 
              
            
            
            
              
              
                instanceVar
                  ::  Expr -> Expr -> Subst   
                 
                
               | 
              
            
            
            
              
              
                instanceS
                  ::  Expr -> Expr -> Subst   
                 
                
               | 
              
            
            
            
              
              
                instanceL
                  ::  [Expr] -> [Expr] -> Subst -> Subst   
                 
                
               | 
              
            
            
            
              
              
                clash
                  ::  Subst -> Subst -> Bool   
                 
                
               | 
              
            
            
            
              
              
                clash_
                  ::  [Int] -> [Expr] -> Subst -> Bool   
                 
                
               | 
              
            
            
            
              
              
                findVal
                  ::  Int -> [Int] -> [Expr] -> Expr   
                 
                
               | 
              
            
            
            
              
              
                instanceCase
                  ::  [BranchExpr] -> [BranchExpr] -> Subst -> Subst   
                 
                
               | 
              
            
            
            
              
              
                instanceCaseL
                  ::  [BranchExpr] -> [BranchExpr] -> Subst -> Subst   
                 
                
               | 
              
            
            
            
              
              
                instanceCaseBranch
                  ::  BranchExpr -> BranchExpr -> Subst   
                 
                
               | 
              
            
            
            
              
              
                composeSubs
                  ::  Subst -> Subst -> Subst   
                 
                
               | 
              
            
            
            
              
              
                andL
                  ::  [Bool] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                orL
                  ::  [Bool] -> Bool   
                 
                
               | 
              
            
            
            
              
              
                removeRenamings
                  ::  [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                removeVarsLits
                  ::  [Expr] -> [Expr]   
                 
                
               | 
              
            
            
            
              
              
                search_instance
                  ::  Expr -> [Expr] -> (Subst,Expr)   
                 
                
               | 
              
            
            
            
              
              
                searchInstance
                  ::  Expr -> [(Expr,Expr)] -> (Subst,Expr)   
                 
                
               | 
              
            
            
            
              
              
                searchConstrInstance
                  ::  [FuncDecl] -> Expr -> [(Expr,Expr)] -> (Subst,Expr)   
                 
                
               | 
              
            
            
            
              
              
                concatBlank
                  ::  [String] -> String   
                 
                
               | 
              
            
            
            
              
              
                delSQ
                  ::  Expr -> Expr   
                 
                
               | 
              
            
            
            
              
              
                delSQcase
                  ::  BranchExpr -> BranchExpr   
                 
                
               |