Author(s): Francisco Bueno, Manuel Hermenegildo, Pedro Lopez.
Version: 1.11#222 (2004/5/24, 13:8:7 CEST)
Version of last change: 1.11#144 (2003/12/31, 19:2:9 CET)
This library contains a set of properties which are natively understood by the different program analyzers of
ciaopp
. They are used by
ciaopp
on output and they can also be used as properties in assertions.
native_props
):- use_module(library('assertions/native_props'))
or also as a package :- use_package(nativeprops)
.
Note the different names of the library and the package.
native_props
)
covered(X, Y)
All variables occuring in X
occur also in Y
.
Usage: covered(X, Y)
X
is covered by Y
.
basic_props:native/1
)
linear(X)
X
is bound to a term which is linear, i.e., if it contains any variables, such variables appear only once in the term. For example, [1,2,3]
and f(A,B)
are linear terms, while f(A,A)
is not.
Usage: linear(X)
X
is instantiated to a linear term.
basic_props:native/1
)
mshare(X)
X
contains all
sharing sets [JL88,MH89] which specify the possible variable occurrences in the terms to which the variables involved in the clause may be bound. Sharing sets are a compact way of representing groundness of variables and dependencies between variables. This representation is however generally difficult to read for humans. For this reason, this information is often translated to
ground/1
,
indep/1
and
indep/2
properties, which are easier to read.
Usage: mshare(X)
X
.
sharing(X)
.
(basic_props:native/2
)
Usage: nonground(X)
X
is not ground.
not_ground(X)
.
(basic_props:native/2
)
fails(X)
Calls of the form X
fail.
Usage: fails(X)
X
fail.
basic_props:native/1
)
not_fails(X)
Calls of the form X
produce at least one solution, or not terminate [DLGH97].
Usage: not_fails(X)
X
do not fail.
basic_props:native/1
)
possibly_fails(X)
Non-failure is not ensured for any call of the form X
[DLGH97]. In other words, nothing can be ensured about non-failure nor termination of such calls.
Usage: possibly_fails(X)
X
.
covered(X)
For any call of the form X
there is at least one clause whose test succeeds (i.e. all the calls of the form X
are covered.) [DLGH97].
Usage: covered(X)
X
are covered.
not_covered(X)
There is some call of the form X
for which there is not any clause whose test succeeds [DLGH97].
Usage: not_covered(X)
X
are covered.
is_det(X)
All calls of the form X
are deterministic, i.e. produce at most one solution, or not terminate.
Usage: is_det(X)
X
are deterministic.
non_det(X)
All calls of the form X
are not deterministic, i.e., produce several solutions.
Usage: non_det(X)
X
are not deterministic.
possibly_nondet(X)
Non-determinism is not ensured for all calls of the form X
. In other words, nothing can be ensured about determinacy nor termination of such calls.
Usage: possibly_nondet(X)
X
.
mut_exclusive(X)
For any call of the form X
at most one clause succeeds, i.e. clauses are pairwise exclusive.
Usage: mut_exclusive(X)
X
at most one clause succeeds.
not_mut_exclusive(X)
Not for all calls of the form X
at most one clause succeeds. I.e. clauses are not disjoint for some call.
Usage: not_mut_exclusive(X)
X
at most one clause succeeds.
size_lb(X, Y)
The minimum size of the terms to which the argument Y
is bound to is given by the expression Y
. Various measures can be used to determine the size of an argument, e.g., list-length, term-size, term-depth, integer-value, etc. [DL93].
Usage: size_lb(X, Y)
Y
is a lower bound on the size of argument X
.
size_ub(X, Y)
The maximum size of the terms to which the argument Y
is bound to is given by the expression Y
. Various measures can be used to determine the size of an argument, e.g., list-length, term-size, term-depth, integer-value, etc. [DL93].
Usage: size_ub(X, Y)
Y
is a upper bound on the size of argument X
.
steps_lb(X, Y)
The minimum computation time (in resolution steps) spent by any call of the form X
is given by the expression Y
[DLGHL97,LGHD96]
Usage: steps_lb(X, Y)
Y
is a lower bound on the cost of any call of the form X
.
steps_ub(X, Y)
The maximum computation time (in resolution steps) spent by any call of the form X
is given by the expression Y
[DL93,LGHD96]
Usage: steps_ub(X, Y)
Y
is a upper bound on the cost of any call of the form X
.
steps(X, Y)
The time (in resolution steps) spent by any call of the form X
is given by the expression Y
Usage: steps(X, Y)
Y
is the cost (number of resolution steps) of any call of the form X
.
finite_solutions(X)
Calls of the form X
produce a finite number of solutions [DLGH97].
Usage: finite_solutions(X)
X
have a finite number of solutions.
terminates(X)
Calls of the form X
always terminate [DLGH97].
Usage: terminates(X)
X
terminate.
Usage: indep(X)
X
are pairwise independent.
indep(X)
.
(basic_props:native/2
)
Usage: indep(X, Y)
X
and Y
do not have variables in common.
indep([[X,Y]])
.
(basic_props:native/2
)
Imported from
terms_check
(see the corresponding documentation for details).
Go to the first, previous, next, last section, table of contents.