The Project is aimed at writing an Interpreter for Prolog in Ocaml.
Designed data structures to represent Prolog programs, including clauses, facts, rules, atomic formulas, and terms
Implemented unification as a parameter-passing mechanism, to resolve of goals against program clauses
Utilized a backtracking strategy to efficiently explore the resolution search space, allowing for the systematic replacement of goals with subgoals based on unified clauses adhering to the principles of programing language