3:- set_fileAssertMt(baseKB). 5:- prolog_load_context(file,F), ain(mpred_unload_option(F,never)). 6
11:- kb_global(baseKB:mpred_sv/2). 12arity(mpred_sv,2).
13mpred_sv(Pred,Arity)==> arity(Pred,Arity),hybrid_support(Pred,Arity),singleValuedInArg(Pred,Arity).
14
15:- dynamic(mpred_sv_shared/2). 16mpred_sv_shared(Pred,Arity)==>({kb_shared(Pred/Arity)},mpred_sv(Pred,Arity)).
17mpred_sv_shared(mpred_sv,2).
18mpred_sv_shared(singleValuedInArg,2).
19mpred_sv_shared(singleValuedInArgDefault,3).
20
21( prologSingleValued(Pred), arity(Pred,Arity)/ ( \+ singleValuedInArg(Pred,_)))
22 ==> singleValuedInArg(Pred,Arity).
23
26
30
31
35
39
40
41arity(singleValuedInArgDefault, 3).
42prologHybrid(singleValuedInArgDefault(prologSingleValued,ftInt,ftTerm)).
43singleValuedInArg(singleValuedInArgDefault,3).
44
45(singleValuedInArg(Pred,_)==>prologSingleValued(Pred)).
46
47((singleValuedInArgDefault(SingleValued,ArgN,S1)/ground(S1)) ==> singleValuedInArg(SingleValued,ArgN)).
48
49:- kb_shared(singleValuedInArgAX/3). 50
51(singleValuedInArg(F, N),arity(F,A)) ==> singleValuedInArgAX(F,A,N).
52
54((singleValuedInArgAX(F,A,N),
55 {functor(P,F,A),arg(N,P,P_SLOT),replace_arg(P,N,Q_SLOT,Q)})
56 ==>
57 ((( P,{P_SLOT\=isMissing,
58 call(dif:dif(Q_SLOT,P_SLOT)),call_u(Q),ground(Q)},Q)
59 ==> (\+ Q, P)))).
61
62unused ==>
63((singleValuedInArgAX(F,A,N),
64 {functor(P,F,A),arg(N,P,P_SLOT),replace_arg(P,N,Q_SLOT,Q)})
65 ==>
66 (( P/ground(P) ==>
67 ({P_SLOT\==isMissing,call(dif:dif(Q_SLOT,P_SLOT) ),
68 call_u(Q),ground(Q),ignore(retract(Q))})))).
69
70unused ==> ((singleValuedInArgAX_maybe(F,A,N),
71 {functor(P,F,A),arg(N,P,P_SLOT),replace_arg(P,N,Q_SLOT,Q)})
72 ==>
73 (( P/ground(P) ==>
74 ({P_SLOT\==isMissing,call(dif:dif(Q_SLOT,P_SLOT)),
75 call_u(Q),ground(Q)}, (\+ Q, P, single_override_maybe(P,Q)))))).
76
77((single_override(P,Q), {ignore(retract(Q))}) ==>
78 ( (\+ P ==> (( \+ single_override(P,Q)), {mpred_supported(Q)}, Q)) ))