% MINIHYPER
% induce £ Hyp):
% Hyp
4 .."::.
induce! Hyp):-
iter_deep(, 0). 4 ,
% 0
iter_deep(Hyp, MaxD):-
write I 'MaxD = '!, write { MaxD), nl,
start_hyp(HypOi,
coir.plete{ HypO) %
depth_first(HypO, Hyp, KaxD) %
NewMaxD is MaxD + 1, iter_deepi Hyp, KewMaxD).
% depth_first! HypO, Hyp, MaxD]:
HypO
% Hyp MaxD
454 II. Prolog
depth_first(Hyp, Hyp, _):-consistent(Hyp).
depth_first(HypO, Hyp, MaxDO):-MaxDO > 0, MaxDl is MaxDO - 1, refine_hyp(HypO, Hypl),
complete (Hypl), % Hypl depth_first(Hypl, Hyp, MaxDl).
complete(Hyp):- % Hyp
not (ex(E), %
once (prove (, Hyp, Answer)), % Hyp
Answer \== yes). % ,
consistent(Hyp):- % ,
%
not (nex(E), %
once (prove (, Hyp, Answer)), % Hyp
Answer \= = no). % ,
% refine_hyp(HypO, Hyp):
% ,
% Hyp
refine_hyp(HypO, Hyp):-
conc(Clausesl, [ClauseO/VarsO | Clauses2], HypO), %
% ClauseO conc(Clausesl, [Clause/Vars | Clauses2], Hyp), % refine (ClauseO, VarsO, Clause, Vars). % Clause
% refine (Clause, Args, NewClause, NewArgs):
% , Clause
% Args NewClause NewArgs
%
refine(Clause, Args, Clause, NewArgs):-
conc(Argsl, [A | Args2], Args), %
member(A, Args2), %
conc(Argsl, Args2, NewArgs).
%
refine(Clause, Args, NewClause, NewArgs):-length(Clause, L), max_clause_length (MaxL), L < MaxL,
backliteraM Lit, Vars), %
cone(Clause, [Lit], NewClause), %
cone(Args, Vars, NewArgs). %
% ,
max_proof_length(). %
% , Prolog
max_clause_length(3). %
refine (Clause, Vars, NewClause, NewVars). Clause Vars NewClause NewVars. Vars