Hi for all...
i have to implement unifiction algorithm (in first order logic) using c++ language so can any help me with basic ideas??

Member Avatar for iamthwee

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.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.