Module("strategy/conditional",[Imports([Import("strategy/general/option")]),Strategies([SDefNoArgs("eq",Match(NoAnnoList(Tuple([Var("x"),Var("x")])))),SDefNoArgs("equal",Match(NoAnnoList(Tuple([Var("x"),Var("x")])))),SDefT("equal",[],[DefaultVarDec("x")],Match(Var("x"))),SDefT("equal",[],[DefaultVarDec("x"),DefaultVarDec("y")],Where(AM(Build(Var("x")),Var("y"))))]),Strategies([SDef("try",[DefaultVarDec("s")],LChoice(CallNoArgs(SVar("s")),Id)),SDef("if",[DefaultVarDec("c"),DefaultVarDec("b")],GuardedLChoice(CallNoArgs(SVar("c")),CallNoArgs(SVar("b")),Id)),SDef("if",[DefaultVarDec("c"),DefaultVarDec("b1"),DefaultVarDec("b2")],GuardedLChoice(CallNoArgs(SVar("c")),CallNoArgs(SVar("b1")),CallNoArgs(SVar("b2")))),SDef("restore",[DefaultVarDec("s"),DefaultVarDec("rest")],LChoice(CallNoArgs(SVar("s")),Seq(CallNoArgs(SVar("rest")),Fail))),SDef("restore-always",[DefaultVarDec("s"),DefaultVarDec("rest")],GuardedLChoice(CallNoArgs(SVar("s")),CallNoArgs(SVar("rest")),Seq(CallNoArgs(SVar("rest")),Fail))),SDef("finally",[DefaultVarDec("s"),DefaultVarDec("f")],GuardedLChoice(CallNoArgs(SVar("s")),Where(CallNoArgs(SVar("f"))),Seq(Where(CallNoArgs(SVar("f"))),Fail)))]),Strategies([SDefNoArgs("true",Id),SDefNoArgs("false",Fail),SDef("ior",[DefaultVarDec("s1"),DefaultVarDec("s2")],LChoice(Seq(CallNoArgs(SVar("s1")),Call(SVar("try"),[CallNoArgs(SVar("s2"))])),CallNoArgs(SVar("s2")))),SDef("or",[DefaultVarDec("s1"),DefaultVarDec("s2")],CondChoice(CallNoArgs(SVar("s1")),Call(SVar("try"),[Test(CallNoArgs(SVar("s2")))]),Test(CallNoArgs(SVar("s2"))))),SDef("and",[DefaultVarDec("s1"),DefaultVarDec("s2")],CondChoice(CallNoArgs(SVar("s1")),Test(CallNoArgs(SVar("s2"))),Seq(Test(CallNoArgs(SVar("s2"))),Fail)))]),Strategies([SDef("maybe",[DefaultVarDec("s")],LChoice(Build(NoAnnoList(Op("Some",[RootApp(CallNoArgs(SVar("s")))]))),Build(NoAnnoList(Op("None",[]))))),RDef("maybe",[DefaultVarDec("s1"),DefaultVarDec("s2")],RuleNoCond(NoAnnoList(Op("Some",[Var("a")])),App(CallNoArgs(SVar("s1")),Var("a")))),RDef("maybe",[DefaultVarDec("s1"),DefaultVarDec("s2")],RuleNoCond(NoAnnoList(Op("None",[])),App(CallNoArgs(SVar("s2")),NoAnnoList(Tuple([])))))])])
