Module("term/annotation",[Signature([Constructors([OpDecl("Anno",FunType([ConstType(SortVar("a")),ConstType(SortVar("b"))],ConstType(SortVar("a"))))])]),Strategies([SDefNoArgs("get-annos",CallNoArgs(SVar("get-annotations"))),RDefNoArgs("get-annotations",RuleNoCond(AnnoList(Var("t"),[Var(ListVar("t*"))]),Var(ListVar("t*")))),SDefNoArgs("set-annos",CallNoArgs(SVar("set-annotations"))),RDefNoArgs("set-annotations",RuleNoCond(NoAnnoList(Tuple([Var("t"),Var(ListVar("t*"))])),AnnoList(Var("t"),[Var(ListVar("t*"))]))),RDefNoArgs("set-anno",RuleNoCond(NoAnnoList(Tuple([Var("t1"),Var("t2")])),AnnoList(Var("t1"),[Var("t2")]))),RDefNoArgs("rm-annotations",RuleNoCond(Var("t"),AnnoList(Var("t"),[]))),SDefNoArgs("has-annos",Match(AnnoList(Wld,[Var("t"),Var(ListVar("t*"))]))),SDefNoArgs("has-annotation",CallNoArgs(SVar("has-annos"))),SDef("if-annotation",[DefaultVarDec("s1"),DefaultVarDec("s2")],GuardedLChoice(CallNoArgs(SVar("has-annotation")),CallNoArgs(SVar("s1")),CallNoArgs(SVar("s2")))),SDefNoArgs("strip-annos",Call(SVar("bottomup"),[CallNoArgs(SVar("rm-annotations"))])),SDefNoArgs("catch-annos",Rec("x",GuardedLChoice(CallNoArgs(SVar("has-annotation")),Build(NoAnnoList(Op("Anno",[RootApp(Seq(CallNoArgs(SVar("rm-annotations")),All(CallNoArgs(SVar("x"))))),RootApp(CallNoArgs(SVar("get-annotations")))]))),All(CallNoArgs(SVar("x")))))),SDef("preserve-annotation",[DefaultVarDec("s")],Call(SVar("preserve-annos"),[CallNoArgs(SVar("s"))])),RDef("preserve-annos",[DefaultVarDec("s")],Rule(AnnoList(Var("t"),[Var(ListVar("a*"))]),AnnoList(Var("r"),[Var(ListVar("a*"))]),AM(BA(CallNoArgs(SVar("s")),Var("t")),Var("r"))))])])
