public void AddTerm(LogicANDTerm term) { if (term.IsConstantZero) { return; } else if (!RemoveTerm(term)) { terms.Add(term, null); } }
public bool Contains(LogicANDTerm term) { return terms.ContainsKey(term); }
private void SubInEq(LogicANFEquation other, bool inverse, object diffSig) { int otherSubVarID; if (inverse) { otherSubVarID = other.SubVarID * -1; } else { otherSubVarID = other.SubVarID; } var subTerms = other.terms.Keys.ToArray(); var thisTerms = terms.Keys.ToArray(); terms.Clear(); if (subTerms.Length == 0) { subTerms = new LogicANDTerm[] { LogicANDTerm.ConstantZero }; } for (int i = 0; i < thisTerms.Length; i++) { if (thisTerms[i].ContainsVarID(otherSubVarID)) { for (int j = 0; j < subTerms.Length; j++) { AddTerm(thisTerms[i].SubstituteIn(subTerms[j], otherSubVarID)); } if (inverse) { AddTerm(thisTerms[i].DeepCopy(otherSubVarID)); } } else { AddTerm(thisTerms[i]); } } }
public bool RemoveTerm(LogicANDTerm term) { return terms.Remove(term); }