:- module( slp, [] ). :- compile(library('../runtime_fm')). do_trace(1, [1|A]/B, [1|C]/D, b) :- user:trace, A=B, C=D. do_trace(2, [2|A]/A, [2|B]/B, c). p([A|B]/C, [D|E]/F, G) :- select_id([[a],[H]], [G], [0.5,0.5], 3, A, B, D, I, J), ( I=:=3 -> [a]=[G], user:true, J=C, E=F ; [H]=[G], q(J/K, E/L, H), t(K/C, L/F, H) ). q([A|B]/C, [D|E]/F, G) :- select_id([[b],[c]], [G], [0.3333333333333333,0.6666666666666666], 5, A, B, D, H, I), ( H=:=5 -> [b]=[G], user:true, I=C, E=F ; [c]=[G], user:true, I=C, E=F ). t([A|B]/C, [D|E]/F, G) :- select_id([[c]], [G], [1], 7, A, B, D, _, H), [c]=[G], user:true, H=C, E=F.