Check out maplist/2 for more notes
All three lists must be the same length (or at least, must be able to be the same length after instantiation) -- otherwise the predicate fails.
It makes sense from a logical point of view.
This is quite unlike in Clojure for example, where a map operation on several lists ends when one of the lists runs out of elements.
Maybe a maplist/4 that stops as soon as the end of any list is reached (called prefix_maplist/4 maybe) might be considered as shortening or extending lists at their end is expensive.