All three lists must be the same length (or at least, must be able to be the same length eventually) -- 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.
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.