public override PDLPred ToPDL(List <MonaMacro> macros, Dictionary <string, string> sub) { switch (op) { case MonaLogicalOperator.And: return(new PDLAnd(phi1.ToPDL(macros, sub), phi2.ToPDL(macros, sub))); case MonaLogicalOperator.If: return(new PDLIf(phi1.ToPDL(macros, sub), phi2.ToPDL(macros, sub))); case MonaLogicalOperator.Iff: return(new PDLIff(phi1.ToPDL(macros, sub), phi2.ToPDL(macros, sub))); case MonaLogicalOperator.Or: return(new PDLOr(phi1.ToPDL(macros, sub), phi2.ToPDL(macros, sub))); } throw new MonaException("undefined operator"); }
public override PDLPred ToPDL(List <MonaMacro> macros, Dictionary <string, string> sub) { switch (q) { case MonaQuantifier.ExistsFO: { var ret = phi.ToPDL(macros, sub); foreach (var v in vars) { return(ret = new PDLExistsFO(v, ret)); } return(ret); } case MonaQuantifier.ExistsSO: { var ret = phi.ToPDL(macros, sub); foreach (var v in vars) { return(ret = new PDLExistsSO(v, ret)); } return(ret); } case MonaQuantifier.ForallFO: { var ret = phi.ToPDL(macros, sub); foreach (var v in vars) { return(ret = new PDLForallFO(v, ret)); } return(ret); } case MonaQuantifier.ForallSO: { var ret = phi.ToPDL(macros, sub); foreach (var v in vars) { return(ret = new PDLForallSO(v, ret)); } return(ret); } default: throw new MonaException("Quantifier undefined"); } }
public override PDLPred ToPDL(List <MonaMacro> macros, Dictionary <string, string> sub) { return(new PDLNot(phi.ToPDL(macros, sub))); }