| Did you know ... | Search Documentation: |
| Pack logicmoo_base -- prolog/logicmoo/common_logic/common_logic_unused.txt |
%= Compute normal forms for SHOIQ formulae. %= Skolemize SHOI<Q> formula. %= %= Copyright (C) 1999 Anthony A. Aaby <aabyan@wwc.edu> %= Copyright (C) 2006-2007 Stasinos Konstantopoulos <stasinos@users.sourceforge.net> %= Douglas R. Miles <logicmoo@gmail.com> %= %= This program is free software; you can redistribute it and/or modify %= it under the terms of the GNU General Public License as published by %= the Free Software Foundation; either version 2 of the License, or %= (at your option) any later version. %= %= This program is distributed in the hope that it will be useful, %= but WITHOUT ANY WARRANTY; without even the implied warranty of %= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %= GNU General Public License for more details. %= %= You should have received a copy of the GNU General Public License along %= with this program; if not, write to the Free Software Foundation, Inc., %= 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%= FORMULA SYNTAX
%=
%= dlnot(A)
%= dland(F, F)
%= dlor(F, F)
%= dlimplies(F, F)
%= dlequiv(F, F)
%= all(X,A)
%= exists(X,A)
%= atleast(X,N,A)
%= atmost(X,N,A)
:- module(dbase_i_kif,
[ % nnf/2, pnf/3,pnf/2, cf/3,
tsn/0,
op(300,fx,'~'),
op(600,xfx,'=>'),
op(650,xfx,'<=>'),
op(350,xfx,'xor'),
op(400,yfx,'&'),
op(500,yfx,'v')
]).
:-multifile(use_kif_expansion/0).
:-thread_local(use_kif_expansion/0).
%user:term_expansion(H ,CE):-kif_term_expansion(H,CE),((H)\=@=CE,dmsg(kif_term_expansion(H,CE))).
%user:goal_expansion(H ,CE):-kif_goal_expansion(H,CE),((H)\=@=CE,dmsg(kif_goal_expansion(H,CE))).
use_kif_term(B):- use_kif_expansion;kif_hook(B);kif_pred_head(B).
kif_head_expansion(B,CE):- use_kif_term(B),kif_term_expansion(B,CE).
:-export(kif_clause_expansion/3).
kif_clause_expansion(H,B,OUT):- kif_head_expansion(H,HH),
must(kif_goal_expansion(B,BB)),!,OUT=(HH:-BB).
kif_term_expansion(H,H):-not(compound(H)),!.
kif_term_expansion(M:H,M:HH):-!,kif_goal_expansion(H,HH).
kif_term_expansion((H:-B),CE):- (use_kif_expansion;kif_hook(H)), !,kif_clause_expansion(H,B,CE),((H:-B)\=@=CE,dmsg(kif_clause_expansion(H,B,CE))).
kif_term_expansion((:-B),(:-CE)):- !,kif_goal_expansion(B,CE).
kif_term_expansion([CA|RGS],CEARGS):-!,maplist(kif_arg_expansion,[CA|RGS],CEARGS).
kif_term_expansion(B,CE):-kif_goal_expansion(B,CE).
kif_arg_expansion(H,H):-not(compound(H)),!.
kif_arg_expansion(H,H):-!.
get_meta_args(C,MP):- predicate_property(C,meta_predicate(MP)),!.
get_meta_args(C,MP):- C=..[F|ARGS],functor(C,F,A),get_meta_args(C,F,A,ARGS,MPARGS),MP=..[F|MPARGS].
get_meta_args(_,module,_,_ARGS,_MPARGS):-!,fail.
get_meta_args(_,_,A,_ARGS,MPARGS):- A>2,!,length(MPARGS,A).
meta_term_expansion(_,B,B):-not(compound(B)),!.
meta_term_expansion(M,B,C):-member(M,[+,-,?]),!,kif_arg_expansion(B,C),!.
% [^,:]
meta_term_expansion(_,B,C):-arg(1,B,IsVar),is_ftVar(IsVar),kif_arg_expansion(B,C),!.
meta_term_expansion(M,B,C):-number(M),!,kif_goal_expansion(B,C),!.
meta_term_expansion(_,B,C):-kif_term_expansion(B,C),!.
kif_goal_expansion(H,H):-not(compound(H)),!.
kif_goal_expansion(not(B),not(CE)):- !,kif_goal_expansion(B,CE).
kif_goal_expansion(M:(B),M:(CE)):- !,kif_goal_expansion(B,CE).
kif_goal_expansion('@'(B , M),'@'(CE , M)):- !,kif_goal_expansion(B,CE).
kif_goal_expansion((H , B),(HH , BB)):-!,kif_goal_expansion(H,HH),kif_goal_expansion(B,BB).
kif_goal_expansion((H ; B),(HH ; BB)):-!,kif_goal_expansion(H,HH),kif_goal_expansion(B,BB).
kif_goal_expansion((H -> B ; C),(HH -> BB ; CC)):-!,kif_goal_expansion(H,HH),kif_goal_expansion(B,BB),kif_goal_expansion(C,CC).
kif_goal_expansion(C,CEO):- C =..[F|ARGS],
kif_goal_args_expansion(C,F,ARGS,CEO),!.
kif_goal_args_expansion(C,F,ARGS,CEO):- get_meta_args(C,MP),!,MP=..[F|MARGS],maplist(meta_term_expansion,MARGS,ARGS,CEARGS),!,CEO=..[F|CEARGS].
kif_goal_args_expansion(_,F,ARGS,CEO):- maplist(kif_arg_expansion,ARGS,CEARGS),
CE=..[F|CEARGS],
logical_pos_maybe(F,CE,CEO).
each_subterm00(B, A):- A=B;(compound(B), (functor(B,A,_);((arg(_, B, C), each_subterm00(C, A))))).
:-meta_predicate(gshow_call(0)).
:-export(gshow_call/1).
add_mi(_Caller,G,O):- prolog_load_context(source,File),
source_location(File,_),trace,source_location(File,_),
not(quietly((each_subterm00(G,ST),atom(ST),member(ST,[show_call,show_gcall])))), get_functor(G,F,A),!,use_gcall(F,A),!,
not(dont_use_gcall(F,A)),!, O=gshow_call(G),!. % dmsg(expanded(G)).
logical_pos_maybe(_,A,A):-!.
dont_use_gcall(dont_use_gcall,2).
dont_use_gcall(gshow_call,1).
dont_use_gcall(show_call,1).
dont_use_gcall(_,1).
dont_use_gcall(F,A):-functor(G,F,A),predicate_property(G,meta_predicate(_)).
dont_use_gcall(goal_expansion,2).
use_gcall(_,2).
gshow_call(C):-show_call_failure(C).
user:goal_expansion(true,writeq(true)):-!.
%user:goal_expansion(V,V):-not(compound(V)),!.
%user:goal_expansion(G,O):-source_file(G,File),add_mi(file(File),G,O).