public override _Term Replace(_MGU s) { _Term result = new _Variable(this); for (int i = 0; i < s.Count; ++i) { if (s[i].Arg1.CompareTo(result)) { if (s[i].Arg2.GetType() != _TypeOfTerm.COMPOSITE) { result = _Term.arrPatternObject[(int)s[i].Arg2.GetType()].NewObject(s[i].Arg2); if (result.GetType() == _TypeOfTerm.VARIABLE) { result = result.Replace(s); } } else { result = s[i].Arg2.Replace(s); } break; } } return(result); }
public _Element Find(_Variable x) { _Element result = null; _Element temp; for (int i = 0; i < mContent.Count; ++i) { temp = (_Element)mContent[i]; if (temp.IsBelong(x) == true) { result = new _Element(temp); break; } } return(result); }
private Boolean Unify_var(_Variable var, _Term x, ref _MGU s) { _Element val; if ((val = s.Find(var)) != null) { return(Run(val.Arg2, x, ref s)); } else if ((val = s.Find(x)) != null) { return(Run(var, val.Arg1, ref s)); } else if (x.IsAppear(var) == true) { return(false); } else { s.Add(new _Element(var, x)); return(true); } }
public Boolean IsBelong(_Variable x) { return(mArg1.CompareTo(x)); }
public _Element(_Variable var, _Term x) { Init(var, x); }
private void Init(_Variable var, _Term x) { mArg1 = new _Variable(var); mArg2 = _Term.arrPatternObject[(int)x.GetType()].NewObject(x); }