public override TrsTermBase CreateCopyAndReplaceSubTerm(TrsTermBase termToReplace, TrsTermBase replacementTerm) { TrsTermProduct product = new TrsTermProduct(new List<TrsTermBase>()); foreach (var term in TermList) { if (term.Equals(termToReplace)) product.TermList.Add(replacementTerm); else product.TermList.Add(term.CreateCopyAndReplaceSubTerm(termToReplace, replacementTerm)); } return product; }
public override bool Equals(object other) { TrsTermProduct otherTp = other as TrsTermProduct; if (otherTp == null || otherTp.TermList.Count != TermList.Count) { return(false); } bool retVal = true; for (int i = 0; i < otherTp.TermList.Count; i++) { retVal = retVal && TermList[i].Equals(otherTp.TermList[i]); } return(retVal); }
public override TrsTermBase CreateCopyAndReplaceSubTerm(TrsTermBase termToReplace, TrsTermBase replacementTerm) { TrsTermProduct product = new TrsTermProduct(new List <TrsTermBase>()); foreach (var term in TermList) { if (term.Equals(termToReplace)) { product.TermList.Add(replacementTerm); } else { product.TermList.Add(term.CreateCopyAndReplaceSubTerm(termToReplace, replacementTerm)); } } return(product); }
protected override TrsTermBase ApplySubstitution(Substitution substitution) { TrsTermProduct product = new TrsTermProduct(new List <TrsTermBase>()); foreach (var term in TermList) { if (term.Equals(substitution.Variable)) { product.TermList.Add(substitution.SubstitutionTerm); } else { product.TermList.Add(term.ApplySubstitutions(new [] { substitution })); } } return(product); }
public static TrsTermProduct Convert(this AstTermProduct astIn) { List<TrsTermBase> termList = new List<TrsTermBase>(astIn.TermList.Select(t => ConvertAstTermBase(t)).Cast<TrsTermBase>()); var trsTermProduct = new TrsTermProduct(termList, astIn); return trsTermProduct; }
protected override TrsTermBase ApplySubstitution(Substitution substitution) { TrsTermProduct product = new TrsTermProduct(new List<TrsTermBase>()); foreach (var term in TermList) { if (term.Equals(substitution.Variable)) product.TermList.Add(substitution.SubstitutionTerm); else product.TermList.Add(term.ApplySubstitutions(new [] { substitution })); } return product; }