YAP 7.1.0
eam.yap
Go to the documentation of this file.
1/*************************************************************************
2* *
3* YAP Prolog *
4* *
5* Yap Prolog was developed at NCCUP - Universidade do Porto *
6* BEAM extends the YAP Prolog system to support the EAM *
7* *
8* Copyright Ricardo Lopes and Universidade do Porto 2000-2006 *
9* *
10**************************************************************************
11* *
12* File: eam.yap *
13* Last rev: 6/4/2006 *
14* mods: *
15* comments: Some utility predicates needed by BEAM *
16* *
17*************************************************************************/
18
19/**
20 * @file eam.yap
21 * @author VITOR SANTOS COSTA <vsc@VITORs-MBP-2.lan>
22 * @date Thu Oct 19 11:50:05 2017
23 *
24 * @brief Extended Abstract Machine
25 * @defgroup EAM Extended Abstract Machine
26 * @ingroup extensions
27 *
28 *
29*/
30
31:- system_module( '$_eam', [eamconsult/1,
32 eamtrans/2], []).
33
34eamtrans(A,A):- var(A),var.
35eamtrans((A,B),(C,D)):- eamtrans, eamtrans(A,C),eamtrans(B,D).
36eamtrans((X is Y) ,(skip_while_var(Vars), X is Y )):- eamtrans, '$variables_in_term'(Y,[],Vars).
37eamtrans((X =\= Y),(skip_while_var(Vars), X =\= Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
38eamtrans((X =:= Y),(skip_while_var(Vars), X =:= Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
39eamtrans((X >= Y) ,(skip_while_var(Vars), X >= Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
40eamtrans((X > Y) ,(skip_while_var(Vars), X > Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
41eamtrans((X < Y) ,(skip_while_var(Vars), X < Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
42eamtrans((X =< Y) ,(skip_while_var(Vars), X =< Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
43eamtrans((X @>= Y) ,(skip_while_var(Vars), X @>= Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
44eamtrans((X @> Y) ,(skip_while_var(Vars), X @> Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
45eamtrans((X @< Y) ,(skip_while_var(Vars), X @< Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
46eamtrans((X @=< Y) ,(skip_while_var(Vars), X @=< Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
47
48eamtrans((X \= Y) ,(skip_while_var(Vars), X \= Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
49eamtrans((X \== Y),(skip_while_var(Vars), X \== Y )):- eamtrans, '$variables_in_term'(X + Y,[],Vars).
50
51eamtrans(B,B).
52
53eamconsult(File):- eamconsult, eamconsult, %fails if eam is disable
54 assert((user:term_expansion((A :- B),(A :- C)):- eamtrans(B,C))),
55 assert, ( consult(File) ; consult), eam,
56 abolish(user:term_expansion,2).
abolish(+ P,+ N)
assert(+ C)
consult(+ F)
var( T)