AIMA.Core.Logic.FOL.Unifier.occurCheck C# (CSharp) Метод

occurCheck() защищенный Метод

protected occurCheck ( Term>.Dictionary theta, Variable var, FOLNode x ) : bool
theta Term>.Dictionary
var AIMA.Core.Logic.FOL.Parsing.AST.Variable
x FOLNode
Результат bool
        protected bool occurCheck(Dictionary<Variable, Term> theta, Variable var,
                FOLNode x)
        {
            if (x is Function)
            {
                List<Variable> varsToCheck = _variableCollector
                        .collectAllVariables((Function)x);
                if (varsToCheck.Contains(var))
                {
                    return true;
                }

                // Now need to check if cascading will cause occurs to happen
                // e.g.
                // Loves(SF1(v2),v2)
                // Loves(v3,SF0(v3))
                // or
                // P(v1,SF0(v1),SF0(v1))
                // P(v2,SF0(v2),v2 )
                // or
                // P(v1, F(v2),F(v2),F(v2),v1, F(F(v1)),F(F(F(v1))),v2)
                // P(F(v3),v4, v5, v6, F(F(v5)),v4, F(v3), F(F(v5)))
                return cascadeOccurCheck(theta, var, varsToCheck,
                        new List<Variable>(varsToCheck));
            }
            return false;
        }