Module "CompactFlatCurry" (Just (Exporting (11,24) [(Export (QualIdent Nothing (Ident "generateCompactFlatCurryFile" 0))),(Export (QualIdent Nothing (Ident "computeCompactFlatCurry" 0))),(ExportTypeAll (QualIdent Nothing (Ident "Option" 0))),(Export (QualIdent Nothing (Ident "RequiredSpec" 0))),(Export (QualIdent Nothing (Ident "requires" 0))),(Export (QualIdent Nothing (Ident "alwaysRequired" 0))),(Export (QualIdent Nothing (Ident "defaultRequired" 0)))])) [(ImportDecl (1,1) "Prelude" False Nothing Nothing) ,(ImportDecl (15,1) "FlatCurry" False Nothing Nothing) ,(ImportDecl (16,1) "SetRBT" False Nothing Nothing) ,(ImportDecl (17,1) "TableRBT" False Nothing Nothing) ,(ImportDecl (18,1) "Maybe" False Nothing Nothing) ,(ImportDecl (19,1) "List" False Nothing (Just (Importing (19,12) [(Import (Ident "nub" 0)),(Import (Ident "union" 0))]))) ,(ImportDecl (20,1) "FileGoodies" False Nothing Nothing) ,(ImportDecl (21,1) "Directory" False Nothing Nothing) ,(ImportDecl (22,1) "Sort" False Nothing (Just (Importing (22,12) [(Import (Ident "cmpString" 0)),(Import (Ident "leqString" 0))]))) ,(ImportDecl (23,1) "XML" False Nothing Nothing) ,(ImportDecl (24,1) "Distribution" False Nothing (Just (Importing (24,20) [(Import (Ident "getLoadPathForFile" 0))]))) ,(ImportDecl (25,1) "Time" False Nothing (Just (Importing (25,12) [(Import (Ident "clockTimeToInt" 0))]))) ,(DataDecl (40,1) (Ident "Option" 0) [] [(ConstrDecl (41,5) [] (Ident "Verbose" 0) []),(ConstrDecl (42,5) [] (Ident "Main" 0) [(ConstructorType (QualIdent Nothing (Ident "String" 0)) [])]),(ConstrDecl (43,5) [] (Ident "Exports" 0) []),(ConstrDecl (44,5) [] (Ident "InitFuncs" 0) [(ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []))]),(ConstrDecl (45,5) [] (Ident "Required" 0) [(ListType (ConstructorType (QualIdent Nothing (Ident "RequiredSpec" 0)) []))]),(ConstrDecl (46,5) [] (Ident "Import" 0) [(ConstructorType (QualIdent Nothing (Ident "String" 0)) [])])]) ,(DataDecl (72,1) (Ident "RequiredSpec" 0) [] [(ConstrDecl (72,21) [] (Ident "AlwaysReq" 0) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]),(ConstrDecl (72,39) [] (Ident "Requires" 0) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) []),(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])])]) ,(InfixDecl (27,1) Infix 0 [(Ident "requires" 0)]) ,(FunctionDecl (48,1) (Ident "isMainOption" 0) [(Equation (48,1) (FunLhs (Ident "isMainOption" 0) [(VariablePattern (Ident "o" 2))]) (SimpleRhs (48,18) (Case (Variable (QualIdent Nothing (Ident "o" 2))) [(Alt (49,20) (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "Main" 0)) [(VariablePattern (Ident "_" 5))]) (SimpleRhs (49,30) (Constructor (QualIdent (Just "Prelude") (Ident "True" 0))) [])),(Alt (50,20) (VariablePattern (Ident "_" 8)) (SimpleRhs (50,30) (Constructor (QualIdent (Just "Prelude") (Ident "False" 0))) []))]) []))]) ,(TypeSig (52,1) [(Ident "getMainFuncFromOptions" 0)] (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "Option" 0)) [])) (ConstructorType (QualIdent Nothing (Ident "String" 0)) []))) ,(FunctionDecl (53,1) (Ident "getMainFuncFromOptions" 0) [(Equation (53,1) (FunLhs (Ident "getMainFuncFromOptions" 0) [(ParenPattern (InfixPattern (VariablePattern (Ident "o" 10)) (QualIdent Nothing (Ident ":" 0)) (VariablePattern (Ident "os" 10))))]) (SimpleRhs (54,4) (Case (Variable (QualIdent Nothing (Ident "o" 10))) [(Alt (55,6) (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "Main" 0)) [(VariablePattern (Ident "f" 12))]) (SimpleRhs (55,16) (Variable (QualIdent Nothing (Ident "f" 12))) [])),(Alt (56,6) (VariablePattern (Ident "_" 15)) (SimpleRhs (56,16) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getMainFuncFromOptions" 0))) (Variable (QualIdent Nothing (Ident "os" 10)))) []))]) []))]) ,(TypeSig (58,1) [(Ident "getRequiredFromOptions" 0)] (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "Option" 0)) [])) (ListType (ConstructorType (QualIdent Nothing (Ident "RequiredSpec" 0)) [])))) ,(FunctionDecl (59,1) (Ident "getRequiredFromOptions" 0) [(Equation (59,1) (FunLhs (Ident "getRequiredFromOptions" 0) [(VariablePattern (Ident "options" 17))]) (SimpleRhs (59,34) (Apply (Variable (QualIdent (Just "Prelude") (Ident "concat" 0))) (ListCompr (Variable (QualIdent Nothing (Ident "fs" 19))) [(StmtBind (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "Required" 0)) [(VariablePattern (Ident "fs" 19))]) (Variable (QualIdent Nothing (Ident "options" 17))))])) []))]) ,(TypeSig (62,1) [(Ident "addImport2Options" 0)] (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "Option" 0)) [])) (ListType (ConstructorType (QualIdent Nothing (Ident "Option" 0)) [])))) ,(FunctionDecl (63,1) (Ident "addImport2Options" 0) [(Equation (63,1) (FunLhs (Ident "addImport2Options" 0) [(VariablePattern (Ident "options" 20))]) (SimpleRhs (64,3) (InfixApply (Variable (QualIdent Nothing (Ident "options" 20))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Constructor (QualIdent (Just "CompactFlatCurry") (Ident "Import" 0)))) (Paren (Apply (Variable (QualIdent (Just "List") (Ident "nub" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent Nothing (Ident "alwaysReqMod" 21)))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getRequiredFromOptions" 0))) (Variable (QualIdent Nothing (Ident "options" 20))))))))))) [(FunctionDecl (67,3) (Ident "alwaysReqMod" 21) [(Equation (67,3) (FunLhs (Ident "alwaysReqMod" 21) [(ParenPattern (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "AlwaysReq" 0)) [(TuplePattern [(VariablePattern (Ident "m" 22)),(VariablePattern (Ident "_" 23))])]))]) (SimpleRhs (67,37) (List [(Variable (QualIdent Nothing (Ident "m" 22)))]) [])),(Equation (68,3) (FunLhs (Ident "alwaysReqMod" 21) [(ParenPattern (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "Requires" 0)) [(VariablePattern (Ident "_" 26)),(VariablePattern (Ident "_" 27))]))]) (SimpleRhs (68,33) (List []) []))])]))]) ,(TypeSig (76,1) [(Ident "requires" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []) (ArrowType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []) (ConstructorType (QualIdent Nothing (Ident "RequiredSpec" 0)) [])))) ,(FunctionDecl (77,1) (Ident "requires" 0) [(Equation (77,1) (FunLhs (Ident "requires" 0) [(VariablePattern (Ident "fun" 29)),(VariablePattern (Ident "reqfun" 29))]) (SimpleRhs (77,23) (Apply (Apply (Constructor (QualIdent (Just "CompactFlatCurry") (Ident "Requires" 0))) (Variable (QualIdent Nothing (Ident "fun" 29)))) (Variable (QualIdent Nothing (Ident "reqfun" 29)))) []))]) ,(TypeSig (81,1) [(Ident "alwaysRequired" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []) (ConstructorType (QualIdent Nothing (Ident "RequiredSpec" 0)) []))) ,(FunctionDecl (82,1) (Ident "alwaysRequired" 0) [(Equation (82,1) (FunLhs (Ident "alwaysRequired" 0) [(VariablePattern (Ident "fun" 31))]) (SimpleRhs (82,22) (Apply (Constructor (QualIdent (Just "CompactFlatCurry") (Ident "AlwaysReq" 0))) (Variable (QualIdent Nothing (Ident "fun" 31)))) []))]) ,(TypeSig (87,1) [(Ident "defaultRequired" 0)] (ListType (ConstructorType (QualIdent Nothing (Ident "RequiredSpec" 0)) []))) ,(FunctionDecl (88,1) (Ident "defaultRequired" 0) [(Equation (88,1) (FunLhs (Ident "defaultRequired" 0) []) (SimpleRhs (89,3) (List [(Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "alwaysRequired" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "apply"))])),(Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "alwaysRequired" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "letrec"))])),(Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "alwaysRequired" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "cond"))])),(Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "alwaysRequired" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "failure"))])),(InfixApply (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "=="))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "&&"))])),(InfixApply (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "=:="))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "&"))])),(InfixApply (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "=:<="))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "ifVar"))])),(InfixApply (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "=:<="))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "=:="))])),(InfixApply (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "=:<="))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "&>"))])),(InfixApply (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "=:<<="))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "&"))])),(InfixApply (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "$#"))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "ensureNotFree"))])),(InfixApply (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "readFile"))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "prim_readFileContents"))])),(InfixApply (Tuple [(Literal (String "Ports")),(Literal (String "prim_openPortOnSocket"))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Literal (String "Ports")),(Literal (String "basicServerLoop"))])),(InfixApply (Tuple [(Literal (String "Ports")),(Literal (String "prim_timeoutOnStream"))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Literal (String "Ports")),(Literal (String "basicServerLoop"))])),(InfixApply (Tuple [(Literal (String "Ports")),(Literal (String "prim_choiceSPEP"))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Literal (String "Ports")),(Literal (String "basicServerLoop"))])),(InfixApply (Tuple [(Literal (String "Dynamic")),(Literal (String "getDynamicKnowledge"))]) (InfixOp (QualIdent (Just "CompactFlatCurry") (Ident "requires" 0))) (Tuple [(Literal (String "Dynamic")),(Literal (String "isKnownAtTime"))]))]) []))]) ,(FunctionDecl (106,1) (Ident "prelude" 0) [(Equation (106,1) (FunLhs (Ident "prelude" 0) []) (SimpleRhs (106,11) (Literal (String "Prelude")) []))]) ,(FunctionDecl (110,1) (Ident "getRequiredInModule" 0) [(Equation (110,1) (FunLhs (Ident "getRequiredInModule" 0) [(VariablePattern (Ident "reqspecs" 37)),(VariablePattern (Ident "mod" 37))]) (SimpleRhs (110,36) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent Nothing (Ident "getImpReq" 38)))) (Variable (QualIdent Nothing (Ident "reqspecs" 37)))) [(FunctionDecl (112,3) (Ident "getImpReq" 38) [(Equation (112,3) (FunLhs (Ident "getImpReq" 38) [(ParenPattern (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "AlwaysReq" 0)) [(TuplePattern [(VariablePattern (Ident "mf" 39)),(VariablePattern (Ident "f" 39))])]))]) (SimpleRhs (112,34) (IfThenElse (InfixApply (Variable (QualIdent Nothing (Ident "mf" 39))) (InfixOp (QualIdent (Just "Prelude") (Ident "==" 0))) (Variable (QualIdent Nothing (Ident "mod" 37)))) (List [(Tuple [(Variable (QualIdent Nothing (Ident "mf" 39))),(Variable (QualIdent Nothing (Ident "f" 39)))])]) (List [])) [])),(Equation (113,3) (FunLhs (Ident "getImpReq" 38) [(ParenPattern (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "Requires" 0)) [(VariablePattern (Ident "_" 42)),(VariablePattern (Ident "_" 43))]))]) (SimpleRhs (113,30) (List []) []))])]))]) ,(FunctionDecl (117,1) (Ident "getImplicitlyRequired" 0) [(Equation (117,1) (FunLhs (Ident "getImplicitlyRequired" 0) [(VariablePattern (Ident "reqspecs" 45)),(VariablePattern (Ident "fun" 45))]) (SimpleRhs (117,38) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent Nothing (Ident "getImpReq" 46)))) (Variable (QualIdent Nothing (Ident "reqspecs" 45)))) [(FunctionDecl (119,3) (Ident "getImpReq" 46) [(Equation (119,3) (FunLhs (Ident "getImpReq" 46) [(ParenPattern (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "AlwaysReq" 0)) [(VariablePattern (Ident "_" 48))]))]) (SimpleRhs (119,29) (List []) [])),(Equation (120,3) (FunLhs (Ident "getImpReq" 46) [(ParenPattern (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "Requires" 0)) [(VariablePattern (Ident "f" 50)),(VariablePattern (Ident "reqf" 50))]))]) (SimpleRhs (120,33) (IfThenElse (InfixApply (Variable (QualIdent Nothing (Ident "f" 50))) (InfixOp (QualIdent (Just "Prelude") (Ident "==" 0))) (Variable (QualIdent Nothing (Ident "fun" 45)))) (List [(Variable (QualIdent Nothing (Ident "reqf" 50)))]) (List [])) []))])]))]) ,(FunctionDecl (123,1) (Ident "defaultRequiredTypes" 0) [(Equation (123,1) (FunLhs (Ident "defaultRequiredTypes" 0) []) (SimpleRhs (124,3) (List [(Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "()"))]),(Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "Int"))]),(Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "Float"))]),(Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "Char"))]),(Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "Success"))]),(Tuple [(Variable (QualIdent (Just "CompactFlatCurry") (Ident "prelude" 0))),(Literal (String "IO"))])]) []))]) ,(TypeSig (139,1) [(Ident "generateCompactFlatCurryFile" 0)] (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "Option" 0)) [])) (ArrowType (ConstructorType (QualIdent Nothing (Ident "String" 0)) []) (ArrowType (ConstructorType (QualIdent Nothing (Ident "String" 0)) []) (ConstructorType (QualIdent Nothing (Ident "IO" 0)) [(TupleType [])]))))) ,(FunctionDecl (140,1) (Ident "generateCompactFlatCurryFile" 0) [(Equation (140,1) (FunLhs (Ident "generateCompactFlatCurryFile" 0) [(VariablePattern (Ident "options" 54)),(VariablePattern (Ident "progname" 54)),(VariablePattern (Ident "target" 54))]) (SimpleRhs (140,56) (Do [(StmtBind (VariablePattern (Ident "optprog" 56)) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "computeCompactFlatCurry" 0))) (Variable (QualIdent Nothing (Ident "options" 54)))) (Variable (QualIdent Nothing (Ident "progname" 54))))),(StmtExpr (Apply (Apply (Variable (QualIdent (Just "FlatCurry") (Ident "writeFCY" 0))) (Variable (QualIdent Nothing (Ident "target" 54)))) (Variable (QualIdent Nothing (Ident "optprog" 56)))))] (Variable (QualIdent (Just "Prelude") (Ident "done" 0)))) []))]) ,(TypeSig (154,1) [(Ident "computeCompactFlatCurry" 0)] (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "Option" 0)) [])) (ArrowType (ConstructorType (QualIdent Nothing (Ident "String" 0)) []) (ConstructorType (QualIdent Nothing (Ident "IO" 0)) [(ConstructorType (QualIdent Nothing (Ident "Prog" 0)) [])])))) ,(FunctionDecl (155,1) (Ident "computeCompactFlatCurry" 0) [(Equation (155,1) (FunLhs (Ident "computeCompactFlatCurry" 0) [(VariablePattern (Ident "orgoptions" 57)),(VariablePattern (Ident "progname" 57))]) (SimpleRhs (156,3) (Let [(PatternDecl (156,7) (VariablePattern (Ident "options" 59)) (SimpleRhs (156,17) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "addImport2Options" 0))) (Variable (QualIdent Nothing (Ident "orgoptions" 57)))) []))] (IfThenElse (InfixApply (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "elem" 0))) (Constructor (QualIdent (Just "CompactFlatCurry") (Ident "Exports" 0)))) (Variable (QualIdent Nothing (Ident "options" 59))))) (InfixOp (QualIdent (Just "Prelude") (Ident "&&" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "any" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "isMainOption" 0)))) (Variable (QualIdent Nothing (Ident "options" 59)))))) (Apply (Variable (QualIdent (Just "Prelude") (Ident "error" 0))) (Literal (String "CompactFlat: Options 'Main' and 'Exports' can't be be used together!"))) (Do [(StmtExpr (Apply (Variable (QualIdent (Just "Prelude") (Ident "putStr" 0))) (Literal (String "CompactFlat: Searching relevant functions in module ")))),(StmtBind (VariablePattern (Ident "prog" 61)) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "readCurrentFlatCurry" 0))) (Variable (QualIdent Nothing (Ident "progname" 57))))),(StmtBind (VariablePattern (Ident "resultprog" 62)) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "makeCompactFlatCurry" 0))) (Variable (QualIdent Nothing (Ident "prog" 61)))) (Variable (QualIdent Nothing (Ident "options" 59))))),(StmtExpr (Apply (Variable (QualIdent (Just "Prelude") (Ident "putStrLn" 0))) (Paren (InfixApply (Literal (String "CompactFlat: Number of functions after optimization: ")) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Apply (Variable (QualIdent (Just "Prelude") (Ident "show" 0))) (Paren (Apply (Variable (QualIdent (Just "Prelude") (Ident "length" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleFuns" 0))) (Variable (QualIdent Nothing (Ident "resultprog" 62))))))))))))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Variable (QualIdent Nothing (Ident "resultprog" 62))))))) []))]) ,(TypeSig (169,1) [(Ident "makeCompactFlatCurry" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []) (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "Option" 0)) [])) (ConstructorType (QualIdent Nothing (Ident "IO" 0)) [(ConstructorType (QualIdent Nothing (Ident "Prog" 0)) [])])))) ,(FunctionDecl (170,1) (Ident "makeCompactFlatCurry" 0) [(Equation (170,1) (FunLhs (Ident "makeCompactFlatCurry" 0) [(VariablePattern (Ident "mainmod" 63)),(VariablePattern (Ident "options" 63))]) (SimpleRhs (170,40) (Do [(StmtBind (TuplePattern [(VariablePattern (Ident "initfuncs" 65)),(VariablePattern (Ident "loadedmnames" 65)),(VariablePattern (Ident "loadedmods" 65))]) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "requiredInCompactProg" 0))) (Variable (QualIdent Nothing (Ident "mainmod" 63)))) (Variable (QualIdent Nothing (Ident "options" 63))))),(StmtDecl [(PatternDecl (172,7) (VariablePattern (Ident "initFuncTable" 66)) (SimpleRhs (172,23) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "extendFuncTable" 0))) (Paren (Apply (Variable (QualIdent (Just "TableRBT") (Ident "emptyTableRBT" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "leqQName" 0)))))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleFuns" 0)))) (Variable (QualIdent Nothing (Ident "loadedmods" 65)))))) [])),(PatternDecl (174,7) (VariablePattern (Ident "required" 66)) (SimpleRhs (174,18) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getRequiredFromOptions" 0))) (Variable (QualIdent Nothing (Ident "options" 63)))) [])),(PatternDecl (175,7) (VariablePattern (Ident "loadedreqfuns" 66)) (SimpleRhs (175,23) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getRequiredInModule" 0))) (Variable (QualIdent Nothing (Ident "required" 66)))))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleName" 0)))) (Variable (QualIdent Nothing (Ident "loadedmods" 65)))))) [])),(PatternDecl (177,7) (VariablePattern (Ident "initreqfuncs" 66)) (SimpleRhs (177,22) (InfixApply (Variable (QualIdent Nothing (Ident "initfuncs" 65))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Variable (QualIdent Nothing (Ident "loadedreqfuns" 66)))) []))]),(StmtBind (TuplePattern [(VariablePattern (Ident "finalmods" 71)),(VariablePattern (Ident "finalfuncs" 71)),(VariablePattern (Ident "finalcons" 71)),(VariablePattern (Ident "finaltcons" 71))]) (Apply (Apply (Apply (Apply (Apply (Apply (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getCalledFuncs" 0))) (Variable (QualIdent Nothing (Ident "required" 66)))) (Variable (QualIdent Nothing (Ident "loadedmnames" 65)))) (Variable (QualIdent Nothing (Ident "loadedmods" 65)))) (Variable (QualIdent Nothing (Ident "initFuncTable" 66)))) (Paren (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0)))) (Paren (Apply (Variable (QualIdent (Just "SetRBT") (Ident "emptySetRBT" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "leqQName" 0)))))) (Variable (QualIdent Nothing (Ident "initreqfuncs" 66)))))) (Paren (Apply (Variable (QualIdent (Just "SetRBT") (Ident "emptySetRBT" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "leqQName" 0)))))) (Paren (Apply (Variable (QualIdent (Just "SetRBT") (Ident "emptySetRBT" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "leqQName" 0)))))) (Variable (QualIdent Nothing (Ident "initreqfuncs" 66))))),(StmtExpr (Apply (Variable (QualIdent (Just "Prelude") (Ident "putStrLn" 0))) (Paren (InfixApply (Literal (String "\nCompactFlat: Total number of functions (without unused imports): ")) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Apply (Variable (QualIdent (Just "Prelude") (Ident "show" 0))) (Paren (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "Prelude") (Ident "+" 0)))) (Literal (Int (Ident "_" 72) 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Paren (InfixApply (Variable (QualIdent (Just "Prelude") (Ident "length" 0))) (InfixOp (QualIdent (Just "Prelude") (Ident "." 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleFuns" 0)))))) (Variable (QualIdent Nothing (Ident "finalmods" 71)))))))))))),(StmtDecl [(PatternDecl (186,7) (VariablePattern (Ident "finalfnames" 73)) (SimpleRhs (186,22) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "functionName" 0)))) (Variable (QualIdent Nothing (Ident "finalfuncs" 71)))) []))])] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Paren (Apply (Apply (Apply (Apply (Apply (Constructor (QualIdent (Just "FlatCurry") (Ident "Prog" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleName" 0))) (Variable (QualIdent Nothing (Ident "mainmod" 63)))))) (List [])) (Paren (Let [(PatternDecl (189,21) (VariablePattern (Ident "allTDecls" 75)) (SimpleRhs (189,33) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleTypes" 0)))) (Variable (QualIdent Nothing (Ident "finalmods" 71)))) [])),(PatternDecl (190,21) (VariablePattern (Ident "reqTCons" 75)) (SimpleRhs (190,33) (Apply (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "extendTConsWithConsType" 0))) (Variable (QualIdent Nothing (Ident "finalcons" 71)))) (Variable (QualIdent Nothing (Ident "finaltcons" 71)))) (Variable (QualIdent Nothing (Ident "allTDecls" 75)))) [])),(PatternDecl (192,21) (VariablePattern (Ident "allReqTCons" 75)) (SimpleRhs (192,35) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "requiredDatatypes" 0))) (Variable (QualIdent Nothing (Ident "reqTCons" 75)))) (Variable (QualIdent Nothing (Ident "allTDecls" 75)))) []))] (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "filter" 0))) (Paren (Lambda [(VariablePattern (Ident "tdecl" 79))] (InfixApply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "tconsName" 0))) (Variable (QualIdent Nothing (Ident "tdecl" 79)))) (InfixOp (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "allReqTCons" 75))))))) (Variable (QualIdent Nothing (Ident "allTDecls" 75))))))) (Variable (QualIdent Nothing (Ident "finalfuncs" 71)))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "filter" 0))) (Paren (Lambda [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Op" 0)) [(VariablePattern (Ident "oname" 80)),(VariablePattern (Ident "_" 81)),(VariablePattern (Ident "_" 82))]))] (InfixApply (Variable (QualIdent Nothing (Ident "oname" 80))) (InfixOp (QualIdent (Just "Prelude") (Ident "elem" 0))) (Variable (QualIdent Nothing (Ident "finalfnames" 73))))))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleOps" 0)))) (Variable (QualIdent Nothing (Ident "finalmods" 71))))))))))) []))]) ,(TypeSig (202,1) [(Ident "requiredDatatypes" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]) (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "TypeDecl" 0)) [])) (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])])))) ,(FunctionDecl (203,1) (Ident "requiredDatatypes" 0) [(Equation (203,1) (FunLhs (Ident "requiredDatatypes" 0) [(VariablePattern (Ident "tcnames" 83)),(VariablePattern (Ident "tdecls" 83))]) (SimpleRhs (204,3) (Let [(PatternDecl (204,7) (VariablePattern (Ident "newtcons" 85)) (SimpleRhs (204,18) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "newTypeConsOfTDecl" 0))) (Variable (QualIdent Nothing (Ident "tcnames" 83)))))) (Variable (QualIdent Nothing (Ident "tdecls" 83)))) []))] (IfThenElse (Apply (Variable (QualIdent (Just "Prelude") (Ident "null" 0))) (Variable (QualIdent Nothing (Ident "newtcons" 85)))) (Variable (QualIdent Nothing (Ident "tcnames" 83))) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "requiredDatatypes" 0))) (Paren (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0)))) (Variable (QualIdent Nothing (Ident "tcnames" 83)))) (Variable (QualIdent Nothing (Ident "newtcons" 85)))))) (Variable (QualIdent Nothing (Ident "tdecls" 83)))))) []))]) ,(TypeSig (211,1) [(Ident "newTypeConsOfTDecl" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]) (ArrowType (ConstructorType (QualIdent Nothing (Ident "TypeDecl" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []))))) ,(FunctionDecl (212,1) (Ident "newTypeConsOfTDecl" 0) [(Equation (212,1) (FunLhs (Ident "newTypeConsOfTDecl" 0) [(VariablePattern (Ident "tcnames" 87)),(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "TypeSyn" 0)) [(VariablePattern (Ident "tcons" 87)),(VariablePattern (Ident "_" 88)),(VariablePattern (Ident "_" 89)),(VariablePattern (Ident "texp" 87))]))]) (SimpleRhs (213,3) (IfThenElse (InfixApply (Variable (QualIdent Nothing (Ident "tcons" 87))) (InfixOp (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "tcnames" 87)))) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "filter" 0))) (Paren (Lambda [(VariablePattern (Ident "tc" 91))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "not" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "tc" 91))) (InfixOp (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "tcnames" 87))))))))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allTypesOfTExpr" 0))) (Variable (QualIdent Nothing (Ident "texp" 87)))))) (List [])) [])),(Equation (216,1) (FunLhs (Ident "newTypeConsOfTDecl" 0) [(VariablePattern (Ident "tcnames" 92)),(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Type" 0)) [(VariablePattern (Ident "tcons" 92)),(VariablePattern (Ident "_" 93)),(VariablePattern (Ident "_" 94)),(VariablePattern (Ident "cdecls" 92))]))]) (SimpleRhs (217,3) (IfThenElse (InfixApply (Variable (QualIdent Nothing (Ident "tcons" 92))) (InfixOp (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "tcnames" 92)))) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "filter" 0))) (Paren (Lambda [(VariablePattern (Ident "tc" 96))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "not" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "tc" 96))) (InfixOp (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "tcnames" 92))))))))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Paren (Lambda [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Cons" 0)) [(VariablePattern (Ident "_" 98)),(VariablePattern (Ident "_" 99)),(VariablePattern (Ident "_" 100)),(VariablePattern (Ident "texps" 97))]))] (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allTypesOfTExpr" 0)))) (Variable (QualIdent Nothing (Ident "texps" 97))))))) (Variable (QualIdent Nothing (Ident "cdecls" 92)))))) (List [])) []))]) ,(TypeSig (225,1) [(Ident "extendTConsWithConsType" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]) (ArrowType (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]) (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "TypeDecl" 0)) [])) (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]))))) ,(FunctionDecl (227,1) (Ident "extendTConsWithConsType" 0) [(Equation (227,1) (FunLhs (Ident "extendTConsWithConsType" 0) [(VariablePattern (Ident "_" 102)),(VariablePattern (Ident "tcons" 101)),(ListPattern [])]) (SimpleRhs (227,38) (Variable (QualIdent Nothing (Ident "tcons" 101))) [])),(Equation (228,1) (FunLhs (Ident "extendTConsWithConsType" 0) [(VariablePattern (Ident "cnames" 104)),(VariablePattern (Ident "tcons" 104)),(ParenPattern (InfixPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "TypeSyn" 0)) [(VariablePattern (Ident "tname" 104)),(VariablePattern (Ident "_" 105)),(VariablePattern (Ident "_" 106)),(VariablePattern (Ident "_" 107))]) (QualIdent Nothing (Ident ":" 0)) (VariablePattern (Ident "tds" 104))))]) (SimpleRhs (229,3) (Apply (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "extendTConsWithConsType" 0))) (Variable (QualIdent Nothing (Ident "cnames" 104)))) (Paren (Apply (Apply (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0))) (Variable (QualIdent Nothing (Ident "tname" 104)))) (Variable (QualIdent Nothing (Ident "tcons" 104)))))) (Variable (QualIdent Nothing (Ident "tds" 104)))) [])),(Equation (230,1) (FunLhs (Ident "extendTConsWithConsType" 0) [(VariablePattern (Ident "cnames" 109)),(VariablePattern (Ident "tcons" 109)),(ParenPattern (InfixPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Type" 0)) [(VariablePattern (Ident "tname" 109)),(VariablePattern (Ident "_" 110)),(VariablePattern (Ident "_" 111)),(VariablePattern (Ident "cdecls" 109))]) (QualIdent Nothing (Ident ":" 0)) (VariablePattern (Ident "tds" 109))))]) (SimpleRhs (231,3) (IfThenElse (InfixApply (InfixApply (Variable (QualIdent Nothing (Ident "tname" 109))) (InfixOp (QualIdent (Just "Prelude") (Ident "elem" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "defaultRequiredTypes" 0)))) (InfixOp (QualIdent (Just "Prelude") (Ident "||" 0))) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "any" 0))) (Paren (Lambda [(VariablePattern (Ident "cdecl" 113))] (InfixApply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "consName" 0))) (Variable (QualIdent Nothing (Ident "cdecl" 113)))) (InfixOp (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "cnames" 109))))))) (Variable (QualIdent Nothing (Ident "cdecls" 109))))) (Apply (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "extendTConsWithConsType" 0))) (Variable (QualIdent Nothing (Ident "cnames" 109)))) (Paren (Apply (Apply (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0))) (Variable (QualIdent Nothing (Ident "tname" 109)))) (Variable (QualIdent Nothing (Ident "tcons" 109)))))) (Variable (QualIdent Nothing (Ident "tds" 109)))) (Apply (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "extendTConsWithConsType" 0))) (Variable (QualIdent Nothing (Ident "cnames" 109)))) (Variable (QualIdent Nothing (Ident "tcons" 109)))) (Variable (QualIdent Nothing (Ident "tds" 109))))) []))]) ,(TypeSig (238,1) [(Ident "extendFuncTable" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "TableRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) []),(ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) [])]) (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) [])) (ConstructorType (QualIdent Nothing (Ident "TableRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) []),(ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) [])])))) ,(FunctionDecl (240,1) (Ident "extendFuncTable" 0) [(Equation (240,1) (FunLhs (Ident "extendFuncTable" 0) [(VariablePattern (Ident "ftable" 114)),(VariablePattern (Ident "fdecls" 114))]) (SimpleRhs (241,3) (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Paren (Lambda [(VariablePattern (Ident "f" 116)),(VariablePattern (Ident "t" 116))] (Apply (Apply (Apply (Variable (QualIdent (Just "TableRBT") (Ident "updateRBT" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "functionName" 0))) (Variable (QualIdent Nothing (Ident "f" 116)))))) (Variable (QualIdent Nothing (Ident "f" 116)))) (Variable (QualIdent Nothing (Ident "t" 116))))))) (Variable (QualIdent Nothing (Ident "ftable" 114)))) (Variable (QualIdent Nothing (Ident "fdecls" 114)))) []))]) ,(TypeSig (250,1) [(Ident "requiredInCompactProg" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []) (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "Option" 0)) [])) (ConstructorType (QualIdent Nothing (Ident "IO" 0)) [(TupleType [(ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])),(ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "String" 0)) [])]),(ListType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []))])])))) ,(FunctionDecl (251,1) (Ident "requiredInCompactProg" 0) [(Equation (251,1) (FunLhs (Ident "requiredInCompactProg" 0) [(VariablePattern (Ident "mainmod" 117)),(VariablePattern (Ident "options" 117))]) (GuardedRhs [(CondExpr (252,2) (Apply (Variable (QualIdent (Just "Prelude") (Ident "not" 0))) (Paren (Apply (Variable (QualIdent (Just "Prelude") (Ident "null" 0))) (Variable (QualIdent Nothing (Ident "initfuncs" 118)))))) (Do [(StmtBind (VariablePattern (Ident "impprogs" 128)) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "mapIO" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "readCurrentFlatCurry" 0)))) (Variable (QualIdent Nothing (Ident "imports" 118)))))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Tuple [(Apply (Variable (QualIdent (Just "Prelude") (Ident "concat" 0))) (Variable (QualIdent Nothing (Ident "initfuncs" 118)))),(Apply (Variable (QualIdent Nothing (Ident "add2mainmodset" 118))) (Variable (QualIdent Nothing (Ident "imports" 118)))),(InfixApply (Variable (QualIdent Nothing (Ident "mainmod" 117))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "impprogs" 128))))])))),(CondExpr (255,2) (InfixApply (Constructor (QualIdent (Just "CompactFlatCurry") (Ident "Exports" 0))) (InfixOp (QualIdent (Just "Prelude") (Ident "elem" 0))) (Variable (QualIdent Nothing (Ident "options" 117)))) (Do [(StmtBind (VariablePattern (Ident "impprogs" 129)) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "mapIO" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "readCurrentFlatCurry" 0)))) (Variable (QualIdent Nothing (Ident "imports" 118)))))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Tuple [(Apply (Variable (QualIdent (Just "List") (Ident "nub" 0))) (Variable (QualIdent Nothing (Ident "mainexports" 118)))),(Apply (Variable (QualIdent Nothing (Ident "add2mainmodset" 118))) (Variable (QualIdent Nothing (Ident "imports" 118)))),(InfixApply (Variable (QualIdent Nothing (Ident "mainmod" 117))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "impprogs" 129))))])))),(CondExpr (258,2) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "any" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "isMainOption" 0)))) (Variable (QualIdent Nothing (Ident "options" 117)))) (Let [(PatternDecl (259,9) (VariablePattern (Ident "func" 130)) (SimpleRhs (259,16) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getMainFuncFromOptions" 0))) (Variable (QualIdent Nothing (Ident "options" 117)))) []))] (IfThenElse (InfixApply (Tuple [(Variable (QualIdent Nothing (Ident "mainmodname" 118))),(Variable (QualIdent Nothing (Ident "func" 130)))]) (InfixOp (QualIdent (Just "Prelude") (Ident "elem" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "functionName" 0)))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleFuns" 0))) (Variable (QualIdent Nothing (Ident "mainmod" 117)))))))) (Do [(StmtBind (VariablePattern (Ident "impprogs" 132)) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "mapIO" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "readCurrentFlatCurry" 0)))) (Variable (QualIdent Nothing (Ident "imports" 118)))))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Tuple [(List [(Tuple [(Variable (QualIdent Nothing (Ident "mainmodname" 118))),(Variable (QualIdent Nothing (Ident "func" 130)))])]),(Apply (Variable (QualIdent Nothing (Ident "add2mainmodset" 118))) (Variable (QualIdent Nothing (Ident "imports" 118)))),(InfixApply (Variable (QualIdent Nothing (Ident "mainmod" 117))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "impprogs" 132))))]))) (InfixApply (Variable (QualIdent (Just "Prelude") (Ident "error" 0))) (InfixOp (QualIdent (Just "Prelude") (Ident "$" 0))) (InfixApply (Literal (String "CompactFlat: Cannot find main function \"")) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (InfixApply (Variable (QualIdent Nothing (Ident "func" 130))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Literal (String "\"!")))))))),(CondExpr (265,2) (Variable (QualIdent (Just "Prelude") (Ident "otherwise" 0))) (Do [(StmtBind (VariablePattern (Ident "impprogs" 133)) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "mapIO" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "readCurrentFlatCurry" 0)))) (Paren (Apply (Variable (QualIdent (Just "List") (Ident "nub" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "imports" 118))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleImports" 0))) (Variable (QualIdent Nothing (Ident "mainmod" 117))))))))))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Tuple [(Apply (Variable (QualIdent (Just "List") (Ident "nub" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "mainexports" 118))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Paren (InfixApply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "exportedFuncNames" 0))) (InfixOp (QualIdent (Just "Prelude") (Ident "." 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleFuns" 0)))))) (Variable (QualIdent Nothing (Ident "impprogs" 133))))))),(Apply (Variable (QualIdent Nothing (Ident "add2mainmodset" 118))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleName" 0)))) (Variable (QualIdent Nothing (Ident "impprogs" 133)))))),(InfixApply (Variable (QualIdent Nothing (Ident "mainmod" 117))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "impprogs" 133))))]))))] [(PatternDecl (273,4) (VariablePattern (Ident "imports" 118)) (SimpleRhs (273,14) (Apply (Variable (QualIdent (Just "List") (Ident "nub" 0))) (ListCompr (Variable (QualIdent Nothing (Ident "mname" 120))) [(StmtBind (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "Import" 0)) [(VariablePattern (Ident "mname" 120))]) (Variable (QualIdent Nothing (Ident "options" 117))))])) [])),(PatternDecl (275,4) (VariablePattern (Ident "mainmodname" 118)) (SimpleRhs (275,18) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleName" 0))) (Variable (QualIdent Nothing (Ident "mainmod" 117)))) [])),(PatternDecl (277,4) (VariablePattern (Ident "initfuncs" 118)) (SimpleRhs (277,16) (ListCompr (Variable (QualIdent Nothing (Ident "fs" 123))) [(StmtBind (ConstructorPattern (QualIdent (Just "CompactFlatCurry") (Ident "InitFuncs" 0)) [(VariablePattern (Ident "fs" 123))]) (Variable (QualIdent Nothing (Ident "options" 117))))]) [])),(PatternDecl (279,4) (VariablePattern (Ident "mainexports" 118)) (SimpleRhs (279,18) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "exportedFuncNames" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleFuns" 0))) (Variable (QualIdent Nothing (Ident "mainmod" 117)))))) [])),(PatternDecl (281,4) (VariablePattern (Ident "mainmodset" 118)) (SimpleRhs (281,17) (Apply (Apply (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0))) (Variable (QualIdent Nothing (Ident "mainmodname" 118)))) (Paren (Apply (Variable (QualIdent (Just "SetRBT") (Ident "emptySetRBT" 0))) (Variable (QualIdent (Just "Sort") (Ident "leqString" 0)))))) [])),(FunctionDecl (283,4) (Ident "add2mainmodset" 118) [(Equation (283,4) (FunLhs (Ident "add2mainmodset" 118) [(VariablePattern (Ident "mnames" 126))]) (SimpleRhs (283,28) (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0)))) (Variable (QualIdent Nothing (Ident "mainmodset" 118)))) (Variable (QualIdent Nothing (Ident "mnames" 126)))) []))])]))]) ,(TypeSig (287,1) [(Ident "exportedFuncNames" 0)] (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) [])) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])))) ,(FunctionDecl (288,1) (Ident "exportedFuncNames" 0) [(Equation (288,1) (FunLhs (Ident "exportedFuncNames" 0) [(VariablePattern (Ident "funs" 134))]) (SimpleRhs (289,4) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Paren (Lambda [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "name" 136)),(VariablePattern (Ident "_" 137)),(VariablePattern (Ident "_" 138)),(VariablePattern (Ident "_" 139)),(VariablePattern (Ident "_" 140))]))] (Variable (QualIdent Nothing (Ident "name" 136)))))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "filter" 0))) (Paren (Lambda [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "_" 142)),(VariablePattern (Ident "_" 143)),(VariablePattern (Ident "vis" 141)),(VariablePattern (Ident "_" 144)),(VariablePattern (Ident "_" 145))]))] (InfixApply (Variable (QualIdent Nothing (Ident "vis" 141))) (InfixOp (QualIdent (Just "Prelude") (Ident "==" 0))) (Constructor (QualIdent (Just "FlatCurry") (Ident "Public" 0))))))) (Variable (QualIdent Nothing (Ident "funs" 134)))))) []))]) ,(TypeSig (305,1) [(Ident "getCalledFuncs" 0)] (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "RequiredSpec" 0)) [])) (ArrowType (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "String" 0)) [])]) (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) [])) (ArrowType (ConstructorType (QualIdent Nothing (Ident "TableRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) []),(ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) [])]) (ArrowType (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]) (ArrowType (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]) (ArrowType (ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]) (ArrowType (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])) (ConstructorType (QualIdent Nothing (Ident "IO" 0)) [(TupleType [(ListType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) [])),(ListType (ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) [])),(ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]),(ConstructorType (QualIdent Nothing (Ident "SetRBT" 0)) [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])])])])))))))))) ,(FunctionDecl (310,1) (Ident "getCalledFuncs" 0) [(Equation (310,1) (FunLhs (Ident "getCalledFuncs" 0) [(VariablePattern (Ident "_" 147)),(VariablePattern (Ident "_" 148)),(VariablePattern (Ident "progs" 146)),(VariablePattern (Ident "_" 149)),(VariablePattern (Ident "_" 150)),(VariablePattern (Ident "dcs" 146)),(VariablePattern (Ident "ts" 146)),(ListPattern [])]) (SimpleRhs (310,42) (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Tuple [(Variable (QualIdent Nothing (Ident "progs" 146))),(List []),(Variable (QualIdent Nothing (Ident "dcs" 146))),(Variable (QualIdent Nothing (Ident "ts" 146)))])) [])),(Equation (311,1) (FunLhs (Ident "getCalledFuncs" 0) [(VariablePattern (Ident "required" 152)),(VariablePattern (Ident "loadedmnames" 152)),(VariablePattern (Ident "progs" 152)),(VariablePattern (Ident "functable" 152)),(VariablePattern (Ident "loadedfnames" 152)),(VariablePattern (Ident "loadedcnames" 152)),(VariablePattern (Ident "loadedtnames" 152)),(ParenPattern (InfixPattern (TuplePattern [(VariablePattern (Ident "m" 152)),(VariablePattern (Ident "f" 152))]) (QualIdent Nothing (Ident ":" 0)) (VariablePattern (Ident "fs" 152))))]) (GuardedRhs [(CondExpr (313,3) (Apply (Variable (QualIdent (Just "Prelude") (Ident "not" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "m" 152)))) (Variable (QualIdent Nothing (Ident "loadedmnames" 152)))))) (Do [(StmtBind (VariablePattern (Ident "newmod" 154)) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "readCurrentFlatCurry" 0))) (Variable (QualIdent Nothing (Ident "m" 152))))),(StmtDecl [(PatternDecl (315,13) (VariablePattern (Ident "reqnewfun" 155)) (SimpleRhs (315,25) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getRequiredInModule" 0))) (Variable (QualIdent Nothing (Ident "required" 152)))) (Variable (QualIdent Nothing (Ident "m" 152)))) []))])] (Apply (Apply (Apply (Apply (Apply (Apply (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getCalledFuncs" 0))) (Variable (QualIdent Nothing (Ident "required" 152)))) (Paren (Apply (Apply (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0))) (Variable (QualIdent Nothing (Ident "m" 152)))) (Variable (QualIdent Nothing (Ident "loadedmnames" 152)))))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "newmod" 154))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "progs" 152)))))) (Paren (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "extendFuncTable" 0))) (Variable (QualIdent Nothing (Ident "functable" 152)))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleFuns" 0))) (Variable (QualIdent Nothing (Ident "newmod" 154)))))))) (Paren (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0)))) (Variable (QualIdent Nothing (Ident "loadedfnames" 152)))) (Variable (QualIdent Nothing (Ident "reqnewfun" 155)))))) (Variable (QualIdent Nothing (Ident "loadedcnames" 152)))) (Variable (QualIdent Nothing (Ident "loadedtnames" 152)))) (Paren (InfixApply (Tuple [(Variable (QualIdent Nothing (Ident "m" 152))),(Variable (QualIdent Nothing (Ident "f" 152)))]) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (InfixApply (Variable (QualIdent Nothing (Ident "fs" 152))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Variable (QualIdent Nothing (Ident "reqnewfun" 155))))))))),(CondExpr (320,3) (InfixApply (Apply (Apply (Variable (QualIdent (Just "TableRBT") (Ident "lookupRBT" 0))) (Tuple [(Variable (QualIdent Nothing (Ident "m" 152))),(Variable (QualIdent Nothing (Ident "f" 152)))])) (Variable (QualIdent Nothing (Ident "functable" 152)))) (InfixOp (QualIdent (Just "Prelude") (Ident "==" 0))) (Constructor (QualIdent (Just "Prelude") (Ident "Nothing" 0)))) (Apply (Apply (Apply (Apply (Apply (Apply (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getCalledFuncs" 0))) (Variable (QualIdent Nothing (Ident "required" 152)))) (Variable (QualIdent Nothing (Ident "loadedmnames" 152)))) (Variable (QualIdent Nothing (Ident "progs" 152)))) (Variable (QualIdent Nothing (Ident "functable" 152)))) (Variable (QualIdent Nothing (Ident "loadedfnames" 152)))) (Variable (QualIdent Nothing (Ident "loadedcnames" 152)))) (Variable (QualIdent Nothing (Ident "loadedtnames" 152)))) (Variable (QualIdent Nothing (Ident "fs" 152))))),(CondExpr (324,3) (Variable (QualIdent (Just "Prelude") (Ident "otherwise" 0))) (Do [(StmtDecl [(PatternDecl (325,8) (VariablePattern (Ident "fdecl" 157)) (SimpleRhs (325,16) (Apply (Variable (QualIdent (Just "Maybe") (Ident "fromJust" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "TableRBT") (Ident "lookupRBT" 0))) (Tuple [(Variable (QualIdent Nothing (Ident "m" 152))),(Variable (QualIdent Nothing (Ident "f" 152)))])) (Variable (QualIdent Nothing (Ident "functable" 152)))))) [])),(PatternDecl (326,8) (VariablePattern (Ident "funcCalls" 157)) (SimpleRhs (326,20) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCalls" 0))) (Variable (QualIdent Nothing (Ident "fdecl" 157)))) [])),(PatternDecl (327,8) (VariablePattern (Ident "newFuncCalls" 157)) (SimpleRhs (327,23) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "filter" 0))) (Paren (Lambda [(VariablePattern (Ident "qn" 161))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "not" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "qn" 161)))) (Variable (QualIdent Nothing (Ident "loadedfnames" 152))))))))) (Variable (QualIdent Nothing (Ident "funcCalls" 157)))) [])),(PatternDecl (328,8) (VariablePattern (Ident "newReqs" 157)) (SimpleRhs (328,18) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getImplicitlyRequired" 0))) (Variable (QualIdent Nothing (Ident "required" 152)))))) (Variable (QualIdent Nothing (Ident "newFuncCalls" 157)))) [])),(PatternDecl (329,8) (VariablePattern (Ident "consCalls" 157)) (SimpleRhs (329,20) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConstructorsOfFunc" 0))) (Variable (QualIdent Nothing (Ident "fdecl" 157)))) [])),(PatternDecl (330,8) (VariablePattern (Ident "newConsCalls" 157)) (SimpleRhs (330,23) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "filter" 0))) (Paren (Lambda [(VariablePattern (Ident "qn" 165))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "not" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "SetRBT") (Ident "elemRBT" 0))) (Variable (QualIdent Nothing (Ident "qn" 165)))) (Variable (QualIdent Nothing (Ident "loadedcnames" 152))))))))) (Variable (QualIdent Nothing (Ident "consCalls" 157)))) [])),(PatternDecl (331,8) (VariablePattern (Ident "newtcons" 157)) (SimpleRhs (331,19) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allTypesOfFunc" 0))) (Variable (QualIdent Nothing (Ident "fdecl" 157)))) []))]),(StmtBind (TuplePattern [(VariablePattern (Ident "newprogs" 167)),(VariablePattern (Ident "newfuns" 167)),(VariablePattern (Ident "newcons" 167)),(VariablePattern (Ident "newtypes" 167))]) (Apply (Apply (Apply (Apply (Apply (Apply (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getCalledFuncs" 0))) (Variable (QualIdent Nothing (Ident "required" 152)))) (Variable (QualIdent Nothing (Ident "loadedmnames" 152)))) (Variable (QualIdent Nothing (Ident "progs" 152)))) (Variable (QualIdent Nothing (Ident "functable" 152)))) (Paren (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0)))) (Variable (QualIdent Nothing (Ident "loadedfnames" 152)))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "newFuncCalls" 157))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Variable (QualIdent Nothing (Ident "newReqs" 157)))))))) (Paren (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0)))) (Variable (QualIdent Nothing (Ident "loadedcnames" 152)))) (Variable (QualIdent Nothing (Ident "consCalls" 157)))))) (Paren (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "SetRBT") (Ident "insertRBT" 0)))) (Variable (QualIdent Nothing (Ident "loadedtnames" 152)))) (Variable (QualIdent Nothing (Ident "newtcons" 157)))))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "fs" 152))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (InfixApply (Variable (QualIdent Nothing (Ident "newFuncCalls" 157))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (InfixApply (Variable (QualIdent Nothing (Ident "newReqs" 157))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Variable (QualIdent Nothing (Ident "newConsCalls" 157)))))))))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Tuple [(Variable (QualIdent Nothing (Ident "newprogs" 167))),(InfixApply (Variable (QualIdent Nothing (Ident "fdecl" 157))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "newfuns" 167)))),(Variable (QualIdent Nothing (Ident "newcons" 167))),(Variable (QualIdent Nothing (Ident "newtypes" 167)))]))))] []))]) ,(TypeSig (348,1) [(Ident "allFuncCalls" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])))) ,(FunctionDecl (349,1) (Ident "allFuncCalls" 0) [(Equation (349,1) (FunLhs (Ident "allFuncCalls" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "_" 169)),(VariablePattern (Ident "_" 170)),(VariablePattern (Ident "_" 171)),(VariablePattern (Ident "_" 172)),(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "External" 0)) [(VariablePattern (Ident "_" 173))]))]))]) (SimpleRhs (349,44) (List []) [])),(Equation (350,1) (FunLhs (Ident "allFuncCalls" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "_" 176)),(VariablePattern (Ident "_" 177)),(VariablePattern (Ident "_" 178)),(VariablePattern (Ident "_" 179)),(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Rule" 0)) [(VariablePattern (Ident "_" 180)),(VariablePattern (Ident "expr" 175))]))]))]) (SimpleRhs (350,45) (Apply (Variable (QualIdent (Just "List") (Ident "nub" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 175)))))) []))]) ,(TypeSig (356,1) [(Ident "allFuncCallsOfExpr" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Expr" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])))) ,(FunctionDecl (357,1) (Ident "allFuncCallsOfExpr" 0) [(Equation (357,1) (FunLhs (Ident "allFuncCallsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Var" 0)) [(VariablePattern (Ident "_" 183))]))]) (SimpleRhs (357,30) (List []) [])),(Equation (358,1) (FunLhs (Ident "allFuncCallsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Lit" 0)) [(VariablePattern (Ident "_" 186))]))]) (SimpleRhs (358,30) (List []) [])),(Equation (359,1) (FunLhs (Ident "allFuncCallsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Comb" 0)) [(VariablePattern (Ident "ctype" 188)),(VariablePattern (Ident "fname" 188)),(VariablePattern (Ident "exprs" 188))]))]) (SimpleRhs (359,47) (Case (Variable (QualIdent Nothing (Ident "ctype" 188))) [(Alt (360,3) (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "FuncCall" 0)) []) (SimpleRhs (360,21) (InfixApply (Variable (QualIdent Nothing (Ident "fname" 188))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "fnames" 189)))) [])),(Alt (361,3) (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "FuncPartCall" 0)) [(VariablePattern (Ident "_" 194))]) (SimpleRhs (361,21) (InfixApply (Variable (QualIdent Nothing (Ident "fname" 188))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "fnames" 189)))) [])),(Alt (362,3) (VariablePattern (Ident "_" 197)) (SimpleRhs (362,8) (Variable (QualIdent Nothing (Ident "fnames" 189))) []))]) [(PatternDecl (364,3) (VariablePattern (Ident "fnames" 189)) (SimpleRhs (364,12) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0)))) (Variable (QualIdent Nothing (Ident "exprs" 188)))) []))])),(Equation (365,1) (FunLhs (Ident "allFuncCallsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Free" 0)) [(VariablePattern (Ident "_" 200)),(VariablePattern (Ident "expr" 199))]))]) (SimpleRhs (366,5) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 199)))) [])),(Equation (367,1) (FunLhs (Ident "allFuncCallsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Let" 0)) [(VariablePattern (Ident "bs" 202)),(VariablePattern (Ident "expr" 202))]))]) (SimpleRhs (368,5) (InfixApply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Paren (InfixApply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0))) (InfixOp (QualIdent (Just "Prelude") (Ident "." 0))) (Variable (QualIdent (Just "Prelude") (Ident "snd" 0)))))) (Variable (QualIdent Nothing (Ident "bs" 202)))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 202))))) [])),(Equation (369,1) (FunLhs (Ident "allFuncCallsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Or" 0)) [(VariablePattern (Ident "expr1" 204)),(VariablePattern (Ident "expr2" 204))]))]) (SimpleRhs (370,5) (InfixApply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr1" 204)))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr2" 204))))) [])),(Equation (371,1) (FunLhs (Ident "allFuncCallsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Case" 0)) [(VariablePattern (Ident "_" 207)),(VariablePattern (Ident "expr" 206)),(VariablePattern (Ident "branchExprs" 206))]))]) (SimpleRhs (372,5) (InfixApply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 206)))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfBranchExpr" 0)))) (Variable (QualIdent Nothing (Ident "branchExprs" 206))))) []))]) ,(TypeSig (379,1) [(Ident "allFuncCallsOfBranchExpr" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "BranchExpr" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])))) ,(FunctionDecl (380,1) (Ident "allFuncCallsOfBranchExpr" 0) [(Equation (380,1) (FunLhs (Ident "allFuncCallsOfBranchExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Branch" 0)) [(VariablePattern (Ident "_" 210)),(VariablePattern (Ident "expr" 209))]))]) (SimpleRhs (380,44) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allFuncCallsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 209)))) []))]) ,(TypeSig (385,1) [(Ident "allConstructorsOfFunc" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])))) ,(FunctionDecl (386,1) (Ident "allConstructorsOfFunc" 0) [(Equation (386,1) (FunLhs (Ident "allConstructorsOfFunc" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "_" 213)),(VariablePattern (Ident "_" 214)),(VariablePattern (Ident "_" 215)),(VariablePattern (Ident "_" 216)),(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "External" 0)) [(VariablePattern (Ident "_" 217))]))]))]) (SimpleRhs (386,53) (List []) [])),(Equation (387,1) (FunLhs (Ident "allConstructorsOfFunc" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "_" 220)),(VariablePattern (Ident "_" 221)),(VariablePattern (Ident "_" 222)),(VariablePattern (Ident "_" 223)),(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Rule" 0)) [(VariablePattern (Ident "_" 224)),(VariablePattern (Ident "expr" 219))]))]))]) (SimpleRhs (387,54) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 219)))) []))]) ,(TypeSig (390,1) [(Ident "allConsOfExpr" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Expr" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])))) ,(FunctionDecl (391,1) (Ident "allConsOfExpr" 0) [(Equation (391,1) (FunLhs (Ident "allConsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Var" 0)) [(VariablePattern (Ident "_" 227))]))]) (SimpleRhs (391,25) (List []) [])),(Equation (392,1) (FunLhs (Ident "allConsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Lit" 0)) [(VariablePattern (Ident "_" 230))]))]) (SimpleRhs (392,25) (List []) [])),(Equation (393,1) (FunLhs (Ident "allConsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Comb" 0)) [(VariablePattern (Ident "ctype" 232)),(VariablePattern (Ident "cname" 232)),(VariablePattern (Ident "exprs" 232))]))]) (SimpleRhs (393,42) (Case (Variable (QualIdent Nothing (Ident "ctype" 232))) [(Alt (394,3) (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "ConsCall" 0)) []) (SimpleRhs (394,21) (InfixApply (Variable (QualIdent Nothing (Ident "cname" 232))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "cnames" 233)))) [])),(Alt (395,3) (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "ConsPartCall" 0)) [(VariablePattern (Ident "_" 238))]) (SimpleRhs (395,21) (InfixApply (Variable (QualIdent Nothing (Ident "cname" 232))) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "cnames" 233)))) [])),(Alt (396,3) (VariablePattern (Ident "_" 241)) (SimpleRhs (396,8) (Variable (QualIdent Nothing (Ident "cnames" 233))) []))]) [(PatternDecl (398,3) (VariablePattern (Ident "cnames" 233)) (SimpleRhs (398,12) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "unionMap" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0)))) (Variable (QualIdent Nothing (Ident "exprs" 232)))) []))])),(Equation (399,1) (FunLhs (Ident "allConsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Free" 0)) [(VariablePattern (Ident "_" 244)),(VariablePattern (Ident "expr" 243))]))]) (SimpleRhs (400,4) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 243)))) [])),(Equation (401,1) (FunLhs (Ident "allConsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Let" 0)) [(VariablePattern (Ident "bs" 246)),(VariablePattern (Ident "expr" 246))]))]) (SimpleRhs (402,4) (Apply (Apply (Variable (QualIdent (Just "List") (Ident "union" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "unionMap" 0))) (Paren (InfixApply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (InfixOp (QualIdent (Just "Prelude") (Ident "." 0))) (Variable (QualIdent (Just "Prelude") (Ident "snd" 0)))))) (Variable (QualIdent Nothing (Ident "bs" 246)))))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 246)))))) [])),(Equation (403,1) (FunLhs (Ident "allConsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Or" 0)) [(VariablePattern (Ident "expr1" 248)),(VariablePattern (Ident "expr2" 248))]))]) (SimpleRhs (404,4) (Apply (Apply (Variable (QualIdent (Just "List") (Ident "union" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr1" 248)))))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr2" 248)))))) [])),(Equation (405,1) (FunLhs (Ident "allConsOfExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Case" 0)) [(VariablePattern (Ident "_" 251)),(VariablePattern (Ident "expr" 250)),(VariablePattern (Ident "branchExprs" 250))]))]) (SimpleRhs (406,4) (Apply (Apply (Variable (QualIdent (Just "List") (Ident "union" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "expr" 250)))))) (Paren (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "unionMap" 0))) (Variable (QualIdent Nothing (Ident "consOfBranch" 252)))) (Variable (QualIdent Nothing (Ident "branchExprs" 250)))))) [(FunctionDecl (408,3) (Ident "consOfBranch" 252) [(Equation (408,3) (FunLhs (Ident "consOfBranch" 252) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Branch" 0)) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "LPattern" 0)) [(VariablePattern (Ident "_" 254))])),(VariablePattern (Ident "e" 253))]))]) (SimpleRhs (408,42) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "e" 253)))) [])),(Equation (409,3) (FunLhs (Ident "consOfBranch" 252) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Branch" 0)) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Pattern" 0)) [(VariablePattern (Ident "c" 256)),(VariablePattern (Ident "_" 257))])),(VariablePattern (Ident "e" 256))]))]) (SimpleRhs (409,43) (Apply (Apply (Variable (QualIdent (Just "List") (Ident "union" 0))) (List [(Variable (QualIdent Nothing (Ident "c" 256)))])) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allConsOfExpr" 0))) (Variable (QualIdent Nothing (Ident "e" 256)))))) []))])]))]) ,(TypeSig (413,1) [(Ident "allTypesOfFunc" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])))) ,(FunctionDecl (414,1) (Ident "allTypesOfFunc" 0) [(Equation (414,1) (FunLhs (Ident "allTypesOfFunc" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "_" 260)),(VariablePattern (Ident "_" 261)),(VariablePattern (Ident "_" 262)),(VariablePattern (Ident "texp" 259)),(VariablePattern (Ident "_" 263))]))]) (SimpleRhs (414,38) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allTypesOfTExpr" 0))) (Variable (QualIdent Nothing (Ident "texp" 259)))) []))]) ,(TypeSig (417,1) [(Ident "allTypesOfTExpr" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "TypeExpr" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])))) ,(FunctionDecl (418,1) (Ident "allTypesOfTExpr" 0) [(Equation (418,1) (FunLhs (Ident "allTypesOfTExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "TVar" 0)) [(VariablePattern (Ident "_" 266))]))]) (SimpleRhs (418,28) (List []) [])),(Equation (419,1) (FunLhs (Ident "allTypesOfTExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "FuncType" 0)) [(VariablePattern (Ident "texp1" 268)),(VariablePattern (Ident "texp2" 268))]))]) (SimpleRhs (420,4) (Apply (Apply (Variable (QualIdent (Just "List") (Ident "union" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allTypesOfTExpr" 0))) (Variable (QualIdent Nothing (Ident "texp1" 268)))))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allTypesOfTExpr" 0))) (Variable (QualIdent Nothing (Ident "texp2" 268)))))) [])),(Equation (421,1) (FunLhs (Ident "allTypesOfTExpr" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "TCons" 0)) [(VariablePattern (Ident "tcons" 270)),(VariablePattern (Ident "args" 270))]))]) (SimpleRhs (422,3) (Apply (Apply (Variable (QualIdent (Just "List") (Ident "union" 0))) (List [(Variable (QualIdent Nothing (Ident "tcons" 270)))])) (Paren (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "unionMap" 0))) (Variable (QualIdent (Just "CompactFlatCurry") (Ident "allTypesOfTExpr" 0)))) (Variable (QualIdent Nothing (Ident "args" 270)))))) []))]) ,(FunctionDecl (424,1) (Ident "unionMap" 0) [(Equation (424,1) (FunLhs (Ident "unionMap" 0) [(VariablePattern (Ident "f" 272))]) (SimpleRhs (424,14) (InfixApply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "foldr" 0))) (Variable (QualIdent (Just "List") (Ident "union" 0)))) (List [])) (InfixOp (QualIdent (Just "Prelude") (Ident "." 0))) (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Variable (QualIdent Nothing (Ident "f" 272))))) []))]) ,(TypeSig (432,1) [(Ident "functionName" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) []) (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []))) ,(FunctionDecl (433,1) (Ident "functionName" 0) [(Equation (433,1) (FunLhs (Ident "functionName" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "name" 274)),(VariablePattern (Ident "_" 275)),(VariablePattern (Ident "_" 276)),(VariablePattern (Ident "_" 277)),(VariablePattern (Ident "_" 278))]))]) (SimpleRhs (433,36) (Variable (QualIdent Nothing (Ident "name" 274))) []))]) ,(TypeSig (436,1) [(Ident "consName" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "ConsDecl" 0)) []) (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []))) ,(FunctionDecl (437,1) (Ident "consName" 0) [(Equation (437,1) (FunLhs (Ident "consName" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Cons" 0)) [(VariablePattern (Ident "name" 280)),(VariablePattern (Ident "_" 281)),(VariablePattern (Ident "_" 282)),(VariablePattern (Ident "_" 283))]))]) (SimpleRhs (437,30) (Variable (QualIdent Nothing (Ident "name" 280))) []))]) ,(TypeSig (440,1) [(Ident "tconsName" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "TypeDecl" 0)) []) (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []))) ,(FunctionDecl (441,1) (Ident "tconsName" 0) [(Equation (441,1) (FunLhs (Ident "tconsName" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Type" 0)) [(VariablePattern (Ident "name" 285)),(VariablePattern (Ident "_" 286)),(VariablePattern (Ident "_" 287)),(VariablePattern (Ident "_" 288))]))]) (SimpleRhs (441,31) (Variable (QualIdent Nothing (Ident "name" 285))) [])),(Equation (442,1) (FunLhs (Ident "tconsName" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "TypeSyn" 0)) [(VariablePattern (Ident "name" 290)),(VariablePattern (Ident "_" 291)),(VariablePattern (Ident "_" 292)),(VariablePattern (Ident "_" 293))]))]) (SimpleRhs (442,34) (Variable (QualIdent Nothing (Ident "name" 290))) []))]) ,(TypeSig (445,1) [(Ident "moduleImports" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "String" 0)) [])))) ,(FunctionDecl (446,1) (Ident "moduleImports" 0) [(Equation (446,1) (FunLhs (Ident "moduleImports" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Prog" 0)) [(VariablePattern (Ident "_" 296)),(VariablePattern (Ident "imports" 295)),(VariablePattern (Ident "_" 297)),(VariablePattern (Ident "_" 298)),(VariablePattern (Ident "_" 299))]))]) (SimpleRhs (446,40) (Variable (QualIdent Nothing (Ident "imports" 295))) []))]) ,(TypeSig (450,1) [(Ident "moduleTypes" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "TypeDecl" 0)) [])))) ,(FunctionDecl (451,1) (Ident "moduleTypes" 0) [(Equation (451,1) (FunLhs (Ident "moduleTypes" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Prog" 0)) [(VariablePattern (Ident "_" 302)),(VariablePattern (Ident "_" 303)),(VariablePattern (Ident "types" 301)),(VariablePattern (Ident "_" 304)),(VariablePattern (Ident "_" 305))]))]) (SimpleRhs (451,36) (Variable (QualIdent Nothing (Ident "types" 301))) []))]) ,(TypeSig (454,1) [(Ident "moduleOps" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "OpDecl" 0)) [])))) ,(FunctionDecl (455,1) (Ident "moduleOps" 0) [(Equation (455,1) (FunLhs (Ident "moduleOps" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Prog" 0)) [(VariablePattern (Ident "_" 308)),(VariablePattern (Ident "_" 309)),(VariablePattern (Ident "_" 310)),(VariablePattern (Ident "_" 311)),(VariablePattern (Ident "ops" 307))]))]) (SimpleRhs (455,32) (Variable (QualIdent Nothing (Ident "ops" 307))) []))]) ,(TypeSig (458,1) [(Ident "moduleName" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []) (ConstructorType (QualIdent Nothing (Ident "String" 0)) []))) ,(FunctionDecl (459,1) (Ident "moduleName" 0) [(Equation (459,1) (FunLhs (Ident "moduleName" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Prog" 0)) [(VariablePattern (Ident "name" 313)),(VariablePattern (Ident "_" 314)),(VariablePattern (Ident "_" 315)),(VariablePattern (Ident "_" 316)),(VariablePattern (Ident "_" 317))]))]) (SimpleRhs (459,34) (Variable (QualIdent Nothing (Ident "name" 313))) []))]) ,(TypeSig (462,1) [(Ident "moduleFuns" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []) (ListType (ConstructorType (QualIdent Nothing (Ident "FuncDecl" 0)) [])))) ,(FunctionDecl (463,1) (Ident "moduleFuns" 0) [(Equation (463,1) (FunLhs (Ident "moduleFuns" 0) [(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Prog" 0)) [(VariablePattern (Ident "_" 320)),(VariablePattern (Ident "_" 321)),(VariablePattern (Ident "_" 322)),(VariablePattern (Ident "funs" 319)),(VariablePattern (Ident "_" 323))]))]) (SimpleRhs (463,34) (Variable (QualIdent Nothing (Ident "funs" 319))) []))]) ,(TypeSig (473,1) [(Ident "leqQName" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []) (ArrowType (ConstructorType (QualIdent Nothing (Ident "QName" 0)) []) (ConstructorType (QualIdent Nothing (Ident "Bool" 0)) [])))) ,(FunctionDecl (474,1) (Ident "leqQName" 0) [(Equation (474,1) (FunLhs (Ident "leqQName" 0) [(TuplePattern [(VariablePattern (Ident "m1" 325)),(VariablePattern (Ident "n1" 325))]),(TuplePattern [(VariablePattern (Ident "m2" 325)),(VariablePattern (Ident "n2" 325))])]) (SimpleRhs (474,28) (Let [(PatternDecl (474,32) (VariablePattern (Ident "cm" 327)) (SimpleRhs (474,37) (Apply (Apply (Variable (QualIdent (Just "Sort") (Ident "cmpString" 0))) (Variable (QualIdent Nothing (Ident "m1" 325)))) (Variable (QualIdent Nothing (Ident "m2" 325)))) []))] (InfixApply (InfixApply (Variable (QualIdent Nothing (Ident "cm" 327))) (InfixOp (QualIdent (Just "Prelude") (Ident "==" 0))) (Constructor (QualIdent (Just "Prelude") (Ident "LT" 0)))) (InfixOp (QualIdent (Just "Prelude") (Ident "||" 0))) (Paren (InfixApply (InfixApply (Variable (QualIdent Nothing (Ident "cm" 327))) (InfixOp (QualIdent (Just "Prelude") (Ident "==" 0))) (Constructor (QualIdent (Just "Prelude") (Ident "EQ" 0)))) (InfixOp (QualIdent (Just "Prelude") (Ident "&&" 0))) (Apply (Apply (Variable (QualIdent (Just "Sort") (Ident "leqString" 0))) (Variable (QualIdent Nothing (Ident "n1" 325)))) (Variable (QualIdent Nothing (Ident "n2" 325)))))))) []))]) ,(TypeSig (483,1) [(Ident "readCurrentFlatCurry" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "String" 0)) []) (ConstructorType (QualIdent Nothing (Ident "IO" 0)) [(ConstructorType (QualIdent Nothing (Ident "Prog" 0)) [])]))) ,(FunctionDecl (484,1) (Ident "readCurrentFlatCurry" 0) [(Equation (484,1) (FunLhs (Ident "readCurrentFlatCurry" 0) [(VariablePattern (Ident "modname" 329))]) (SimpleRhs (484,32) (Do [(StmtExpr (Apply (Variable (QualIdent (Just "Prelude") (Ident "putStr" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "modname" 329))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Literal (String "...")))))),(StmtBind (VariablePattern (Ident "progname" 331)) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "findSourceFileInLoadPath" 0))) (Variable (QualIdent Nothing (Ident "modname" 329))))),(StmtBind (VariablePattern (Ident "fcyexists" 332)) (Apply (Variable (QualIdent (Just "Directory") (Ident "doesFileExist" 0))) (Paren (Apply (Variable (QualIdent (Just "FlatCurry") (Ident "flatCurryFileName" 0))) (Variable (QualIdent Nothing (Ident "progname" 331)))))))] (IfThenElse (Apply (Variable (QualIdent (Just "Prelude") (Ident "not" 0))) (Variable (QualIdent Nothing (Ident "fcyexists" 332)))) (InfixApply (Apply (Variable (QualIdent (Just "FlatCurry") (Ident "readFlatCurry" 0))) (Variable (QualIdent Nothing (Ident "progname" 331)))) (InfixOp (QualIdent (Just "Prelude") (Ident ">>=" 0))) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "processPrimitives" 0))) (Variable (QualIdent Nothing (Ident "progname" 331))))) (Do [(StmtBind (VariablePattern (Ident "ctime" 333)) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "getSourceModificationTime" 0))) (Variable (QualIdent Nothing (Ident "progname" 331))))),(StmtBind (VariablePattern (Ident "ftime" 334)) (Apply (Variable (QualIdent (Just "Directory") (Ident "getModificationTime" 0))) (Paren (Apply (Variable (QualIdent (Just "FlatCurry") (Ident "flatCurryFileName" 0))) (Variable (QualIdent Nothing (Ident "progname" 331)))))))] (IfThenElse (InfixApply (Apply (Variable (QualIdent (Just "Time") (Ident "clockTimeToInt" 0))) (Variable (QualIdent Nothing (Ident "ctime" 333)))) (InfixOp (QualIdent (Just "Prelude") (Ident ">" 0))) (Apply (Variable (QualIdent (Just "Time") (Ident "clockTimeToInt" 0))) (Variable (QualIdent Nothing (Ident "ftime" 334))))) (InfixApply (Apply (Variable (QualIdent (Just "FlatCurry") (Ident "readFlatCurry" 0))) (Variable (QualIdent Nothing (Ident "progname" 331)))) (InfixOp (QualIdent (Just "Prelude") (Ident ">>=" 0))) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "processPrimitives" 0))) (Variable (QualIdent Nothing (Ident "progname" 331))))) (InfixApply (Apply (Variable (QualIdent (Just "FlatCurry") (Ident "readFlatCurryFile" 0))) (Paren (Apply (Variable (QualIdent (Just "FlatCurry") (Ident "flatCurryFileName" 0))) (Variable (QualIdent Nothing (Ident "progname" 331)))))) (InfixOp (QualIdent (Just "Prelude") (Ident ">>=" 0))) (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "processPrimitives" 0))) (Variable (QualIdent Nothing (Ident "progname" 331))))))))) []))]) ,(FunctionDecl (498,1) (Ident "getSourceModificationTime" 0) [(Equation (498,1) (FunLhs (Ident "getSourceModificationTime" 0) [(VariablePattern (Ident "progname" 335))]) (SimpleRhs (498,38) (Do [(StmtBind (VariablePattern (Ident "lexists" 337)) (Apply (Variable (QualIdent (Just "Directory") (Ident "doesFileExist" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "progname" 335))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Literal (String ".lcurry"))))))] (IfThenElse (Variable (QualIdent Nothing (Ident "lexists" 337))) (Apply (Variable (QualIdent (Just "Directory") (Ident "getModificationTime" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "progname" 335))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Literal (String ".lcurry"))))) (Apply (Variable (QualIdent (Just "Directory") (Ident "getModificationTime" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "progname" 335))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Literal (String ".curry"))))))) []))]) ,(FunctionDecl (505,1) (Ident "findSourceFileInLoadPath" 0) [(Equation (505,1) (FunLhs (Ident "findSourceFileInLoadPath" 0) [(VariablePattern (Ident "modname" 338))]) (SimpleRhs (505,36) (Do [(StmtBind (VariablePattern (Ident "loadpath" 340)) (Apply (Variable (QualIdent (Just "Distribution") (Ident "getLoadPathForFile" 0))) (Variable (QualIdent Nothing (Ident "modname" 338))))),(StmtBind (VariablePattern (Ident "mbfname" 341)) (Apply (Apply (Apply (Variable (QualIdent (Just "FileGoodies") (Ident "lookupFileInPath" 0))) (Paren (Apply (Variable (QualIdent (Just "FileGoodies") (Ident "baseName" 0))) (Variable (QualIdent Nothing (Ident "modname" 338)))))) (List [(Literal (String ".lcurry")),(Literal (String ".curry"))])) (Variable (QualIdent Nothing (Ident "loadpath" 340)))))] (Apply (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "maybe" 0))) (Paren (Apply (Variable (QualIdent (Just "Prelude") (Ident "error" 0))) (Paren (InfixApply (Literal (String "Curry file for module \"")) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (InfixApply (Variable (QualIdent Nothing (Ident "modname" 338))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Literal (String "\" not found!")))))))) (Paren (InfixApply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (InfixOp (QualIdent (Just "Prelude") (Ident "." 0))) (Variable (QualIdent (Just "FileGoodies") (Ident "stripSuffix" 0)))))) (Variable (QualIdent Nothing (Ident "mbfname" 341))))) []))]) ,(TypeSig (513,1) [(Ident "processPrimitives" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "String" 0)) []) (ArrowType (ConstructorType (QualIdent Nothing (Ident "Prog" 0)) []) (ConstructorType (QualIdent Nothing (Ident "IO" 0)) [(ConstructorType (QualIdent Nothing (Ident "Prog" 0)) [])])))) ,(FunctionDecl (514,1) (Ident "processPrimitives" 0) [(Equation (514,1) (FunLhs (Ident "processPrimitives" 0) [(VariablePattern (Ident "progname" 342)),(VariablePattern (Ident "prog" 342))]) (SimpleRhs (514,35) (Do [(StmtBind (VariablePattern (Ident "pspecs" 344)) (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "readPrimSpec" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "moduleName" 0))) (Variable (QualIdent Nothing (Ident "prog" 342)))))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "progname" 342))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (Literal (String ".prim_c2p"))))))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "mergePrimSpecIntoModule" 0))) (Variable (QualIdent Nothing (Ident "pspecs" 344)))) (Variable (QualIdent Nothing (Ident "prog" 342))))))) []))]) ,(FunctionDecl (518,1) (Ident "mergePrimSpecIntoModule" 0) [(Equation (518,1) (FunLhs (Ident "mergePrimSpecIntoModule" 0) [(VariablePattern (Ident "trans" 345)),(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Prog" 0)) [(VariablePattern (Ident "name" 345)),(VariablePattern (Ident "imps" 345)),(VariablePattern (Ident "types" 345)),(VariablePattern (Ident "funcs" 345)),(VariablePattern (Ident "ops" 345))]))]) (SimpleRhs (519,3) (Apply (Apply (Apply (Apply (Apply (Constructor (QualIdent (Just "FlatCurry") (Ident "Prog" 0))) (Variable (QualIdent Nothing (Ident "name" 345)))) (Variable (QualIdent Nothing (Ident "imps" 345)))) (Variable (QualIdent Nothing (Ident "types" 345)))) (Paren (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "concatMap" 0))) (Paren (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "mergePrimSpecIntoFunc" 0))) (Variable (QualIdent Nothing (Ident "trans" 345)))))) (Variable (QualIdent Nothing (Ident "funcs" 345)))))) (Variable (QualIdent Nothing (Ident "ops" 345)))) []))]) ,(FunctionDecl (521,1) (Ident "mergePrimSpecIntoFunc" 0) [(Equation (521,1) (FunLhs (Ident "mergePrimSpecIntoFunc" 0) [(VariablePattern (Ident "trans" 347)),(ParenPattern (ConstructorPattern (QualIdent (Just "FlatCurry") (Ident "Func" 0)) [(VariablePattern (Ident "name" 347)),(VariablePattern (Ident "ar" 347)),(VariablePattern (Ident "vis" 347)),(VariablePattern (Ident "tp" 347)),(VariablePattern (Ident "rule" 347))]))]) (SimpleRhs (522,2) (Let [(PatternDecl (522,6) (VariablePattern (Ident "fname" 349)) (SimpleRhs (522,14) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "lookup" 0))) (Variable (QualIdent Nothing (Ident "name" 347)))) (Variable (QualIdent Nothing (Ident "trans" 347)))) []))] (IfThenElse (InfixApply (Variable (QualIdent Nothing (Ident "fname" 349))) (InfixOp (QualIdent (Just "Prelude") (Ident "==" 0))) (Constructor (QualIdent (Just "Prelude") (Ident "Nothing" 0)))) (List [(Apply (Apply (Apply (Apply (Apply (Constructor (QualIdent (Just "FlatCurry") (Ident "Func" 0))) (Variable (QualIdent Nothing (Ident "name" 347)))) (Variable (QualIdent Nothing (Ident "ar" 347)))) (Variable (QualIdent Nothing (Ident "vis" 347)))) (Variable (QualIdent Nothing (Ident "tp" 347)))) (Variable (QualIdent Nothing (Ident "rule" 347))))]) (Let [(PatternDecl (525,11) (ConstructorPattern (QualIdent (Just "Prelude") (Ident "Just" 0)) [(TuplePattern [(VariablePattern (Ident "lib" 351)),(VariablePattern (Ident "entry" 351))])]) (SimpleRhs (525,30) (Variable (QualIdent Nothing (Ident "fname" 349))) []))] (IfThenElse (Apply (Variable (QualIdent (Just "Prelude") (Ident "null" 0))) (Variable (QualIdent Nothing (Ident "entry" 351)))) (List []) (List [(Apply (Apply (Apply (Apply (Apply (Constructor (QualIdent (Just "FlatCurry") (Ident "Func" 0))) (Variable (QualIdent Nothing (Ident "name" 347)))) (Variable (QualIdent Nothing (Ident "ar" 347)))) (Variable (QualIdent Nothing (Ident "vis" 347)))) (Variable (QualIdent Nothing (Ident "tp" 347)))) (Paren (Apply (Constructor (QualIdent (Just "FlatCurry") (Ident "External" 0))) (Paren (InfixApply (Variable (QualIdent Nothing (Ident "lib" 351))) (InfixOp (QualIdent (Just "Prelude") (Ident "++" 0))) (InfixApply (Literal (Char ' ')) (InfixConstr (QualIdent Nothing (Ident ":" 0))) (Variable (QualIdent Nothing (Ident "entry" 351)))))))))]))))) []))]) ,(TypeSig (531,1) [(Ident "readPrimSpec" 0)] (ArrowType (ConstructorType (QualIdent Nothing (Ident "String" 0)) []) (ArrowType (ConstructorType (QualIdent Nothing (Ident "String" 0)) []) (ConstructorType (QualIdent Nothing (Ident "IO" 0)) [(ListType (TupleType [(ConstructorType (QualIdent Nothing (Ident "QName" 0)) []),(ConstructorType (QualIdent Nothing (Ident "QName" 0)) [])]))])))) ,(FunctionDecl (532,1) (Ident "readPrimSpec" 0) [(Equation (532,1) (FunLhs (Ident "readPrimSpec" 0) [(VariablePattern (Ident "mod" 353)),(VariablePattern (Ident "xmlfilename" 353))]) (SimpleRhs (532,32) (Do [(StmtBind (VariablePattern (Ident "existsXml" 355)) (Apply (Variable (QualIdent (Just "Directory") (Ident "doesFileExist" 0))) (Variable (QualIdent Nothing (Ident "xmlfilename" 353)))))] (IfThenElse (Variable (QualIdent Nothing (Ident "existsXml" 355))) (Do [(StmtBind (VariablePattern (Ident "xmldoc" 356)) (Apply (Variable (QualIdent (Just "XML") (Ident "readXmlFile" 0))) (Variable (QualIdent Nothing (Ident "xmlfilename" 353)))))] (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (Paren (Apply (Apply (Variable (QualIdent (Just "CompactFlatCurry") (Ident "xml2primtrans" 0))) (Variable (QualIdent Nothing (Ident "mod" 353)))) (Variable (QualIdent Nothing (Ident "xmldoc" 356))))))) (Apply (Variable (QualIdent (Just "Prelude") (Ident "return" 0))) (List [])))) []))]) ,(FunctionDecl (540,1) (Ident "xml2primtrans" 0) [(Equation (540,1) (FunLhs (Ident "xml2primtrans" 0) [(VariablePattern (Ident "mod" 357)),(ParenPattern (ConstructorPattern (QualIdent (Just "XML") (Ident "XElem" 0)) [(LiteralPattern (String "primitives")),(ListPattern []),(VariablePattern (Ident "primitives" 357))]))]) (SimpleRhs (540,56) (Apply (Apply (Variable (QualIdent (Just "Prelude") (Ident "map" 0))) (Variable (QualIdent Nothing (Ident "xml2prim" 358)))) (Variable (QualIdent Nothing (Ident "primitives" 357)))) [(FunctionDecl (542,4) (Ident "xml2prim" 358) [(Equation (542,4) (FunLhs (Ident "xml2prim" 358) [(ParenPattern (ConstructorPattern (QualIdent (Just "XML") (Ident "XElem" 0)) [(LiteralPattern (String "primitive")),(ParenPattern (InfixPattern (TuplePattern [(LiteralPattern (String "name")),(VariablePattern (Ident "fname" 359))]) (QualIdent Nothing (Ident ":" 0)) (VariablePattern (Ident "_" 360)))),(ListPattern [(ConstructorPattern (QualIdent (Just "XML") (Ident "XElem" 0)) [(LiteralPattern (String "library")),(ListPattern []),(VariablePattern (Ident "xlib" 359))]),(ConstructorPattern (QualIdent (Just "XML") (Ident "XElem" 0)) [(LiteralPattern (String "entry")),(ListPattern []),(VariablePattern (Ident "xfun" 359))])])]))]) (SimpleRhs (544,8) (Tuple [(Tuple [(Variable (QualIdent Nothing (Ident "mod" 357))),(Variable (QualIdent Nothing (Ident "fname" 359)))]),(Tuple [(Apply (Variable (QualIdent (Just "XML") (Ident "textOfXml" 0))) (Variable (QualIdent Nothing (Ident "xlib" 359)))),(Apply (Variable (QualIdent (Just "XML") (Ident "textOfXml" 0))) (Variable (QualIdent Nothing (Ident "xfun" 359))))])]) [])),(Equation (545,4) (FunLhs (Ident "xml2prim" 358) [(ParenPattern (ConstructorPattern (QualIdent (Just "XML") (Ident "XElem" 0)) [(LiteralPattern (String "ignore")),(ParenPattern (InfixPattern (TuplePattern [(LiteralPattern (String "name")),(VariablePattern (Ident "fname" 362))]) (QualIdent Nothing (Ident ":" 0)) (VariablePattern (Ident "_" 363)))),(ListPattern [])]))]) (SimpleRhs (545,54) (Tuple [(Tuple [(Variable (QualIdent Nothing (Ident "mod" 357))),(Variable (QualIdent Nothing (Ident "fname" 362)))]),(Tuple [(Literal (String "")),(Literal (String ""))])]) []))])]))]) ]