Esempio n. 1
0
        public override bool Equals(object obj)
        {
            PrologObject objMe;

            objMe = Normalize();

            if (!(objMe == this))
            {
                return(objMe.Equals(obj));
            }

            if (obj is StructureObject)
            {
                obj = ((StructureObject)(obj)).Normalize();
            }

            if (obj == null || !(obj.GetType().Equals(this.GetType())))
            {
                return(false);
            }

            StructureObject st = ((StructureObject)(obj));

            if (!(Functor.Equals(st.Functor)))
            {
                return(false);
            }

            if (!(Arity == st.Arity))
            {
                return(false);
            }

            for (int k = 0; k <= Arity - 1; k++)
            {
                if (!(Parameters[k].Equals(st.Parameters[k])))
                {
                    return(false);
                }
            }

            return(true);
        }