- ...``partitions''
- both
terms are used interchangeably in this paper
- ...argument
- thus an extension of the standard WAM switching
instructions is needed on the concrete level:
either (as in the KCM [BBB+89]) add an additional
argument to all three switching instructions, or (as in our approach)
add one new instruction
(set_index_number n; see appendix B)
to change the value of an index register (IX) which is looked
up by the switch instructions
- ...clauses
- mainly facts
- ...p_cd
- c stands for constant and d
for don't know
- ...deterministic
- primitive deterministic is an
extended definition of head deterministic which looks not only at the
clause heads but also at the primitive instructions at the beginning of
the bodies
- ...program
- see also appendices
B and C.2.2
- ...heads
- if a variable in the head is directly bound to a constant or
structure in the body before
any other subgoals, this information can also be used (e.g. in
p(X) :- X = 5, q(6)); anyway, RELFUN's normalizer would move
such body goals into the head (e.g. obtaining p(5) :- q(6))
- ...``guards''
- side-effect free builtins
(<,>,)
- ...selective
-
selectivity is the number of different constants and
functors
- ...arrows
- and/2 and or/2 of the hash table are
presented here in the opposite order of earlier examples, which if
of course immaterial
- ...arguments
- in future DAXes layout will occasionally
enforce copying; in our implementation, identical sub-DAXes are always
shared (see [Ste92])
- ...30%)
- of course this constant could be easily changed
- ...selectivity
- see section 11.1
- ...presented
and
unrestricted
- ...selectivity
- see section 11.1
- ...in
- the pruning can be influenced by
the indexing :max-args <n> and indexing :max-depth <n>
commands in RELFUN which are described in appendix A
- ...in
- a more efficient alternative to this transformation is implemented
as part of RELFUN's compilation laboratory
- ...horizontal
- source
to source
- ...vertical
- source to code
- ...(
cannot be changed by the user
- ...dnf-procedure
- cf. section 11
and appendix C.2.2
- ...dnf
- the
only difference to standard PROLOG here being the use of square brackets
instead of round parentheses for structures
- ...code
- an instruction
inst(arg1, , argN) is internally written as
(inst arg1 argN), i.e. in LISP syntax
- ...benchmarks
- these
benchmark results are not very exact, since run-time was taken by
hand (our emulator has no run-time measure predicate).