<!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>Evolving Reactive Logic Programs Programmi Logici Reattivi Evolutivi</article-title>
      </title-group>
      <fpage>60</fpage>
      <lpage>64</lpage>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>In questo articolo descriviamo brevemente l’attivita´ di
ricerca che abbiamo portato avanti negli ultimi anni sui
programmi logici dinamici. Dopo aver rivisto i nostri
contributi al consolidamento dei fondamenti semantici dei
programmi logici dinamici, descriviamo un semplice
formalismo —basato su programmi logici dinamici— per
ragionare su azioni ed una sua recente estensione che
permette di specificare ed eseguire programmi reattivi del tipo
evento-condizione-azione.</p>
      <p>In this paper we briefly describe the research activity that
we have been carrying over during the last years on
dynamic logic programs. After reviewing our contributions
to strengthening the semantics foundations of dynamic
logic programs, we describe a simple formalism to
reason about actions —based on dynamic logic programs—
and its recent event-condition-action extension that
supports the specification and the execution of reactive
programs.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Introduction</title>
      <p>Research in Artificial Intelligence (AI) is concerned with
producing machines to automate tasks requiring intelligent
beaviour. An important problem to face when
implementing AI applications is how to represent knowledge, and
how to extract information from such knowledge. This
area of research is known as knowledge representation
(KR) and reasoning. The dominant approach in KR is to
define symbolic paradigms based on some form of logic,
usually consisting of crude facts and more sophisticated
logic formulas. Together, facts and formulas form the
knowledge base (KB) of the AI application. Many tasks
for AI applications also demand to perform some kind of
actions. Hence actions, and possibly the effects of actions,
should be representable in the KR framework, and the
mechanism specifying when an action must be performed
must be defined. Moreover, usually interactive
application continually receive external inputs in the form of
messages, perceptions, commands and so on. Such inputs can
be considered as events to which the AI application is
supposed to react in an intelligent way. Reactivity is a key
feature in dynamic domains, where changes frequently occur.
Among the existing proposals for programming reactive
behaviour, Event-Condition-Action (ECA) languages
distinguish themselves for their flexibility and intuitive syntax
and semantics.</p>
      <p>Dynamic domains also demand AI applications for
taking into account frequent changes and consequently
updating their KBs. The required updates surely involve the
extensional part of the knowledge base (facts), but
occasionally it may be necessary to update also the intentional
part (logic formulas) to represent the fact that the very rules
of the domain changed. Moreover, for adapting to the new
situation, besides knowledge updates, it might be
necessary to update the beaviour of the AI applications, i.e. the
reactive mechanisms themselves. These updates may be
the result of external inputs, but it might be necessary for
the application to perform actions leading to self-updates.
Moreover, besides what could be called basic actions like,
for instance, insertion and deletion of facts and formulas,
developera may want to specify more sophisticated actions
obtained by combining the basic ones.</p>
      <p>
        Among the existing formalisms for KR, Logic
Programming (LP) has a simple logic-based syntax, formal
declarative semantics and implemented inference systems. In the
past years, part of the research on LP focused on
representing dynamic knowledge, i.e. knowledge that is constantly
self-updated, leading to the dynamic logic programming
(DyLP) framework [
        <xref ref-type="bibr" rid="ref10 ref12 ref13 ref5 ref9">5, 9, 10, 12, 13</xref>
        ]. Taking advantage
of the established results in the field, we developed a
(dynamic) LP framework for programming AI applications
satisfying the above listed features.
      </p>
      <p>
        In this paper, we first review (Section 2) our
contributions to strengthening the semantics foundations of
dynamic logic programs that yielded a refined stable-model
based semantics and a well-founded semantics for this
class of logic programs. We then describe (Section 3)
a simple formalism (EAPs) to reason about the effects
of actions —based on dynamic logic programs and on
the LP update language Evolp [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]— and its recent
eventcondition-action extension ERA that supports the
specification and the execution of reactive programs. As we
will see, ERA supports the specification and the execution
of reactive programs, by detecting (simple and complex)
events, by performing (simple and complex) actions and by
allowing self-updates. Since ERA can also encode EAPs,
it hence satisfies the features listed earlier in this
Introduction. Finally some conclusions and directions for future
work are discussed (Section 4).
      </p>
      <p>
        We assume the reader is familiar with logic
