The Warren Abstract Machine (WAM) is to Prolog what the stack machine is to C: a compact instruction set a logic program compiles to. Its two exotic operations are unification (make two terms equal by binding variables — f(X,2) and f(3,Y) unify with X=3, Y=2) and backtracking (on failure, undo the bindings and try the next clause, via a trail and choice points). Warren's design made Prolog fast enough to be practical and defined how logic languages are implemented to this day. It is the abstract machine for a paradigm where the runtime searches rather than merely evaluates.
Unifying f(X, 2) with f(3, Y). The demo binds the variables and reports success and the substitution: live demo
“A machine evaluates; it doesn't search.” — the WAM's instructions unify and backtrack, so its runtime explores a space of solutions, undoing bindings on failure. Search is a first-class execution model, not a library on top of one. cited
Unify to bind, backtrack to undo, and the machine searches a space instead of walking a value. Warren's instruction set is why a declarative language runs at all. Warren 1983
On the canonical compiler, unifying f(X,2) with f(3,Y) succeeds (1) with X=3, Y=2 (sum 5):