YAP
7.1.0
ground.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
* *
7
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
8
* *
9
**************************************************************************
10
* *
11
* File: ground.pl *
12
* Last rev: *
13
* mods: *
14
* comments: Variables and ground *
15
* *
16
*************************************************************************/
17
18
/**
19
* @file ground.yap
20
* @author VITOR SANTOS COSTA <vsc@VITORs-MBP-2.lan>
21
* @date Thu Oct 19 12:01:27 2017
22
*
23
* @brief term operations
24
*
25
* @addtogroup YAPTypes
26
*
27
*
28
*/
29
/*
30
% grounds all free variables
31
% as terms of the form '$VAR'(N)
32
33
numbervars('$VAR'(M), M, N) :- !,
34
succ(M, N).
35
numbervars(Atomic, M, M) :-
36
atomic(Atomic), !.
37
numbervars(Term, M, N) :-
38
functor(Term, _, Arity),
39
'$numbervars'(0,Arity, Term, M, N).
40
41
'$numbervars'(A, A, _, N, N) :- !.
42
'$numbervars'(A,Arity, Term, M, N) :-
43
'$succ'(A,An),
44
arg(An, Term, Arg),
45
numbervars(Arg, M, K), !,
46
'$numbervars'(An, Arity, Term, K, N).
47
48
49
ground(Term) :-
50
nonvar(Term), % This term is not a variable,
51
functor(Term, _, Arity),
52
'$ground'(Arity, Term). % and none of its arguments are.
53
54
'$ground'(0, _) :- !.
55
'$ground'(N, Term) :-
56
'$predc'(N,M),
57
arg(N, Term, ArgN),
58
ground(ArgN),
59
'$ground'(M, Term).
60
61
numbervars(Term, M, N) :-
62
'$variables_in_term'(Term, [], L),
63
'$numbermarked_vars'(L, M, N).
64
65
'$numbermarked_vars'([], M, M).
66
'$numbermarked_vars'([V|L], M, N) :-
67
attvar(V), !,
68
'$numbermarked_vars'(L, M, N).
69
'$numbermarked_vars'(['$VAR'(M)|L], M, N) :-
70
M1 is M+1,
71
'$numbermarked_vars'(L, M1, N).
72
73
*/
74
75
pl
ground.yap
Generated by
1.9.3