private Boolean Run(_Term x, _Term y, ref _MGU s) { if (x.CompareTo(y)) { return(true); } else if (x.GetType() == _TypeOfTerm.VARIABLE) { return(Unify_var((_Variable)x, y, ref s)); } else if (y.GetType() == _TypeOfTerm.VARIABLE) { return(Unify_var((_Variable)y, x, ref s)); } else if (x.GetType() == _TypeOfTerm.COMPOSITE && y.GetType() == _TypeOfTerm.COMPOSITE) { if (x.Name != y.Name) { return(false); } _Composite comX = (_Composite)x; _Composite comY = (_Composite)y; if (comX.Count != comY.Count) // Khong cung toan tu { return(false); } for (int i = 0; i < comX.Count; ++i) { _Term tempArrX = comX[i].Replace(s); _Term tempArrY = comY[i].Replace(s); if (Run(tempArrX, tempArrY, ref s) == false) { return(false); } } return(true); } else // x hoac y la hang { return(false); } }
public override Boolean IsAppear(_Term p) { Boolean flag = false; if (p.GetType() == _TypeOfTerm.COMPOSITE) { return(false); } for (int i = 0; i < mComponents.Count; ++i) { _Term temp = (_Term)mComponents[i]; if (temp.GetType() == _TypeOfTerm.COMPOSITE) { flag = temp.IsAppear(p); } else { flag = temp.CompareTo(p); } if (flag == true) { return(true); } } return(false); }
public override Boolean CompareTo(_Term p) { if (p.GetType() != _TypeOfTerm.COMPOSITE) { return(false); } if (Name != p.Name) { return(false); } _Composite temp = (_Composite)p; if (mComponents.Count != temp.mComponents.Count) { return(false); } for (int i = 0; i < mComponents.Count; ++i) { _Term temp1 = (_Term)mComponents[i]; _Term temp2 = (_Term)temp.mComponents[i]; if (temp1.CompareTo(temp2) == false) { return(false); } } return(true); }
public ArrayList GetArguments() { ArrayList result = new ArrayList(); for (int i = 0; i < mComponents.Count; ++i) { _Term p = (_Term)mComponents[i]; result.Add(_Term.arrPatternObject[(int)p.GetType()].NewObject(p)); } return(result); }
public override Boolean CompareTo(_Term p) { if (p.GetType() != _TypeOfTerm.VARIABLE) { return(false); } if (Name != p.Name) { return(false); } return(true); }
private void Init(ArrayList Components) { if (Components == null) { mComponents = null; } else { mComponents = new ArrayList(); for (int i = 0; i < Components.Count; ++i) { _Term p = (_Term)Components[i]; mComponents.Add(_Term.arrPatternObject[(int)p.GetType()].NewObject(p)); } } }
private void Init(_Variable var, _Term x) { mArg1 = new _Variable(var); mArg2 = _Term.arrPatternObject[(int)x.GetType()].NewObject(x); }
private void Init(_Term x, _Term y) { mArg1 = _Term.arrPatternObject[(int)x.GetType()].NewObject(x); mArg2 = _Term.arrPatternObject[(int)y.GetType()].NewObject(y); }