programming and the stable models and well-founded semantics
and refer to [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] for details on syntax and semantics of LPs.
2
      </p>
    </sec>
    <sec id="sec-3">
      <title>Dynamic Logic Programs</title>
      <p>
        Dynamic Logic Programs represent evolving knowledge.
Syntactically, a DyLP P is a sequence P1, . . . , Pn (rather
than a single program) of generalized logic programs
(GLPs), viz., programs where rule heads may be
negative literals. P1 represents the initial knowledge and the
other Pis are supervenient updates representing the
evolution of the described situation. Given two updates P i, Pj ,
of a DyLP P , Pj is said to be more recent than Pi if Pj
follows Pi in the sequence P . In the past years, several
semantics have been defined for providing a meaning to
DyLPs [
        <xref ref-type="bibr" rid="ref10 ref12 ref13 ref5 ref9">5, 9, 10, 12, 13</xref>
        ]. These semantics are extensions
of the stable model semantics of normal logic programs, in
the sense that, whenever the considered DyLP is a single
normal program P , the models of P in the considered
semantics for DyLPs coincide with the stable models of P .
Another common denominator of these semantics, is the
causal rejection principle [
        <xref ref-type="bibr" rid="ref10 ref12">10, 12</xref>
        ]. This principle states
that a model M of a DyLP P must fulfill a rule τ in an
update of P , unless there exists a rule in a more recent
update that is in conflict with τ and whose body is true in
M . Two rule τ and η are said to be in conflict if they have
complementary heads, viz., the head of τ is a literal A and
the head of η is not A or viceversa. The principle allows
a more recent rule to specify an exception to an older one,
thus allowing to update previous beliefs.
      </p>
      <p>The semantics for DyLPs based on the causal rejection
principle coincide on large classes of programs but
disagree on some examples and, at the time we started our
investigation, there was no general agreement on which
should be the stable model-like semantics for DyLPs based
on the causal rejection principle. Moreover, all the
semantics defined before we started our investigation show
counterintuitive beaviour in some well known example. The
simpler examples involve tautological updates that happen
to change the semantics of a DyLP, while immunity to
tautologies is a property generally required to a semantics.</p>
      <p>For instance, the single program DyLP</p>
      <p>P1 :
not rain.
cloudy ←
not sun.</p>
      <p>rain ←
sun ←
cloudy.
not cloudy.
has one model {not rain, sun}. If we update P1 with
P2 : rain ←
rain.
another model {rain, not sun} is allowed. Somehow, the
tautology has generated another model by rejecting the rule
not rain. In general, all the known counterintuitive
beaviour occur in DyLPs with cyclic dependencies among
literals, somehow leading to the addition of undesired models.
although a formal definition of counterintuitive beaviour
and undesired model was missing. Our contribution was:
• to formalise the concept underlying such
counterintuitive beaviour and to clarify which should be the right
semantics for DyLPs by establishing which properties
should be satisfied by such semantics, and
• to define a semantics satisfying these properties, thus
avoiding the known counterintuitive beaviour.</p>
      <p>
        To achieve these results we defined the refined extension
