:- use_module(library(tor_clpfd)). :- use_module(library(tor)). :- use_module(library(mutable_variables)). % Tests the Prolog pack (version 1.0.2) %%% Serves as basic illustration of features that are new in version 1.0.2 %%% translate_dbs(HandlerLeft, HandlerRight,HandlerLeftHeadVar,HandlerRightHeadVar) :- clause(dbs_tree(D), Body), translate(dbs_tree(D), Body, HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar,_DiffPos). translate_dibs(HandlerLeft, HandlerRight,HandlerLeftHeadVar,HandlerRightHeadVar) :- clause(dibs_tree(D), Body), translate(dibs_tree(D), Body, HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar,_DiffPos). translate_id(HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar) :- clause(id(Depth,PruneVar),Body), translate(id(Depth,PruneVar), Body, HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar,_DiffPos). translate_bab(HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar) :- clause(bab(Objective, BestVar, Current),Body), translate(bab(Objective, BestVar, Current), Body, HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar,_DiffPos). translate_nbs(HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar) :- clause(nbs_tree(Var), Body), translate(nbs_tree(Var), Body, HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar,_DiffPos). translate_log(HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar) :- clause(log_tree, Body), translate(log_tree, Body, HandlerLeft, HandlerRight, HandlerLeftHeadVar, HandlerRightHeadVar,_DiffPos). setup_vars(Xs) :- length(Xs,5), Xs ins 1..10. setup_vars2(Xs) :- length(Xs,2), Xs ins 1..5. test_dbs(Xs) :- setup_vars(Xs), search(tor_merge(dbs_tree(10),tor_label(Xs))). test_dibs(Xs) :- setup_vars(Xs), search(tor_merge(dibs_tree(5),tor_label(Xs))). test_id(Xs) :- setup_vars2(Xs), search(id(tor_label(Xs))). test_nbs(Xs) :- setup_vars(Xs), search(nbs(500,tor_label(Xs))). test_bab(Xs) :- Xs = [First,Second], Xs ins 1..10, Objective #= (First + Second), Objective #> 3, search(bab(Objective,tor_label(Xs))).