Roundtrip test failed AST 1: Module (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (ModuleName "Rules") [OptionsPragma (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) Nothing "-w ",LanguagePragma (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "PatternGuards"]] Nothing (Just [EAbs (UnQual (Ident "RuleBase")),EVar (UnQual (Ident "emptyRuleBase")),EVar (UnQual (Ident "mkRuleBase")),EVar (UnQual (Ident "extendRuleBaseList")),EVar (UnQual (Ident "unionRuleBase")),EVar (UnQual (Ident "pprRuleBase")),EVar (UnQual (Ident "ruleCheckProgram")),EVar (UnQual (Ident "mkSpecInfo")),EVar (UnQual (Ident "extendSpecInfo")),EVar (UnQual (Ident "addSpecInfo")),EVar (UnQual (Ident "addIdSpecialisations")),EVar (UnQual (Ident "rulesOfBinds")),EVar (UnQual (Ident "getRules")),EVar (UnQual (Ident "pprRulesForUser")),EVar (UnQual (Ident "lookupRule")),EVar (UnQual (Ident "mkLocalRule")),EVar (UnQual (Ident "roughTopNames"))]) [ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "CoreSyn", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "OccurAnal", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "occurAnalyseExpr")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "CoreFVs", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "exprFreeVars"),IVar (Ident "exprsFreeVars"),IVar (Ident "bindFreeVars"),IVar (Ident "rulesFreeVars")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "CoreUtils", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "tcEqExprX"),IVar (Ident "exprType")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "PprCore", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "pprRules")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Type", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IAbs (Ident "Type"),IAbs (Ident "TvSubstEnv")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Coercion", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "coercionKind")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "TcType", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "tcSplitTyConApp_maybe")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "CoreTidy", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "tidyRules")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Id", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "IdInfo", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IThingWith (Ident "SpecInfo") [ConName (Ident "SpecInfo")]])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Var", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IAbs (Ident "Var")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "VarEnv", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "VarSet", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Name", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IAbs (Ident "Name"),IThingAll (Ident "NamedThing")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "NameEnv", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Unify", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "ruleMatchTyX"),IThingAll (Ident "MatchEnv")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "BasicTypes", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IAbs (Ident "Activation")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "StaticFlags", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "opt_PprStyle_Debug")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Outputable", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "FastString", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Maybes", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "OrdList", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Bag", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Util", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Data.List", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing}] [TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "mkLocalRule"] (TyFun (TyCon (UnQual (Ident "RuleName"))) (TyFun (TyCon (UnQual (Ident "Activation"))) (TyFun (TyCon (UnQual (Ident "Name"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreBndr")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyCon (UnQual (Ident "CoreRule"))))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "mkLocalRule") [PVar (Ident "name"),PVar (Ident "act"),PVar (Ident "fn"),PVar (Ident "bndrs"),PVar (Ident "args"),PVar (Ident "rhs")] Nothing (UnGuardedRhs (RecConstr (UnQual (Ident "Rule")) [FieldUpdate (UnQual (Ident "ru_name")) (Var (UnQual (Ident "name"))),FieldUpdate (UnQual (Ident "ru_fn")) (Var (UnQual (Ident "fn"))),FieldUpdate (UnQual (Ident "ru_act")) (Var (UnQual (Ident "act"))),FieldUpdate (UnQual (Ident "ru_bndrs")) (Var (UnQual (Ident "bndrs"))),FieldUpdate (UnQual (Ident "ru_args")) (Var (UnQual (Ident "args"))),FieldUpdate (UnQual (Ident "ru_rhs")) (Var (UnQual (Ident "rhs"))),FieldUpdate (UnQual (Ident "ru_rough")) (App (Var (UnQual (Ident "roughTopNames"))) (Var (UnQual (Ident "args")))),FieldUpdate (UnQual (Ident "ru_local")) (Con (UnQual (Ident "True")))])) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "roughTopNames"] (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyList (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopNames") [PVar (Ident "args")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "roughTopName")))) (Var (UnQual (Ident "args"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "roughTopName"] (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopName") [PParen (PApp (UnQual (Ident "Type")) [PVar (Ident "ty")])] Nothing (UnGuardedRhs (Case (App (Var (UnQual (Ident "tcSplitTyConApp_maybe"))) (Var (UnQual (Ident "ty")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PTuple Boxed [PVar (Ident "tc"),PWildCard]]) (UnGuardedAlt (App (Con (UnQual (Ident "Just"))) (Paren (App (Var (UnQual (Ident "getName"))) (Var (UnQual (Ident "tc"))))))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls [])])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopName") [PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f"),PVar (Ident "a")])] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "roughTopName"))) (Var (UnQual (Ident "f"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopName") [PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "f")])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isGlobalId"))) (Var (UnQual (Ident "f"))))] (App (Con (UnQual (Ident "Just"))) (Paren (App (Var (UnQual (Ident "idName"))) (Var (UnQual (Ident "f")))))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Con (UnQual (Ident "Nothing")))]) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopName") [PVar (Ident "other")] Nothing (UnGuardedRhs (Con (UnQual (Ident "Nothing")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCantMatch"] (TyFun (TyList (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name"))))) (TyFun (TyList (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name"))))) (TyCon (UnQual (Ident "Bool"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCantMatch") [PParen (PInfixApp (PApp (UnQual (Ident "Just")) [PVar (Ident "n1")]) (Special Cons) (PVar (Ident "ts"))),PParen (PInfixApp (PApp (UnQual (Ident "Just")) [PVar (Ident "n2")]) (Special Cons) (PVar (Ident "as")))] Nothing (UnGuardedRhs (InfixApp (InfixApp (Var (UnQual (Ident "n1"))) (QVarOp (UnQual (Symbol "/="))) (Var (UnQual (Ident "n2")))) (QVarOp (UnQual (Symbol "||"))) (App (App (Var (UnQual (Ident "ruleCantMatch"))) (Var (UnQual (Ident "ts")))) (Var (UnQual (Ident "as")))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCantMatch") [PParen (PInfixApp (PVar (Ident "t")) (Special Cons) (PVar (Ident "ts"))),PParen (PInfixApp (PVar (Ident "a")) (Special Cons) (PVar (Ident "as")))] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCantMatch"))) (Var (UnQual (Ident "ts")))) (Var (UnQual (Ident "as"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCantMatch") [PVar (Ident "ts"),PVar (Ident "as")] Nothing (UnGuardedRhs (Con (UnQual (Ident "False")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "pprRulesForUser"] (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "SDoc")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "pprRulesForUser") [PVar (Ident "rules")] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "withPprStyle"))) (Var (UnQual (Ident "defaultUserStyle")))) (QVarOp (UnQual (Symbol "$"))) (InfixApp (Var (UnQual (Ident "pprRules"))) (QVarOp (UnQual (Symbol "$"))) (InfixApp (App (Var (UnQual (Ident "sortLe"))) (Var (UnQual (Ident "le_rule")))) (QVarOp (UnQual (Symbol "$"))) (App (App (Var (UnQual (Ident "tidyRules"))) (Var (UnQual (Ident "emptyTidyEnv")))) (Var (UnQual (Ident "rules")))))))) (BDecls [FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "le_rule") [PVar (Ident "r1"),PVar (Ident "r2")] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "ru_name"))) (Var (UnQual (Ident "r1")))) (QVarOp (UnQual (Symbol "<="))) (App (Var (UnQual (Ident "ru_name"))) (Var (UnQual (Ident "r2")))))) (BDecls [])]])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "mkSpecInfo"] (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "SpecInfo")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "mkSpecInfo") [PVar (Ident "rules")] Nothing (UnGuardedRhs (App (App (Con (UnQual (Ident "SpecInfo"))) (Var (UnQual (Ident "rules")))) (Paren (App (Var (UnQual (Ident "rulesFreeVars"))) (Var (UnQual (Ident "rules"))))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "extendSpecInfo"] (TyFun (TyCon (UnQual (Ident "SpecInfo"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "SpecInfo"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "extendSpecInfo") [PParen (PApp (UnQual (Ident "SpecInfo")) [PVar (Ident "rs1"),PVar (Ident "fvs1")]),PVar (Ident "rs2")] Nothing (UnGuardedRhs (App (App (Con (UnQual (Ident "SpecInfo"))) (Paren (InfixApp (Var (UnQual (Ident "rs2"))) (QVarOp (UnQual (Symbol "++"))) (Var (UnQual (Ident "rs1")))))) (Paren (InfixApp (App (Var (UnQual (Ident "rulesFreeVars"))) (Var (UnQual (Ident "rs2")))) (QVarOp (UnQual (Ident "unionVarSet"))) (Var (UnQual (Ident "fvs1"))))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "addSpecInfo"] (TyFun (TyCon (UnQual (Ident "SpecInfo"))) (TyFun (TyCon (UnQual (Ident "SpecInfo"))) (TyCon (UnQual (Ident "SpecInfo"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "addSpecInfo") [PParen (PApp (UnQual (Ident "SpecInfo")) [PVar (Ident "rs1"),PVar (Ident "fvs1")]),PParen (PApp (UnQual (Ident "SpecInfo")) [PVar (Ident "rs2"),PVar (Ident "fvs2")])] Nothing (UnGuardedRhs (App (App (Con (UnQual (Ident "SpecInfo"))) (Paren (InfixApp (Var (UnQual (Ident "rs1"))) (QVarOp (UnQual (Symbol "++"))) (Var (UnQual (Ident "rs2")))))) (Paren (InfixApp (Var (UnQual (Ident "fvs1"))) (QVarOp (UnQual (Ident "unionVarSet"))) (Var (UnQual (Ident "fvs2"))))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "addIdSpecialisations"] (TyFun (TyCon (UnQual (Ident "Id"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "Id"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "addIdSpecialisations") [PVar (Ident "id"),PList []] Nothing (UnGuardedRhs (Var (UnQual (Ident "id")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "addIdSpecialisations") [PVar (Ident "id"),PVar (Ident "rules")] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "setIdSpecialisation"))) (Var (UnQual (Ident "id")))) (QVarOp (UnQual (Symbol "$"))) (App (App (Var (UnQual (Ident "extendSpecInfo"))) (Paren (App (Var (UnQual (Ident "idSpecialisation"))) (Var (UnQual (Ident "id")))))) (Var (UnQual (Ident "rules")))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "rulesOfBinds"] (TyFun (TyList (TyCon (UnQual (Ident "CoreBind")))) (TyList (TyCon (UnQual (Ident "CoreRule"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rulesOfBinds") [PVar (Ident "binds")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "concatMap"))) (Paren (InfixApp (App (Var (UnQual (Ident "concatMap"))) (Var (UnQual (Ident "idCoreRules")))) (QVarOp (UnQual (Symbol "."))) (Var (UnQual (Ident "bindersOf")))))) (Var (UnQual (Ident "binds"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "getRules"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyCon (UnQual (Ident "Id"))) (TyList (TyCon (UnQual (Ident "CoreRule")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "getRules") [PVar (Ident "rule_base"),PVar (Ident "fn")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isLocalId"))) (Var (UnQual (Ident "fn"))))] (App (Var (UnQual (Ident "idCoreRules"))) (Var (UnQual (Ident "fn")))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (InfixApp (App (App (App (Con (UnQual (Ident "WARN"))) (Tuple Boxed [InfixApp (App (Var (UnQual (Ident "not"))) (Paren (App (Var (UnQual (Ident "isPrimOpId"))) (Var (UnQual (Ident "fn")))))) (QVarOp (UnQual (Symbol "&&"))) (App (Var (UnQual (Ident "notNull"))) (Paren (App (Var (UnQual (Ident "idCoreRules"))) (Var (UnQual (Ident "fn")))))),InfixApp (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "fn")))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "ppr"))) (Paren (App (Var (UnQual (Ident "idCoreRules"))) (Var (UnQual (Ident "fn"))))))])) (Var (UnQual (Ident "idCoreRules")))) (Var (UnQual (Ident "fn")))) (QVarOp (UnQual (Symbol "++"))) (Paren (InfixApp (App (App (Var (UnQual (Ident "lookupNameEnv"))) (Var (UnQual (Ident "rule_base")))) (Paren (App (Var (UnQual (Ident "idName"))) (Var (UnQual (Ident "fn")))))) (QVarOp (UnQual (Ident "orElse"))) (List []))))]) (BDecls [])],TypeDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "RuleBase") [] (TyApp (TyCon (UnQual (Ident "NameEnv"))) (TyList (TyCon (UnQual (Ident "CoreRule"))))),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "emptyRuleBase")) Nothing (UnGuardedRhs (Var (UnQual (Ident "emptyNameEnv")))) (BDecls []),TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "mkRuleBase"] (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "RuleBase")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "mkRuleBase") [PVar (Ident "rules")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "extendRuleBaseList"))) (Var (UnQual (Ident "emptyRuleBase")))) (Var (UnQual (Ident "rules"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "extendRuleBaseList"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "RuleBase"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "extendRuleBaseList") [PVar (Ident "rule_base"),PVar (Ident "new_guys")] Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "foldl"))) (Var (UnQual (Ident "extendRuleBase")))) (Var (UnQual (Ident "rule_base")))) (Var (UnQual (Ident "new_guys"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "unionRuleBase"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyCon (UnQual (Ident "RuleBase"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "unionRuleBase") [PVar (Ident "rb1"),PVar (Ident "rb2")] Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "plusNameEnv_C"))) (Var (UnQual (Symbol "++")))) (Var (UnQual (Ident "rb1")))) (Var (UnQual (Ident "rb2"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "extendRuleBase"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyCon (UnQual (Ident "CoreRule"))) (TyCon (UnQual (Ident "RuleBase"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "extendRuleBase") [PVar (Ident "rule_base"),PVar (Ident "rule")] Nothing (UnGuardedRhs (App (App (App (App (App (Var (UnQual (Ident "extendNameEnv_Acc"))) (Con (Special Cons))) (Var (UnQual (Ident "singleton")))) (Var (UnQual (Ident "rule_base")))) (Paren (App (Var (UnQual (Ident "ruleIdName"))) (Var (UnQual (Ident "rule")))))) (Var (UnQual (Ident "rule"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "pprRuleBase"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyCon (UnQual (Ident "SDoc")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "pprRuleBase") [PVar (Ident "rules")] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "vcat"))) (ListComp (App (Var (UnQual (Ident "pprRules"))) (Paren (App (App (Var (UnQual (Ident "tidyRules"))) (Var (UnQual (Ident "emptyTidyEnv")))) (Var (UnQual (Ident "rs")))))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rs")) (App (Var (UnQual (Ident "nameEnvElts"))) (Var (UnQual (Ident "rules")))))]))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "lookupRule"] (TyFun (TyParen (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))) (TyFun (TyCon (UnQual (Ident "InScopeSet"))) (TyFun (TyCon (UnQual (Ident "Id"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))]))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "lookupRule") [PVar (Ident "is_active"),PVar (Ident "in_scope"),PVar (Ident "fn"),PVar (Ident "args"),PVar (Ident "rules")] Nothing (UnGuardedRhs (Case (App (App (Var (UnQual (Ident "go"))) (List [])) (Var (UnQual (Ident "rules")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PList []) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PParen (PInfixApp (PVar (Ident "m")) (Special Cons) (PVar (Ident "ms")))) (UnGuardedAlt (App (Con (UnQual (Ident "Just"))) (Paren (App (App (App (Var (UnQual (Ident "findBest"))) (Tuple Boxed [Var (UnQual (Ident "fn")),Var (UnQual (Ident "args"))])) (Var (UnQual (Ident "m")))) (Var (UnQual (Ident "ms"))))))) (BDecls [])])) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rough_args")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "roughTopName")))) (Var (UnQual (Ident "args"))))) (BDecls []),TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "go"] (TyFun (TyList (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))])) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyList (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))])))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "ms"),PList []] Nothing (UnGuardedRhs (Var (UnQual (Ident "ms")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "ms"),PParen (PInfixApp (PVar (Ident "r")) (Special Cons) (PVar (Ident "rs")))] Nothing (UnGuardedRhs (Case (Paren (App (App (App (App (App (Var (UnQual (Ident "matchRule"))) (Var (UnQual (Ident "is_active")))) (Var (UnQual (Ident "in_scope")))) (Var (UnQual (Ident "args")))) (Var (UnQual (Ident "rough_args")))) (Var (UnQual (Ident "r"))))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "e")]) (UnGuardedAlt (App (App (Var (UnQual (Ident "go"))) (Paren (InfixApp (Tuple Boxed [Var (UnQual (Ident "r")),Var (UnQual (Ident "e"))]) (QConOp (Special Cons)) (Var (UnQual (Ident "ms")))))) (Var (UnQual (Ident "rs"))))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (App (App (Var (UnQual (Ident "go"))) (Var (UnQual (Ident "ms")))) (Var (UnQual (Ident "rs"))))) (BDecls [])])) (BDecls [])]])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "findBest"] (TyFun (TyTuple Boxed [TyCon (UnQual (Ident "Id")),TyList (TyCon (UnQual (Ident "CoreExpr")))]) (TyFun (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))]) (TyFun (TyList (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))])) (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))])))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "findBest") [PVar (Ident "target"),PTuple Boxed [PVar (Ident "rule"),PVar (Ident "ans")],PList []] Nothing (UnGuardedRhs (Tuple Boxed [Var (UnQual (Ident "rule")),Var (UnQual (Ident "ans"))])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "findBest") [PVar (Ident "target"),PTuple Boxed [PVar (Ident "rule1"),PVar (Ident "ans1")],PParen (PInfixApp (PTuple Boxed [PVar (Ident "rule2"),PVar (Ident "ans2")]) (Special Cons) (PVar (Ident "prs")))] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "rule1"))) (QVarOp (UnQual (Ident "isMoreSpecific"))) (Var (UnQual (Ident "rule2"))))] (App (App (App (Var (UnQual (Ident "findBest"))) (Var (UnQual (Ident "target")))) (Tuple Boxed [Var (UnQual (Ident "rule1")),Var (UnQual (Ident "ans1"))])) (Var (UnQual (Ident "prs")))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "rule2"))) (QVarOp (UnQual (Ident "isMoreSpecific"))) (Var (UnQual (Ident "rule1"))))] (App (App (App (Var (UnQual (Ident "findBest"))) (Var (UnQual (Ident "target")))) (Tuple Boxed [Var (UnQual (Ident "rule2")),Var (UnQual (Ident "ans2"))])) (Var (UnQual (Ident "prs")))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "debugIsOn")))] (Let (BDecls [FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "pp_rule") [PVar (Ident "rule")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "opt_PprStyle_Debug")))] (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "rule")))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (App (Var (UnQual (Ident "doubleQuotes"))) (Paren (App (Var (UnQual (Ident "ftext"))) (Paren (App (Var (UnQual (Ident "ru_name"))) (Var (UnQual (Ident "rule"))))))))]) (BDecls [])]]) (InfixApp (App (App (Var (UnQual (Ident "pprTrace"))) (Lit (String "Rules.findBest: rule overlap (Rule 1 wins)"))) (Paren (App (Var (UnQual (Ident "vcat"))) (List [If (Var (UnQual (Ident "opt_PprStyle_Debug"))) (InfixApp (InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Expression to match:"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "fn"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "sep"))) (Paren (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "ppr")))) (Var (UnQual (Ident "args"))))))) (Var (UnQual (Ident "empty"))),InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Rule 1:"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "pp_rule"))) (Var (UnQual (Ident "rule1")))),InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Rule 2:"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "pp_rule"))) (Var (UnQual (Ident "rule2"))))])))) (QVarOp (UnQual (Symbol "$"))) (App (App (App (Var (UnQual (Ident "findBest"))) (Var (UnQual (Ident "target")))) (Tuple Boxed [Var (UnQual (Ident "rule1")),Var (UnQual (Ident "ans1"))])) (Var (UnQual (Ident "prs")))))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (App (App (App (Var (UnQual (Ident "findBest"))) (Var (UnQual (Ident "target")))) (Tuple Boxed [Var (UnQual (Ident "rule1")),Var (UnQual (Ident "ans1"))])) (Var (UnQual (Ident "prs"))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "fn"),PVar (Ident "args")]) Nothing (UnGuardedRhs (Var (UnQual (Ident "target")))) (BDecls [])])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "isMoreSpecific"] (TyFun (TyCon (UnQual (Ident "CoreRule"))) (TyFun (TyCon (UnQual (Ident "CoreRule"))) (TyCon (UnQual (Ident "Bool"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "isMoreSpecific") [PParen (PRec (UnQual (Ident "BuiltinRule")) []),PVar (Ident "r2")] Nothing (UnGuardedRhs (Con (UnQual (Ident "True")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "isMoreSpecific") [PVar (Ident "r1"),PParen (PRec (UnQual (Ident "BuiltinRule")) [])] Nothing (UnGuardedRhs (Con (UnQual (Ident "False")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "isMoreSpecific") [PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_bndrs")) (PVar (Ident "bndrs1")),PFieldPat (UnQual (Ident "ru_args")) (PVar (Ident "args1"))]),PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_bndrs")) (PVar (Ident "bndrs2")),PFieldPat (UnQual (Ident "ru_args")) (PVar (Ident "args2"))])] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "isJust"))) (Paren (App (App (App (App (Var (UnQual (Ident "matchN"))) (Var (UnQual (Ident "in_scope")))) (Var (UnQual (Ident "bndrs2")))) (Var (UnQual (Ident "args2")))) (Var (UnQual (Ident "args1"))))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "in_scope")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "mkInScopeSet"))) (Paren (App (Var (UnQual (Ident "mkVarSet"))) (Var (UnQual (Ident "bndrs1"))))))) (BDecls [])])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "noBlackList"] (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "noBlackList") [PVar (Ident "act")] Nothing (UnGuardedRhs (Con (UnQual (Ident "False")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "matchRule"] (TyFun (TyParen (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))) (TyFun (TyCon (UnQual (Ident "InScopeSet"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyList (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name"))))) (TyFun (TyCon (UnQual (Ident "CoreRule"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "CoreExpr"))))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "matchRule") [PVar (Ident "is_active"),PVar (Ident "in_scope"),PVar (Ident "args"),PVar (Ident "rough_args"),PParen (PRec (UnQual (Ident "BuiltinRule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "name")),PFieldPat (UnQual (Ident "ru_try")) (PVar (Ident "match_fn"))])] Nothing (UnGuardedRhs (Case (App (Var (UnQual (Ident "match_fn"))) (Var (UnQual (Ident "args")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "expr")]) (UnGuardedAlt (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "expr"))))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls [])])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "matchRule") [PVar (Ident "is_active"),PVar (Ident "in_scope"),PVar (Ident "args"),PVar (Ident "rough_args"),PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "rn")),PFieldPat (UnQual (Ident "ru_act")) (PVar (Ident "act")),PFieldPat (UnQual (Ident "ru_rough")) (PVar (Ident "tpl_tops")),PFieldPat (UnQual (Ident "ru_bndrs")) (PVar (Ident "tpl_vars")),PFieldPat (UnQual (Ident "ru_args")) (PVar (Ident "tpl_args")),PFieldPat (UnQual (Ident "ru_rhs")) (PVar (Ident "rhs"))])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "not"))) (Paren (App (Var (UnQual (Ident "is_active"))) (Var (UnQual (Ident "act"))))))] (Con (UnQual (Ident "Nothing"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (App (Var (UnQual (Ident "ruleCantMatch"))) (Var (UnQual (Ident "tpl_tops")))) (Var (UnQual (Ident "rough_args"))))] (Con (UnQual (Ident "Nothing"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Case (App (App (App (App (Var (UnQual (Ident "matchN"))) (Var (UnQual (Ident "in_scope")))) (Var (UnQual (Ident "tpl_vars")))) (Var (UnQual (Ident "tpl_args")))) (Var (UnQual (Ident "args")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PTuple Boxed [PVar (Ident "binds"),PVar (Ident "tpl_vals")]]) (UnGuardedAlt (App (Con (UnQual (Ident "Just"))) (Paren (InfixApp (App (Var (UnQual (Ident "mkLets"))) (Var (UnQual (Ident "binds")))) (QVarOp (UnQual (Symbol "$"))) (InfixApp (Var (UnQual (Ident "rule_fn"))) (QVarOp (UnQual (Ident "mkApps"))) (Var (UnQual (Ident "tpl_vals")))))))) (BDecls [])])]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rule_fn")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "occurAnalyseExpr"))) (Paren (App (App (Var (UnQual (Ident "mkLams"))) (Var (UnQual (Ident "tpl_vars")))) (Var (UnQual (Ident "rhs"))))))) (BDecls [])])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "matchN"] (TyFun (TyCon (UnQual (Ident "InScopeSet"))) (TyFun (TyList (TyCon (UnQual (Ident "Var")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyTuple Boxed [TyList (TyCon (UnQual (Ident "CoreBind"))),TyList (TyCon (UnQual (Ident "CoreExpr")))])))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "matchN") [PVar (Ident "in_scope"),PVar (Ident "tmpl_vars"),PVar (Ident "tmpl_es"),PVar (Ident "target_es")] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "binds")]) (App (App (App (App (Var (UnQual (Ident "go"))) (Var (UnQual (Ident "init_menv")))) (Var (UnQual (Ident "emptySubstEnv")))) (Var (UnQual (Ident "tmpl_es")))) (Var (UnQual (Ident "target_es")))),Qualifier (App (Var (UnQual (Ident "return"))) (Tuple Boxed [App (Var (UnQual (Ident "fromOL"))) (Var (UnQual (Ident "binds"))),App (App (Var (UnQual (Ident "map"))) (Paren (App (App (Var (UnQual (Ident "lookup_tmpl"))) (Var (UnQual (Ident "tv_subst")))) (Var (UnQual (Ident "id_subst")))))) (Var (UnQual (Ident "tmpl_vars'")))]))])) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "init_rn_env"),PVar (Ident "tmpl_vars'")]) Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "mapAccumL"))) (Var (UnQual (Ident "rnBndrL")))) (Paren (App (Var (UnQual (Ident "mkRnEnv2"))) (Var (UnQual (Ident "in_scope")))))) (Var (UnQual (Ident "tmpl_vars"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "init_menv")) Nothing (UnGuardedRhs (RecConstr (UnQual (Ident "ME")) [FieldUpdate (UnQual (Ident "me_tmpls")) (App (Var (UnQual (Ident "mkVarSet"))) (Var (UnQual (Ident "tmpl_vars'")))),FieldUpdate (UnQual (Ident "me_env")) (Var (UnQual (Ident "init_rn_env")))])) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "menv"),PVar (Ident "subst"),PList [],PVar (Ident "es")] Nothing (UnGuardedRhs (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "ts"),PList []] Nothing (UnGuardedRhs (Con (UnQual (Ident "Nothing")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PInfixApp (PVar (Ident "t")) (Special Cons) (PVar (Ident "ts"))),PParen (PInfixApp (PVar (Ident "e")) (Special Cons) (PVar (Ident "es")))] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst1")) (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "t")))) (Var (UnQual (Ident "e")))),Qualifier (App (App (App (App (Var (UnQual (Ident "go"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst1")))) (Var (UnQual (Ident "ts")))) (Var (UnQual (Ident "es"))))])) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "lookup_tmpl"] (TyFun (TyCon (UnQual (Ident "TvSubstEnv"))) (TyFun (TyCon (UnQual (Ident "IdSubstEnv"))) (TyFun (TyCon (UnQual (Ident "Var"))) (TyCon (UnQual (Ident "CoreExpr")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "lookup_tmpl") [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "tmpl_var'")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isTyVar"))) (Var (UnQual (Ident "tmpl_var'"))))] (Case (App (App (Var (UnQual (Ident "lookupVarEnv"))) (Var (UnQual (Ident "tv_subst")))) (Var (UnQual (Ident "tmpl_var'")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "ty")]) (UnGuardedAlt (App (Con (UnQual (Ident "Type"))) (Var (UnQual (Ident "ty"))))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (App (Var (UnQual (Ident "unbound"))) (Var (UnQual (Ident "tmpl_var'"))))) (BDecls [])]),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Case (App (App (Var (UnQual (Ident "lookupVarEnv"))) (Var (UnQual (Ident "id_subst")))) (Var (UnQual (Ident "tmpl_var'")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "e")]) (UnGuardedAlt (Var (UnQual (Ident "e")))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "other")) (UnGuardedAlt (App (Var (UnQual (Ident "unbound"))) (Var (UnQual (Ident "tmpl_var'"))))) (BDecls [])])]) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "unbound") [PVar (Ident "var")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "pprPanic"))) (Lit (String "Template variable unbound in rewrite rule"))) (Paren (InfixApp (InfixApp (InfixApp (InfixApp (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "var")))) (QVarOp (UnQual (Symbol "$$"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "tmpl_vars"))))) (QVarOp (UnQual (Symbol "$$"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "tmpl_vars'"))))) (QVarOp (UnQual (Symbol "$$"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "tmpl_es"))))) (QVarOp (UnQual (Symbol "$$"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "target_es")))))))) (BDecls [])]])],TypeDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "SubstEnv") [] (TyTuple Boxed [TyCon (UnQual (Ident "TvSubstEnv")),TyCon (UnQual (Ident "IdSubstEnv")),TyApp (TyCon (UnQual (Ident "OrdList"))) (TyCon (UnQual (Ident "CoreBind")))]),TypeDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "IdSubstEnv") [] (TyApp (TyCon (UnQual (Ident "IdEnv"))) (TyCon (UnQual (Ident "CoreExpr")))),TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "emptySubstEnv"] (TyCon (UnQual (Ident "SubstEnv"))),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "emptySubstEnv")) Nothing (UnGuardedRhs (Tuple Boxed [Var (UnQual (Ident "emptyVarEnv")),Var (UnQual (Ident "emptyVarEnv")),Var (UnQual (Ident "nilOL"))])) (BDecls []),TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "match"] (TyFun (TyCon (UnQual (Ident "MatchEnv"))) (TyFun (TyCon (UnQual (Ident "SubstEnv"))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "SubstEnv")))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "v1")]),PVar (Ident "e2")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "subst")]) (App (App (App (App (Var (UnQual (Ident "match_var"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "v1")))) (Var (UnQual (Ident "e2"))))] (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst"))))]) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "e1"),PParen (PApp (UnQual (Ident "Note")) [PVar (Ident "n"),PVar (Ident "e2")])] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "e1"),PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "v2")])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isCheapUnfolding"))) (Var (UnQual (Ident "unfolding"))))] (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "e1")))) (Paren (App (Var (UnQual (Ident "unfoldingTemplate"))) (Var (UnQual (Ident "unfolding"))))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rn_env")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "unfolding")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "idUnfolding"))) (Paren (App (App (Var (UnQual (Ident "lookupRnInScope"))) (Var (UnQual (Ident "rn_env")))) (Paren (App (App (Var (UnQual (Ident "rnOccR"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "v2"))))))))) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PAsPat (Ident "subst") (PTuple Boxed [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "binds")]),PVar (Ident "e1"),PParen (PApp (UnQual (Ident "Let")) [PVar (Ident "bind"),PVar (Ident "e2")])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (App (Var (UnQual (Ident "all"))) (Var (UnQual (Ident "freshly_bound")))) (Var (UnQual (Ident "bndrs")))),Qualifier (App (Var (UnQual (Ident "not"))) (Paren (App (App (Var (UnQual (Ident "any"))) (Var (UnQual (Ident "locally_bound")))) (Var (UnQual (Ident "bind_fvs"))))))] (App (App (App (App (Var (UnQual (Ident "match"))) (Paren (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (Var (UnQual (Ident "rn_env'")))]))) (Tuple Boxed [Var (UnQual (Ident "tv_subst")),Var (UnQual (Ident "id_subst")),InfixApp (Var (UnQual (Ident "binds"))) (QVarOp (UnQual (Ident "snocOL"))) (Var (UnQual (Ident "bind'")))])) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2'"))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rn_env")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "bndrs")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "bindersOf"))) (Var (UnQual (Ident "bind"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "bind_fvs")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "varSetElems"))) (Paren (App (Var (UnQual (Ident "bindFreeVars"))) (Var (UnQual (Ident "bind"))))))) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "locally_bound") [PVar (Ident "x")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "inRnEnvR"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "x"))))) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "freshly_bound") [PVar (Ident "x")] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "not"))) (Paren (InfixApp (Var (UnQual (Ident "x"))) (QVarOp (UnQual (Ident "rnInScope"))) (Var (UnQual (Ident "rn_env"))))))) (BDecls [])],PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "bind'")) Nothing (UnGuardedRhs (Var (UnQual (Ident "bind")))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "e2'")) Nothing (UnGuardedRhs (Var (UnQual (Ident "e2")))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rn_env'")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "extendRnInScopeList"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "bndrs"))))) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Lit")) [PVar (Ident "lit1")]),PParen (PApp (UnQual (Ident "Lit")) [PVar (Ident "lit2")])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "lit1"))) (QVarOp (UnQual (Symbol "=="))) (Var (UnQual (Ident "lit2"))))] (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst"))))]) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f1"),PVar (Ident "a1")]),PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f2"),PVar (Ident "a2")])] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst'")) (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "f1")))) (Var (UnQual (Ident "f2")))),Qualifier (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst'")))) (Var (UnQual (Ident "a1")))) (Var (UnQual (Ident "a2"))))])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "x1"),PVar (Ident "e1")]),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "x2"),PVar (Ident "e2")])] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2"))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (App (App (App (Var (UnQual (Ident "rnBndr2"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "x1")))) (Var (UnQual (Ident "x2"))))])) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "x1"),PVar (Ident "e1")]),PVar (Ident "e2")] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "e1")))) (Paren (App (App (Con (UnQual (Ident "App"))) (Var (UnQual (Ident "e2")))) (Paren (App (Var (UnQual (Ident "varToCoreExpr"))) (Var (UnQual (Ident "new_x"))))))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "rn_env'"),PVar (Ident "new_x")]) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "rnBndrL"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "x1"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (Var (UnQual (Ident "rn_env'")))])) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "e1"),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "x2"),PVar (Ident "e2")])] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst")))) (Paren (App (App (Con (UnQual (Ident "App"))) (Var (UnQual (Ident "e1")))) (Paren (App (Var (UnQual (Ident "varToCoreExpr"))) (Var (UnQual (Ident "new_x")))))))) (Var (UnQual (Ident "e2"))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "rn_env'"),PVar (Ident "new_x")]) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "rnBndrR"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "x2"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (Var (UnQual (Ident "rn_env'")))])) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Case")) [PVar (Ident "e1"),PVar (Ident "x1"),PVar (Ident "ty1"),PVar (Ident "alts1")]),PParen (PApp (UnQual (Ident "Case")) [PVar (Ident "e2"),PVar (Ident "x2"),PVar (Ident "ty2"),PVar (Ident "alts2")])] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst1")) (App (App (App (App (Var (UnQual (Ident "match_ty"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "ty1")))) (Var (UnQual (Ident "ty2")))),Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst2")) (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst1")))) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2")))),LetStmt (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (App (App (App (Var (UnQual (Ident "rnBndr2"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "x1")))) (Var (UnQual (Ident "x2"))))])) (BDecls [])]),Qualifier (App (App (App (App (Var (UnQual (Ident "match_alts"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst2")))) (Var (UnQual (Ident "alts1")))) (Var (UnQual (Ident "alts2"))))])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Type")) [PVar (Ident "ty1")]),PParen (PApp (UnQual (Ident "Type")) [PVar (Ident "ty2")])] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match_ty"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "ty1")))) (Var (UnQual (Ident "ty2"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Cast")) [PVar (Ident "e1"),PVar (Ident "co1")]),PParen (PApp (UnQual (Ident "Cast")) [PVar (Ident "e2"),PVar (Ident "co2")])] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst1")) (App (App (App (App (Var (UnQual (Ident "match_ty"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "co1")))) (Var (UnQual (Ident "co2")))),Qualifier (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst1")))) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2"))))])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "e1"),PVar (Ident "e2")] Nothing (UnGuardedRhs (Con (UnQual (Ident "Nothing")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "match_var"] (TyFun (TyCon (UnQual (Ident "MatchEnv"))) (TyFun (TyCon (UnQual (Ident "SubstEnv"))) (TyFun (TyCon (UnQual (Ident "Var"))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "SubstEnv")))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_var") [PVar (Ident "menv"),PAsPat (Ident "subst") (PTuple Boxed [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "binds")]),PVar (Ident "v1"),PVar (Ident "e2")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "v1'"))) (QVarOp (UnQual (Ident "elemVarSet"))) (App (Var (UnQual (Ident "me_tmpls"))) (Var (UnQual (Ident "menv")))))] (Case (App (App (Var (UnQual (Ident "lookupVarEnv"))) (Var (UnQual (Ident "id_subst")))) (Var (UnQual (Ident "v1'")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (GuardedAlts [GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (App (Var (UnQual (Ident "any"))) (Paren (App (Var (UnQual (Ident "inRnEnvR"))) (Var (UnQual (Ident "rn_env")))))) (Paren (App (Var (UnQual (Ident "varSetElems"))) (Paren (App (Var (UnQual (Ident "exprFreeVars"))) (Var (UnQual (Ident "e2"))))))))] (Con (UnQual (Ident "Nothing"))),GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "tv_subst'")) (App (App (App (App (Var (Qual (ModuleName "Unify") (Ident "ruleMatchTyX"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "tv_subst")))) (Paren (App (Var (UnQual (Ident "idType"))) (Var (UnQual (Ident "v1'")))))) (Paren (App (Var (UnQual (Ident "exprType"))) (Var (UnQual (Ident "e2")))))),Qualifier (App (Var (UnQual (Ident "return"))) (Tuple Boxed [Var (UnQual (Ident "tv_subst'")),App (App (App (Var (UnQual (Ident "extendVarEnv"))) (Var (UnQual (Ident "id_subst")))) (Var (UnQual (Ident "v1'")))) (Var (UnQual (Ident "e2"))),Var (UnQual (Ident "binds"))]))])]) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "e1'")]) (GuardedAlts [GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (App (App (Var (UnQual (Ident "tcEqExprX"))) (Paren (App (Var (UnQual (Ident "nukeRnEnvL"))) (Var (UnQual (Ident "rn_env")))))) (Var (UnQual (Ident "e1'")))) (Var (UnQual (Ident "e2"))))] (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst")))),GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Con (UnQual (Ident "Nothing")))]) (BDecls [])]),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Case (Var (UnQual (Ident "e2"))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Var")) [PVar (Ident "v2")]) (GuardedAlts [GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "v1'"))) (QVarOp (UnQual (Symbol "=="))) (App (App (Var (UnQual (Ident "rnOccR"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "v2")))))] (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst"))))]) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "other")) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls [])])]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rn_env")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "v1'")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "rnOccL"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "v1"))))) (BDecls [])])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "match_alts"] (TyFun (TyCon (UnQual (Ident "MatchEnv"))) (TyFun (TyCon (UnQual (Ident "SubstEnv"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreAlt")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreAlt")))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "SubstEnv")))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_alts") [PVar (Ident "menv"),PVar (Ident "subst"),PList [],PList []] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "return"))) (Var (UnQual (Ident "subst"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_alts") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PInfixApp (PTuple Boxed [PVar (Ident "c1"),PVar (Ident "vs1"),PVar (Ident "r1")]) (Special Cons) (PVar (Ident "alts1"))),PParen (PInfixApp (PTuple Boxed [PVar (Ident "c2"),PVar (Ident "vs2"),PVar (Ident "r2")]) (Special Cons) (PVar (Ident "alts2")))] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "c1"))) (QVarOp (UnQual (Symbol "=="))) (Var (UnQual (Ident "c2"))))] (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst1")) (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "r1")))) (Var (UnQual (Ident "r2")))),Qualifier (App (App (App (App (Var (UnQual (Ident "match_alts"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst1")))) (Var (UnQual (Ident "alts1")))) (Var (UnQual (Ident "alts2"))))])]) (BDecls [TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "menv'"] (TyCon (UnQual (Ident "MatchEnv"))),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (App (App (App (Var (UnQual (Ident "rnBndrs2"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "vs1")))) (Var (UnQual (Ident "vs2"))))])) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_alts") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "alts1"),PVar (Ident "alts2")] Nothing (UnGuardedRhs (Con (UnQual (Ident "Nothing")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "match_ty"] (TyFun (TyCon (UnQual (Ident "MatchEnv"))) (TyFun (TyCon (UnQual (Ident "SubstEnv"))) (TyFun (TyCon (UnQual (Ident "Type"))) (TyFun (TyCon (UnQual (Ident "Type"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "SubstEnv")))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_ty") [PVar (Ident "menv"),PTuple Boxed [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "binds")],PVar (Ident "ty1"),PVar (Ident "ty2")] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "tv_subst'")) (App (App (App (App (Var (Qual (ModuleName "Unify") (Ident "ruleMatchTyX"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "tv_subst")))) (Var (UnQual (Ident "ty1")))) (Var (UnQual (Ident "ty2")))),Qualifier (App (Var (UnQual (Ident "return"))) (Tuple Boxed [Var (UnQual (Ident "tv_subst'")),Var (UnQual (Ident "id_subst")),Var (UnQual (Ident "binds"))]))])) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCheckProgram"] (TyFun (TyParen (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))) (TyFun (TyCon (UnQual (Ident "String"))) (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreBind")))) (TyCon (UnQual (Ident "SDoc"))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckProgram") [PVar (Ident "is_active"),PVar (Ident "rule_pat"),PVar (Ident "rule_base"),PVar (Ident "binds")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isEmptyBag"))) (Var (UnQual (Ident "results"))))] (App (Var (UnQual (Ident "text"))) (Lit (String "Rule check results: no rule application sites"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (App (Var (UnQual (Ident "vcat"))) (List [App (Var (UnQual (Ident "text"))) (Lit (String "Rule check results:")),Var (UnQual (Ident "line")),App (Var (UnQual (Ident "vcat"))) (ListComp (InfixApp (Var (UnQual (Ident "p"))) (QVarOp (UnQual (Symbol "$$"))) (Var (UnQual (Ident "line")))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "p")) (App (Var (UnQual (Ident "bagToList"))) (Var (UnQual (Ident "results")))))])]))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "results")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "unionManyBags"))) (Paren (App (App (Var (UnQual (Ident "map"))) (Paren (App (Var (UnQual (Ident "ruleCheckBind"))) (Paren (App (App (App (Con (UnQual (Ident "RuleCheckEnv"))) (Var (UnQual (Ident "is_active")))) (Var (UnQual (Ident "rule_pat")))) (Var (UnQual (Ident "rule_base")))))))) (Var (UnQual (Ident "binds"))))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "line")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "text"))) (Paren (App (App (Var (UnQual (Ident "replicate"))) (Lit (Int 20))) (Lit (Char '-')))))) (BDecls [])])],DataDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) DataType [] (Ident "RuleCheckEnv") [] [QualConDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [] [] (RecDecl (Ident "RuleCheckEnv") [([Ident "rc_is_active"],UnBangedTy (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))),([Ident "rc_pattern"],UnBangedTy (TyCon (UnQual (Ident "String")))),([Ident "rc_rule_base"],UnBangedTy (TyCon (UnQual (Ident "RuleBase"))))])] [],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCheckBind"] (TyFun (TyCon (UnQual (Ident "RuleCheckEnv"))) (TyFun (TyCon (UnQual (Ident "CoreBind"))) (TyApp (TyCon (UnQual (Ident "Bag"))) (TyCon (UnQual (Ident "SDoc")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckBind") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "NonRec")) [PVar (Ident "b"),PVar (Ident "r")])] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "r"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckBind") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Rec")) [PVar (Ident "prs")])] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "unionManyBags"))) (ListComp (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "r")))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "b"),PVar (Ident "r")]) (Var (UnQual (Ident "prs"))))]))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCheck"] (TyFun (TyCon (UnQual (Ident "RuleCheckEnv"))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyApp (TyCon (UnQual (Ident "Bag"))) (TyCon (UnQual (Ident "SDoc")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "v")])] Nothing (UnGuardedRhs (Var (UnQual (Ident "emptyBag")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Lit")) [PVar (Ident "l")])] Nothing (UnGuardedRhs (Var (UnQual (Ident "emptyBag")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Type")) [PVar (Ident "ty")])] Nothing (UnGuardedRhs (Var (UnQual (Ident "emptyBag")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f"),PVar (Ident "a")])] Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "ruleCheckApp"))) (Var (UnQual (Ident "env")))) (Paren (App (App (Con (UnQual (Ident "App"))) (Var (UnQual (Ident "f")))) (Var (UnQual (Ident "a")))))) (List []))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Note")) [PVar (Ident "n"),PVar (Ident "e")])] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Cast")) [PVar (Ident "e"),PVar (Ident "co")])] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Let")) [PVar (Ident "bd"),PVar (Ident "e")])] Nothing (UnGuardedRhs (InfixApp (App (App (Var (UnQual (Ident "ruleCheckBind"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "bd")))) (QVarOp (UnQual (Ident "unionBags"))) (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e")))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "b"),PVar (Ident "e")])] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Case")) [PVar (Ident "e"),PWildCard,PWildCard,PVar (Ident "as")])] Nothing (UnGuardedRhs (InfixApp (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e")))) (QVarOp (UnQual (Ident "unionBags"))) (App (Var (UnQual (Ident "unionManyBags"))) (ListComp (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "r")))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PWildCard,PWildCard,PVar (Ident "r")]) (Var (UnQual (Ident "as"))))])))) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckApp") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f"),PVar (Ident "a")]),PVar (Ident "as")] Nothing (UnGuardedRhs (InfixApp (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "a")))) (QVarOp (UnQual (Ident "unionBags"))) (App (App (App (Var (UnQual (Ident "ruleCheckApp"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "f")))) (Paren (InfixApp (Var (UnQual (Ident "a"))) (QConOp (Special Cons)) (Var (UnQual (Ident "as")))))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckApp") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "f")]),PVar (Ident "as")] Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "ruleCheckFun"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "f")))) (Var (UnQual (Ident "as"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckApp") [PVar (Ident "env"),PVar (Ident "other"),PVar (Ident "as")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "other"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCheckFun"] (TyFun (TyCon (UnQual (Ident "RuleCheckEnv"))) (TyFun (TyCon (UnQual (Ident "Id"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyApp (TyCon (UnQual (Ident "Bag"))) (TyCon (UnQual (Ident "SDoc"))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckFun") [PVar (Ident "env"),PVar (Ident "fn"),PVar (Ident "args")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "null"))) (Var (UnQual (Ident "name_match_rules"))))] (Var (UnQual (Ident "emptyBag"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (App (Var (UnQual (Ident "unitBag"))) (Paren (App (App (App (App (Var (UnQual (Ident "ruleAppCheck_help"))) (Paren (App (Var (UnQual (Ident "rc_is_active"))) (Var (UnQual (Ident "env")))))) (Var (UnQual (Ident "fn")))) (Var (UnQual (Ident "args")))) (Var (UnQual (Ident "name_match_rules"))))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "name_match_rules")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "filter"))) (Var (UnQual (Ident "match")))) (Paren (App (App (Var (UnQual (Ident "getRules"))) (Paren (App (Var (UnQual (Ident "rc_rule_base"))) (Var (UnQual (Ident "env")))))) (Var (UnQual (Ident "fn"))))))) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "rule")] Nothing (UnGuardedRhs (InfixApp (Paren (App (Var (UnQual (Ident "rc_pattern"))) (Var (UnQual (Ident "env"))))) (QVarOp (UnQual (Ident "isPrefixOf"))) (App (Var (UnQual (Ident "unpackFS"))) (Paren (App (Var (UnQual (Ident "ruleName"))) (Var (UnQual (Ident "rule")))))))) (BDecls [])]])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleAppCheck_help"] (TyFun (TyParen (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))) (TyFun (TyCon (UnQual (Ident "Id"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "SDoc"))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleAppCheck_help") [PVar (Ident "is_active"),PVar (Ident "fn"),PVar (Ident "args"),PVar (Ident "rules")] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "vcat"))) (List [InfixApp (App (Var (UnQual (Ident "text"))) (Lit (String "Expression:"))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "ppr"))) (Paren (App (App (Var (UnQual (Ident "mkApps"))) (Paren (App (Con (UnQual (Ident "Var"))) (Var (UnQual (Ident "fn")))))) (Var (UnQual (Ident "args")))))),App (Var (UnQual (Ident "vcat"))) (Paren (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "check_rule")))) (Var (UnQual (Ident "rules")))))]))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "n_args")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "length"))) (Var (UnQual (Ident "args"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "i_args")) Nothing (UnGuardedRhs (InfixApp (Var (UnQual (Ident "args"))) (QVarOp (UnQual (Ident "zip"))) (EnumFrom (ExpTypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Lit (Int 1)) (TyCon (UnQual (Ident "Int"))))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rough_args")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "roughTopName")))) (Var (UnQual (Ident "args"))))) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "check_rule") [PVar (Ident "rule")] Nothing (UnGuardedRhs (InfixApp (InfixApp (App (Var (UnQual (Ident "rule_herald"))) (Var (UnQual (Ident "rule")))) (QVarOp (UnQual (Symbol "<>"))) (Var (UnQual (Ident "colon")))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "rule_info"))) (Var (UnQual (Ident "rule")))))) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_herald") [PParen (PRec (UnQual (Ident "BuiltinRule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "name"))])] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Builtin rule"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "doubleQuotes"))) (Paren (App (Var (UnQual (Ident "ftext"))) (Var (UnQual (Ident "name")))))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_herald") [PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "name"))])] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Rule"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "doubleQuotes"))) (Paren (App (Var (UnQual (Ident "ftext"))) (Var (UnQual (Ident "name")))))))) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_info") [PVar (Ident "rule")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PWildCard]) (App (App (App (App (App (Var (UnQual (Ident "matchRule"))) (Var (UnQual (Ident "noBlackList")))) (Var (UnQual (Ident "emptyInScopeSet")))) (Var (UnQual (Ident "args")))) (Var (UnQual (Ident "rough_args")))) (Var (UnQual (Ident "rule"))))] (App (Var (UnQual (Ident "text"))) (Lit (String "matches (which is very peculiar!)")))]) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_info") [PParen (PRec (UnQual (Ident "BuiltinRule")) [])] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "text"))) (Lit (String "does not match")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_info") [PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "name")),PFieldPat (UnQual (Ident "ru_act")) (PVar (Ident "act")),PFieldPat (UnQual (Ident "ru_bndrs")) (PVar (Ident "rule_bndrs")),PFieldPat (UnQual (Ident "ru_args")) (PVar (Ident "rule_args"))])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "not"))) (Paren (App (Var (UnQual (Ident "is_active"))) (Var (UnQual (Ident "act"))))))] (App (Var (UnQual (Ident "text"))) (Lit (String "active only in later phase"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "n_args"))) (QVarOp (UnQual (Symbol "<"))) (Var (UnQual (Ident "n_rule_args"))))] (App (Var (UnQual (Ident "text"))) (Lit (String "too few arguments"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "n_mismatches"))) (QVarOp (UnQual (Symbol "=="))) (Var (UnQual (Ident "n_rule_args"))))] (App (Var (UnQual (Ident "text"))) (Lit (String "no arguments match"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "n_mismatches"))) (QVarOp (UnQual (Symbol "=="))) (Lit (Int 0)))] (App (Var (UnQual (Ident "text"))) (Lit (String "all arguments match (considered individually), but rule as a whole does not"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (InfixApp (InfixApp (App (Var (UnQual (Ident "text"))) (Lit (String "arguments"))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "mismatches"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "text"))) (Lit (String "do not match (1-indexing)"))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "n_rule_args")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "length"))) (Var (UnQual (Ident "rule_args"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "n_mismatches")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "length"))) (Var (UnQual (Ident "mismatches"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "mismatches")) Nothing (UnGuardedRhs (ListComp (Var (UnQual (Ident "i"))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "rule_arg"),PTuple Boxed [PVar (Ident "arg"),PVar (Ident "i")]]) (InfixApp (Var (UnQual (Ident "rule_args"))) (QVarOp (UnQual (Ident "zip"))) (Var (UnQual (Ident "i_args"))))),QualStmt (Qualifier (App (Var (UnQual (Ident "not"))) (Paren (App (Var (UnQual (Ident "isJust"))) (Paren (App (App (Var (UnQual (Ident "match_fn"))) (Var (UnQual (Ident "rule_arg")))) (Var (UnQual (Ident "arg")))))))))])) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "lhs_fvs")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "exprsFreeVars"))) (Var (UnQual (Ident "rule_args"))))) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_fn") [PVar (Ident "rule_arg"),PVar (Ident "arg")] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "emptySubstEnv")))) (Var (UnQual (Ident "rule_arg")))) (Var (UnQual (Ident "arg"))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "in_scope")) Nothing (UnGuardedRhs (InfixApp (Var (UnQual (Ident "lhs_fvs"))) (QVarOp (UnQual (Ident "unionVarSet"))) (App (Var (UnQual (Ident "exprFreeVars"))) (Var (UnQual (Ident "arg")))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv")) Nothing (UnGuardedRhs (RecConstr (UnQual (Ident "ME")) [FieldUpdate (UnQual (Ident "me_env")) (App (Var (UnQual (Ident "mkRnEnv2"))) (Paren (App (Var (UnQual (Ident "mkInScopeSet"))) (Var (UnQual (Ident "in_scope")))))),FieldUpdate (UnQual (Ident "me_tmpls")) (App (Var (UnQual (Ident "mkVarSet"))) (Var (UnQual (Ident "rule_bndrs"))))])) (BDecls [])])]])]])]] AST 2: Module (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (ModuleName "Rules") [OptionsPragma (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) Nothing "-w ",LanguagePragma (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "PatternGuards"]] Nothing (Just [EAbs (UnQual (Ident "RuleBase")),EVar (UnQual (Ident "emptyRuleBase")),EVar (UnQual (Ident "mkRuleBase")),EVar (UnQual (Ident "extendRuleBaseList")),EVar (UnQual (Ident "unionRuleBase")),EVar (UnQual (Ident "pprRuleBase")),EVar (UnQual (Ident "ruleCheckProgram")),EVar (UnQual (Ident "mkSpecInfo")),EVar (UnQual (Ident "extendSpecInfo")),EVar (UnQual (Ident "addSpecInfo")),EVar (UnQual (Ident "addIdSpecialisations")),EVar (UnQual (Ident "rulesOfBinds")),EVar (UnQual (Ident "getRules")),EVar (UnQual (Ident "pprRulesForUser")),EVar (UnQual (Ident "lookupRule")),EVar (UnQual (Ident "mkLocalRule")),EVar (UnQual (Ident "roughTopNames"))]) [ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "CoreSyn", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "OccurAnal", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "occurAnalyseExpr")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "CoreFVs", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "exprFreeVars"),IVar (Ident "exprsFreeVars"),IVar (Ident "bindFreeVars"),IVar (Ident "rulesFreeVars")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "CoreUtils", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "tcEqExprX"),IVar (Ident "exprType")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "PprCore", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "pprRules")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Type", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IAbs (Ident "Type"),IAbs (Ident "TvSubstEnv")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Coercion", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "coercionKind")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "TcType", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "tcSplitTyConApp_maybe")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "CoreTidy", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "tidyRules")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Id", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "IdInfo", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IThingWith (Ident "SpecInfo") [ConName (Ident "SpecInfo")]])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Var", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IAbs (Ident "Var")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "VarEnv", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "VarSet", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Name", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IAbs (Ident "Name"),IThingAll (Ident "NamedThing")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "NameEnv", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Unify", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "ruleMatchTyX"),IThingAll (Ident "MatchEnv")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "BasicTypes", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IAbs (Ident "Activation")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "StaticFlags", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (False,[IVar (Ident "opt_PprStyle_Debug")])},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Outputable", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "FastString", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Maybes", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "OrdList", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Bag", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Util", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importLoc = SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}, importModule = ModuleName "Data.List", importQualified = False, importSrc = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing}] [TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "mkLocalRule"] (TyFun (TyCon (UnQual (Ident "RuleName"))) (TyFun (TyCon (UnQual (Ident "Activation"))) (TyFun (TyCon (UnQual (Ident "Name"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreBndr")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyCon (UnQual (Ident "CoreRule"))))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "mkLocalRule") [PVar (Ident "name"),PVar (Ident "act"),PVar (Ident "fn"),PVar (Ident "bndrs"),PVar (Ident "args"),PVar (Ident "rhs")] Nothing (UnGuardedRhs (RecConstr (UnQual (Ident "Rule")) [FieldUpdate (UnQual (Ident "ru_name")) (Var (UnQual (Ident "name"))),FieldUpdate (UnQual (Ident "ru_fn")) (Var (UnQual (Ident "fn"))),FieldUpdate (UnQual (Ident "ru_act")) (Var (UnQual (Ident "act"))),FieldUpdate (UnQual (Ident "ru_bndrs")) (Var (UnQual (Ident "bndrs"))),FieldUpdate (UnQual (Ident "ru_args")) (Var (UnQual (Ident "args"))),FieldUpdate (UnQual (Ident "ru_rhs")) (Var (UnQual (Ident "rhs"))),FieldUpdate (UnQual (Ident "ru_rough")) (App (Var (UnQual (Ident "roughTopNames"))) (Var (UnQual (Ident "args")))),FieldUpdate (UnQual (Ident "ru_local")) (Con (UnQual (Ident "True")))])) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "roughTopNames"] (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyList (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopNames") [PVar (Ident "args")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "roughTopName")))) (Var (UnQual (Ident "args"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "roughTopName"] (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopName") [PParen (PApp (UnQual (Ident "Type")) [PVar (Ident "ty")])] Nothing (UnGuardedRhs (Case (App (Var (UnQual (Ident "tcSplitTyConApp_maybe"))) (Var (UnQual (Ident "ty")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PTuple Boxed [PVar (Ident "tc"),PWildCard]]) (UnGuardedAlt (App (Con (UnQual (Ident "Just"))) (Paren (App (Var (UnQual (Ident "getName"))) (Var (UnQual (Ident "tc"))))))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls [])])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopName") [PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f"),PVar (Ident "a")])] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "roughTopName"))) (Var (UnQual (Ident "f"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopName") [PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "f")])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isGlobalId"))) (Var (UnQual (Ident "f"))))] (App (Con (UnQual (Ident "Just"))) (Paren (App (Var (UnQual (Ident "idName"))) (Var (UnQual (Ident "f")))))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Con (UnQual (Ident "Nothing")))]) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "roughTopName") [PVar (Ident "other")] Nothing (UnGuardedRhs (Con (UnQual (Ident "Nothing")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCantMatch"] (TyFun (TyList (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name"))))) (TyFun (TyList (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name"))))) (TyCon (UnQual (Ident "Bool"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCantMatch") [PParen (PInfixApp (PApp (UnQual (Ident "Just")) [PVar (Ident "n1")]) (Special Cons) (PVar (Ident "ts"))),PParen (PInfixApp (PApp (UnQual (Ident "Just")) [PVar (Ident "n2")]) (Special Cons) (PVar (Ident "as")))] Nothing (UnGuardedRhs (InfixApp (InfixApp (Var (UnQual (Ident "n1"))) (QVarOp (UnQual (Symbol "/="))) (Var (UnQual (Ident "n2")))) (QVarOp (UnQual (Symbol "||"))) (App (App (Var (UnQual (Ident "ruleCantMatch"))) (Var (UnQual (Ident "ts")))) (Var (UnQual (Ident "as")))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCantMatch") [PParen (PInfixApp (PVar (Ident "t")) (Special Cons) (PVar (Ident "ts"))),PParen (PInfixApp (PVar (Ident "a")) (Special Cons) (PVar (Ident "as")))] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCantMatch"))) (Var (UnQual (Ident "ts")))) (Var (UnQual (Ident "as"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCantMatch") [PVar (Ident "ts"),PVar (Ident "as")] Nothing (UnGuardedRhs (Con (UnQual (Ident "False")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "pprRulesForUser"] (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "SDoc")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "pprRulesForUser") [PVar (Ident "rules")] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "withPprStyle"))) (Var (UnQual (Ident "defaultUserStyle")))) (QVarOp (UnQual (Symbol "$"))) (InfixApp (Var (UnQual (Ident "pprRules"))) (QVarOp (UnQual (Symbol "$"))) (InfixApp (App (Var (UnQual (Ident "sortLe"))) (Var (UnQual (Ident "le_rule")))) (QVarOp (UnQual (Symbol "$"))) (App (App (Var (UnQual (Ident "tidyRules"))) (Var (UnQual (Ident "emptyTidyEnv")))) (Var (UnQual (Ident "rules")))))))) (BDecls [FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "le_rule") [PVar (Ident "r1"),PVar (Ident "r2")] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "ru_name"))) (Var (UnQual (Ident "r1")))) (QVarOp (UnQual (Symbol "<="))) (App (Var (UnQual (Ident "ru_name"))) (Var (UnQual (Ident "r2")))))) (BDecls [])]])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "mkSpecInfo"] (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "SpecInfo")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "mkSpecInfo") [PVar (Ident "rules")] Nothing (UnGuardedRhs (App (App (Con (UnQual (Ident "SpecInfo"))) (Var (UnQual (Ident "rules")))) (Paren (App (Var (UnQual (Ident "rulesFreeVars"))) (Var (UnQual (Ident "rules"))))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "extendSpecInfo"] (TyFun (TyCon (UnQual (Ident "SpecInfo"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "SpecInfo"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "extendSpecInfo") [PParen (PApp (UnQual (Ident "SpecInfo")) [PVar (Ident "rs1"),PVar (Ident "fvs1")]),PVar (Ident "rs2")] Nothing (UnGuardedRhs (App (App (Con (UnQual (Ident "SpecInfo"))) (Paren (InfixApp (Var (UnQual (Ident "rs2"))) (QVarOp (UnQual (Symbol "++"))) (Var (UnQual (Ident "rs1")))))) (Paren (InfixApp (App (Var (UnQual (Ident "rulesFreeVars"))) (Var (UnQual (Ident "rs2")))) (QVarOp (UnQual (Ident "unionVarSet"))) (Var (UnQual (Ident "fvs1"))))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "addSpecInfo"] (TyFun (TyCon (UnQual (Ident "SpecInfo"))) (TyFun (TyCon (UnQual (Ident "SpecInfo"))) (TyCon (UnQual (Ident "SpecInfo"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "addSpecInfo") [PParen (PApp (UnQual (Ident "SpecInfo")) [PVar (Ident "rs1"),PVar (Ident "fvs1")]),PParen (PApp (UnQual (Ident "SpecInfo")) [PVar (Ident "rs2"),PVar (Ident "fvs2")])] Nothing (UnGuardedRhs (App (App (Con (UnQual (Ident "SpecInfo"))) (Paren (InfixApp (Var (UnQual (Ident "rs1"))) (QVarOp (UnQual (Symbol "++"))) (Var (UnQual (Ident "rs2")))))) (Paren (InfixApp (Var (UnQual (Ident "fvs1"))) (QVarOp (UnQual (Ident "unionVarSet"))) (Var (UnQual (Ident "fvs2"))))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "addIdSpecialisations"] (TyFun (TyCon (UnQual (Ident "Id"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "Id"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "addIdSpecialisations") [PVar (Ident "id"),PList []] Nothing (UnGuardedRhs (Var (UnQual (Ident "id")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "addIdSpecialisations") [PVar (Ident "id"),PVar (Ident "rules")] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "setIdSpecialisation"))) (Var (UnQual (Ident "id")))) (QVarOp (UnQual (Symbol "$"))) (App (App (Var (UnQual (Ident "extendSpecInfo"))) (Paren (App (Var (UnQual (Ident "idSpecialisation"))) (Var (UnQual (Ident "id")))))) (Var (UnQual (Ident "rules")))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "rulesOfBinds"] (TyFun (TyList (TyCon (UnQual (Ident "CoreBind")))) (TyList (TyCon (UnQual (Ident "CoreRule"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rulesOfBinds") [PVar (Ident "binds")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "concatMap"))) (Paren (InfixApp (App (Var (UnQual (Ident "concatMap"))) (Var (UnQual (Ident "idCoreRules")))) (QVarOp (UnQual (Symbol "."))) (Var (UnQual (Ident "bindersOf")))))) (Var (UnQual (Ident "binds"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "getRules"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyCon (UnQual (Ident "Id"))) (TyList (TyCon (UnQual (Ident "CoreRule")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "getRules") [PVar (Ident "rule_base"),PVar (Ident "fn")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isLocalId"))) (Var (UnQual (Ident "fn"))))] (App (Var (UnQual (Ident "idCoreRules"))) (Var (UnQual (Ident "fn")))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (InfixApp (App (App (App (Con (UnQual (Ident "WARN"))) (Tuple Boxed [InfixApp (App (Var (UnQual (Ident "not"))) (Paren (App (Var (UnQual (Ident "isPrimOpId"))) (Var (UnQual (Ident "fn")))))) (QVarOp (UnQual (Symbol "&&"))) (App (Var (UnQual (Ident "notNull"))) (Paren (App (Var (UnQual (Ident "idCoreRules"))) (Var (UnQual (Ident "fn")))))),InfixApp (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "fn")))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "ppr"))) (Paren (App (Var (UnQual (Ident "idCoreRules"))) (Var (UnQual (Ident "fn"))))))])) (Var (UnQual (Ident "idCoreRules")))) (Var (UnQual (Ident "fn")))) (QVarOp (UnQual (Symbol "++"))) (Paren (InfixApp (App (App (Var (UnQual (Ident "lookupNameEnv"))) (Var (UnQual (Ident "rule_base")))) (Paren (App (Var (UnQual (Ident "idName"))) (Var (UnQual (Ident "fn")))))) (QVarOp (UnQual (Ident "orElse"))) (List []))))]) (BDecls [])],TypeDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "RuleBase") [] (TyApp (TyCon (UnQual (Ident "NameEnv"))) (TyList (TyCon (UnQual (Ident "CoreRule"))))),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "emptyRuleBase")) Nothing (UnGuardedRhs (Var (UnQual (Ident "emptyNameEnv")))) (BDecls []),TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "mkRuleBase"] (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "RuleBase")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "mkRuleBase") [PVar (Ident "rules")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "extendRuleBaseList"))) (Var (UnQual (Ident "emptyRuleBase")))) (Var (UnQual (Ident "rules"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "extendRuleBaseList"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "RuleBase"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "extendRuleBaseList") [PVar (Ident "rule_base"),PVar (Ident "new_guys")] Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "foldl"))) (Var (UnQual (Ident "extendRuleBase")))) (Var (UnQual (Ident "rule_base")))) (Var (UnQual (Ident "new_guys"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "unionRuleBase"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyCon (UnQual (Ident "RuleBase"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "unionRuleBase") [PVar (Ident "rb1"),PVar (Ident "rb2")] Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "plusNameEnv_C"))) (Var (UnQual (Symbol "++")))) (Var (UnQual (Ident "rb1")))) (Var (UnQual (Ident "rb2"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "extendRuleBase"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyCon (UnQual (Ident "CoreRule"))) (TyCon (UnQual (Ident "RuleBase"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "extendRuleBase") [PVar (Ident "rule_base"),PVar (Ident "rule")] Nothing (UnGuardedRhs (App (App (App (App (App (Var (UnQual (Ident "extendNameEnv_Acc"))) (Con (Special Cons))) (Var (UnQual (Ident "singleton")))) (Var (UnQual (Ident "rule_base")))) (Paren (App (Var (UnQual (Ident "ruleIdName"))) (Var (UnQual (Ident "rule")))))) (Var (UnQual (Ident "rule"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "pprRuleBase"] (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyCon (UnQual (Ident "SDoc")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "pprRuleBase") [PVar (Ident "rules")] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "vcat"))) (ListComp (App (Var (UnQual (Ident "pprRules"))) (Paren (App (App (Var (UnQual (Ident "tidyRules"))) (Var (UnQual (Ident "emptyTidyEnv")))) (Var (UnQual (Ident "rs")))))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rs")) (App (Var (UnQual (Ident "nameEnvElts"))) (Var (UnQual (Ident "rules")))))]))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "lookupRule"] (TyFun (TyParen (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))) (TyFun (TyCon (UnQual (Ident "InScopeSet"))) (TyFun (TyCon (UnQual (Ident "Id"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))]))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "lookupRule") [PVar (Ident "is_active"),PVar (Ident "in_scope"),PVar (Ident "fn"),PVar (Ident "args"),PVar (Ident "rules")] Nothing (UnGuardedRhs (Case (App (App (Var (UnQual (Ident "go"))) (List [])) (Var (UnQual (Ident "rules")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PList []) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PParen (PInfixApp (PVar (Ident "m")) (Special Cons) (PVar (Ident "ms")))) (UnGuardedAlt (App (Con (UnQual (Ident "Just"))) (Paren (App (App (App (Var (UnQual (Ident "findBest"))) (Tuple Boxed [Var (UnQual (Ident "fn")),Var (UnQual (Ident "args"))])) (Var (UnQual (Ident "m")))) (Var (UnQual (Ident "ms"))))))) (BDecls [])])) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rough_args")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "roughTopName")))) (Var (UnQual (Ident "args"))))) (BDecls []),TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "go"] (TyFun (TyList (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))])) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyList (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))])))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "ms"),PList []] Nothing (UnGuardedRhs (Var (UnQual (Ident "ms")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "ms"),PParen (PInfixApp (PVar (Ident "r")) (Special Cons) (PVar (Ident "rs")))] Nothing (UnGuardedRhs (Case (Paren (App (App (App (App (App (Var (UnQual (Ident "matchRule"))) (Var (UnQual (Ident "is_active")))) (Var (UnQual (Ident "in_scope")))) (Var (UnQual (Ident "args")))) (Var (UnQual (Ident "rough_args")))) (Var (UnQual (Ident "r"))))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "e")]) (UnGuardedAlt (App (App (Var (UnQual (Ident "go"))) (Paren (InfixApp (Tuple Boxed [Var (UnQual (Ident "r")),Var (UnQual (Ident "e"))]) (QConOp (Special Cons)) (Var (UnQual (Ident "ms")))))) (Var (UnQual (Ident "rs"))))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (App (App (Var (UnQual (Ident "go"))) (Var (UnQual (Ident "ms")))) (Var (UnQual (Ident "rs"))))) (BDecls [])])) (BDecls [])]])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "findBest"] (TyFun (TyTuple Boxed [TyCon (UnQual (Ident "Id")),TyList (TyCon (UnQual (Ident "CoreExpr")))]) (TyFun (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))]) (TyFun (TyList (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))])) (TyTuple Boxed [TyCon (UnQual (Ident "CoreRule")),TyCon (UnQual (Ident "CoreExpr"))])))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "findBest") [PVar (Ident "target"),PTuple Boxed [PVar (Ident "rule"),PVar (Ident "ans")],PList []] Nothing (UnGuardedRhs (Tuple Boxed [Var (UnQual (Ident "rule")),Var (UnQual (Ident "ans"))])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "findBest") [PVar (Ident "target"),PTuple Boxed [PVar (Ident "rule1"),PVar (Ident "ans1")],PParen (PInfixApp (PTuple Boxed [PVar (Ident "rule2"),PVar (Ident "ans2")]) (Special Cons) (PVar (Ident "prs")))] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "rule1"))) (QVarOp (UnQual (Ident "isMoreSpecific"))) (Var (UnQual (Ident "rule2"))))] (App (App (App (Var (UnQual (Ident "findBest"))) (Var (UnQual (Ident "target")))) (Tuple Boxed [Var (UnQual (Ident "rule1")),Var (UnQual (Ident "ans1"))])) (Var (UnQual (Ident "prs")))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "rule2"))) (QVarOp (UnQual (Ident "isMoreSpecific"))) (Var (UnQual (Ident "rule1"))))] (App (App (App (Var (UnQual (Ident "findBest"))) (Var (UnQual (Ident "target")))) (Tuple Boxed [Var (UnQual (Ident "rule2")),Var (UnQual (Ident "ans2"))])) (Var (UnQual (Ident "prs")))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "debugIsOn")))] (Let (BDecls [FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "pp_rule") [PVar (Ident "rule")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "opt_PprStyle_Debug")))] (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "rule")))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (App (Var (UnQual (Ident "doubleQuotes"))) (Paren (App (Var (UnQual (Ident "ftext"))) (Paren (App (Var (UnQual (Ident "ru_name"))) (Var (UnQual (Ident "rule"))))))))]) (BDecls [])]]) (InfixApp (App (App (Var (UnQual (Ident "pprTrace"))) (Lit (String "Rules.findBest: rule overlap (Rule 1 wins)"))) (Paren (App (Var (UnQual (Ident "vcat"))) (List [If (Var (UnQual (Ident "opt_PprStyle_Debug"))) (InfixApp (InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Expression to match:"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "fn"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "sep"))) (Paren (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "ppr")))) (Var (UnQual (Ident "args"))))))) (Var (UnQual (Ident "empty"))),InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Rule 1:"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "pp_rule"))) (Var (UnQual (Ident "rule1")))),InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Rule 2:"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "pp_rule"))) (Var (UnQual (Ident "rule2"))))])))) (QVarOp (UnQual (Symbol "$"))) (App (App (App (Var (UnQual (Ident "findBest"))) (Var (UnQual (Ident "target")))) (Tuple Boxed [Var (UnQual (Ident "rule1")),Var (UnQual (Ident "ans1"))])) (Var (UnQual (Ident "prs")))))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (App (App (App (Var (UnQual (Ident "findBest"))) (Var (UnQual (Ident "target")))) (Tuple Boxed [Var (UnQual (Ident "rule1")),Var (UnQual (Ident "ans1"))])) (Var (UnQual (Ident "prs"))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "fn"),PVar (Ident "args")]) Nothing (UnGuardedRhs (Var (UnQual (Ident "target")))) (BDecls [])])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "isMoreSpecific"] (TyFun (TyCon (UnQual (Ident "CoreRule"))) (TyFun (TyCon (UnQual (Ident "CoreRule"))) (TyCon (UnQual (Ident "Bool"))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "isMoreSpecific") [PParen (PRec (UnQual (Ident "BuiltinRule")) []),PVar (Ident "r2")] Nothing (UnGuardedRhs (Con (UnQual (Ident "True")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "isMoreSpecific") [PVar (Ident "r1"),PParen (PRec (UnQual (Ident "BuiltinRule")) [])] Nothing (UnGuardedRhs (Con (UnQual (Ident "False")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "isMoreSpecific") [PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_bndrs")) (PVar (Ident "bndrs1")),PFieldPat (UnQual (Ident "ru_args")) (PVar (Ident "args1"))]),PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_bndrs")) (PVar (Ident "bndrs2")),PFieldPat (UnQual (Ident "ru_args")) (PVar (Ident "args2"))])] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "isJust"))) (Paren (App (App (App (App (Var (UnQual (Ident "matchN"))) (Var (UnQual (Ident "in_scope")))) (Var (UnQual (Ident "bndrs2")))) (Var (UnQual (Ident "args2")))) (Var (UnQual (Ident "args1"))))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "in_scope")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "mkInScopeSet"))) (Paren (App (Var (UnQual (Ident "mkVarSet"))) (Var (UnQual (Ident "bndrs1"))))))) (BDecls [])])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "noBlackList"] (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool")))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "noBlackList") [PVar (Ident "act")] Nothing (UnGuardedRhs (Con (UnQual (Ident "False")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "matchRule"] (TyFun (TyParen (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))) (TyFun (TyCon (UnQual (Ident "InScopeSet"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyList (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "Name"))))) (TyFun (TyCon (UnQual (Ident "CoreRule"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "CoreExpr"))))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "matchRule") [PVar (Ident "is_active"),PVar (Ident "in_scope"),PVar (Ident "args"),PVar (Ident "rough_args"),PParen (PRec (UnQual (Ident "BuiltinRule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "name")),PFieldPat (UnQual (Ident "ru_try")) (PVar (Ident "match_fn"))])] Nothing (UnGuardedRhs (Case (App (Var (UnQual (Ident "match_fn"))) (Var (UnQual (Ident "args")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "expr")]) (UnGuardedAlt (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "expr"))))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls [])])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "matchRule") [PVar (Ident "is_active"),PVar (Ident "in_scope"),PVar (Ident "args"),PVar (Ident "rough_args"),PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "rn")),PFieldPat (UnQual (Ident "ru_act")) (PVar (Ident "act")),PFieldPat (UnQual (Ident "ru_rough")) (PVar (Ident "tpl_tops")),PFieldPat (UnQual (Ident "ru_bndrs")) (PVar (Ident "tpl_vars")),PFieldPat (UnQual (Ident "ru_args")) (PVar (Ident "tpl_args")),PFieldPat (UnQual (Ident "ru_rhs")) (PVar (Ident "rhs"))])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "not"))) (Paren (App (Var (UnQual (Ident "is_active"))) (Var (UnQual (Ident "act"))))))] (Con (UnQual (Ident "Nothing"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (App (Var (UnQual (Ident "ruleCantMatch"))) (Var (UnQual (Ident "tpl_tops")))) (Var (UnQual (Ident "rough_args"))))] (Con (UnQual (Ident "Nothing"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Case (App (App (App (App (Var (UnQual (Ident "matchN"))) (Var (UnQual (Ident "in_scope")))) (Var (UnQual (Ident "tpl_vars")))) (Var (UnQual (Ident "tpl_args")))) (Var (UnQual (Ident "args")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PTuple Boxed [PVar (Ident "binds"),PVar (Ident "tpl_vals")]]) (UnGuardedAlt (App (Con (UnQual (Ident "Just"))) (Paren (InfixApp (App (Var (UnQual (Ident "mkLets"))) (Var (UnQual (Ident "binds")))) (QVarOp (UnQual (Symbol "$"))) (InfixApp (Var (UnQual (Ident "rule_fn"))) (QVarOp (UnQual (Ident "mkApps"))) (Var (UnQual (Ident "tpl_vals")))))))) (BDecls [])])]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rule_fn")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "occurAnalyseExpr"))) (Paren (App (App (Var (UnQual (Ident "mkLams"))) (Var (UnQual (Ident "tpl_vars")))) (Var (UnQual (Ident "rhs"))))))) (BDecls [])])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "matchN"] (TyFun (TyCon (UnQual (Ident "InScopeSet"))) (TyFun (TyList (TyCon (UnQual (Ident "Var")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyTuple Boxed [TyList (TyCon (UnQual (Ident "CoreBind"))),TyList (TyCon (UnQual (Ident "CoreExpr")))])))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "matchN") [PVar (Ident "in_scope"),PVar (Ident "tmpl_vars"),PVar (Ident "tmpl_es"),PVar (Ident "target_es")] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "binds")]) (App (App (App (App (Var (UnQual (Ident "go"))) (Var (UnQual (Ident "init_menv")))) (Var (UnQual (Ident "emptySubstEnv")))) (Var (UnQual (Ident "tmpl_es")))) (Var (UnQual (Ident "target_es")))),Qualifier (App (Var (UnQual (Ident "return"))) (Tuple Boxed [App (Var (UnQual (Ident "fromOL"))) (Var (UnQual (Ident "binds"))),App (App (Var (UnQual (Ident "map"))) (Paren (App (App (Var (UnQual (Ident "lookup_tmpl"))) (Var (UnQual (Ident "tv_subst")))) (Var (UnQual (Ident "id_subst")))))) (Var (UnQual (Ident "tmpl_vars'")))]))])) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "init_rn_env"),PVar (Ident "tmpl_vars'")]) Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "mapAccumL"))) (Var (UnQual (Ident "rnBndrL")))) (Paren (App (Var (UnQual (Ident "mkRnEnv2"))) (Var (UnQual (Ident "in_scope")))))) (Var (UnQual (Ident "tmpl_vars"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "init_menv")) Nothing (UnGuardedRhs (RecConstr (UnQual (Ident "ME")) [FieldUpdate (UnQual (Ident "me_tmpls")) (App (Var (UnQual (Ident "mkVarSet"))) (Var (UnQual (Ident "tmpl_vars'")))),FieldUpdate (UnQual (Ident "me_env")) (Var (UnQual (Ident "init_rn_env")))])) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "menv"),PVar (Ident "subst"),PList [],PVar (Ident "es")] Nothing (UnGuardedRhs (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "ts"),PList []] Nothing (UnGuardedRhs (Con (UnQual (Ident "Nothing")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "go") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PInfixApp (PVar (Ident "t")) (Special Cons) (PVar (Ident "ts"))),PParen (PInfixApp (PVar (Ident "e")) (Special Cons) (PVar (Ident "es")))] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst1")) (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "t")))) (Var (UnQual (Ident "e")))),Qualifier (App (App (App (App (Var (UnQual (Ident "go"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst1")))) (Var (UnQual (Ident "ts")))) (Var (UnQual (Ident "es"))))])) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "lookup_tmpl"] (TyFun (TyCon (UnQual (Ident "TvSubstEnv"))) (TyFun (TyCon (UnQual (Ident "IdSubstEnv"))) (TyFun (TyCon (UnQual (Ident "Var"))) (TyCon (UnQual (Ident "CoreExpr")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "lookup_tmpl") [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "tmpl_var'")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isTyVar"))) (Var (UnQual (Ident "tmpl_var'"))))] (Case (App (App (Var (UnQual (Ident "lookupVarEnv"))) (Var (UnQual (Ident "tv_subst")))) (Var (UnQual (Ident "tmpl_var'")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "ty")]) (UnGuardedAlt (App (Con (UnQual (Ident "Type"))) (Var (UnQual (Ident "ty"))))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (UnGuardedAlt (App (Var (UnQual (Ident "unbound"))) (Var (UnQual (Ident "tmpl_var'"))))) (BDecls [])]),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Case (App (App (Var (UnQual (Ident "lookupVarEnv"))) (Var (UnQual (Ident "id_subst")))) (Var (UnQual (Ident "tmpl_var'")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "e")]) (UnGuardedAlt (Var (UnQual (Ident "e")))) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "other")) (UnGuardedAlt (App (Var (UnQual (Ident "unbound"))) (Var (UnQual (Ident "tmpl_var'"))))) (BDecls [])])]) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "unbound") [PVar (Ident "var")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "pprPanic"))) (Lit (String "Template variable unbound in rewrite rule"))) (Paren (InfixApp (InfixApp (InfixApp (InfixApp (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "var")))) (QVarOp (UnQual (Symbol "$$"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "tmpl_vars"))))) (QVarOp (UnQual (Symbol "$$"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "tmpl_vars'"))))) (QVarOp (UnQual (Symbol "$$"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "tmpl_es"))))) (QVarOp (UnQual (Symbol "$$"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "target_es")))))))) (BDecls [])]])],TypeDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "SubstEnv") [] (TyTuple Boxed [TyCon (UnQual (Ident "TvSubstEnv")),TyCon (UnQual (Ident "IdSubstEnv")),TyApp (TyCon (UnQual (Ident "OrdList"))) (TyCon (UnQual (Ident "CoreBind")))]),TypeDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "IdSubstEnv") [] (TyApp (TyCon (UnQual (Ident "IdEnv"))) (TyCon (UnQual (Ident "CoreExpr")))),TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "emptySubstEnv"] (TyCon (UnQual (Ident "SubstEnv"))),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "emptySubstEnv")) Nothing (UnGuardedRhs (Tuple Boxed [Var (UnQual (Ident "emptyVarEnv")),Var (UnQual (Ident "emptyVarEnv")),Var (UnQual (Ident "nilOL"))])) (BDecls []),TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "match"] (TyFun (TyCon (UnQual (Ident "MatchEnv"))) (TyFun (TyCon (UnQual (Ident "SubstEnv"))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "SubstEnv")))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "v1")]),PVar (Ident "e2")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "subst")]) (App (App (App (App (Var (UnQual (Ident "match_var"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "v1")))) (Var (UnQual (Ident "e2"))))] (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst"))))]) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "e1"),PParen (PApp (UnQual (Ident "Note")) [PVar (Ident "n"),PVar (Ident "e2")])] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "e1"),PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "v2")])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isCheapUnfolding"))) (Var (UnQual (Ident "unfolding"))))] (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "e1")))) (Paren (App (Var (UnQual (Ident "unfoldingTemplate"))) (Var (UnQual (Ident "unfolding"))))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rn_env")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "unfolding")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "idUnfolding"))) (Paren (App (App (Var (UnQual (Ident "lookupRnInScope"))) (Var (UnQual (Ident "rn_env")))) (Paren (App (App (Var (UnQual (Ident "rnOccR"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "v2"))))))))) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PAsPat (Ident "subst") (PTuple Boxed [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "binds")]),PVar (Ident "e1"),PParen (PApp (UnQual (Ident "Let")) [PVar (Ident "bind"),PVar (Ident "e2")])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (App (Var (UnQual (Ident "all"))) (Var (UnQual (Ident "freshly_bound")))) (Var (UnQual (Ident "bndrs")))),Qualifier (App (Var (UnQual (Ident "not"))) (Paren (App (App (Var (UnQual (Ident "any"))) (Var (UnQual (Ident "locally_bound")))) (Var (UnQual (Ident "bind_fvs"))))))] (App (App (App (App (Var (UnQual (Ident "match"))) (Paren (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (Var (UnQual (Ident "rn_env'")))]))) (Tuple Boxed [Var (UnQual (Ident "tv_subst")),Var (UnQual (Ident "id_subst")),InfixApp (Var (UnQual (Ident "binds"))) (QVarOp (UnQual (Ident "snocOL"))) (Var (UnQual (Ident "bind'")))])) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2'"))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rn_env")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "bndrs")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "bindersOf"))) (Var (UnQual (Ident "bind"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "bind_fvs")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "varSetElems"))) (Paren (App (Var (UnQual (Ident "bindFreeVars"))) (Var (UnQual (Ident "bind"))))))) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "locally_bound") [PVar (Ident "x")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "inRnEnvR"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "x"))))) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "freshly_bound") [PVar (Ident "x")] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "not"))) (Paren (InfixApp (Var (UnQual (Ident "x"))) (QVarOp (UnQual (Ident "rnInScope"))) (Var (UnQual (Ident "rn_env"))))))) (BDecls [])],PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "bind'")) Nothing (UnGuardedRhs (Var (UnQual (Ident "bind")))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "e2'")) Nothing (UnGuardedRhs (Var (UnQual (Ident "e2")))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rn_env'")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "extendRnInScopeList"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "bndrs"))))) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Lit")) [PVar (Ident "lit1")]),PParen (PApp (UnQual (Ident "Lit")) [PVar (Ident "lit2")])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "lit1"))) (QVarOp (UnQual (Symbol "=="))) (Var (UnQual (Ident "lit2"))))] (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst"))))]) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f1"),PVar (Ident "a1")]),PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f2"),PVar (Ident "a2")])] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst'")) (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "f1")))) (Var (UnQual (Ident "f2")))),Qualifier (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst'")))) (Var (UnQual (Ident "a1")))) (Var (UnQual (Ident "a2"))))])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "x1"),PVar (Ident "e1")]),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "x2"),PVar (Ident "e2")])] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2"))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (App (App (App (Var (UnQual (Ident "rnBndr2"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "x1")))) (Var (UnQual (Ident "x2"))))])) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "x1"),PVar (Ident "e1")]),PVar (Ident "e2")] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "e1")))) (Paren (App (App (Con (UnQual (Ident "App"))) (Var (UnQual (Ident "e2")))) (Paren (App (Var (UnQual (Ident "varToCoreExpr"))) (Var (UnQual (Ident "new_x"))))))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "rn_env'"),PVar (Ident "new_x")]) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "rnBndrL"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "x1"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (Var (UnQual (Ident "rn_env'")))])) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "e1"),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "x2"),PVar (Ident "e2")])] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst")))) (Paren (App (App (Con (UnQual (Ident "App"))) (Var (UnQual (Ident "e1")))) (Paren (App (Var (UnQual (Ident "varToCoreExpr"))) (Var (UnQual (Ident "new_x")))))))) (Var (UnQual (Ident "e2"))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "rn_env'"),PVar (Ident "new_x")]) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "rnBndrR"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "x2"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (Var (UnQual (Ident "rn_env'")))])) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Case")) [PVar (Ident "e1"),PVar (Ident "x1"),PVar (Ident "ty1"),PVar (Ident "alts1")]),PParen (PApp (UnQual (Ident "Case")) [PVar (Ident "e2"),PVar (Ident "x2"),PVar (Ident "ty2"),PVar (Ident "alts2")])] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst1")) (App (App (App (App (Var (UnQual (Ident "match_ty"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "ty1")))) (Var (UnQual (Ident "ty2")))),Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst2")) (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst1")))) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2")))),LetStmt (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (App (App (App (Var (UnQual (Ident "rnBndr2"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "x1")))) (Var (UnQual (Ident "x2"))))])) (BDecls [])]),Qualifier (App (App (App (App (Var (UnQual (Ident "match_alts"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst2")))) (Var (UnQual (Ident "alts1")))) (Var (UnQual (Ident "alts2"))))])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Type")) [PVar (Ident "ty1")]),PParen (PApp (UnQual (Ident "Type")) [PVar (Ident "ty2")])] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match_ty"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "ty1")))) (Var (UnQual (Ident "ty2"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PApp (UnQual (Ident "Cast")) [PVar (Ident "e1"),PVar (Ident "co1")]),PParen (PApp (UnQual (Ident "Cast")) [PVar (Ident "e2"),PVar (Ident "co2")])] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst1")) (App (App (App (App (Var (UnQual (Ident "match_ty"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "co1")))) (Var (UnQual (Ident "co2")))),Qualifier (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst1")))) (Var (UnQual (Ident "e1")))) (Var (UnQual (Ident "e2"))))])) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "e1"),PVar (Ident "e2")] Nothing (UnGuardedRhs (Con (UnQual (Ident "Nothing")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "match_var"] (TyFun (TyCon (UnQual (Ident "MatchEnv"))) (TyFun (TyCon (UnQual (Ident "SubstEnv"))) (TyFun (TyCon (UnQual (Ident "Var"))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "SubstEnv")))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_var") [PVar (Ident "menv"),PAsPat (Ident "subst") (PTuple Boxed [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "binds")]),PVar (Ident "v1"),PVar (Ident "e2")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "v1'"))) (QVarOp (UnQual (Ident "elemVarSet"))) (App (Var (UnQual (Ident "me_tmpls"))) (Var (UnQual (Ident "menv")))))] (Case (App (App (Var (UnQual (Ident "lookupVarEnv"))) (Var (UnQual (Ident "id_subst")))) (Var (UnQual (Ident "v1'")))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Nothing")) []) (GuardedAlts [GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (App (Var (UnQual (Ident "any"))) (Paren (App (Var (UnQual (Ident "inRnEnvR"))) (Var (UnQual (Ident "rn_env")))))) (Paren (App (Var (UnQual (Ident "varSetElems"))) (Paren (App (Var (UnQual (Ident "exprFreeVars"))) (Var (UnQual (Ident "e2"))))))))] (Con (UnQual (Ident "Nothing"))),GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "tv_subst'")) (App (App (App (App (Var (Qual (ModuleName "Unify") (Ident "ruleMatchTyX"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "tv_subst")))) (Paren (App (Var (UnQual (Ident "idType"))) (Var (UnQual (Ident "v1'")))))) (Paren (App (Var (UnQual (Ident "exprType"))) (Var (UnQual (Ident "e2")))))),Qualifier (App (Var (UnQual (Ident "return"))) (Tuple Boxed [Var (UnQual (Ident "tv_subst'")),App (App (App (Var (UnQual (Ident "extendVarEnv"))) (Var (UnQual (Ident "id_subst")))) (Var (UnQual (Ident "v1'")))) (Var (UnQual (Ident "e2"))),Var (UnQual (Ident "binds"))]))])]) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PVar (Ident "e1'")]) (GuardedAlts [GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (App (App (Var (UnQual (Ident "tcEqExprX"))) (Paren (App (Var (UnQual (Ident "nukeRnEnvL"))) (Var (UnQual (Ident "rn_env")))))) (Var (UnQual (Ident "e1'")))) (Var (UnQual (Ident "e2"))))] (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst")))),GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Con (UnQual (Ident "Nothing")))]) (BDecls [])]),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Case (Var (UnQual (Ident "e2"))) [Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Var")) [PVar (Ident "v2")]) (GuardedAlts [GuardedAlt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "v1'"))) (QVarOp (UnQual (Symbol "=="))) (App (App (Var (UnQual (Ident "rnOccR"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "v2")))))] (App (Con (UnQual (Ident "Just"))) (Var (UnQual (Ident "subst"))))]) (BDecls []),Alt (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "other")) (UnGuardedAlt (Con (UnQual (Ident "Nothing")))) (BDecls [])])]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rn_env")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "v1'")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "rnOccL"))) (Var (UnQual (Ident "rn_env")))) (Var (UnQual (Ident "v1"))))) (BDecls [])])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "match_alts"] (TyFun (TyCon (UnQual (Ident "MatchEnv"))) (TyFun (TyCon (UnQual (Ident "SubstEnv"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreAlt")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreAlt")))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "SubstEnv")))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_alts") [PVar (Ident "menv"),PVar (Ident "subst"),PList [],PList []] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "return"))) (Var (UnQual (Ident "subst"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_alts") [PVar (Ident "menv"),PVar (Ident "subst"),PParen (PInfixApp (PTuple Boxed [PVar (Ident "c1"),PVar (Ident "vs1"),PVar (Ident "r1")]) (Special Cons) (PVar (Ident "alts1"))),PParen (PInfixApp (PTuple Boxed [PVar (Ident "c2"),PVar (Ident "vs2"),PVar (Ident "r2")]) (Special Cons) (PVar (Ident "alts2")))] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "c1"))) (QVarOp (UnQual (Symbol "=="))) (Var (UnQual (Ident "c2"))))] (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "subst1")) (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv'")))) (Var (UnQual (Ident "subst")))) (Var (UnQual (Ident "r1")))) (Var (UnQual (Ident "r2")))),Qualifier (App (App (App (App (Var (UnQual (Ident "match_alts"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "subst1")))) (Var (UnQual (Ident "alts1")))) (Var (UnQual (Ident "alts2"))))])]) (BDecls [TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "menv'"] (TyCon (UnQual (Ident "MatchEnv"))),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv'")) Nothing (UnGuardedRhs (RecUpdate (Var (UnQual (Ident "menv"))) [FieldUpdate (UnQual (Ident "me_env")) (App (App (App (Var (UnQual (Ident "rnBndrs2"))) (Paren (App (Var (UnQual (Ident "me_env"))) (Var (UnQual (Ident "menv")))))) (Var (UnQual (Ident "vs1")))) (Var (UnQual (Ident "vs2"))))])) (BDecls [])]),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_alts") [PVar (Ident "menv"),PVar (Ident "subst"),PVar (Ident "alts1"),PVar (Ident "alts2")] Nothing (UnGuardedRhs (Con (UnQual (Ident "Nothing")))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "match_ty"] (TyFun (TyCon (UnQual (Ident "MatchEnv"))) (TyFun (TyCon (UnQual (Ident "SubstEnv"))) (TyFun (TyCon (UnQual (Ident "Type"))) (TyFun (TyCon (UnQual (Ident "Type"))) (TyApp (TyCon (UnQual (Ident "Maybe"))) (TyCon (UnQual (Ident "SubstEnv")))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_ty") [PVar (Ident "menv"),PTuple Boxed [PVar (Ident "tv_subst"),PVar (Ident "id_subst"),PVar (Ident "binds")],PVar (Ident "ty1"),PVar (Ident "ty2")] Nothing (UnGuardedRhs (Do [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "tv_subst'")) (App (App (App (App (Var (Qual (ModuleName "Unify") (Ident "ruleMatchTyX"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "tv_subst")))) (Var (UnQual (Ident "ty1")))) (Var (UnQual (Ident "ty2")))),Qualifier (App (Var (UnQual (Ident "return"))) (Tuple Boxed [Var (UnQual (Ident "tv_subst'")),Var (UnQual (Ident "id_subst")),Var (UnQual (Ident "binds"))]))])) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCheckProgram"] (TyFun (TyParen (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))) (TyFun (TyCon (UnQual (Ident "String"))) (TyFun (TyCon (UnQual (Ident "RuleBase"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreBind")))) (TyCon (UnQual (Ident "SDoc"))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckProgram") [PVar (Ident "is_active"),PVar (Ident "rule_pat"),PVar (Ident "rule_base"),PVar (Ident "binds")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "isEmptyBag"))) (Var (UnQual (Ident "results"))))] (App (Var (UnQual (Ident "text"))) (Lit (String "Rule check results: no rule application sites"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (App (Var (UnQual (Ident "vcat"))) (List [App (Var (UnQual (Ident "text"))) (Lit (String "Rule check results:")),Var (UnQual (Ident "line")),App (Var (UnQual (Ident "vcat"))) (ListComp (InfixApp (Var (UnQual (Ident "p"))) (QVarOp (UnQual (Symbol "$$"))) (Var (UnQual (Ident "line")))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "p")) (App (Var (UnQual (Ident "bagToList"))) (Var (UnQual (Ident "results")))))])]))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "results")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "unionManyBags"))) (Paren (App (App (Var (UnQual (Ident "map"))) (Paren (App (Var (UnQual (Ident "ruleCheckBind"))) (Paren (App (App (App (Con (UnQual (Ident "RuleCheckEnv"))) (Var (UnQual (Ident "is_active")))) (Var (UnQual (Ident "rule_pat")))) (Var (UnQual (Ident "rule_base")))))))) (Var (UnQual (Ident "binds"))))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "line")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "text"))) (Paren (App (App (Var (UnQual (Ident "replicate"))) (Lit (Int 20))) (Lit (Char '-')))))) (BDecls [])])],DataDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) DataType [] (Ident "RuleCheckEnv") [] [QualConDecl (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [] [] (RecDecl (Ident "RuleCheckEnv") [([Ident "rc_is_active"],UnBangedTy (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))),([Ident "rc_pattern"],UnBangedTy (TyCon (UnQual (Ident "String")))),([Ident "rc_rule_base"],UnBangedTy (TyCon (UnQual (Ident "RuleBase"))))])] [],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCheckBind"] (TyFun (TyCon (UnQual (Ident "RuleCheckEnv"))) (TyFun (TyCon (UnQual (Ident "CoreBind"))) (TyApp (TyCon (UnQual (Ident "Bag"))) (TyCon (UnQual (Ident "SDoc")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckBind") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "NonRec")) [PVar (Ident "b"),PVar (Ident "r")])] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "r"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckBind") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Rec")) [PVar (Ident "prs")])] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "unionManyBags"))) (ListComp (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "r")))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "b"),PVar (Ident "r")]) (Var (UnQual (Ident "prs"))))]))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCheck"] (TyFun (TyCon (UnQual (Ident "RuleCheckEnv"))) (TyFun (TyCon (UnQual (Ident "CoreExpr"))) (TyApp (TyCon (UnQual (Ident "Bag"))) (TyCon (UnQual (Ident "SDoc")))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "v")])] Nothing (UnGuardedRhs (Var (UnQual (Ident "emptyBag")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Lit")) [PVar (Ident "l")])] Nothing (UnGuardedRhs (Var (UnQual (Ident "emptyBag")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Type")) [PVar (Ident "ty")])] Nothing (UnGuardedRhs (Var (UnQual (Ident "emptyBag")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f"),PVar (Ident "a")])] Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "ruleCheckApp"))) (Var (UnQual (Ident "env")))) (Paren (App (App (Con (UnQual (Ident "App"))) (Var (UnQual (Ident "f")))) (Var (UnQual (Ident "a")))))) (List []))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Note")) [PVar (Ident "n"),PVar (Ident "e")])] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Cast")) [PVar (Ident "e"),PVar (Ident "co")])] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Let")) [PVar (Ident "bd"),PVar (Ident "e")])] Nothing (UnGuardedRhs (InfixApp (App (App (Var (UnQual (Ident "ruleCheckBind"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "bd")))) (QVarOp (UnQual (Ident "unionBags"))) (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e")))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Lam")) [PVar (Ident "b"),PVar (Ident "e")])] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheck") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Case")) [PVar (Ident "e"),PWildCard,PWildCard,PVar (Ident "as")])] Nothing (UnGuardedRhs (InfixApp (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "e")))) (QVarOp (UnQual (Ident "unionBags"))) (App (Var (UnQual (Ident "unionManyBags"))) (ListComp (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "r")))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PWildCard,PWildCard,PVar (Ident "r")]) (Var (UnQual (Ident "as"))))])))) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckApp") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "App")) [PVar (Ident "f"),PVar (Ident "a")]),PVar (Ident "as")] Nothing (UnGuardedRhs (InfixApp (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "a")))) (QVarOp (UnQual (Ident "unionBags"))) (App (App (App (Var (UnQual (Ident "ruleCheckApp"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "f")))) (Paren (InfixApp (Var (UnQual (Ident "a"))) (QConOp (Special Cons)) (Var (UnQual (Ident "as")))))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckApp") [PVar (Ident "env"),PParen (PApp (UnQual (Ident "Var")) [PVar (Ident "f")]),PVar (Ident "as")] Nothing (UnGuardedRhs (App (App (App (Var (UnQual (Ident "ruleCheckFun"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "f")))) (Var (UnQual (Ident "as"))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckApp") [PVar (Ident "env"),PVar (Ident "other"),PVar (Ident "as")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "ruleCheck"))) (Var (UnQual (Ident "env")))) (Var (UnQual (Ident "other"))))) (BDecls [])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleCheckFun"] (TyFun (TyCon (UnQual (Ident "RuleCheckEnv"))) (TyFun (TyCon (UnQual (Ident "Id"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyApp (TyCon (UnQual (Ident "Bag"))) (TyCon (UnQual (Ident "SDoc"))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleCheckFun") [PVar (Ident "env"),PVar (Ident "fn"),PVar (Ident "args")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "null"))) (Var (UnQual (Ident "name_match_rules"))))] (Var (UnQual (Ident "emptyBag"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (App (Var (UnQual (Ident "unitBag"))) (Paren (App (App (App (App (Var (UnQual (Ident "ruleAppCheck_help"))) (Paren (App (Var (UnQual (Ident "rc_is_active"))) (Var (UnQual (Ident "env")))))) (Var (UnQual (Ident "fn")))) (Var (UnQual (Ident "args")))) (Var (UnQual (Ident "name_match_rules"))))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "name_match_rules")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "filter"))) (Var (UnQual (Ident "match")))) (Paren (App (App (Var (UnQual (Ident "getRules"))) (Paren (App (Var (UnQual (Ident "rc_rule_base"))) (Var (UnQual (Ident "env")))))) (Var (UnQual (Ident "fn"))))))) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match") [PVar (Ident "rule")] Nothing (UnGuardedRhs (InfixApp (Paren (App (Var (UnQual (Ident "rc_pattern"))) (Var (UnQual (Ident "env"))))) (QVarOp (UnQual (Ident "isPrefixOf"))) (App (Var (UnQual (Ident "unpackFS"))) (Paren (App (Var (UnQual (Ident "ruleName"))) (Var (UnQual (Ident "rule")))))))) (BDecls [])]])],TypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Ident "ruleAppCheck_help"] (TyFun (TyParen (TyFun (TyCon (UnQual (Ident "Activation"))) (TyCon (UnQual (Ident "Bool"))))) (TyFun (TyCon (UnQual (Ident "Id"))) (TyFun (TyList (TyCon (UnQual (Ident "CoreExpr")))) (TyFun (TyList (TyCon (UnQual (Ident "CoreRule")))) (TyCon (UnQual (Ident "SDoc"))))))),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "ruleAppCheck_help") [PVar (Ident "is_active"),PVar (Ident "fn"),PVar (Ident "args"),PVar (Ident "rules")] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "vcat"))) (List [InfixApp (App (Var (UnQual (Ident "text"))) (Lit (String "Expression:"))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "ppr"))) (Paren (App (App (Var (UnQual (Ident "mkApps"))) (Paren (App (Con (UnQual (Ident "Var"))) (Var (UnQual (Ident "fn")))))) (Var (UnQual (Ident "args")))))),App (Var (UnQual (Ident "vcat"))) (Paren (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "check_rule")))) (Var (UnQual (Ident "rules")))))]))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "n_args")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "length"))) (Var (UnQual (Ident "args"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "i_args")) Nothing (UnGuardedRhs (InfixApp (Var (UnQual (Ident "args"))) (QVarOp (UnQual (Ident "zip"))) (EnumFrom (ExpTypeSig (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Lit (Int 1)) (TyCon (UnQual (Ident "Int"))))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "rough_args")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "map"))) (Var (UnQual (Ident "roughTopName")))) (Var (UnQual (Ident "args"))))) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "check_rule") [PVar (Ident "rule")] Nothing (UnGuardedRhs (InfixApp (InfixApp (App (Var (UnQual (Ident "rule_herald"))) (Var (UnQual (Ident "rule")))) (QVarOp (UnQual (Symbol "<>"))) (Var (UnQual (Ident "colon")))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "rule_info"))) (Var (UnQual (Ident "rule")))))) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_herald") [PParen (PRec (UnQual (Ident "BuiltinRule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "name"))])] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Builtin rule"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "doubleQuotes"))) (Paren (App (Var (UnQual (Ident "ftext"))) (Var (UnQual (Ident "name")))))))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_herald") [PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "name"))])] Nothing (UnGuardedRhs (InfixApp (App (Var (UnQual (Ident "ptext"))) (Paren (App (Var (UnQual (Ident "sLit"))) (Lit (String "Rule"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "doubleQuotes"))) (Paren (App (Var (UnQual (Ident "ftext"))) (Var (UnQual (Ident "name")))))))) (BDecls [])],FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_info") [PVar (Ident "rule")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PApp (UnQual (Ident "Just")) [PWildCard]) (App (App (App (App (App (Var (UnQual (Ident "matchRule"))) (Var (UnQual (Ident "noBlackList")))) (Var (UnQual (Ident "emptyInScopeSet")))) (Var (UnQual (Ident "args")))) (Var (UnQual (Ident "rough_args")))) (Var (UnQual (Ident "rule"))))] (App (Var (UnQual (Ident "text"))) (Lit (String "matches (which is very peculiar!)")))]) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_info") [PParen (PRec (UnQual (Ident "BuiltinRule")) [])] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "text"))) (Lit (String "does not match")))) (BDecls []),Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "rule_info") [PParen (PRec (UnQual (Ident "Rule")) [PFieldPat (UnQual (Ident "ru_name")) (PVar (Ident "name")),PFieldPat (UnQual (Ident "ru_act")) (PVar (Ident "act")),PFieldPat (UnQual (Ident "ru_bndrs")) (PVar (Ident "rule_bndrs")),PFieldPat (UnQual (Ident "ru_args")) (PVar (Ident "rule_args"))])] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (App (Var (UnQual (Ident "not"))) (Paren (App (Var (UnQual (Ident "is_active"))) (Var (UnQual (Ident "act"))))))] (App (Var (UnQual (Ident "text"))) (Lit (String "active only in later phase"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "n_args"))) (QVarOp (UnQual (Symbol "<"))) (Var (UnQual (Ident "n_rule_args"))))] (App (Var (UnQual (Ident "text"))) (Lit (String "too few arguments"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "n_mismatches"))) (QVarOp (UnQual (Symbol "=="))) (Var (UnQual (Ident "n_rule_args"))))] (App (Var (UnQual (Ident "text"))) (Lit (String "no arguments match"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (InfixApp (Var (UnQual (Ident "n_mismatches"))) (QVarOp (UnQual (Symbol "=="))) (Lit (Int 0)))] (App (Var (UnQual (Ident "text"))) (Lit (String "all arguments match (considered individually), but rule as a whole does not"))),GuardedRhs (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) [Qualifier (Var (UnQual (Ident "otherwise")))] (InfixApp (InfixApp (App (Var (UnQual (Ident "text"))) (Lit (String "arguments"))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "ppr"))) (Var (UnQual (Ident "mismatches"))))) (QVarOp (UnQual (Symbol "<+>"))) (App (Var (UnQual (Ident "text"))) (Lit (String "do not match (1-indexing)"))))]) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "n_rule_args")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "length"))) (Var (UnQual (Ident "rule_args"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "n_mismatches")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "length"))) (Var (UnQual (Ident "mismatches"))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "mismatches")) Nothing (UnGuardedRhs (ListComp (Var (UnQual (Ident "i"))) [QualStmt (Generator (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PTuple Boxed [PVar (Ident "rule_arg"),PTuple Boxed [PVar (Ident "arg"),PVar (Ident "i")]]) (InfixApp (Var (UnQual (Ident "rule_args"))) (QVarOp (UnQual (Ident "zip"))) (Var (UnQual (Ident "i_args"))))),QualStmt (Qualifier (App (Var (UnQual (Ident "not"))) (Paren (App (Var (UnQual (Ident "isJust"))) (Paren (App (App (Var (UnQual (Ident "match_fn"))) (Var (UnQual (Ident "rule_arg")))) (Var (UnQual (Ident "arg")))))))))])) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "lhs_fvs")) Nothing (UnGuardedRhs (App (Var (UnQual (Ident "exprsFreeVars"))) (Var (UnQual (Ident "rule_args"))))) (BDecls []),FunBind [Match (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (Ident "match_fn") [PVar (Ident "rule_arg"),PVar (Ident "arg")] Nothing (UnGuardedRhs (App (App (App (App (Var (UnQual (Ident "match"))) (Var (UnQual (Ident "menv")))) (Var (UnQual (Ident "emptySubstEnv")))) (Var (UnQual (Ident "rule_arg")))) (Var (UnQual (Ident "arg"))))) (BDecls [PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "in_scope")) Nothing (UnGuardedRhs (InfixApp (Var (UnQual (Ident "lhs_fvs"))) (QVarOp (UnQual (Ident "unionVarSet"))) (App (Var (UnQual (Ident "exprFreeVars"))) (Var (UnQual (Ident "arg")))))) (BDecls []),PatBind (SrcLoc {srcFilename = "", srcLine = -1, srcColumn = -1}) (PVar (Ident "menv")) Nothing (UnGuardedRhs (RecConstr (UnQual (Ident "ME")) [FieldUpdate (UnQual (Ident "me_env")) (App (Var (UnQual (Ident "mkRnEnv2"))) (Paren (App (Var (UnQual (Ident "mkInScopeSet"))) (Var (UnQual (Ident "in_scope")))))),FieldUpdate (UnQual (Ident "me_tmpls")) (App (Var (UnQual (Ident "mkVarSet"))) (Var (UnQual (Ident "rule_bndrs"))))])) (BDecls [])])]])]])]]