YAP
7.1.0
Toggle main menu visibility
Main Page
Related Pages
Modules
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
a
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
y
~
Functions
a
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
y
~
Variables
a
c
e
f
g
i
k
m
n
o
p
q
r
s
t
v
Files
File List
File Members
All
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
y
Functions
c
e
m
y
Variables
Typedefs
Enumerations
Enumerator
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
y
Macros
•
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
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
34
eamtrans(
A
,
A
)
:-
var
(
A
),
var.
35
eamtrans((
A
,
B
),(
C
,
D
))
:-
eamtrans,
eamtrans(
A
,
C
),
eamtrans(
B
,
D
).
36
eamtrans((
X
is
Y
) ,(skip_while_var(
Vars
),
X
is
Y
))
:-
eamtrans,
'$variables_in_term'(
Y
,[],
Vars
).
37
eamtrans((
X
=\=
Y
),(skip_while_var(
Vars
),
X
=\=
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
38
eamtrans((
X
=:=
Y
),(skip_while_var(
Vars
),
X
=:=
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
39
eamtrans((
X
>=
Y
) ,(skip_while_var(
Vars
),
X
>=
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
40
eamtrans((
X
>
Y
) ,(skip_while_var(
Vars
),
X
>
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
41
eamtrans((
X
<
Y
) ,(skip_while_var(
Vars
),
X
<
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
42
eamtrans((
X
=<
Y
) ,(skip_while_var(
Vars
),
X
=<
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
43
eamtrans((
X
@>=
Y
) ,(skip_while_var(
Vars
),
X
@>=
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
44
eamtrans((
X
@>
Y
) ,(skip_while_var(
Vars
),
X
@>
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
45
eamtrans((
X
@<
Y
) ,(skip_while_var(
Vars
),
X
@<
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
46
eamtrans((
X
@=<
Y
) ,(skip_while_var(
Vars
),
X
@=<
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
47
48
eamtrans((
X
\=
Y
) ,(skip_while_var(
Vars
),
X
\=
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
49
eamtrans((
X
\==
Y
),(skip_while_var(
Vars
),
X
\==
Y
))
:-
eamtrans,
'$variables_in_term'(
X
+
Y
,[],
Vars
).
50
51
eamtrans(
B
,
B
).
52
53
eamconsult(
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/2
abolish(+ P,+ N)
assert/1
assert(+ C)
consult/1
consult(+ F)
var/1
var( T)
pl
eam.yap
Generated by
1.9.3