<?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">Automated Planning Through Program Verification</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Salvatore</forename><forename type="middle">La</forename><surname>Torre</surname></persName>
							<email>slatorre@unisa.it</email>
							<affiliation key="aff0">
								<orgName type="institution">University of Salerno</orgName>
								<address>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Gennaro</forename><surname>Parlato</surname></persName>
							<email>gennaro.parlato@unimol.it</email>
							<affiliation key="aff1">
								<orgName type="institution">University of Molise</orgName>
								<address>
									<country key="IT">Italy</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Automated Planning Through Program Verification</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">856BF559216D4AFD2C3F3ABEB9811020</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T06:56+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>Automated Planning</term>
					<term>Formal Methods</term>
					<term>Program Verification</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>In this paper, we report on a preliminary study on the feasibility of applying techniques and tools for finding errors in programs, or prove them entirely correct, to effectively explore the large state space of instances of the automated planning problem (AP). To leverage the recent advancements in the symbolic program analysis, we design a simple reduction from AP to the configuration reachability problem of programs and then use off-the-shelf program verification tools. We evaluate the feasibility of our approach on the Agricola-sat18 benchmark used at IPC'18.</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>The automated planning problem is a central problem in AI which concerns with the search and the synthesis of a sequence of actions aimed to reach a given goal. It is a complex and wellstudied problem, and in the years several efficient solutions have been proposed in the literature to solve it. These include direct approaches such as forward or backward chain searches and partial order scheduling <ref type="bibr" target="#b0">[1]</ref>. Other solutions consist of reducing it to other problems for which scalable and effective solutions exist, such as Boolean formula satisfiability (SAT) or model checking <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b2">3]</ref>.</p><p>In this paper, we expand this arsenal of solutions by contributing another reduction, this time to the program verification problem. Given an instance of the planning problem, we construct a simple imperative program that nondeterministically simulates a sequence of actions starting from an initial state that fails an assertion whenever a target state is reached (see <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b4">5,</ref><ref type="bibr" target="#b5">6,</ref><ref type="bibr" target="#b6">7,</ref><ref type="bibr" target="#b7">8,</ref><ref type="bibr" target="#b8">9]</ref> for similar approaches in other domains). This type of reduction, although simple, opens up the possibility of using off-the-shelf automatic techniques and tools designed to verify programs in order to synthesise plans. These include approaches such as Bounded Model Checking (BMC), Abstract Interpretation, Counter-example Guided Abstraction Refinement, to name a few (see <ref type="bibr" target="#b9">[10]</ref>). The programs produced through our reduction have a very particular form that we think could be exploited to refine and then specialise these approaches and techniques to work well for this class of noncanonical programs.</p><p>We begin our study following this direction, exploring the possibility of using BMC-based techniques in a simple way. We apply our approach to some benchmarks taken from the planning competition to demonstrate its feasibility. We leave for future investigations the possibility of exploiting other program verification techniques and tools. The planning problem is essentially a search problem over the states of a transition system, a set of states along with a set of actions that can change the current system state. Thus, given a set of states 𝑆 and a set of actions 𝐴 over them, the planning problem simply asks whether there is a sequence of actions from 𝐴 that starting from an initial state take the system to a state in a goal set 𝐺.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Preliminaries</head><p>To express the planning problem instances, we consider a simple PDDL-like language. The syntax is given in Figure <ref type="figure" target="#fig_0">1</ref>. Here, an instance is composed of a domain and a problem. The domain part essentially identifies the transition system by defining the possible states through a set of Boolean predicates and constants, and a set of actions. Each action is defined over a list of parameters (that can assume the values of the given constants) and has a precondition and an effect with the meaning that an action can be taken on each state where the precondition holds and when taken, produces the change of the truth values of the predicates as described in the effect part. The problem part instead completes the domain with more constants (object part), and gives the initial values for the predicates (identifying the initial state) and the condition that must old for the goal states.</p><p>The syntax allowed for the preconditions and goals may vary depending on the specific planning language. Also, constants and objects may be typed, and functions that manipulate numeric types can be added. To keep the presentation simple here we limit to conditions that are just conjunctions of positive and negative atoms, and omit functions and types. However, these features and more complex conditions can be easily included in our code-to-code transformation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Reduction to program verification: code-to-code translation</head><p>In this section, we describe the code-to-code translation that is the main part of our reduction. Instead of giving the formal translation we illustrate it by an example. For this we will use a classical and well-known planning domain, the so-called blocks world.</p><p>Example: blocks world. The blocks world domain consists of a set of cube-shaped blocks sitting on a table. The blocks can be piled up such that only one block can fit directly on top of another. A robot can pick up a block that is not below other ones (top) and move it to another position, either on the table or on top of another block. In this domain, both the initial state and the goal may consist of one or more piles of blocks.   The goal instead consists of a single pile formed by block A on B and block B on C. We use the predicate On(x,y) to indicate that block x is on y (note that parameters are preceded by ? in the style of PDDLsyntax), where y is either another block or the table. We use another predicate Clear(x) to denote that x is top. In the domain, the actions are move and moveToTable. Action move(b,x,y) moves a block b on top of a block y provided that b and y are both top, additionally the object x (that might be a block as well or the </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Code-to-code translation.</head><p>To illustrate our codeto-code translation, we refer to the example shown in Figure <ref type="figure" target="#fig_1">2</ref> (a). We use a simple imperative programming language (such as that of the analyzer ConcurInterproc: http://pop-art.inrialpes.fr/interproc/ concurinterprocweb.cgi). The program is shown in Figure <ref type="figure" target="#fig_2">2 (b)</ref>. We use scalar variables or arrays with global scope to encode predicates. We initialize these variables using the expression initial derived from the init component of the problem definition. The actions are each modelled with a procedure of the same name. Here we declare a number of local variables that model the parameters. These variables are initialized with a non deterministic value taken from the domain of the variables using the expression rand. To simulate the action we first check that the guessed values make the precondition evaluate to true, and if so we update the arrays modelling the predicates with a sequence of assignments derived from the effect of the action. The simulation is then orchestrated by the main procedure: it goes through an infinite loop whose body is crafted to simulate all actions in a non-deterministic way. The body also contains an assertion whose condition corresponds to the negation of the goal condition of the problem. Thus, to synthesise a plan we check whether the program fails this assertion. If so, by inspecting the counterexample we are able to construct a plan by listing the actions simulated along the counterexample. Of course, an instance of the planning problem that does not admit a plan leads to a program that is actually correct, that is, a program that has no executions leading to an assertion violation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Implementation and experiments</head><p>To evaluate our approach, we implemented it into a prototype tool and conducted some preliminary experiments on the Agricola-sat18 benchmark taken from the 9th International Planning Competition (IPC'18) held at ICAPS 2018.</p><p>Prototype tool. Our tool is a code-to-code translation from PDDL planning instances to C programs. It is entirely written in python (version 3.8) and relies on the library pddlpy <ref type="bibr" target="#b10">[11]</ref> to parse the PDDL instances. pddlpy provides a convenient API to extract the different kinds of elements of PDDL domains and problems.We have also extended the API of pddlpy to simplify the translation into a C program. The prototype uses CBMC (https://www.cprover.org/cbmc/) as backend for the program analysis. Thus a main parameter in the implemented approach is the number of rounds where we select the actions (which corresponds to the unwinding depth of the infinite loop of the main procedure). We support also a few more input parameters that can be given to trigger a swarm-like analysis (see <ref type="bibr">[12,</ref><ref type="bibr" target="#b12">13]</ref>), enable some light partial order reductions, and few more search heuristics. Agricola-sat18. This benchmark set is based on the board game Agricola that models a farm with some workers. The game has a number of turns and stages, in which the player must select actions for the workers that are finalized to obtain more resources. The player may decide also to increase the number of workers. To reach the goal the player may take several actions per turn however this also increases the amount of food consumed at the end of the turn, that may lead into dead ends. The benchmark is composed of twenty planning instances sharing a common domain file. The model is written in the STRIPS fragment of PDDL which is slightly more expressive than the fragment presented in this paper: objects and constants are typed and also cost functions and numerical types are allowed.</p><p>Experiments. We run our tool on the entire benchmark set with round bound 20 finding plans for 6/20 problems and taking overall about 900s. We repeated the same experiment with bound 30, now taking about 7000s (including three 1200s timeouts) and finding plans for six more problems. We then focused only on the remaining eight unsolved problems by using increasing number of rounds up to 70 and timeouts up to 7200s. We found plans in three more problems for a total of 15/20 problems. Interestingly, the new plans where discovered with relatively low computational resources: 26 rounds and 1800s timeout, 31 rounds and 3000s timeout, 33 rounds and 300s timeout, respectively. These preliminary experiments show that our approach, although straightforward, is competitive with the best performing tools at the ICP'18 which were only able to solve one more problem, thus confirming our intuition that program verification can play a role in the automated planning domain.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Planning language.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: (a) PDDL-like Example (b)a program that simulates the behaviour of (a).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 2 .</head><label>2</label><figDesc>Figure 2.(a) gives a PDDL-like encoding of a planning instance based on this domain where the initial state is given by two piles: one formed by the sole block B and the other formed by block C on top of block A.The goal instead consists of a single pile formed by block A on B and block B on C. We use the predicate On(x,y) to indicate that block x is on y (note that parameters are preceded by ? in the style of PDDLsyntax), where y is either another block or the table. We use another predicate Clear(x) to denote that x is top. In the domain, the actions are move and moveToTable. Action move(b,x,y) moves a block b on top of a block y provided that b and y are both top, additionally the object x (that might be a block as well or the table) sitting right below b must become top. Action moveToTable(b,x) just moves a top block b on the table and makes the object x below b a top one. A solving plan for the described planning instance consists of three steps: movetoTable(C,A), move(B,table,C), and move(A,table,B).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head></head><label></label><figDesc>table) sitting right below b must become top. Action moveToTable(b,x) just moves a top block b on the table and makes the object x below b a top one. A solving plan for the described planning instance consists of three steps: movetoTable(C,A), move(B,table,C), and move(A,table,B).</figDesc><table /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" 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>
		<imprint>
			<date type="published" when="2016">2016</date>
			<publisher>Cambridge University Press</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Planning and SAT</title>
		<author>
			<persName><forename type="first">J</forename><surname>Rintanen</surname></persName>
		</author>
		<idno type="DOI">10.3233/978-1-58603-929-5-483</idno>
		<ptr target="https://doi.org/10.3233/978-1-58603-929-5-483" />
	</analytic>
	<monogr>
		<title level="m">Frontiers in Artificial Intelligence and Applications</title>
				<editor>
			<persName><forename type="first">A</forename><surname>Biere</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Heule</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">H</forename><surname>Van Maaren</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">T</forename><surname>Walsh</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="2009">2009</date>
			<biblScope unit="volume">185</biblScope>
			<biblScope unit="page" from="483" to="504" />
		</imprint>
	</monogr>
	<note>Handbook of Satisfiability</note>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Planning as model checking</title>
		<author>
			<persName><forename type="first">F</forename><surname>Giunchiglia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Traverso</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Recent Advances in AI Planning</title>
				<meeting><address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2000">2000</date>
			<biblScope unit="page" from="1" to="20" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Security analysis of role-based access control through program verification</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">L</forename><surname>Ferrara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Madhusudan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Parlato</surname></persName>
		</author>
		<idno type="DOI">10.1109/CSF.2012.28</idno>
		<ptr target="https://doi.org/10.1109/CSF.2012.28" />
	</analytic>
	<monogr>
		<title level="m">25th IEEE Computer Security Foundations Symposium</title>
				<meeting><address><addrLine>CSF</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2012">2012. 2012</date>
			<biblScope unit="page" from="113" to="125" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Policy analysis for self-administrated role-based access control</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">L</forename><surname>Ferrara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Madhusudan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Parlato</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-36742-7_30</idno>
		<ptr target="https://doi.org/10.1007/978-3-642-36742-7_30" />
	</analytic>
	<monogr>
		<title level="m">Tools and Algorithms for the Construction and Analysis of Systems -19th International Conference, TACAS 2013. Proceedings</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">7795</biblScope>
			<biblScope unit="page" from="432" to="447" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Vac -verifier of administrative role-based access control policies</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">L</forename><surname>Ferrara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Madhusudan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">L</forename><surname>Nguyen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Parlato</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-08867-9_12</idno>
		<ptr target="https://doi.org/10.1007/978-3-319-08867-9_12" />
	</analytic>
	<monogr>
		<title level="m">Computer Aided Verification -26th International Conference, CAV 2014. Proceedings</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">8559</biblScope>
			<biblScope unit="page" from="184" to="191" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Bounded model checking of multi-threaded C programs via lazy sequentialization</title>
		<author>
			<persName><forename type="first">O</forename><surname>Inverso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Tomasco</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Fischer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>La Torre</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Parlato</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-08867-9_39</idno>
		<ptr target="https://doi.org/10.1007/978-3-319-08867-9_39" />
	</analytic>
	<monogr>
		<title level="m">Computer Aided Verification -26th International Conference, CAV 2014. Proceedings</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">8559</biblScope>
			<biblScope unit="page" from="585" to="602" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Verifying concurrent programs by memory unwinding, in: Tools and Algorithms for the Construction and Analysis of Systems -21st International Conference</title>
		<author>
			<persName><forename type="first">E</forename><surname>Tomasco</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Inverso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Fischer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>La Torre</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Parlato</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-662-46681-0_52</idno>
		<ptr target="https://doi.org/10.1007/978-3-662-46681-0_52" />
	</analytic>
	<monogr>
		<title level="m">TACAS 2015. Proceedings</title>
				<imprint>
			<date type="published" when="2015">9035. 2015</date>
			<biblScope unit="page" from="551" to="565" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Lazy sequentialization for the safety verification of unbounded concurrent programs</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">L</forename><surname>Nguyen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Fischer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>La Torre</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Parlato</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-46520-3_12</idno>
		<ptr target="https://doi.org/10.1007/978-3-319-46520-3_12" />
	</analytic>
	<monogr>
		<title level="m">Automated Technology for Verification and Analysis -14th International Symposium, ATVA 2016. Proceedings</title>
				<imprint>
			<date type="published" when="2016">9938. 2016</date>
			<biblScope unit="page" from="174" to="191" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title level="m" type="main">Handbook of Model Checking</title>
		<idno type="DOI">10.1007/978-3-319-10575-8</idno>
		<ptr target="https://doi.org/10.1007/978-3-319-10575-8" />
		<editor>E. M. Clarke, T. A. Henzinger, H. Veith, R. Bloem</editor>
		<imprint>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">A python PDDL parser</title>
		<author>
			<persName><forename type="first">H</forename><surname>Foffani</surname></persName>
		</author>
		<ptr target="https://pypi.org/project/pddlpy/" />
		<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Swarm verification techniques</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">J</forename><surname>Holzmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Joshi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Groce</surname></persName>
		</author>
		<idno type="DOI">10.1109/TSE.2010.110</idno>
		<ptr target="https://doi.org/10.1109/TSE.2010.110" />
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. Software Eng</title>
		<imprint>
			<biblScope unit="volume">37</biblScope>
			<biblScope unit="page" from="845" to="857" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Parallel bug-finding in concurrent programs via reduced interleaving instances</title>
		<author>
			<persName><forename type="first">E</forename><surname>Tomasco</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Fischer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>La Torre</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">L</forename><surname>Nguyen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Parlato</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Schrammel</surname></persName>
		</author>
		<idno type="DOI">10.1109/ASE.2017.8115686</idno>
		<ptr target="https://doi.org/10.1109/ASE.2017.8115686" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering</title>
				<meeting>the 32nd IEEE/ACM International Conference on Automated Software Engineering<address><addrLine>ASE</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2017">2017. 2017</date>
			<biblScope unit="page" from="753" to="764" />
		</imprint>
	</monogr>
</biblStruct>

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