Challenge 1: = vs. is on the Same Expression — Possible Solution ==================================================================== SWI-Prolog session: ?- X = 3 * 4. X = 3*4. ?- X is 3 * 4. X = 12. Explanation: `X = 3 * 4` performs unification -- X is unified with the actual, unevaluated compound term 3*4 (functor *, arguments 3 and 4), which is why swipl echoes it back as "3*4", not a computed number. `X is 3 * 4` is completely different: is FORCES the right-hand side to be evaluated as a genuine arithmetic expression first, producing the number 12, and only THEN unifies X with that resulting number. The same textual expression, 3 * 4, means "an unevaluated term" under = and "an arithmetic computation to perform" under is -- exactly the distinction the chapter's own X = 2+3 vs. X is 2+3 example demonstrates. WHY THIS WORKS AS AN ANSWER ------------------------------ This reproduces the chapter's own core = vs. is demonstration with a different arithmetic expression, confirming the identical distinction holds and explaining why in terms of evaluation vs. unification.