labeling_c(AllVars) :- middle_first(AllVars, AllVarsPreOrdered), ( foreach(Var,AllVarsPreOrdered) do indomain(Var) ). middle_first(List,Ordered) :- halve(List, Front, Back), reverse(Front,RevFront), splice(Back,RevFront,Ordered).