iterate_variants([_|GroupSolutions], Ws, Solution) :-
iterate_variants(GroupSolutions, Ws, Solution).
+
rightmost_power(Term, FinalTerm, Xs) :-
- ( Term = X ^ Y
+ ( ( Term = X ^ Y
+ ; Term = _ : X ^ Y
+ )
-> ( var(Y) -> FinalTerm = Y, Xs = [X]
; Xs = [X | Xss], rightmost_power(Y, FinalTerm, Xss)
)
).
-% :- meta_predicate findall_with_existential(?, 0, ?, ?, ?).
-
findall_with_existential(Template, Goal, PairedSolutions, Witnesses0, Witnesses) :-
( nonvar(Goal),
- Goal = _ ^ _ ->
+ ( Goal = _ ^ _
+ ; Goal = _ : (_ ^ _)
+ ) ->
rightmost_power(Goal, Goal1, ExistentialVars0),
term_variables(ExistentialVars0, ExistentialVars),
sort(Witnesses0, Witnesses1),