1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
3
<link type="text/css" rel="stylesheet" href="xsb.css">
5
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
6
<title>About XSB</title>
11
<a href="index.html" >Home</a>
12
<a href="research.html" >Research</a>
13
<a href="xsbsystem.html" >XSB System</a>
14
<a href="contactus.html" >Contact Us</a>
20
<h3>Tabled Resolution</h3>
22
Tabled resolution is useful for recursive query computation, allowing
23
programs to terminate correctly in many cases where Prolog does
24
not. Users interested in Parsing, Program Analysis, Model-checking,
25
Data Mining, Diagnosis and Temporal Reasoning may benefit from XSB.
27
<p>XSB's Tabling implementation:</p>
30
Evaluates at the engine level programs with stratified and non-stratified
31
negation, and programs with stratified aggregation.
35
Allows full Prolog functionality in tabled code including cuts, (subject
36
to weak semantic restrictions), in meta-logical predicates, in second-order
41
Allows for declaration of tabled predicates either automatically by the
42
system or manually by the user. Furthermore, tabling can be automatically
43
performed for termination, for efficiency, or for both.
47
Provides standard tabling predicates which can be used to program a number
48
of applications in Non-Monotonic reasoning and Knowledge
53
Dynamically compiles tables into trie-based SLG-WAM code. which is indexed
54
dynamically and for which full memory management is provided.
58
Has a default a tabling strategy called
59
<i>Local Evaluation</i> which is efficient for returning all answers
60
to a query, and is useful for applications such as program analysis
61
and non-monotonic reasoning. As a configuration alternative, <i>
62
Batched Evaluation </i> is a Prolog-like tabling strategy that
63
efficiently returns the first answer to a query.
66
<li> Has a default stack management
67
configuration the SLG-WAM configuration, for which a choice of three
68
heap garbage collectors are available.
73
Support for Multi-Threading
76
Beginning with Version 3.0, XSB supports a configuration that allows
77
multiple threads of computation within a single process under the
82
All threads within the multi-threaded engine share the same static
87
For dynamic code or tables, predicates may be declared
88
thread-<i>private</i> or thread-<i>shared</i>. Private predicates
89
are visible only to a given thread, and the space for private
90
predicates is reclaimed upon a thread's exit. Thread-shared
91
predicates are visible to all threads.
95
Within default local evaluation, concurrency for shared tables is
96
supported by an optimistic concurrency control called <i>shared
97
completed tables</i> which adds little overhead to computation.
98
Within batched evaluation, non-completed tables are visible to
99
multiple threads as well (this is experimental in version 3.0).
103
Posix-style operations are supported for XSB threads, including
104
joining and detaching threads, thread cancellation, etc.
109
<h3>Indexing and Dynamic Code</h3>
112
XSB contains a variety of features to support in-memory data-oriented
113
applications. Using these features, knowledge bases with millions of clauses
114
can be quickly loaded and efficiently indexed.
119
Indexes can be created on alternate or joint arguments of dynamic
120
code. Furthermore this indexing can be hash-based, or trie-based if
121
it is necessary to perform indexing deep within alternate arguments
126
XSB provides a variety of read and assert mechanisms for quickly
127
loading dynamic predicates, especially if these predicates are unit
132
XSB provides mechanisms for backtrackable asserts: asserts whose
133
effects become undone upon backtracking.
137
For static code XSB provides <i>unification factoring</i> which
138
extends clause indexing by factoring common unifications out of
139
clause heads, and can be used to optimize many Prolog programs.
145
XSB supports a variety of interfaces. All source code is available so
146
that the interfaces can be tuned as needed or ported to other Prologs. (as some
152
Interfaces under UNIX and Cygwin, to call C functions or to be called by them.
156
An ODBC interface, to call data stored in a database accessable by an
157
ODBC driver. This interface translates Datalog clauses into SQL
162
An alternate interface that supports access to multiple drivers,
163
including mySQL drivers.
167
Java interfaces provided through <a
168
href="http://www.declarativa.com/interprolog">InterProlog</a> and
169
<a href="http://www-db.stanford.edu/~stefan/rdf/yajxb/">
173
<li> An interface to Perl, and especially to its pattern-matching
178
Interfaces to libwww routines and various pattern-matching utilities,
179
all of which are useful for Web applications.
183
An interface to the stable model generator
184
<a href="http://www.tcs.hut.fi/Software/smodels">
185
SModels</a> via the new <em>XASP</em> package.
190
<h3>HiLog Compilation</h3>
192
HiLog supports a type of higher-order programming in which predicate
193
symbols can be variable or structured. This allows unification to be
194
performed on the predicate symbols themselves in addition to the
195
arguments of the predicates.
198
XSB's HiLog implementation:
203
Includes compiled HiLog. Higher-order predicates execute at
204
essentially the same speed as compiled first-order predicates.
208
Includes a fully integrated HiLog preprocessor. HiLog terms can be
209
used anywhere in XSB, including the interpreter level.
213
Provides a number of meta-logical standard predicates for HiLog
220
In addition to those mentioned above, several important packages are maintained
221
on top of XSB, inlcuding
223
<li>Flora: a highly sophisticated and efficient implementation of
227
XJ: a system that allows XSB programs to create graphical sser
228
interfaces based on Java's Swing package.
230
<li>XMC: a temporal-logic model checker for verifying properties of
231
concurrent programs. and containing a graphical user
234
<li>xsbdoc: a mechanism for generating manuals for XSB libraries and
235
applications using principles of literate programming.
236
Manuals can be generated in a variety of formats, including
237
html, pdf, ps, and even ASCII text.
242
XSB has been tested on over a dozen hardware and operating system
243
platforms under Microsoft Windows 95/98, Windows NT, Windows 2000 and
244
various versions of 32-bit UNIX. XSB also has also been ported to 64-bit
245
architectures and has been tested on 64-bit SGI machines. Various
246
versions of XSB have been used to construct large-scale commercial
247
systems for the U.S. Customs Service, the U.S. Defense Logistics
248
Agency, the National Security Agency, Medicine Rules, Inc, MdLogix
249
Inc., and many others.
253
<address>Email: <a href="mailto:xsb-users@lists.sourceforge.net" >xsb-users@lists.sourceforge.net</a></address>
254
<!-- hhmts start -->Last modified: $Id: about.html,v 1.4 2006/07/26 15:22:13 harpreet_singh Exp $ <!-- hhmts end -->