AIMA.Core.Logic.FOL.StandardizeApart.standardizeApart C# (CSharp) Method

standardizeApart() public method

public standardizeApart ( List l1Literals, List l2Literals, StandardizeApartIndexical standardizeApartIndexical ) : Term>.Dictionary
l1Literals List
l2Literals List
standardizeApartIndexical StandardizeApartIndexical
return Term>.Dictionary
        public Dictionary<Variable, Term> standardizeApart(List<Literal> l1Literals,
                List<Literal> l2Literals,
                StandardizeApartIndexical standardizeApartIndexical)
        {
            List<Variable> toRename = new List<Variable>();

            foreach (Literal pl in l1Literals)
            {
                toRename.AddRange(variableCollector.collectAllVariables(pl
                        .getAtomicSentence()));
            }
            foreach (Literal nl in l2Literals)
            {
                toRename.AddRange(variableCollector.collectAllVariables(nl
                        .getAtomicSentence()));
            }

            Dictionary<Variable, Term> renameSubstitution = new Dictionary<Variable, Term>();

            foreach (Variable var in toRename)
            {
                Variable v = null;
                do
                {
                    v = new Variable(standardizeApartIndexical.getPrefix()
                            + standardizeApartIndexical.getNextIndex());
                    // Ensure the new variable name is not already
                    // accidentally used in the sentence
                } while (toRename.Contains(v));
                if (renameSubstitution.ContainsKey(var))
                {
                    renameSubstitution[var] = v;
                }
                else
                {
                    renameSubstitution.Add(var, v);
                }
            }

            List<Literal> posLits = new List<Literal>();
            List<Literal> negLits = new List<Literal>();

            foreach (Literal pl in l1Literals)
            {
                posLits.Add(substVisitor.subst(renameSubstitution, pl));
            }
            foreach (Literal nl in l2Literals)
            {
                negLits.Add(substVisitor.subst(renameSubstitution, nl));
            }

            l1Literals.Clear();
            l1Literals.AddRange(posLits);
            l2Literals.Clear();
            l2Literals.AddRange(negLits);

            return renameSubstitution;
        }
    }

Same methods

StandardizeApart::standardizeApart ( Chain chain, StandardizeApartIndexical standardizeApartIndexical ) : Chain
StandardizeApart::standardizeApart ( Clause clause, StandardizeApartIndexical standardizeApartIndexical ) : Clause
StandardizeApart::standardizeApart ( Sentence aSentence, StandardizeApartIndexical standardizeApartIndexical ) : StandardizeApartResult