Question: PLEASE POST CORRECT SOLUTION. THE SOLUTIONS POST EARLIER HAS MANY ERRORS. ALSO POST DEMO OUTPUTS. (IF CLASSES ARE CREATED, PLEASE POST THEM ALSO) Write a

PLEASE POST CORRECT SOLUTION. THE SOLUTIONS POST EARLIER HAS MANY ERRORS. ALSO POST DEMO OUTPUTS. (IF CLASSES ARE CREATED, PLEASE POST THEM ALSO)
Write a program in C++that implements the following unification algorithm. Unify(E1,E2) If ( both E1 and E2 are constant or empty ) \{ If ( E1=E2 ), then return \{\} Else return FAIL \} If ( E1 is a variable ) \{ If E1 occurs in E2, then return FAIL Else return {E2/E1} \} If ( E2 is variable ) \{ If E2 occurs in E1, then return FAIL Else return {E1/E2} \} If ( E1 or E2 is empty ), then return FAIL HE1 = first element of E1 HE2 = first element of E2 SUBS1 = unify (HE1, HE2) If (SUBS1 =FAIL) then return FAIL TE1 = apply SUBS1 to rest of E1 TE2 = apply SUBS1 to rest of E2 SUBS2 = unify (TE1,TE2) If (SUBS2 = FAIL) then return FAIL Else return composition(SUBS1, SUBS2) E1 and E2 are two terms where variables start with upper case letters and function/constant symbols start with lower case letters. You need to consider "Occur Check
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
