Hi for all...
i have to implement unifiction algorithm (in first order logic) using c++ language so can any help me with basic ideas??
selvado
- 2 Contributors
- forum1 Reply
- 2 Views
- 12 Years Discussion Span
- comment Latest Post by iamthwee
iamthwee 1,547
The language known as 'Prolog' relies heavily on this idea, however, all you need to do is consider using this...
Here are a few examples to clarify whether you really understand what unification is...
Here are some examples of terms that will unify:
f(a,b)
f(a,X)
X = b
f(plus(4,5), g(5))f(X, Y)
X = plus(4,5)
Y = g(5)
f(plus(plus(4,5),7), b)f(plus(Y,X), b)
Y = plus(4,5)
X = 7
However, here are some examples where unification will fail:
f(apple, pie)
f(pie, apple)
f(jim, X)f(X, fred)
And now for the algorithm...
http://www.ale.cs.toronto.edu/docs/ref/ale_trale_ref/ale_trale_ref-node4.html
Using the first case for its brevity I shall outline a procedure for C++
f(a,b)
f(a,X)
X = b
First create some strings.
string one = "f(a,b)"
string two = "f(a,X)"
string three="X=b"
Using step one check that the tail head is the same in both string one and two. They are.
f(whatever,whatever) f(whatever,whatever)
Next find the first disagreement pair, which would be
b and X
Substitue the X with X=b and then check if both expressions are the same (the substitution could be done using recursion) Repeat until finished.
God bless.