Next: Known Bugs
Up: Restrictions and Current Known
Previous: Restrictions and Current Known
  Contents
  Index
Current Restrictions
- The maximum arity for predicate and function symbols is 255.
- The maximum length of atoms that can be stored in an XSB
object code file is in principle 232 - 1, but in
practice it is 228 - 1 (i.e., in 32-bit platforms it is
bounded by the size of the maximum integer; see below).
- In the current version, you should never try to rename a byte code
file generated for a module, though you can move it around in your
file system. Since the module name is stored in the file, renaming it
causes the system to load it into wrong places. However, byte code
files for non-modules can be renamed at will.
- XSB allows up to 1 Gigabyte of address space for 32-bit SUNs and 512
Megabytes of address space for other 32-bit platforms. For SUNs the
address space for integers is -228--
(228 - 1). For
MIPS-based machines (e.g. Silicon Graphics machines), the
address space for integers is -226--
(226 - 1). For all
other machines it is -227--
(227 - 1). This restriction can
cause unexpected results when numbers are computed. The amount
of space allowed for floating point numbers is similar for each
machine. For 64-bit platforms, addresses, integers, and
floating point numbers are all stored in 60 bits. However, as the
object code file format is the same as for the 32-bit versions,
compiled constants are subject to 32-bit limitations.
- Indexing on floating-point numbers does not work, since, as
implemented in XSB, the semantics
of floating-point unification is murky in the best case. Therefore, it
is advisable that if you use floating point numbers in the first
argument of a procedure, that you explicitly index the
predicate in some other argument.
- The XSB compiler cannot distinguish the occurrences of a
0-ary predicate and a name of a module (of an import declaration) as
two different entities. For that reason it fails to characterise the
same symbol table entry as both a predicate and a module at the
same time. As a result of this fact, a compiler error is issued
and the file is not compiled. For that reason we suggest the
use of mutually exclusive names for modules and 0-ary predicates,
though we will try to amend this restriction in future versions of
XSB.
- Subsumption-based tabled predicates may not be delayed.
Consequently,
- the truth value of a negative call on a subsumptive predicate
must be known at completion of the producing call, thus
avoiding a negative delay of this negative call, and
- only unconditional answers may be derived for a subsumptive
predicate, thus avoiding the positive delay of calls
which consume such an answer.
Violations of either of these conditions raise an exception and
abort the computation.
Next: Known Bugs
Up: Restrictions and Current Known
Previous: Restrictions and Current Known
  Contents
  Index
Luis Fernando P. de Castro
2003-06-27