<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Advanced Knowledge Base Debugging for Rulelog?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Carl Andersen??</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Brett Benyo</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Miguel Calejo? ? ?</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mike Dean</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Paul Fodory</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Benjamin N. Grosofz</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael Kifery</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Senlin Liangy</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Terrance Swiftx</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>We present a novel approach to debugging expressively rich knowledge representation and reasoning (KRR) logic Rulelog. Rulelog is an extended form of declarative logic programs (LP) under the wellfounded semantics, which allows higher-order logic formulas as axioms in combination with defeasibility mechanisms that include rule cancellation and priorities, along with default and explicit negation. Rulelog also supports strong knowledge interchange with all current major semantic web standards for logical KRR. Rulelog has been implemented in Flora-2 and Silk, both on top of XSB; and (less completely) in Cyc. The debugging approach described here is part of an integrated development environment, most fully implemented in Silk. The approach includes: reasoning trace analysis, based on tabled LP inferencing tables and forestlog; and justi cation graphs, which treat why-not and defeasibility as well as provenance. The reasoning trace analysis treats performance and runaway computations, including non-termination as well as classic subgoal-ordering issues that arise in database query optimization. Non-termination can be prevented entirely by leveraging the restraint (bounded rationality) feature of Rulelog. Revision/authoring of knowledge is interactive, based on a rapid edit-test-inspect loop and incremental truth maintenance.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>1.1</p>
    </sec>
    <sec id="sec-2">
      <title>Introduction</title>
      <sec id="sec-2-1">
        <title>Rulelog</title>
        <p>
          Rulelog is an expressively rich knowledge representation and reasoning (KRR)
