public CNF2State(PredicateApplication pa, bool p) : this(new[] { new Clause(pa, p) }, new Clause[0]) { Debug.Assert(!pa.isTrue); // var nc = new Clause(pa, p); // pClauses[nc.ToString()] = nc; }
public Clause(PredicateApplication f, bool p) : this( p ? new[] { f } : new PredicateApplication[0], !p ? new[] { f } : new PredicateApplication[0], new EqualityFormula[0], new EqualityFormula[0] ) { }
public PAInstance(Clause clause, int position) { Debug.Assert(position < clause.literals.Count); Debug.Assert(clause.literals[position].f is PredicateApplication); this.clause = clause; this.position = position; pa = clause.literals[position].f as PredicateApplication; polarity = clause.literals[position].polarity; }
public TypePredicateInstance(Clause clause, int atomIndex, int termIndex) { Debug.Assert(atomIndex >= 0 && atomIndex < clause.literals.Count); var atom = clause.literals[atomIndex]; var pa = atom.f as PredicateApplication; Debug.Assert(pa != null); Debug.Assert(termIndex >= 0 && termIndex < pa.args.Count()); this.clause = clause; this.atomIndex = atomIndex; this.termIndex = termIndex; predicateApplication = pa; term = pa.args[termIndex]; }
internal static string polish(PredicateApplication f, IDictionary <string, string> vm) { var result = polish(f.predicate); if (f.args.Count() > 0) { result = "(" + result; foreach (var a in f.args) { result += " " + polish(a, vm); } result += ")"; } return(result); }
////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// private static bool tryUnify(PredicateApplication pa1, PredicateApplication pa2, Substitution s) { if (pa1.predicate != pa2.predicate) { return(false); } Debug.Assert(pa1.args.Count() == pa2.args.Count()); for (var i = 0; i < pa1.args.Count(); i++) { if (!tryUnify(pa1.args[i], pa2.args[i], s)) { return(false); } } return(true); }
private HashSet <PAInstance> getSet(PredicateApplication pa, bool polarity) { HashSet <PAInstance> list; if (pa.ffreeVariables.Count == 0) { list = polarity ? pgPAInstances : ngPAInstances; } else if (polarity) { list = pnPAInstances; } else { list = nnPAInstances; } return(list); }
public IFormula visit(PredicateApplication f) { return(f); }
public IFormula visit(PredicateApplication f) { return(new Not(f)); }