26:-prolog_load_context(directory,Dir),asserta(user:file_search_path(yadlr,Dir)). 27
30user:file_search_path(aleph, X) :- getenv('LOGICMOO_HOME',MOO),atom_concat(MOO,'/src_modules/aleph/', X).
31
32
33:- use_module(yadlr(prodlr)). 34
35:- consult(aleph(aleph)). 36
37:- consult(refine). 38
39:- assert_if_new(('$aleph_sat_terms'(v,v,v,v) :- fail) ). 40:- assert_if_new(('$aleph_sat_atom'(v,v) :- fail) ). 41:- assert_if_new(('$aleph_sat_varscopy'(v,v,v):- fail) ). 42:- assert((nil :- fail)). 43
44aleph_settings :-
45 set(nodes, 100000),
46 set(i, 3),
47 set(depth, 50),
48 set(clauselength, 3),
49 set(verbosity, 100),
50 set(check_useless, true),
51 set(refinelitgen, user),
52 set(refinethreadvar, list),
53 !.
54
55set_determinations(Pred, []).
56set_determinations(Pred, [L|R]) :-
57 determination(Pred, L),
58 set_determinations(Pred, R).
59
60set_predicate(Pred) :-
61 Arity = 2,
62 functor(Head, Pred, Arity),
63 (setting(construct_bottom, reduction),
64 setting(refine, user)
65 -> setting(refinethreadvar, Template),
66 arg(1, Head, +Template),
67 arg(2, Head, -Template)
68 ; arg(1, Head, +inlist),
69 arg(2, Head, -outlist)
70 ),
71 modeh( *, Head),
72 findall(X, thread_itemfunctor(X), Determinations),
73 set_determinations(Pred/Arity, Determinations).
74
75set_body :-
76 modeb( *, concept_select(+inlist, #concept_name_or_not, +outlist) ),
77 modeb( *, forall_select(+inlist, #relation_path, #concept_name_or_not, +outlist) ),
78 modeb( *, atleast_select(+inlist, #relation_path, #concept_name_or_not, #num, +outlist) ),
79 modeb( *, atmost_select(+inlist, #relation_path, #concept_name_or_not, #num, +outlist) ),
80 modeb( *, self_select(+inlist, #relation_path, +outlist) ),
81 modeb( *, concept_select(+inlist, #concept_name_or_not, -list) ),
82 modeb( *, forall_select(+inlist, #relation_path, #concept_name_or_not, -list) ),
83 modeb( *, atleast_select(+inlist, #relation_path, #concept_name_or_not, #num, -list) ),
84 modeb( *, atmost_select(+inlist, #relation_path, #concept_name_or_not, #num, -list) ),
85 modeb( *, self_select(+inlist, #relation_path, -list) ),
86 modeb( *, concept_select(+list, #concept_name_or_not, +outlist) ),
87 modeb( *, forall_select(+list, #relation_path, #concept_name_or_not, +outlist) ),
88 modeb( *, atleast_select(+list, #relation_path, #concept_name_or_not, #num, +outlist) ),
89 modeb( *, atmost_select(+list, #relation_path, #concept_name_or_not, #num, +outlist) ),
90 modeb( *, self_select(+list, #relation_path, +outlist) ),
91 modeb( *, concept_select(+list, #concept_name_or_not, -list) ),
92 modeb( *, forall_select(+list, #relation_path, #concept_name_or_not, -list) ),
93 modeb( *, atleast_select(+list, #relation_path, #concept_name_or_not, #num, -list) ),
94 modeb( *, atmost_select(+list, #relation_path, #concept_name_or_not, #num, -list) ),
95 modeb( *, self_select(+list, #relation_path, -list) ).
96
97
98config(Pred,reduction) :-
99 set(construct_bottom, reduction),
100 set(refine, auto),
101 aleph_settings,
102 set_predicate(Pred),
103 set_body.
104
105config(Pred,saturation) :-
106 set(construct_bottom, saturation),
107 aleph_settings,
108 set_predicate(Pred),
109 set_body.
110
111init_learn(Pred,Example, Config) :-
112 read_all(Example),
113 config(Pred,Config).
114
115learn(Pred,Example,Config) :-
116 init_learn(Pred,Example, Config), !,
117 118 119 120 induce.
121
122learn(Pred,Example) :- learn(Pred,Example,reduction).
123
124learn(Example) :- learn(target,Example).
125
126
127nil :-
128 hypothesis(Head, Body, _),
129 numbervars((Head:-Body), 0, _),
130 Head = target(A, B),
131 \+ inout_thread(Body, A, B).
132
133prune((Head:-Body)):-
134 numbervars((Head:-Body), 0, _),
135 Head = target(A, B),
136 \+ inout_thread(Body, A, _), !.
137