logic, based on a unique set of features that include:
1. defeasibility, based on argumentation theories (AT's) [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], i.e., AT-defeasibility.
        </p>
        <p>
          These theories provide features such as rule cancellation and priorities, along
with default and explicit negation.
2. higher-order syntax, based on HiLog [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], and other meta-knowledge enabled
by rule id's, i.e., hidlog ;
3. classical-logic formula syntax, including existential as well as universal
quanti ers, i.e., omniformity ([
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] gives a compressed description); and
4. bounded rationality, based on restraint ([
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] gives the basic radial form) which
utilizes the unde ned truth value of the well-founded semantics to represent
\not bothering."
Omniformity together with HiLog allows higher-order logic (HOL) formulas as
axioms. The omniformity feature also includes and extends the Lloyd-Topor
transformation [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] on rule bodies. Omniform rules are called \omni rules" or
\omnis", for short. The hidlog feature also includes rei cation, i.e., a formula
can be treated as a term. The rule id's aspect of hidlog enables meta-info about
axioms to be speci ed easily within the KB itself, e.g., meta-info about
prioritization and about provenance. Other features include: object-based knowledge
modeling (frame syntax), and aggregates (e.g., setof, sum, average, etc.).
        </p>
        <p>
          Rulelog is the logic that was used in the Silk system [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] developed as part
of Vulcan's Project Halo [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] advanced research e ort, and grows out of earlier
work on RuleML [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] and Semantic Web Services Framework [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. A W3C Rule
Interchange Format (RIF) dialect based on Rulelog is in draft [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], in cooperation
also with RuleML.
        </p>
        <p>
          The semantics of Rulelog is speci ed transformationally, into logic programs
(LP) that are normal: those with logical functions and with default negation
under the well-founded semantics. Using these transformations, Rulelog has been
implemented most fully to date in Silk, which is architected as a Java layer that
sits on top of Flora-2 [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Flora-2 sits in turn on top of XSB [
          <xref ref-type="bibr" rid="ref19 ref22">22,19</xref>
          ], which
implements normal LP. Rulelog also has been implemented, less completely, in
Cyc [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Both XSB and Flora-2 are available open source; Silk (i.e., the Java
layer), purposed primarily as a scienti c research e ort, is proprietary.1
        </p>
        <p>Rulelog supports strong semantic knowledge interchange with not only LP
but also with rst-order logic (FOL), and thus with all current major
semantic technology standards for logical KRR, including RDF(S), SPARQL, SQL,
XQuery, OWL-RL, OWL-DL, RIF-Core, and RIF-BLD, as well as with ISO
Common Logic and thus SBVR.</p>
        <p>
          Rulelog provides a good target for text-based authoring of knowledge [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ],
because of its ability to express defeasible HOL formulas as axioms.
        </p>
        <p>Rulelog has been application-piloted in the domain of college-level biology for
the task of question-answering in e-learning, in Project Halo. However, Rulelog is
applicable to many other domains and tasks, e.g., that involve policies, contracts,
law, and/or information integration.
1 The Silk development e ort, including maintenance, ended in April 2013.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Challenge of Debugging Knowledge in a Rulelog System</title>
        <p>The expressivity of Rulelog raises a number of issues both in debugging and in
understanding the behavior of Rulelog derivations.</p>
        <p>The justi cation problem is a problem of explaining missing or unexpected
(e.g., wrong or unintended) answers. This task is complicated not only by the
types of inference used, but also by the transformations used to implement
Rulelog reasoning. Answers to a query may be di erent than expected due to
defeasibility or due to unexpected inferences made by the use of the higher-order
reasoning provided by the HiLog component.</p>
        <p>The performance/termination problem is a problem of indicating why a
derivation has taken up more resources than expected | including non-termination
as an extreme case. To explain the context of this problem, one of the major
objectives of the Silk implementation of Rulelog was to be usable by knowledge
engineers (KE's) who are competent in logic, but who are not necessarily
computer programmers. Such usage can give rise to knowledge bases constructed in
a declarative manner, but with little attention to procedural aspects. Queries to
such knowledge bases may lead to derivations that take longer than expected.
In addition, as mentioned earlier, Rulelog uses logical functions both explicitly
and implicitly (the later due to existential quanti cation, which is part of
omniformity), and this use of logical functions can lead to non-termination.2 While
some performance issues can be addressed by optimizing compilers, users still
need to understand what parts of a knowledge base give rise to poor performance
or non-termination, so that these parts can be remedied.</p>
        <p>Understanding Rulelog derivations is complicated by the semantics of Rulelog,
which unlike rst-order logic, is a xed-point logic that supports recursive de
nitions. A Rulelog derivation, therefore, can be seen as a sequence of evaluations
of recursive components in which the answers to a given subquery may be
mutually dependent on answers to numerous other subqueries. Such a derivation can
be partially modeled via a graph whose vertices are Rulelog atoms and whose
edges are direct dependencies of the truth of one Rulelog atom on another. As
will be shown later, such dependencies are implicit in our solution to the justi
cation problem, but are explicit in our solutions to the performance/termination
problem.</p>
        <p>To partially address the justi cation and performance/termination problems,
support is given by the tabled resolution of XSB, which serves as the
computational underpinning of Rulelog in Silk. Although the details of tabling are quite
complex, at a high level it handles recursive query evaluation by registering each
tabled subgoal in a derivation. The rst time a subgoal S is encountered in a
derivation, a table is created for S and program clause resolution is used to
derive answers for S, which are added to the table for S as they are derived.
Subsequent calls to S need only resolve against answers in its table. In addition,
2 FOL and normal LP also have this potential for non-termination in inferencing, for
the same reason.
tabling keeps partial track of dependency information in order to determine the
truth values of atoms in the 3-valued well-founded semantics. Although tables
are central to the derivation strategy of Silk, they can also be examined by users
to help understand features of a derivation.</p>
        <p>A basic requirement in debugging is that the edit-test-inspect loop be rapid.
This is addressed in Silk (and XSB and Flora-2) by the use of incremental
methods for tabling in XSB and Flora-2. Such incremental tabling essentially
constitutes truth maintenance.</p>
        <p>
          The considerations so far indicate that a creative approach must be taken to
understanding correctness, performance, and termination. Note that because of
the complications of the transformations from Rulelog to normal logic programs,
together with the technical details of tabled resolution, an interactive-debugger
approach like that used in Prolog and other languages is impractical. Instead, we
have developed a number of novel tools, each of which has an analytic
component, which examines the internal structures of the engine and produces textual
output, and a presentation component that makes the textual output more
comprehensible to the user. The presentation components were incorporated into an
overall graphical integrated development environment (IDE) for Silk, based on
Eclipse, called Silklipse [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. All of the tools described below have either been
completed or are in the advanced stages of development.
2
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Justi cation</title>
      <p>
        Explanation of inferencing results, often called justi cation, has a long history
in KRR, starting with the venerable truth maintenance systems [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The most
practical previous approach to justi cation in LP is the method proposed for
XSB's tabled computations in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Silk takes the previous ideas much further
in several ways. First, it provides an attractive and easy-to-use visualization
of the justi cation process through its Silklipse environment ([
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] described an
early version). Second, unlike XSB and other logic systems with explanation
mechanisms, Silk supports defeasible reasoning through argumentation theories
[
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. In the presence of defeasibility, a fact might be false or unde ned because
it is derived by the rules that are defeated by other rules. In those cases, it is
necessary to explain how and why those rules were defeated. Silk provides such
explanations. A key aspect is to explain why literals or rules have false (in the
sense of NAF) truth value, i.e., why-not. Another key aspect is to explain how
prioritization, or its lack, is involved. Third, unlike [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], justi cation is done not
by transforming the original rules and blowing up the size of the knowledge base
but through a separate small set of meta-rules, which is invoked on-demand when
the user requests justi cation. Fourth, Silk supports rule-based transformation
of the justi cation information: displaying it via automatically generated English
text, and/or summarizing or otherwise reorganizing it.
thus appear directly in Silk's main logical syntax. E.g., the rst line has been
transformed into English text: \It is not the case that cell52 has a nucleus." But
lines 4 and 13 (among others) appear in the Silk logical syntax:
cell52 # red(blood(cell)))
red(blood(cell))##eukaryotic(cell)
Here \#" means \is an instance of" and \##" means \is a subclass of." Next we
explain the icons that appear on the left in each line. \G" indicates a (sub)goal
literal. \A" indicates an argument, i.e., a rule body supporting such a goal literal.
Here, \argument" is in the sense of prioritized argumentation in defeasibility.
Black bar (\|") indicates a neg-argument, i.e., an argument for the neg (strong
negation) of the goal literal. \F" indicates a fact, i.e., a literal that was directly
asserted. \P" indicates prioritization info, i.e., that one rule's tag has higher
prioritization than another tag. Green indicates true, while red indicates false
(in the naf sense). Green bang (\!") indicates a undefeated (\live") argument.
Red down arrow (\#") indicates an argument that has been refuted, i.e., defeated
by another con icting argument that has higher priority. Plus (\+") just to the
right of \G" indicates that there are more arguments to see. When the \+" is
black it indicates there are both pro (i.e., positive/for) and con (i.e.,
strongnegative/against) arguments to see; when green, it indicates there are more pro
arguments but not more con arguments to see.
      </p>
      <p>In this example, the relevant asserted logical rules in the KB can be described
in English as follows:
cell52 is a red blood cell.</p>
      <p>Eukaryotic cells have nuclei. (This rule has tag r1.)
Red blood cells are a subclass of eukaryotic cells.</p>
      <p>Red blood cells do not have nuclei. (This rule has tag r2.)
r2 has higher priority than r1.
3</p>
    </sec>
    <sec id="sec-4">
      <title>Trace-based Analysis</title>
      <p>3.1</p>
      <p>Table dump: Examining Subqueries, Answers, and Rules
Although simple and powerful, the table dump approach lacks two main features
needed to fully address the performance/termination problem. First, it does not
provide an overview of how given subqueries in a derivation relate to one another
through rules, and does not display information about the recursive components
whose computation is central to a Rulelog derivation. Second, no information is
provided about the order of events in a derivation, such as when subqueries were
made, answers derived, and so on.</p>
      <p>
        Within Silk, details of a Rulelog derivation can be reconstructed through
another kind of trace-based analysis. XSB provides a mechanism to create a
more dynamic trace or log of a derivation, called a forest log [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Using such a
log, the structure of even very large recursive components can be analyzed, and
non-terminating derivations detected. This subsection rst overviews forest logs,
and afterwards discusses the analysis routines based on the logs.
      </p>
      <p>The form of tabling used by XSB is called SLG resolution. The operational
semantics of SLG evaluation (and hence a Rulelog derivation) can be modeled as
a sequence of forests of trees, where each tree corresponds to a tabled subquery
S, and represents the immediate subqueries that S produces along with any
answers to S. In fact, each SLG operation is modeled as a function from forests
to forests that creates a new tree, or adds a node or label to an existing tree.</p>
      <p>Within XSB, SLG resolution is executed using a byte-code virtual machine
analogous to that used by Java. An internal XSB ag can be set so that any
byte-code instruction that corresponds to a tabling operation will log information
about itself and its operands as a Prolog-readable term. For instance, if (tabled)
subgoal S1 is called in the context of subgoal S2, and it is the rst time S1 is
called in an evaluation, a fact of the form
is logged, where ctr (mnemonic for \counter") is a sequence number for the fact.
When a derivation ends or is interrupted, the log can be loaded into XSB and
analyzed as a set of Prolog facts. Within XSB, the logging system is written at a
very low level for e ciency. Turning on full logging usually does not slow down
Flora-2 performance by more than 70-80%. XSB also provides routines to load
logs and index their facts on various arguments. Based on the logging libraries,
logs containing hundreds of millions of facts have been loaded and analyzed.
3.3</p>
      <sec id="sec-4-1">
        <title>Analyzing Recursive Components</title>
        <p>Once a log has been loaded, a user may ask for an overview of a
computation, which provides information on the total number of calls to tabled subgoals,
the number of distinct tabled subgoals, the number of answers, and so on. In
addition, the overview provides aggregate information on the number of
mutually recursive components, and the number of subgoals in the components.
Finally, the overview contains information indicating how strati ed the negation
(negation-as-failure, i.e., naf) was in a derivation by listing the total number of
atoms whose truth value was unde ned, along with a count of the various SLG
operations used to evaluate well-founded negation.</p>
        <p>Some derivations may give rise to very large recursive components|due to
an unanticipated e ect of higher-orderness, a knowledge base that is not su
ciently modularized, or other reasons. The analysis routines allow given recursive
components to be examined, by listing the subqueries in the component, along
with the pairs of calling and called subgoals within the components.</p>
        <p>By examining this output, users can usually x whatever problems gave
rise to large recursive components. However for a very large component C, the
number of subqueries in C may be on the order of 105 or more and the number
of calling/caller pairs may be on the order of 106. In such a case diplaying every
subquery or pair may be confusing at best. The analysis routines thus provide
several abstraction routines that allow a user to coalesce similar atoms. For
instance, if a component contained the subqueries p(a,X), p(b,X), p(c,X) ..., the
analysis routines could use mode abstraction to coalesce all of these terms to
p(bound,free), or even predicate abstraction to coalesce all these terms to p/2.
Recursive component analysis together with abstraction of atoms has been used
to analyze the behavior of reasoning that was translated from Cycorp's inference
engine into the Silk implementation of Rulelog, for example.
3.4</p>
      </sec>
      <sec id="sec-4-2">
        <title>Analyzing Runaway: Terminyzer</title>
        <p>Runaway computation occurs when a query does not terminate or takes too long
to come back with an answer. The rst type of problem occurs typically due to
the presence of function symbols and the second is largely due to computations
that produce very large intermediate results most of which could be avoided
with smarter evaluation strategies, such as subgoal reordering. The problem of
determining whether a query is terminating or not has long been known to be
undecidable, and the known su ciency tests for them are weak for practical
purposes. Cost-based optimization of LP via subgoal reordering has not been
well studied for the case when recursion and logical functions are present.</p>
        <p>The rst tools we have developed for runaway give the user the means to
interrupt the computation and inspect various statistics and the table dump,
as described earlier. The user can also request the computation to stop after
producing the desired number of answers.</p>
        <p>
          One sophisticated diagnostic tool we have developed to tackle the
non-termination problem is called the Terminyzer (short for \(non-)Termination
Analyzer") [
          <xref ref-type="bibr" rid="ref10 ref11">11,10</xref>
          ]. This tool relies on the previously described forest logging
mechanism, which records the various tabling events that occur in the underlying
inference engine XSB [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. Among others, forest logging records when the
different subgoals are called and when they receive answers. Terminyzer performs
di erent kinds of analysis, such as call-sequence analysis and answer- ow
analysis, and identi es the sequences of subgoals and rules that are being repeatedly
called and in this way cause non-terminating computation.
        </p>
        <p>Terminyzer also has a heuristic that may suggest the user to allow the
system to reorder subgoals at run time and this avoid non-termination. For
instance, in a composite subgoal p(?X,?Y), q(?X) , Terminyzer may detect
that p(?X,?Y) is an in nite predicate. However, this in nity may be due to
the in nite number of ?X-values. If q(?X) binds ?X to a concrete value rst,
non-termination will not occur. In such a case, Terminyzer may suggest the user
to wrap the o ending subgoal with a suitable delay quanti er|a novel facility
supported by Flora-2 and Silk. For instance, if the above subgoal is rewritten
as wish(ground(?X))^p(?X,?Y), q(?X), the system will not try to evaluate
p(?X,?Y) unless ?X is bound. If it is not bound, the evaluation of p(?X,?Y) is
postponed and q(?X) will be evaluated next. If this binds ?X then all is well and
p(?X,?Y) can be evaluated next without a runaway. If ?X is still unbound, some
other subgoal may, perhaps, bind it, so p(?X,?Y) remains delayed. Only when
the system determines that ?X cannot be bound no matter what, p(?X,?Y) is
submitted for evaluation. If this happens, the user would have to use the
information provided by Terminyzer to decide whether the runaway is a mistake or
is semantically justi ed. In the rst case, this information will help the user x
the mistake; in the second, restraint could be used to prevent the runaway.</p>
        <p>The presentation component of Terminyzer is integrated with Silklipse.
4</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Restraint: Bounded Rationality and Prevention of</title>
    </sec>
    <sec id="sec-6">
      <title>Runaway</title>
      <p>
        Another advanced way to control runaways is to use restraint, an approach to
bounded rationality (and pragmatic incompleteness) that is semantically sound
despite non-monotonicity [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. With restraint, the semantics of inferencing|and
thus corresponding computation|is limited in well-de ned way; answers derived
after the limits have been reached are given the truth value of unde ned.
      </p>
      <p>While Terminyzer is used for nding mistakes in user's knowledge base, i.e.,
in situations when runaway computation is not intended, restraint is used when
the knowledge base is correct. This typically occurs when the user query of
interest or one of its subqueries has an in nite number of answers, but only the
rst few need to be returned to the user.</p>
      <p>One type of restraint is to limit a norm on subgoals, e.g., term size or depth,
to be upper-bounded by a constant, which is called the radius. By setting the
radius to a small enough value, radial restraint can be used to prevent runaways
altogether.</p>
      <p>There are several other useful types of restraint as well. In skipping restraint,
conditions are speci ed (via rules) for when some other rules instances should
be skipped, i.e., treated as having unde ned truth value. In unsafety restraint:
a literal that is (irremediably) unsafe with respect to NAF is treated as having
unde ned truth value. Likewise, an external-query (a.k.a. sensor ) literal that
is unsafe with respect to binding mode requirements is treated as having
unde ned truth value. In unreturn restraint, an external-query literal that does
not return|e.g., due to network failure or server failure | is treated as
having unde ned truth value. In some situations, unsafety and unreturn restraints
are preferable to throwing an error. Radial and skipping restraint are voluntary
kinds of bounded rationality: the user speci es desired limits on reasoning via
meta-rules knowledge. The limitation is cleanly semantic and speci ed as part of
the knowledge base itself. By contrast, unsafety and unreturn are involuntary :
limitations on reasoning are imposed by the circumstances of the inferencing
mechanism and/or external environment.</p>
      <p>
        All the above types of restraint straightforwardly combine with each other.
They furthermore straightforwardly combine with the \anytime" approach to
temporally bounded rationality [
        <xref ref-type="bibr" rid="ref16 ref3">3,16</xref>
        ]. In anytime restraint, a series of
increasingly complete inferencing-result sets are computed and when a time limit is
reached, the best one computed so far is returned. For instance a restraint
radius is progressively incremented until the time limit is reached.
5
      </p>
    </sec>
    <sec id="sec-7">
      <title>Overall Process of Knowledge Debugging</title>
      <p>The tools we have described can be combined in a number of ways. The typical
process of knowledge debugging goes as follows. A user runs a (test) query of
interest. If the execution of the query does not take an unexpectedly/undesirably
large amount of time or space, there is no performance/termination issue. The
user looks at the answers to the query, and employs the justi cation tools to
examine the explanation of those answers in terms of supporting conclusions
and their associated assertions (rules knowledge). Along the way, the user looks
for wrong or missing conclusions, and wrong or missing rules. The user may
issue some other related queries as part of this investigation, and look at their
explanations as well.</p>
      <p>However, if execution of the query does take an unexpectedly/undesirably
large amount of time or space, there is a performance/termination issue. At
this point, the user needs to determine whether the runaway is due to
nontermination or merely due to an ine cient computation. The rst step in
determining the culprit is to look at the table dump of the trace. If these show
very large terms with deeply nested repeated function symbols, non-termination
is the likely problem, and Terminyzer can be further employed to nd the
actual rule sequences that cause the problem. Otherwise, the user would use the
table dump and the forest log tools to identify foci of computational e ort, by
looking for large tables (via table dump) or large recursive components (via
forest log). The user next drills down progressively from the macroscopic (more
aggregated and general) to the microscopic (more detailed and speci c). Once
su ciently microscopic, the user then also employs the justi cation tools (as
described above)|and/or employs restraint, especially in order to ensure
termination (e.g., by limiting term size).</p>
      <p>As usual in any kind of debugging, the above steps are iterated as needed.
6</p>
    </sec>
    <sec id="sec-8">
      <title>Discussion: Scale, Skill</title>
      <p>The debugging tools and process we have described have been used e ectively
for expressively rich Rulelog knowledge bases (KB's) of substantial size, ranging
up to tens of thousands of (non-fact) rules. \Expressively rich" here means with
expressiveness beyond that of (normal) LP. Trace-based analysis has been used
for forest logs ranging up to hundreds of millions of facts, as mentioned earlier.</p>
      <p>
        An important direction for future work is how to empower Subject Matter
Experts (SME's), who lack skills in logic, to most e ectively and e ciently debug
knowledge, e.g., KB's that they author via text-based techniques [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], including in
collaboration or review with KE's who do have skills in logic. This area requires
considerable further research.
7
      </p>
    </sec>
    <sec id="sec-9">
      <title>Acknowledgements</title>
      <p>This work was supported by Vulcan, Inc., as part of the Halo Advanced Research
project. Thanks to the rest of the Silk team, especially Paul Haley (Automata,
Inc.) and Keith Goolsbey (Cycorp), for helpful discussions. Michael Kifer and
Senlin Liang were also supported, in part, under the NSF grant 0964196.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>W.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kifer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.S.</given-names>
            <surname>Warren. HiLog</surname>
          </string-name>
          :
          <article-title>A foundation for higher-order logic programming</article-title>
          .
          <source>Journal of Logic Programming</source>
          ,
          <volume>15</volume>
          (
          <issue>3</issue>
          ):
          <volume>187</volume>
          {
          <fpage>230</fpage>
          ,
          <year>February 1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Cyc</surname>
          </string-name>
          . Cyc. http://www.cyc.
          <source>com (project begun in approx. 1984)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>T.</given-names>
            <surname>Dean</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Boddy</surname>
          </string-name>
          .
          <article-title>An Analysis of Time-dependent Planning</article-title>
          .
          <source>In AAAI Conference on Arti cial Intelligence</source>
          , pages
          <fpage>49</fpage>
          {
          <fpage>54</fpage>
          ,
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. Flora-2. Flora-2. http:// ora.sourceforge.
          <source>net (project begun in approx. 2000)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>B.</given-names>
            <surname>Grosof</surname>
          </string-name>
          .
          <article-title>Rapid Text-based Authoring of Defeasible Higher-Order Logic Formulas, via Textual Logic and Rulelog (Summary of Invited Talk)</article-title>
          .
          <source>In Proc. RuleML2013, the 7th Intl. Web Rule Symposium</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Benjamin</given-names>
            <surname>Grosof</surname>
          </string-name>
          , Mark Burstein,
          <string-name>
            <given-names>Mike</given-names>
            <surname>Dean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Carl</given-names>
            <surname>Andersen</surname>
          </string-name>
          , Brett Benyo,
          <string-name>
            <given-names>William</given-names>
            <surname>Ferguson</surname>
          </string-name>
          , Daniela Inclezan, and
          <string-name>
            <given-names>Richard</given-names>
            <surname>Shapiro</surname>
          </string-name>
          .
          <article-title>A SILK Graphical UI for Defeasible Reasoning, with a Biology Causal Process Example</article-title>
          .
          <source>In Proc. of RuleML-2010, the 4th Intl. Web Rule Symp. (Demonstration and Poster)</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Benjamin</given-names>
            <surname>Grosof</surname>
          </string-name>
          and
          <string-name>
            <given-names>Terrance</given-names>
            <surname>Swift</surname>
          </string-name>
          .
          <article-title>Radial Restraint: A Semantically Clean Approach to Bounded Rationality for Logic Programs</article-title>
          .
          <source>In Proc. AAAI-13, the 27th AAAI Conf. on Arti cial Intelligence</source>
          ,
          <year>July 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Halo</surname>
          </string-name>
          . Project Halo. http://projecthalo.com
          <article-title>(project begun in approx</article-title>
          .
          <source>2002)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>J.</given-names>
            <surname>Sherman</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Dean.</surname>
          </string-name>
          RIF-SILK. http://silk.semwebcentral.org/RIFSILK.html
          <article-title>(project begun in approx</article-title>
          .
          <source>2009)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Senlin</given-names>
            <surname>Liang</surname>
          </string-name>
          and
          <string-name>
            <given-names>Michael</given-names>
            <surname>Kifer</surname>
          </string-name>
          .
          <article-title>A Practical Analysis of Non-Termination in Large Logic Programs</article-title>
          .
          <source>Technical report</source>
          , Stony Brook University,
          <year>2013</year>
          . http://www.cs. stonybrook.edu/~sliang/iclp2013-tr.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>Senlin</given-names>
            <surname>Liang</surname>
          </string-name>
          and
          <string-name>
            <given-names>Michael</given-names>
            <surname>Kifer</surname>
          </string-name>
          .
          <article-title>Terminyzer: An Automatic Non-Termination Analyzer for Large Logic Programs</article-title>
          . In PADL, Berlin, Heidelberg, New York,
          <year>2013</year>
          . Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>J. W.</given-names>
            <surname>Lloyd</surname>
          </string-name>
          .
          <source>Foundations of Logic Programming</source>
          . Springer-Verlag, Berlin Germany,
          <year>1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>D.</given-names>
            <surname>McAllester</surname>
          </string-name>
          .
          <article-title>Truth maintenance</article-title>
          .
          <source>In Reid Smith</source>
          and Tom Mitchell, editors,
          <source>Proceedings of the Eighth National Conference on Arti cial Intelligence</source>
          , volume
          <volume>2</volume>
          , pages
          <fpage>1109</fpage>
          {
          <fpage>1116</fpage>
          , Menlo Park, California,
          <year>1990</year>
          . AAAI Press.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. G. Pemmasani,
          <string-name>
            <given-names>H.-F.</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Dong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.R.</given-names>
            <surname>Ramakrishnan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and I.V.</given-names>
            <surname>Ramakrishnan</surname>
          </string-name>
          .
          <article-title>Online Justi cation for Tabled Logic Programs</article-title>
          .
          <source>In International Symposium on Functional and Logic Programming (FLOPS)</source>
          ,
          <source>number 2998 in Lecture Notes in Computer Science</source>
          , pages
          <volume>24</volume>
          {
          <fpage>38</fpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. RuleML. Rule Markup and
          <string-name>
            <given-names>Modeling</given-names>
            <surname>Initiative</surname>
          </string-name>
          . http://www.ruleml.
          <source>org (project begun in approx. 2000)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>S.</given-names>
            <surname>Russell</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Wefald</surname>
          </string-name>
          .
          <article-title>Do the Right Thing: Studies in Limited Rationality</article-title>
          . MIT Press,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. SILK. SILK:
          <article-title>Semantic Inferencing on Large Knowledge</article-title>
          . http://silk.semwebcentral.
          <source>org (project begun in 2008)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>T.</given-names>
            <surname>Swift</surname>
          </string-name>
          .
          <article-title>Pro ling Large Tabled Computations using Forest Logging</article-title>
          .
          <source>In CICLOPS</source>
          ,
          <year>2012</year>
          . Available at http://www.cs.sunysb.edu/~tswift.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <article-title>Terrance Swift and David Scott Warren</article-title>
          . XSB:
          <article-title>Extending Prolog with Tabled Logic Programming</article-title>
          .
          <source>TPLP</source>
          ,
          <volume>12</volume>
          :
          <fpage>157</fpage>
          {
          <fpage>187</fpage>
          ,
          <year>January 2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. SWSF. Semantic Web Services Framework. http://www.w3.org/Submission/SWSF/,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21. H.
          <string-name>
            <surname>Wan</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Grosof</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Kifer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Fodor</surname>
            , and
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Liang</surname>
          </string-name>
          .
          <article-title>Logic Programming with Defaults and Argumentation Theories</article-title>
          .
          <source>In Int'l Conference on Logic Programming</source>
          ,
          <year>July 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22. XSB. XSB. http://xsb.sourceforge.
          <source>net (project begun in approx. 1993)</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>