How can you iterate through two lists with the same index, so that you get a pair of each list:
?- X = [1, 2, 3], Y = [a, b, c], ... ElemX = 1, ElemY = a; ElemX = 2, ElemY = b; ElemX = 3, ElemY = c.
Loop through both lists simultaneously:
member2(E1, [H1|T1], E2, [H2|T2]) :- member2_(T1, T2, H1, H2, E1, E2). member2_(_, _, E1, E2, E1, E2). member2_([H1|T1], [H2|T2], _, _, E1, E2) :- member2_(T1, T2, H1, H2, E1, E2).
Result in swi-prolog:
?- member2(E1, [1, 2, 3], E2, [a, b, c]). E1 = 1, E2 = a ; E1 = 2, E2 = b ; E1 = 3, E2 = c.