Tabled resolution is useful for recursive query computation, allowing programs
to terminate correctly in many cases where Prolog does not. Users interested
in Parsing, Program Analysis, Model-checking, Data Mining and Diagnosis
may benefit from XSB.
XSB's Tabling implementation:
Evaluates at the engine level programs with stratified and non-stratified
negation, and programs with stratified aggregation.
Allows full Prolog functionality in tabled code including cuts, (subject
to weak semantic restrictions), in meta-logical predicates, in second-order
Allows for declaration of tabled predicates either automatically by the
system or manually by the user. Furthermore, tabling can be automatically
performed for termination, for efficiency, or for both.
Provides standard tabling predicates which can be used to program a number
of applications in Non-Monotonic reasoning and Knowledge representation.
Dynamically compiles tables into trie-based SLG-WAM code. which is indexed
dynamically and for which full memory management is provided.
Finally, Version 2.0 includes an alternative tabling strategy called Local
Evaluation which can be extremely efficient for applications such as
program analysis, along with an alternative memory model, called Chat,
which allows garbage colleciton during tabled evaluations.
Indexing of Dynamic Code
XSB contains a variety of features to support in-memory data-oriented applications.
Using these features, knowledge bases of up to one million clauses can
be quickly loaded and efficiently indexed.
XSB provides a variety of read and assert mechanisms for quickly loading
dynamic predicates, especially if these predicates are unit clauses.
Indexes can be created on alternate or joint arguments of dynamic code.
Furthermore this indexing can be hash-based, or trie-based if it is necessary
to perform indexing deep within a term.
For static code XSB provides unification factoring which extends
clause indexing by factoring common unifications out of clause heads, and
can be used to optimize many Prolog programs.
HiLog supports a type of higher-order programming in which predicate symbols
can be variable or structured. This allows unification to be performed
on the predicate symbols themselves in addition to the arguments of the
XSB's HiLog implementation:
Includes compiled HiLog. Higher-order predicates execute at essentially
the same speed as compiled first-order predicates.
Includes a fully integrated HiLog preprocessor. HiLog terms can be used
anywhere in XSB, including the interpreter level.
Provides a number of meta-logical standard predicates for HiLog terms.
Supported interfaces for XSB include:
Interfaces to call C functions or to be called by them, under UNIX.
An interface to Oracle that
efficiently generates SQL code for Prolog queries on-demand, making use
of Level 4 of Oracle's ProC.
translates Datalog clauses into SQL automatically.
makes public all source-code so that the interface can be tuned as needed,
or can be ported to other Prologs.
A DLL interface so that XSB can be called from within a Windows application.
An ODBC interface, to call data stored by other Windows applications.
Java interface provided through InterProlog.
XSB has been tested on over a dozen hardware and
operating system platforms under Microsoft Windows 95/98, Windows NT, and
various versions of 32-bit UNIX. XSB 2.0 has been ported to
64-bit architectures and has been tested on 64-bit SGI machines. Various
versions of XSB have been used to construct large-scale commercial systems for
the U.S. Customs Service, the U.S. Defense Logistics Agency, the National
Security Agency, and Medicine Rules, Inc.
Feedback: The XSB Development Team
$Date: 1999/05/18 15:51:15 $