module nonrec0.
export joinans3().
@no_preprocessing +.
@sup_magic_indexing -.
@sup_magic +.
@existential +.
@factoring -.
@factor_magic -.
@magic -.
@no_rewriting +.
@ordered_search -.
@save_module -.
@pipelining -.
@check_subsumption +.
@multiset -.
@index_deltas +.
@return_unify -.
@convert_functions -.
@non_ground_facts +.
@eager_eval +.
@psn -.
end_module.

module nonrec1.
export joinans2().
@no_preprocessing +.
@sup_magic_indexing -.
@sup_magic +.
@existential +.
@factoring -.
@factor_magic -.
@magic -.
@no_rewriting +.
@ordered_search -.
@save_module -.
@pipelining -.
@check_subsumption +.
@multiset -.
@index_deltas +.
@return_unify -.
@convert_functions -.
@non_ground_facts +.
@eager_eval +.
@psn -.
m_parent1() :- m_joinans2().
sup_1_1(X) :- m_joinans2(), 
		parent1(X,Y).
m_parent1_bf(X) :- sup_1_1(X).
sup_1_2(X) :- sup_1_1(X), 
		parent1_bf(X,Z).
m_parent1_bf(X) :- sup_1_2(X).
joinans2() :- sup_1_2(X), 
		parent1_bf(X,W), 
		fail().
m_parent1() :- m_joinans2().
sup_2_1(X,Y) :- m_joinans2(), 
		parent1(X,Y).
m_parent1_bf(X) :- sup_2_1(X,Y).
sup_2_2(X,Z,Y) :- sup_2_1(X,Y), 
		parent1_bf(X,Z).
m_parent1_bf(X) :- sup_2_2(X,Z,Y).
joinans2() :- sup_2_2(X,Z,Y), 
		parent1_bf(X,W), 
		fail4(W,X,Y,Z).
parent1(X,Y) :- m_parent1(), 
		parent(X,Y).
parent1_bf(X,Y) :- m_parent1_bf(X), 
		parent(X,Y).
end_module.

module nonrec2.
export joinans1().
@no_preprocessing +.
@sup_magic_indexing -.
@sup_magic +.
@existential +.
@factoring -.
@factor_magic -.
@magic -.
@no_rewriting +.
@ordered_search -.
@save_module -.
@pipelining -.
@check_subsumption +.
@multiset -.
@index_deltas +.
@return_unify -.
@convert_functions -.
@non_ground_facts +.
@eager_eval +.
@psn -.
joinans1() :- m_joinans1(), 
		parent(X,Y), 
		parent(X,Z), 
		parent(X,W), 
		fail().
end_module.