principle [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The refined extension principle is a criterium
stating when the addition of rules to a program should not
add more models to its semantics and it enables to
formalize the undesired addition of models. Then, we defined the
refined stable model semantics (or simply refined
semantics) for DyLPs that refines the other stable-like semantics
for DyLPs. Formally this was achieved by associating to
each DyLP P = P1, . . . , Pn, an operator over sets of
literals ΓR and defining the refined models of P as the
fix
      </p>
      <p>P
points of ΓR. The ΓR operator is formally defined as
fol</p>
      <p>P P
lows:
ΓR(M ) = least ρ (P ) \ RejR(P , M) ∪ Def (P , M)</p>
      <p>P
where ρ (P ) is the multiset of all the rules appearing in
any program of the sequence P and Rej R(P , M) is the
multiset of all the rules τ in some update Pi of P for which
there exist a rule η in some update Pj with i ≤ j such that τ
and η are in conflict and the body of η is true in M . Finally
Def (P , M) is the set of default assumptions, i.e. the set
of all the negative literals not A such that there exists no
rule in P whose head is A and whose body is true in M .</p>
      <p>
        The refined semantics was proved to satisfy the refined
extension principle and the causal rejection one. Moreover,
we extended the concept of well supported models [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to
DyLPs and proved that the refine models of a DyLP are
exactly its well supported models.
      </p>
      <p>
        A further result was the definition of a well founded
semantics for DyLPs [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The well founded semantics is a
skeptical approximation of the stable model one. From a
practical point of view, the well founded semantics has less
expressivity (for instance it does not allow to express logic
constraints) and less inference power (it allows to derive
less conclusions). On the other hand, the well founded
semantics is computationally less expensive than the stable
model semantics. Indeed, determining a (refined) stable
model of a (dynamic or generalized) logic program is a
NP-complete problem, while the computation of the well
founded model of a normal logic program has polynomial
complexity.
      </p>
      <p>Moreover, unlike the stable model one, the well founded
semantics is always defined and, according to it, a program
can be queried about specific information without the need
to compute its whole semantics. Due to these features, the
well founded semantics is a better candidate than the
stable model one for applications that are time-committed and
require to process huge amount of data, like most of real
world database related applications.</p>
      <p>We defined a well founded semantics for DyLPs that
extends the well founded semantics for normal LPs and
approximates the refined one, in the sense that (as for normal
LPs) the well founded model of a DyLP is a subset of any
of its refined models. Moreover, the well founded
semantics for DyLPs preserves the good features shown for the
class of normal and generalized LPs, i.e. the well founded
model always exists, its computation is polynomial, and a
DyLP can be queried about specific information without
the need to compute its whole semantics.</p>
      <p>
        The well founded model was defined as the least
fixpoint of an operator ΓΓR, combining the ΓR operator used
for defining the refined model semantics with another
operator Γ used for defining another semantics for DyLPs i.e.
the dynamic stable model semantics [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-4">
      <title>Reasoning about and executing actions</title>
      <p>
        After strngthening the formal foundation of dynamic logic
programs, we turned our attention to the the problem of
programming self-updatable AI applications capable of
reasoning about and executing actions. A bridge between
dynamic KR via DyLPs and this kind of applications was
already established by the family of LP updates languages
[
        <xref ref-type="bibr" rid="ref10 ref12 ref4">4, 10, 12</xref>
        ]. These languages are built on the top of a
DyLP semantics and, besides representing dynamic and
constantly updated knowledge, they allow one to specify
how a KB should be updated. Among these formalism the
Evolp language [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] has a particularly simple, but highly
expressive syntax and semantics, and hence it was chosen as
the starting point of our investigation. Evolp is a language
for building sequences of DyLPs starting from an original
program. Syntactically, Evolp extends the language of LP
with new atoms assert(r) where r is a rule. An Evolp
programs evolves passing from the current state to the
successive one, by updating the program with all the rules r
such that the atom assert(r) is true in the current state.
      </p>
      <p>
        A widely used way to describe and reason about the
effects of actions are action description programs
written in specific formalisms called action description
languages [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. We defined an action description language
of our own, christened Evolving Action Programs (EAPs)
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. EAPs are defined as a macro language on top of Evolp
in the sense that every statement in EAPs is syntactic
notation for a set of Evolp statements and the semantics of an
EAP is given by the semantics of the corresponding Evolp
program.
      </p>
      <p>Syntactically, an EAP statement can be:
• an inertial declaration inertial(f ),
• a static, logic programming-like rule L ← L 1, . . . Ln,
• a dynamic rule effect(H ← B) ← Cond.</p>
      <p>The meaning of an inertial declaration inertial(f ), where
f is an atom (usually called a fluent in the context of
action description languages) is that the truth value of f is
preserved in time unless it changes as an effect of the
execution of an action. A static rule describes the (static) rules
of the environment by expressing correlations among
fluents. A dynamic rule expresses the effect of the execution
of actions. Syntactically, the effect H ← B is a static rule,
while Cond is a conjunction of action literals representing
actions being or not executed and fluent literals
representing preconditions for the considered effects to take place.</p>
      <p>
        The expressivity of EAPs was compared with that of the
action languages A, B, C (see [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] for a detailed
description of these languages) and for each of these languages,
a modular embedding of their action programs into EAPs
was defined. Moreover, being based on DyLPs, EAPs are
shown to be particularly suitable for encoding successive
elaborations or updates of an action description problem.
      </p>
      <p>
        Besides reasoning about the effects of actions, we also
needed a formalism for executing them. This was achieved
by defining an ECA formalism called ERA (after Evolving
Reactive Algebraic programs) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Along with inference
logic programming rules, ERA presents two new forms of
rules for specifying the execution of actions, i.e. active and
inhibition rules of the form, respectively:
      </p>
      <p>On Event If Condition Do Action.</p>
      <p>When B Do not Action.
(1)
(2)
where Event is an event literal encoding the occurrence
of an event and Condition is a conjunction of literals
expressing the condition under which an Action
(syntactically an atom) is executed. Finally, B is a conjunction of
literals expressing conditions under which Action should
not be executed. Both events and actions can be basic or
complex ones. Complex events and actions are obtained by
combining simple ones via an event and an action algebra.</p>
      <p>Events occur at a given instant and are volatile
information. Basic events may be external, representing incoming
inputs and commands or internal, raised by the system
itself. The event algebra allows to combine events occurring
simultaneously or at different time points. For instance, the
complex event A(e1, e2, e3), where A/ 3 is a ternary
operator and the eis are events, occurs at instant i iff e3 occurs
at instant i, e1 occurred at some previous instant and e 2 did
not occurr in between.
Actions represent operations to be executed. Basic
action can be external, representing some external operation
to be executed, or internal. As for events, basic actions can
be combined by an algebra of operators for specifying flow
of operations. For instance, given two action a 1 and a2,
action a1 a2 specifies that action a2 must be executed after
a1, while action (a1, a2) specifies that a1 and a2 can be
concurrently executed.</p>
      <p>Among internal actions, particularly important ones are
the assertion and the deletion of facts and rules. While
deletion removes facts and rules from the KB, the
assertion of rules causes the application to update itself by a
new fact, an inference, an active or an inhibition rule. New
facts and inference rules are incorporated by the
underlying DyLP semantics (that can be the refined as well as the
well founded one). Also new active and inhibition rules
are incorporated by the underlying DyLP semantics.
Assertions of rules of the forms (1) and (2) are translated,
respectively, into the LP updates</p>
      <p>Action ← Condition, Event.</p>
      <p>not Action ← B.</p>
      <p>
        The underlying DyLP framework allows to establish
whether the atom Action is derived or not and, in the
former case, the corresponding action is executed. In this
way the application can update not only its KB but also
its beaviour by asserting new active rules and specifying
exceptions to existing active rules by asserting inhibition
ones. Moreover, it was proved that every Evolp program,
and hence every EAP, can be directly encoded into ERA.
Thus ERA is a paradigm capable of both executing and
reasoning about actions. In [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] ERA is discussed in detail
and compared to existing formalisms for programming
reactive behaviour. We simply point out here the two main
novelties of ERA, i.e. its self evolution capabilities and
featured possibility of both programming the execution of
actions and reasoning about their effects.
4
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions and future work</title>
      <p>
        In this paper we have tried to briefly describe the research
activity that we have been carrying over during the last
years on dynamic logic programs. After reviewing our
contributions to strengthening the semantics foundations
of dynamic logic programs, we have presented the EAPs
formalism to reason about actions, and its recent
eventcondition-action extension ERA that supports the
specification and the execution of reactive programs. While space
limitations only allowed us to provide an extended abstract
of this research activity, more details can be found in the
papers [
        <xref ref-type="bibr" rid="ref1 ref2 ref3 ref8">1, 2, 3, 8</xref>
        ] and a complete presentation of all the
results is reported in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        There are several open windows for future work. One
of them is the definition of action query languages [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ],
that is, languages for extracting information about the
possible evolution of the situations described by EAPs and to
address planning issues, e.g., how to determine, given a
current state and a goal, a sequence of actions leading to a
state satisfying that goal. Another direction for future work
are transactions. Although the action algebra of ERA
allows one to program complex actions, it is still less than
adequate for defining transactions. In order to define and
execute transactions, the action algebra of ERA should be
extended for coping with the execution of ACID
transactions as well as of compensation activities.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Alferes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Banti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Brogi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Leite</surname>
          </string-name>
          .
          <article-title>The refined extension principle for semantics of dynamic logic programming</article-title>
          .
          <source>Studia Logica</source>
          ,
          <volume>79</volume>
          (
          <issue>1</issue>
          ),
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.J.</given-names>
            <surname>Alferes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Banti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Brogi</surname>
          </string-name>
          .
          <article-title>From logic programs updates to action description updates</article-title>
          . In J. Leite, P. Torroni (eds.),
          <string-name>
            <surname>CLIMA</surname>
            <given-names>V</given-names>
          </string-name>
          , LNAI, pages
          <fpage>52</fpage>
          -
          <lpage>77</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.J.</given-names>
            <surname>Alferes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Banti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Brogi</surname>
          </string-name>
          .
          <article-title>An event-conditionaction logic programming language</article-title>
          .
          <source>JELIA</source>
          <year>2006</year>
          , LNAI, pages
          <fpage>29</fpage>
          -
          <lpage>42</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Alferes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Brogi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Leite</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Pereira</surname>
          </string-name>
          .
          <article-title>Evolving logic programs</article-title>
          .
          <source>JELIA'02</source>
          ,
          <string-name>
            <surname>LNAI</surname>
          </string-name>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Alferes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Leite</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Pereira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Przymusinska</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. C.</given-names>
            <surname>Przymusinski</surname>
          </string-name>
          .
          <article-title>Dynamic updates of non-monotonic knowledge bases</article-title>
          .
          <source>The Journal of Logic Programming</source>
          ,
          <volume>45</volume>
          (
          <issue>1-3</issue>
          ):
          <fpage>43</fpage>
          -
          <lpage>70</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>K. R.</given-names>
            <surname>Apt</surname>
          </string-name>
          and
          <string-name>
            <given-names>R. N.</given-names>
            <surname>Bol</surname>
          </string-name>
          .
          <article-title>Logic programming and negation: A survey</article-title>
          .
          <source>The Journal of Logic Programming</source>
          ,
          <volume>19</volume>
          &amp; 20:
          <fpage>9</fpage>
          -
          <lpage>72</lpage>
          , May
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Banti</surname>
          </string-name>
          .
          <article-title>Evolving Reactive Logic Programs</article-title>
          .
          <source>PhD thesis</source>
          , Universitade Nova de Lisboa,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>F.</given-names>
            <surname>Banti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.J.</given-names>
            <surname>Alferes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Brogi</surname>
          </string-name>
          .
          <article-title>Well founded semantics for logic program updates</article-title>
          .
          <source>IBERAMIA'04, LNCS 3314</source>
          , pages
          <fpage>397</fpage>
          -
          <lpage>407</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Buccafurri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Faber</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Leone</surname>
          </string-name>
          .
          <article-title>Disjunctive logic programs with inheritance</article-title>
          .
          <source>ICLP'99</source>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>T.</given-names>
            <surname>Eiter</surname>
          </string-name>
          et al..
          <article-title>A framework for declarative update specifications in logic programs</article-title>
          .
          <source>In IJCAI</source>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gelfond</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          .
          <article-title>Action languages</article-title>
          .
          <source>Electronic Transactions on AI</source>
          ,
          <volume>16</volume>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Leite</surname>
          </string-name>
          .
          <source>Evolving Knowledge Bases. Frontiers in Artificial Intelligence and Applications</source>
          , vol.
          <volume>81</volume>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Leite</surname>
          </string-name>
          and
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Pereira</surname>
          </string-name>
          .
          <article-title>Generalizing updates: from models to programs</article-title>
          .
          <source>LPKR'97</source>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>