<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Determining Action Reversibility in STRIPS Using Answer Set Programming</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Lukáš</forename><surname>Chrpa</surname></persName>
							<email>chrpaluk@fel.cvut.cz</email>
							<affiliation key="aff0">
								<orgName type="institution">Czech Technical University in</orgName>
								<address>
									<settlement>Prague</settlement>
									<country>Czechia</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Wolfgang</forename><surname>Faber</surname></persName>
							<email>wolfgang.faber@aau.at</email>
							<affiliation key="aff1">
								<orgName type="institution">Alpen-Adria University Klagenfurt</orgName>
								<address>
									<country key="AT">Austria</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Daniel</forename><surname>Fišer</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Czech Technical University in</orgName>
								<address>
									<settlement>Prague</settlement>
									<country>Czechia</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Michael</forename><surname>Morak</surname></persName>
							<email>michael.morak@aau.at</email>
							<affiliation key="aff1">
								<orgName type="institution">Alpen-Adria University Klagenfurt</orgName>
								<address>
									<country key="AT">Austria</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Determining Action Reversibility in STRIPS Using Answer Set Programming</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">C460207243CA417333F42DEE3B7F8D76</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T08:06+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Planning</term>
					<term>Answer Set Programming</term>
					<term>Reasoning about Action and Change</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>In planning and reasoning about action and change, reversibility of actions is the problem of deciding whether the effects of an action can be reverted by applying other actions in order to return to the original state. While this problem has been studied for some time, recently there has been renewed interest in the context of the language PDDL. After reviewing the concepts, in this paper we propose a solution by leveraging an existing translation from PDDL domains and problems to Answer Set Programming (ASP). This work serves as the basis for the first sound and complete system for determining reversibility of PDDL actions, for now restricted to the STRIPS fragment.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>Traditionally, the field of Automated Planning <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b17">18]</ref> deals with the problem of generating a sequence of actions-a plan-that transforms an initial state of the environment to some goal state. Actions, in plain words, stand for modifiers of the environment. One interesting question is whether the effects of an action are reversible (by other actions), or in other words, whether the action effects can be undone. Notions of reversibility have previously been investigated; cf. e.g., works by Eiter et al. <ref type="bibr" target="#b11">[12]</ref> or by Daum et al. <ref type="bibr" target="#b8">[9]</ref>.</p><p>Studying action reversibility is important for several reasons. Intuitively, actions whose effects cannot be reversed might lead to dead-end states from which the goal state is no longer reachable. Early detection of a dead-end state is beneficial in a plan generation process <ref type="bibr" target="#b18">[20]</ref>. Reasoning in more complex structures such as Agent Planning Programs <ref type="bibr" target="#b9">[10]</ref> which represent networks of planning tasks where a goal state of one task is an initial state of another is even more prone to dead-ends <ref type="bibr" target="#b5">[6]</ref>. Concerning non-deterministic planning, for instance Fully Observable Non-Deterministic (FOND) Planning, where actions have non-deterministic effects, determining reversibility or irreversibility of each set of effects of the action can contribute to early dead-end detection, or to generalizing recovery from undesirable action effects which is important for efficient computation of strong (cyclic) plans <ref type="bibr" target="#b4">[5]</ref>. Concerning online planning, we can observe that applying reversible actions is safe and hence we might not need to explicitly provide the information about safe states of the environment <ref type="bibr" target="#b7">[8]</ref>. Another, although not very obvious, benefit of action reversibility is in plan optimization. If the effects of an action are later reversed by a sequence of other actions in a plan, these actions might be removed from the plan, potentially shortening it significantly. It has been shown that under such circumstances, pairs of inverse actions, which are a special case of action reversibility, can be removed from plans <ref type="bibr" target="#b6">[7]</ref>.</p><p>In <ref type="bibr" target="#b19">[21]</ref> we have introduced a general framework for action reversibility that offers a broad definition of the term, and generalizes many of the already proposed notions of reversibility, like "undoability" proposed in <ref type="bibr" target="#b8">[9]</ref>, or the concept of "reverse plans" as introduced in <ref type="bibr" target="#b11">[12]</ref>. The concept of reversibility in <ref type="bibr" target="#b19">[21]</ref> directly incorporates the set of states in which a given action should be reversible. We call these notions S-reversibility and ϕ-reversibility, where the set S contains states, and the formula ϕ describes a set of states in terms of propositional logic. These notions are then further refined to universal reversibility (referring to the set of all states) and to reversibility in some planning task Π (referring to the set of all reachable states w.r.t. the initial state specified in Π). These last two versions match the ones proposed in <ref type="bibr" target="#b8">[9]</ref>. Furthermore, our notions can be further restricted to require that some action is reversible by a single "reverse plan" that is not dependent of the state for which the action is reversible. For single actions, this matches the concept of the same name proposed in <ref type="bibr" target="#b11">[12]</ref>.</p><p>The complexity analyses in <ref type="bibr" target="#b19">[21]</ref> indicate that several of these tasks can be solved by means of Answer Set Programming (ASP). In this paper, we leverage the translations implemented in plasp <ref type="bibr" target="#b10">[11]</ref> and produce encodings to effectively solve some reversibility tasks on PDDL domains, for now restricted to the STRIPS <ref type="bibr" target="#b13">[14]</ref> fragment.</p><p>Structure. The remainder of the paper is organized as follows. In Section 2, we introduce basic concepts; Section 3 then reviews definitions and properties of different versions of reversibility from <ref type="bibr" target="#b19">[21]</ref>; in Section 4 we review the plasp format and present some ASP encodings for reversibility tasks before concluding in Section 5.</p><p>2 Background STRIPS Planning. Let F be a set of facts, that is, atomic statements about the world. Then, a subset s ⊆ F is called a state, which intuitively represents a set of facts considered to be true. An action is a tuple a = pre(a), add (a), del (a) , where pre(a) ⊆ F is the set of preconditions of a, and add (a) ⊆ F and del (a) ⊆ F are the add and delete effects of a, respectively. W.l.o.g., we assume actions to be well-formed, that is, add (a) ∩ del (a) = ∅ and pre(a) ∩ add (a) = ∅. An action a is applicable in a state s iff pre(a) ⊆ s. The result of applying an action a in a state s, given that a is applicable in s, is the state a[s] = (s \ del (a)) ∪ add (a). A sequence of actions π = a 1 , . . . , a n is applicable in a state s 0 iff there is a sequence of states s 1 , . . . , s n such that, for 0 &lt; i ≤ n, it holds that a i is applicable in s i−1 and a i [s i−1 ] = s i . Applying the action sequence π on s 0 is denoted π[s 0 ], with π[s 0 ] = s n . The length of action sequence π is denoted |π|.</p><p>A STRIPS planning task Π = F, A, s 0 , G is a tuple consisting of a set of facts F = {f 1 , . . . , f n }, a set of (ground) actions A = {a 1 , . . . , a m }, an initial state s 0 ⊆ F, and a goal specification (or, simply, goal</p><formula xml:id="formula_0">) G ⊆ F. A state s ⊆ F is a goal state (for Π) iff G ⊆ s. An action sequence π is called a plan iff π[s 0 ] ⊇ G.</formula><p>We further define several relevant notions w.r.t. a planning task Π. A state s is reachable from state s iff there exists an applicable action sequence π such that π[s ] = s. A state s ∈ 2 F is simply called reachable iff it is reachable from the initial state s 0 . The set of all reachable states in Π is denoted by R Π . An action a is reachable iff there is some state s ∈ R Π such that a is applicable in s.</p><p>Deciding whether a STRIPS planning task has a plan is known to be PSpacecomplete in general and it is NP-complete if the length of the plan is polynomially bounded <ref type="bibr" target="#b2">[3]</ref>.</p><p>Answer Set Programming (ASP). We assume the reader is familiar with ASP and will only give a very brief overview of the core language. For more information, we refer to standard literature <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b14">15,</ref><ref type="bibr">19]</ref>, and, in our case, the ASP-Core-2 input language format <ref type="bibr" target="#b3">[4]</ref>.</p><p>Briefly, ASP programs consist of sets of rules of the form</p><formula xml:id="formula_1">a 1 | • • • | a n ← b 1 , . . . , b , ¬b +1 , . . . , ¬b m .</formula><p>In these rules, all a i and b i are atoms of the form p(t 1 , . . . , t n ), where p is a predicate name, and t 1 , . . . , t n are terms, that is, either variables or constants. The domain of constants in an ASP program P is given implicitly by the set of all constants that appear in it. Generally, before evaluating an ASP program, variables are removed by a process called grounding, that is, for every rule, each variable is replaced by all possible combination of constants, and appropriate ground copies of the rule are added to the resulting program ground (P ). In practice, several optimizations have been implemented in state-of-the-art grounders that try to minimize the size of the grounding. The result of a (ground) ASP program P is calculated as follows <ref type="bibr" target="#b15">[16]</ref>. An interpretation I (i.e., a set of ground atoms appearing in P ) is called a model of P iff it satisfies all the rules in P in the sense of classical logic. It is further called an answer set of P iff there is no proper subset I ⊂ I that is a model of the so-called reduct P I of P w.r.t. I. P I is defined as the set of rules obtained from P where all negated atoms on the right-hand side of the rules are evaluated over I and replaced by or ⊥ accordingly. The main decision problem for ASP is deciding whether a program has at least one answer set. This has been shown to be Σ P 2 -complete <ref type="bibr" target="#b12">[13]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Reversibility of Actions</head><p>In this section, we describe the notion of reversibility of actions. In particular, we focus on the notion of uniform reversibility, but note that there are other notions of reversibility which are lied out and explained in detail by Morak et al. <ref type="bibr" target="#b19">[21]</ref>. Intuitively, we call an action reversible if there is a way to undo all the effects that this action caused, and we call an action uniformly reversible if its effects can be undone by a single sequence of actions irrespective of the state where the action was applied. While this intuition is fairly straightforward, when formally defining this concept, we also need to take several other factors into account-in particular, the set of possible states where an action is considered plays an important role <ref type="bibr" target="#b19">[21]</ref>.</p><p>Definition 1. Let F be a set of facts, A be a set of actions, S ⊆ 2 F be a set of states, and a ∈ A be an action. We call a uniformly S-reversible iff there exists a sequence of actions π = a 1 , . . . , a n ∈ A n such that for each s ∈ S wherein a is applicable it holds that π is applicable in a[s] and π[a[s]] = s.</p><p>The notion of uniform reversibility in the most general sense does not depend on a concrete STRIPS planning task, but only on a set of possible actions and states w.r.t. a set of facts. Note that the set of states S is an explicit part of the notion of uniform S-reversibility.</p><p>Based on this general notion, it is then possible to define several concrete sets of states S that are useful to consider when considering whether an action is reversible. For instance, S could be defined via a propositional formula over the facts in F. Or we can consider a set of all possible states (2 F ) which gives us a notion of uniform reversibility that applies to all possible planning tasks that share the same set of facts and actions (i.e., the tasks that differ only in the initial state or goals). Or we can move our attention to a specific STRIPS instance and ask whether a certain action is uniformly reversible for all states reachable from the initial state. Definition 2. Let F, A, S, and a be as in Definition 1. We call the action a 1. uniformly ϕ-reversible iff a is uniformly S-reversible in the set S of models of the propositional formula ϕ over F; 2. uniformly reversible in Π iff a is uniformly R Π -reversible for some STRIPS planning task Π; and 3. universally uniformly reversible, or, simply, uniformly reversible, iff a is uniformly 2 F -reversible.</p><p>Given the above definitions, we can already observe some interrelationships. In particular, universal uniform reversibility (that is, uniform reversibility in the set of all possible states) is obviously the strongest notion, implying all the other, weaker notions. It may be particularly important when one wants to establish uniform reversibility irrespective of the concrete STRIPS instance.</p><p>The notion of uniform reversibility naturally gives rise to the notion of the reverse plan. We say that some action a has an (S-)reverse plan π iff a is uniformly (S-)reversible using the sequence of actions π. It is interesting to note that this definition of the reverse plan based on uniform reversibility now coincides with the same notion as defined by <ref type="bibr" target="#b11">[12]</ref>. Note, however, that in that paper the authors use a much more general planning language.</p><p>Even if the length of the reverse plan is polynomially bounded, the problem of deciding whether an action is uniformly (ϕ-)reversible is intractable. In particular, deciding whether an action is universally uniformly reversible (resp. uniformly ϕ-reversible) by a polynomial length reverse plan is NP-complete (resp. in Σ P</p><p>2 ) <ref type="bibr" target="#b19">[21]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Methods</head><p>After reviewing the relevant features of plasp <ref type="bibr" target="#b10">[11]</ref> in Section 4.1, we present our encodings for determining reversibility in Section 4.2.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">The plasp Format</head><p>The system plasp <ref type="bibr" target="#b10">[11]</ref> transforms PDDL domains and problems into facts. Together with suitable programs, plans can then be computed using ASP solvers. Given a STRIPS domain with facts F and actions A, the following relevant facts and rules will be created by plasp:</p><p>variable(variable("f")). for all f ∈ F action(action("a")). for all a ∈ A precondition(action("a"),variable("f"),value(variable("f"),true)) :-action(action("a")).</p><p>for each a ∈ A and f ∈ pre(a) postcondition(action("a"),effect(unconditional),variable("f"), value(variable("f"),true)) :-action(action("a")). for each a ∈ A and f ∈ add (a) postcondition(action("a"),effect(unconditional),variable("f"), value(variable("f"),false)) :-action(action("a")). for each a ∈ A and f ∈ del (a)</p><p>Example 1. The STRIPS domain with F = {f } and actions del−f = {f }, ∅, {f } and add − f = ∅, {f }, ∅ is written in PDDL as follows:</p><p>(define (domain example1 ) (:requirements :strips) (:predicates (f) ) (:action del-f :precondition (f) :effect (not (f))) (:action add-f :effect (f)))</p><p>plasp translates this domain to the following ASP code (plus a few technical facts and rules):</p><p>variable(variable("f")). action(action("del-f")). precondition(action("del-f"), variable("f"), value(variable("f"), true)) :-action(action("del-f")). postcondition(action("del-f"), effect(unconditional), variable("f"), value(variable("f"), false)) :-action(action("del-f")). action(action("add-f")). postcondition(action("add-f"), effect(unconditional), variable("f"), value(variable("f"), true)) :-action(action("add-f")).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">Reversibility Encodings in ASP</head><p>In this section, we present our ASP encoding for checking whether, in a given domain, there is an action that is uniformly reversible. As we have seen in Section 4.1, the plasp tool is able to rewrite STRIPS domains into ASP even when no concrete planning instance for that domain is given. We will present two encodings, one for (universal) uniform reversibility, and one that can be used for uniform ϕ-reversibility.</p><p>Note that universal uniform reversibility is computationally easier than ϕuniform reversibility (under standard complexity-theoretic assumptions). For a given action (and polynomial-length reverse plans), the former can be decided in NP, while the latter is harder <ref type="bibr" target="#b19">[21,</ref><ref type="bibr">Theorem 18 and 20]</ref>. We will hence start with the encoding for the former problem, which follows a standard guess-and-check pattern.</p><p>Universal Uniform Reversibility. As a "database" the encoding takes the output of plasp's translate action <ref type="bibr" target="#b10">[11]</ref>. The problem can be solved in NP due to the following Observation (*): in any (universal) reverse plan for some action a, it is sufficient to consider only the set of facts that appear in the precondition of a. If any action in a candidate reverse plan π for a (resp. a itself) contains any other fact than those in pre(a), then π cannot be a reverse plan for a (resp. a is not uniformly reversible) <ref type="bibr" target="#b19">[21,</ref><ref type="bibr">Theorem 18]</ref>. With this observation in mind, we can now describe the (core parts of) our encoding <ref type="foot" target="#foot_0">3</ref> .</p><p>The encoding makes use of the following main predicates (in addition to several auxiliary predicates, as well as those imported from plasp):</p><p>chosen/1 holds the action to be tested for reversibility.</p><p>holds/3 encodes that some fact (or variable, as they are called in plasp parlance) is set to a certain value at a given time step. occurs/2 encodes the candidate reverse plan, saying which action occurs at which time step.</p><p>With the intuitive meaning of the predicates defined, firstly, we chose an action from the available actions and set the initial state as the facts in the precondition of the chosen action. We also say, in line with the Observation (*) above, that only those variables in the precondition are relevant to check for a reverse plan.</p><p>1 {chosen(A) : action(action(A))} 1. holds(V, Val, 0) :chosen(A), precondition(action(A), variable(V), value(variable(V), Val)). relevant(V) :-holds(V, _, 0). These rules set the stage for the inherent planning problem to be solved to find a reverse plan. In fact, from the initial state defined above, we need to find a plan π that starts with action a (the chosen action), such that after executing π we end up in the initial state again. Such a plan is a (universal) reverse plan. This idea is encoded in the following: time(0..horizon+1).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>occurs(A, 1) :-chosen(A). 1 {occurs(A, T) : action(action(A))} 1 :-time(T), T &gt; 1.</head><p>caused(V, Val, T) :occurs(A, T), postcondition(action(A), _, variable(V), value(variable(V), Val)), holds(V2, Val2, T -1) : precondition(action(A), variable(V2), value(variable(V2), Val2)). modified(V, T) :-caused(V, _, T).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>holds(V, Val, T) :-caused(V, Val, T). holds(V, Val, T) :-holds(V, Val, T -1), not modified(V, T), time(T).</head><p>The above rules guess a potential plan π as described above, and then execute the plan on the initial state (changing facts if this is caused by the application of a rule, and keeping the same facts if they were not modified). The notation in the rule body for caused is an abbreviation for requiring holds for each precondition. Finally, we simply need to check that the plan is (a) executable, and (b) leads from the initial state back to the initial state. This can be done with the following constraints:</p><p>:-occurs(A, T), precondition(action(A), variable(V), value(variable(V), Val)), not holds(V, Val, T -1).</p><p>:-occurs(A, T), precondition(action(A), variable(V), _), not relevant(V). :-occurs(A, T), postcondition(action(A), _, variable(V), _), not relevant(V).</p><p>:-holds(V, Val, 0), not holds(V, Val, horizon+1). :-holds(V, Val, horizon+1), not holds(V, Val, 0).</p><p>The first rule checks that rules in the candidate plan are actually applicable. The next two check that the rules do not contain any facts other than those that are relevant (cf. Observation (*) above). Finally, the last two rules make sure that at the maximum time point (i.e., the one given by the externally defined constant "horizon") the initial state and the resulting state of plan π are the same. It is not difficult to verify that any answer set of the above program (combined with the plasp translation of a STRIPS problem domain) will yield a plan π (encoded by the occurs predicate) that contains the sequence a, a 1 , . . . , a n of actions, where a 1 , . . . , a n is a (universal) reverse plan for the action a. Note that our encoding yields reverse plans of length exactly as long as set in the "horizon" constant. This completes our encoding for the problem of deciding universal uniform reversibility.</p><p>Other Forms of Uniform Reversibility. Using a similar guess-and-check idea as in the previous encoding, we can also check for uniform reversibility for a specified set of states (that is, uniform S-reversibility). Generally, the set S of relevant states is encoded in some compact form, and our encoding therefore, intentionally, does not assume anything about this representation, but leaves the precise checking of the set S open for implementations of a concrete use case. The predicates used in this more advanced encoding are similar to the ones used in the previous for the universal case above, and hence we will not list them here again. However, in order to encode the for-all-states check (i.e., the check that the candidate reverse plan works in all states inside the set S), we now need an advanced ASP encoding technique called saturation <ref type="bibr" target="#b12">[13]</ref>.</p><p>The encoding starts off much like the previous one:</p><p>Note that we no longer need to keep track of any set of "relevant" facts, since we now need to consider all the facts that appear inside the actions and in the set S of states. However, we need to keep track of those facts that are affected (i.e., potentially changed) by the application of an action. We assume that a predicate opposites/2 exists that holds, in both possible orders, the values "true" and "false". This will later be used to find the opposite value of some fact at a particular time step.</p><p>Next, we again guess and execute a plan, keeping track of whether the actions were able to be applied at each particular time step: occurs(A, 1) :-chosen(A). 1 {occurs(A, T) : action(action(A))} 1 :-time(T), T &gt; 1. applied(0). % no action needs to be applied at time step 0 applicable(A, T) :occurs(A, T), applied(T -1), holds(V, Val, T -1) : precondition(action(A), variable(V), value(variable(V), Val)). applied(T) :-applicable(_, T). holds(V, Val, T) :applicable(A, T), postcondition(action(A), _, variable(V), value(variable(V), Val)). holds(V, Val, T) :holds(V, Val, T -1), occurs(A, T), applied(T), not affected(A, V).</p><p>Again, the rules above choose a candidate reverse plan π, starting with the action-to-be-checked a, as before. Furthermore, we set up the goal conditions: π should be applicable (i.e., at each time step, the relevant action must have been applied), and furthermore, the state at the beginning must be equal to the state at the end. same(V) :-holds(V, Val, 0), holds(V, Val, horizon + 1). samestate :-same(V) : variable(variable(V)). planvalid :-applied(horizon + 1). reversePlan :-samestate, planvalid.</p><p>Finally, we need to specify that for all the states specified in the set S the candidate reverse plan must work. This is done as follows:</p><formula xml:id="formula_2">holds(V, Val1, 0) | holds(V, Val2, 0) :- variable(variable(V)), opposites(Val1, Val2), Val1 &lt; Val2. holds(V, Val, T) :- reversePlan, contains(variable(V), value(variable(V), Val)), time<label>(</label></formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>T). :-not reversePlan.</head><p>As stated above, this is done using the technique of saturation <ref type="bibr" target="#b12">[13]</ref>. We encourage the reader to refer to the relevant publication for more details on the "inner workings" of this encoding technique. In our case, intuitively, the rules state the following:</p><p>The first rule above specifies that some initial state should be guessed where the candidate reverse plan π is to be checked. The second and third rule together say that, for each such possible guess (i.e., for each possible initial state), the atom reversePlan must be derived for that particular guess. This concludes the main part of our encoding. In its current form, the encoding given above produces exactly the same results as the first encoding given in this section; that is, it checks for universal uniform reversibility. However, the second encoding can be easily modified in order to check uniform S-reversibility. Simply add a rule of the following form to it: reversePlan :-&lt; check guess against set S &gt; This rule should derive the atom reversePlan precisely when the current guess (that is, the currently considered starting state) does not belong to the set S. This can of course be generalized easily. For example, if set S is given as a formula ϕ, then the rule should check whether the current guess conforms to formula ϕ (i.e., encodes a model of ϕ). Other compact representations of S can be similarly checked at this point. Hence, we have a flexible encoding for uniform S-reversibility that is easy to extend with various forms of representations of set S<ref type="foot" target="#foot_2">4</ref> . This concludes the description of our encodings.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3">Experiments</head><p>We have conducted preliminary experiments with artificially constructed domains. The domains are as follows:</p><p>(define (domain rev-i) (:requirements :strips) (:predicates (f0) ... (fi)) (:action del-all :precondition (and (f0) ... (fi) ) :effect (and (not (f0)) ... (not (fi))))</p><p>(:action add-f0 :effect (f0))</p><p>...</p><p>(:action add-fi :precondition (fi-1) :effect (fi)))</p><p>The action del-all has a universal uniform reverse plan add-f0, . . . , add-fi . We have generated instances from i = 10 to i = 500 with step 10. We have analyzed runtime and memory consumption of two problems: (a) finding the reverse plan of size i (by setting the constant horizon to i) and proving that no other reverse plan exists, and (b) showing that no reverse plan of length i-1 exists (by setting the constant horizon to i-1). We compare the two encodings described in Section 4.2, we refer to the first one as simple encoding and the second one as saturation encoding.</p><p>We have used plasp 3.1.1 (https://potassco.org/labs/plasp/) and clingo 5.4.0 (https://potassco.org/clingo/) on a computer with a 3.1 GHz Intel Xeon Gold 6254 CPU with 18 cores and 128 GB RAM running CentOS 7. We have set a timeout of 10 minutes and a memory limit of 4GB (which was never exceeded). The results for problem (a) are plotted in Figure <ref type="figure" target="#fig_0">1</ref>. The saturation encoding exceeded the time limit already at the problem with 50 facts, while the simple encoding could solve all problems in under 20 seconds. The memory consumption increased with i, but was relatively moderate, also for the saturation encoding. The results for problem (b) are plotted in Figure <ref type="figure" target="#fig_1">2</ref>. While the simple encoding shows very similar behavior to problem (a), the saturation encoding took longer and had a time-out already at i = 40.</p><p>In total, the saturation encoding scales worse, as expected, but it can still solve problems of reasonable size. Another positive observation is that memory consumption does not appear to be an issue.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusions</head><p>In this paper, we have given a review of several notions of action reversibility in STRIPS planning, as originally presented in <ref type="bibr" target="#b19">[21]</ref>. We then proceeded, on the basis of the PDDL-to-ASP translation tool plasp <ref type="bibr" target="#b10">[11]</ref>, to present two ASP encodings to solve the task of universal uniform reversibility of STRIPS actions, given a corresponding planning domain. When given to an ASP solving system, these encodings, combined with the ASP translation of STRIPS planning domains produced by plasp, then yield a set of answer sets, each one representing a (universal) reverse plan for each action in the domain, for which such a reverse plan could be found.</p><p>The two encodings use two different approaches. The first encoding makes use of a shortcut that allows it to focus only on those facts that appear in the precondition of the action to check for reversibility <ref type="bibr" target="#b19">[21]</ref>. The second encoding makes use of an advanced ASP encoding technique called saturation <ref type="bibr" target="#b12">[13]</ref>, which allows for the expression of universal quantifiers. It directly encodes the original definition of uniform reversibility: for an action to be uniformly reversible, there must exists a plan, and this plan must revert that action in all possible starting states (where it is applicable). This second encoding is more flexible insofar as it also allows for the checking of non-universal uniform reversibility (e.g., to check for uniform ϕ-reversibility, where the starting states are given via some formula ϕ).</p><p>In order to compare the two encodings, we performed some benchmarks on artificially generated instances by checking whether there is an action that is universally uniformly reversible. For the ASP community, it will not come as a surprise that the saturation-based encoding was performing much more poorly than the encoding without saturation. However, we found that, for our benchmark instances, both encodings were able to solve reasonably sized instances. Therefore, the encodings offer a trade-off: while the first encoding is clearly more efficient when checking for universal uniform reversibility, the saturation-based encoding is more flexible in that it can also be used to check more advanced versions where a given set of starting states needs to be considered.</p><p>For future work, we intend to optimize our encodings further, and see how they perform on real-world benchmark instances. It would also be interesting to see how they perform when compared to a procedural implementation of the algorithms proposed for reversibility checking by Morak et al. <ref type="bibr" target="#b19">[21]</ref>. We would also like to compare our approach to existing tools RevPlan 5 (implementing tech-niques of <ref type="bibr" target="#b11">[12]</ref>) and undoability (implementing techniques of <ref type="bibr" target="#b8">[9]</ref>). Furthermore, we would also like to test other ASP systems such as DLV2<ref type="foot" target="#foot_4">6</ref>  <ref type="bibr" target="#b0">[1]</ref>.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 .</head><label>1</label><figDesc>Fig. 1. Calculating the single reverse plan (plan length equals number of facts)</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 2 .</head><label>2</label><figDesc>Fig. 2. nonexistence of a reverse plan (plan length equals number of facts minus one)</figDesc></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_0">The full encoding is available here: https://seafile.aau.at/d/e0aedc92b4c546d5bf9a/.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_1">{chosen(A) : action(action(A))} 1. holds(V, Val, 0) :chosen(A), precondition(action(A), variable(V), value(variable(V), Val)). affected(A, V) :-postcondition(action(A), _, variable(V), _).</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_2">The full encoding can be found at https://seafile.aau.at/d/e0aedc92b4c546d5bf9a/.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_3">http://www.kr.tuwien.ac.at/research/systems/revplan/index.html</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_4">https://www.mat.unical.it/DLV2/</note>
		</body>
		<back>

			<div type="funding">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Supported by the Czech Science Foundation (project no. 18-07252S), the Czech Ministry of Education, Youth and Sports under the Czech-Austrian Mobility programme (project no. 8J19AT025) and by the S&amp;T Cooperation CZ 05/2019 "Identifying Undoable Actions and Events in Automated Planning by Means of Answer Set Programming."</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">The ASP system DLV2</title>
		<author>
			<persName><forename type="first">M</forename><surname>Alviano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Calimeri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Dodaro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Fuscà</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Leone</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Perri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Ricca</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Veltri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Zangari</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-</idno>
		<idno>319-61660-5 19</idno>
		<ptr target="https://doi.org/10.1007/978-3-" />
	</analytic>
	<monogr>
		<title level="m">Logic Programming and Nonmonotonic Reasoning -14th International Conference, LPNMR 2017</title>
		<title level="s">Proceedings. Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">M</forename><surname>Balduccini</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">T</forename><surname>Janhunen</surname></persName>
		</editor>
		<meeting><address><addrLine>Espoo, Finland</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2017">July 3-6, 2017. 2017</date>
			<biblScope unit="volume">10377</biblScope>
			<biblScope unit="page" from="215" to="221" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Answer set programming at a glance</title>
		<author>
			<persName><forename type="first">G</forename><surname>Brewka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Eiter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Truszczynski</surname></persName>
		</author>
		<idno>2043174.2043195</idno>
		<ptr target="https://doi.org/10.1145/" />
	</analytic>
	<monogr>
		<title level="j">Commun. ACM</title>
		<imprint>
			<biblScope unit="volume">54</biblScope>
			<biblScope unit="issue">12</biblScope>
			<biblScope unit="page" from="92" to="103" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">The computational complexity of propositional STRIPS planning</title>
		<author>
			<persName><forename type="first">T</forename><surname>Bylander</surname></persName>
		</author>
		<idno type="DOI">10.1016/0004-3702</idno>
		<idno>(94)90081-7</idno>
		<ptr target="https://doi.org/10.1016/0004-3702" />
	</analytic>
	<monogr>
		<title level="j">Artif. Intell</title>
		<imprint>
			<biblScope unit="volume">69</biblScope>
			<biblScope unit="issue">1-2</biblScope>
			<biblScope unit="page" from="165" to="204" />
			<date type="published" when="1994">1994</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Asp-core-2 input language format</title>
		<author>
			<persName><forename type="first">F</forename><surname>Calimeri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Faber</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Gebser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Ianni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Kaminski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Krennwallner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Leone</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Maratea</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Ricca</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schaub</surname></persName>
		</author>
		<idno type="DOI">10.1017/S1471068419000450</idno>
		<ptr target="https://doi.org/10.1017/S1471068419000450" />
	</analytic>
	<monogr>
		<title level="j">Theory Pract. Log. Program</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="294" to="309" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">From FOND to robust probabilistic planning: Computing compact policies that bypass avoidable deadends</title>
		<author>
			<persName><forename type="first">A</forename><surname>Camacho</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">J</forename><surname>Muise</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">A</forename><surname>Mcilraith</surname></persName>
		</author>
		<ptr target="http://www.aaai.org/ocs/index.php/ICAPS/ICAPS16/paper/view/13188" />
	</analytic>
	<monogr>
		<title level="m">Proc. ICAPS</title>
				<meeting>ICAPS</meeting>
		<imprint>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="65" to="69" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Handling non-local dead-ends in agent planning programs</title>
		<author>
			<persName><forename type="first">L</forename><surname>Chrpa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Lipovetzky</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Sardiña</surname></persName>
		</author>
		<idno type="DOI">10.24963/ijcai.2017/135</idno>
		<ptr target="https://doi.org/10.24963/ijcai.2017/135" />
	</analytic>
	<monogr>
		<title level="m">Proc. IJCAI</title>
				<meeting>IJCAI</meeting>
		<imprint>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="971" to="978" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Optimizing plans through analysis of action dependencies and independencies</title>
		<author>
			<persName><forename type="first">L</forename><surname>Chrpa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">L</forename><surname>Mccluskey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Osborne</surname></persName>
		</author>
		<ptr target="http://www.aaai.org/ocs/index.php/ICAPS/ICAPS12/paper/view/4712" />
	</analytic>
	<monogr>
		<title level="m">Proc. ICAPS</title>
				<meeting>ICAPS</meeting>
		<imprint>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Avoiding dead ends in realtime heuristic search</title>
		<author>
			<persName><forename type="first">B</forename><surname>Cserna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">J</forename><surname>Doyle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">S</forename><surname>Ramsdell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Ruml</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Thirty-Second AAAI Conference on Artificial Intelligence</title>
				<meeting>the Thirty-Second AAAI Conference on Artificial Intelligence</meeting>
		<imprint>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="1306" to="1313" />
		</imprint>
	</monogr>
	<note>AAAI-18</note>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Practical undoability checking via contingent planning</title>
		<author>
			<persName><forename type="first">J</forename><surname>Daum</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Á</forename><surname>Torralba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Hoffmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Haslum</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Weber</surname></persName>
		</author>
		<ptr target="http://www.aaai.org/ocs/index.php/ICAPS/ICAPS16/paper/view/13091" />
	</analytic>
	<monogr>
		<title level="m">Proc. ICAPS</title>
				<meeting>ICAPS</meeting>
		<imprint>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="106" to="114" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Agent planning programs</title>
		<author>
			<persName><forename type="first">G</forename><surname>De Giacomo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">E</forename><surname>Gerevini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Patrizi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Saetti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Sardiña</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.artint.2015.10.001</idno>
		<ptr target="https://doi.org/10.1016/j.artint.2015.10.001" />
	</analytic>
	<monogr>
		<title level="j">Artif. Intell</title>
		<imprint>
			<biblScope unit="volume">231</biblScope>
			<biblScope unit="page" from="64" to="106" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">plasp 3: Towards effective ASP planning</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Dimopoulos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Gebser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Lühne</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Romero</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schaub</surname></persName>
		</author>
		<idno type="DOI">10.1017/S1471068418000583</idno>
		<ptr target="https://doi.org/10.1017/S1471068418000583" />
	</analytic>
	<monogr>
		<title level="j">Theory and Practice of Logic Programming</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="477" to="504" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Undoing the effects of action sequences</title>
		<author>
			<persName><forename type="first">T</forename><surname>Eiter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Erdem</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Faber</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.jal.2007.05.002</idno>
		<ptr target="https://doi.org/10.1016/j.jal.2007.05.002" />
	</analytic>
	<monogr>
		<title level="j">J. Applied Logic</title>
		<imprint>
			<biblScope unit="volume">6</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="380" to="415" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">On the computational cost of disjunctive logic programming: Propositional case</title>
		<author>
			<persName><forename type="first">T</forename><surname>Eiter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gottlob</surname></persName>
		</author>
		<idno type="DOI">10.1007/BF01536399</idno>
		<ptr target="https://doi.org/10.1007/BF01536399" />
	</analytic>
	<monogr>
		<title level="j">Ann. Math. Artif. Intell</title>
		<imprint>
			<biblScope unit="volume">15</biblScope>
			<biblScope unit="issue">3-4</biblScope>
			<biblScope unit="page" from="289" to="323" />
			<date type="published" when="1995">1995</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">STRIPS: A new approach to the application of theorem proving to problem solving</title>
		<author>
			<persName><forename type="first">R</forename><surname>Fikes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">J</forename><surname>Nilsson</surname></persName>
		</author>
		<idno type="DOI">10.1016/0004</idno>
		<idno>-3702(71)90010-5</idno>
		<ptr target="http://dx.doi.org/10.1016/0004-3702(71)90010-5" />
	</analytic>
	<monogr>
		<title level="j">Artif. Intell</title>
		<imprint>
			<biblScope unit="volume">2</biblScope>
			<biblScope unit="issue">3/</biblScope>
			<biblScope unit="page" from="189" to="208" />
			<date type="published" when="1971">1971</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Answer Set Solving in Practice</title>
		<author>
			<persName><forename type="first">M</forename><surname>Gebser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Kaminski</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Kaufmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schaub</surname></persName>
		</author>
		<idno type="DOI">10.2200/S00457ED1V01Y201211AIM019</idno>
		<ptr target="https://doi.org/10.2200/S00457ED1V01Y201211AIM019" />
	</analytic>
	<monogr>
		<title level="m">Synthesis Lectures on Artificial Intelligence and Machine Learning</title>
				<imprint>
			<publisher>Morgan &amp; Claypool Publishers</publisher>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Classical negation in logic programs and disjunctive databases</title>
		<author>
			<persName><forename type="first">M</forename><surname>Gelfond</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Lifschitz</surname></persName>
		</author>
		<idno type="DOI">10.1007/BF03037169</idno>
		<ptr target="https://doi.org/10.1007/BF03037169" />
	</analytic>
	<monogr>
		<title level="j">New Gener. Comput</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="issue">3/4</biblScope>
			<biblScope unit="page" from="365" to="386" />
			<date type="published" when="1991">1991</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<title level="m" type="main">Automated planning -theory and practice</title>
		<author>
			<persName><forename type="first">M</forename><surname>Ghallab</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">S</forename><surname>Nau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Traverso</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2004">2004</date>
			<publisher>Elsevier</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Automated Planning and Acting</title>
		<author>
			<persName><forename type="first">M</forename><surname>Ghallab</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">S</forename><surname>Nau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Traverso</surname></persName>
		</author>
		<author>
			<persName><surname>Lifschitz</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-24658-7</idno>
		<ptr target="https://doi.org/10.1007/978-3-030-24658-7" />
	</analytic>
	<monogr>
		<title level="m">Answer Set Programming</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2016">2016. 2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Traps, invariants, and dead-ends</title>
		<author>
			<persName><forename type="first">N</forename><surname>Lipovetzky</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">J</forename><surname>Muise</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Geffner</surname></persName>
		</author>
		<ptr target="http://www.aaai.org/ocs/index.php/ICAPS/ICAPS16/paper/view/13190" />
	</analytic>
	<monogr>
		<title level="m">Proc. ICAPS</title>
				<meeting>ICAPS</meeting>
		<imprint>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="211" to="215" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">On the reversibility of actions in planning</title>
		<author>
			<persName><forename type="first">M</forename><surname>Morak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Chrpa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Faber</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Fišer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 17th International Conference on Principles of Knowledge Representation and Reasoning</title>
				<meeting>the 17th International Conference on Principles of Knowledge Representation and Reasoning<address><addrLine>KR</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2020">2020. 2020</date>
		</imprint>
	</monogr>
	<note>to appear</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
