~burner/xsb/debianized-xsb

« back to all changes in this revision

Viewing changes to docs/newpages/about.html

  • Committer: Michael R. Head
  • Date: 2006-09-06 22:11:55 UTC
  • Revision ID: burner@n23-20060906221155-7e398d23438a7ee4
Add the files from the 3.0.1 release package

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
2
<html>
 
3
<link type="text/css" rel="stylesheet" href="xsb.css">
 
4
<head>
 
5
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
 
6
<title>About XSB</title>
 
7
</head>
 
8
<body>
 
9
<div class="xsb-menu">
 
10
<p>
 
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>
 
15
</p>
 
16
</div>
 
17
 
 
18
<h1>About XSB</h1>
 
19
 
 
20
<h3>Tabled Resolution</h3>
 
21
<p>
 
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.
 
26
</p>
 
27
<p>XSB's Tabling implementation:</p>
 
28
<ul>
 
29
  <li>
 
30
  Evaluates at the engine level programs with stratified and non-stratified
 
31
  negation, and programs with stratified aggregation.
 
32
  </li>
 
33
  
 
34
  <li>
 
35
  Allows full Prolog functionality in tabled code including cuts, (subject
 
36
  to weak semantic restrictions), in meta-logical predicates, in second-order
 
37
  predicates, etc.
 
38
  </li>
 
39
 
 
40
  <li>
 
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.
 
44
  </li>
 
45
 
 
46
  <li>
 
47
  Provides standard tabling predicates which can be used to program a number
 
48
  of applications in Non-Monotonic reasoning and Knowledge
 
49
  representation.
 
50
  </li>
 
51
 
 
52
  <li>
 
53
  Dynamically compiles tables into trie-based SLG-WAM code. which is indexed
 
54
  dynamically and for which full memory management is provided.
 
55
  </li>
 
56
 
 
57
  <li>
 
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.
 
64
  </li>
 
65
 
 
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.
 
69
  </li>
 
70
</ul>
 
71
 
 
72
<h3>
 
73
Support for Multi-Threading
 
74
</h3>
 
75
<p>
 
76
Beginning with Version 3.0, XSB supports a configuration that allows
 
77
multiple threads of computation within a single process under the
 
78
Posix model.
 
79
 
 
80
<ul>
 
81
<li>
 
82
All threads within the multi-threaded engine share the same static
 
83
code and I/O streams.  
 
84
</li>
 
85
 
 
86
<li>
 
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.  
 
92
</li>
 
93
 
 
94
<li>
 
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).
 
100
</li>
 
101
 
 
102
<li>
 
103
Posix-style operations are supported for XSB threads, including
 
104
joining and detaching threads, thread cancellation, etc.
 
105
</li>
 
106
 
 
107
</ul>
 
108
 
 
109
<h3>Indexing and Dynamic Code</h3>
 
110
 
 
111
<p>
 
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.
 
115
</p>
 
116
 
 
117
<ul>
 
118
  <li>
 
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
 
122
  of a term.
 
123
  </li>
 
124
 
 
125
  <li>
 
126
  XSB provides a variety of read and assert mechanisms for quickly
 
127
  loading dynamic predicates, especially if these predicates are unit
 
128
  clauses.
 
129
  </li>
 
130
 
 
131
  <li>
 
132
  XSB provides mechanisms for backtrackable asserts: asserts whose
 
133
  effects become undone upon backtracking.
 
134
  </li> 
 
135
 
 
136
  <li>
 
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.
 
140
  </li>
 
141
</ul>
 
142
 
 
143
<h3>Interfaces</h3>
 
144
<p>
 
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
 
147
have been!)
 
148
</p>
 
149
 
 
150
<ul>
 
151
  <li>
 
152
  Interfaces under UNIX and Cygwin, to call C functions or to be called by them.
 
153
  </li>
 
154
 
 
155
  <li>
 
156
  An ODBC interface, to call data stored in a database accessable by an
 
157
  ODBC driver.  This interface translates Datalog clauses into SQL
 
158
  automatically.
 
159
  </li>
 
160
  
 
161
  <li>
 
162
    An alternate interface that supports access to multiple drivers,
 
163
    including mySQL drivers.
 
164
  </li>
 
165
  
 
166
  <li>
 
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/">
 
170
  YAJXB</a>
 
171
  </li>
 
172
 
 
173
  <li> An interface to Perl, and especially to its pattern-matching
 
174
  facilities.
 
175
  </li>
 
176
  
 
177
  <li>
 
178
  Interfaces to libwww routines and various pattern-matching utilities,
 
179
  all of which are useful for Web applications.
 
180
  </li>
 
181
 
 
182
  <li>
 
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.
 
186
  </li>
 
187
 
 
188
</ul>
 
189
 
 
190
<h3>HiLog Compilation</h3>
 
191
<p>
 
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.
 
196
</p>
 
197
<p>
 
198
XSB's HiLog implementation:
 
199
</p>
 
200
 
 
201
<ul>
 
202
  <li>
 
203
  Includes compiled HiLog. Higher-order predicates execute at
 
204
  essentially the same speed as compiled first-order predicates.
 
205
  </li>
 
206
 
 
207
  <li>
 
208
  Includes a fully integrated HiLog preprocessor. HiLog terms can be
 
209
  used anywhere in XSB, including the interpreter level.
 
210
  </li>
 
211
 
 
212
  <li>
 
213
  Provides a number of meta-logical standard predicates for HiLog
 
214
  terms.
 
215
  </li>
 
216
</ul>
 
217
 
 
218
<h3>Packages</h3>
 
219
<p>
 
220
In addition to those mentioned above, several important packages are maintained 
 
221
on top of XSB, inlcuding
 
222
<ul>
 
223
  <li>Flora: a highly sophisticated and efficient implementation of
 
224
             F-logic
 
225
  </li>
 
226
  <li>
 
227
    XJ: a system that allows XSB programs to create graphical sser
 
228
    interfaces based on Java's Swing package.
 
229
  </li>
 
230
  <li>XMC: a temporal-logic model checker for verifying properties of
 
231
           concurrent programs. and containing a graphical user
 
232
           interface.
 
233
  </li>
 
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.
 
238
  </li>
 
239
</ul>
 
240
</p>
 
241
<p>
 
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.
 
250
</p>
 
251
 
 
252
<hr>
 
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 -->
 
255
</body> </html>