public override Predicate GenerateGiven(string sTag) { ParameterizedPredicate pGiven = new ParameterizedPredicate("Given" + Name); foreach (Argument a in Parameters) { pGiven.AddParameter(a); } pGiven.AddParameter(new Parameter(Domain.TAG, sTag)); if (Negation) { return(pGiven.Negate()); } return(pGiven); }
public Predicate PartiallyGround(Dictionary <string, Constant> dBindings) { GroundedPredicate gpred = new GroundedPredicate(Name, Negation); ParameterizedPredicate ppred = new ParameterizedPredicate(Name, Negation); bool bAllGrounded = true; foreach (Argument a in Parameters) { if (a is Parameter) { if (!dBindings.ContainsKey(a.Name)) { ppred.AddParameter(a); bAllGrounded = false; } else { ppred.AddParameter(dBindings[a.Name]); gpred.AddConstant(dBindings[a.Name]); } } else { gpred.AddConstant((Constant)a); ppred.AddParameter(a); } } if (bAllGrounded) { if (gpred.Name == "=") { bool bSame = gpred.Constants[0].Equals(gpred.Constants[1]); if (bSame && !Negation || !bSame && Negation) { return(Domain.TRUE_PREDICATE); } else { return(Domain.FALSE_PREDICATE); } } return(gpred); } else { return(ppred); } }
//for SDR public static Predicate GenerateKNot(Argument pTag) { ParameterizedPredicate pp = new ParameterizedPredicate("KNot"); pp.AddParameter(pTag); return(pp); }