The whole section confused me.
First, you can use the ins/2 function to assert that variables are in a range. We’ll use it like this:
There was no introduction to the syntax ins/2 meaning that predicate ins (why is it a function all of a sudden?) takes two arguments.
create ((A, B)) :- [A, B] ins 1…7.
Shouldn’t that be 0…7?
Next, you’ll also need to check identity with #= (not ==)
Shouldn’t #= be =:=?