<?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">Using Answer Set Programming for Assigning Tasks to Computing Nodes</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author role="corresp">
							<persName><forename type="first">Franz</forename><surname>Wotawa</surname></persName>
							<email>wotawa@ist.tugraz.at</email>
							<affiliation key="aff0">
								<orgName type="department">Institute of Software Technology</orgName>
								<orgName type="institution">Graz University of Technology (TU Graz)</orgName>
								<address>
									<addrLine>Inffeldgasse 16b/2</addrLine>
									<postCode>A-8010</postCode>
									<settlement>Graz</settlement>
									<country key="AT">Austria</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Using Answer Set Programming for Assigning Tasks to Computing Nodes</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">555F419B305DE859B70FA6B394230CE0</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T18:20+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>Configuring computing nodes</term>
					<term>ASP models for configuration</term>
					<term>Experimental analysis</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Allocating tasks to computing nodes in a network is an important configuration problem. In the case of fail-safe networks, such configuration must be changed during operation if a computing node fails. Hence, a fast configuration is required. In this paper, we formulate a tasks-to-computing-nodes assignment problem and its constraints using answer set programming. We performed an initial experimental evaluation utilizing several smaller to mid-size problem instances to show whether logic reasoning based on answer set programming is feasible for practical applications. We discovered that reasoning is fast if a solution exists but not when there is no solution. Further constraints help to decide that a problem instance is unsolvable early in the search, which improves the outcome.</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>There has been plenty of work in the area of configuration and recommender systems, including service configuration <ref type="bibr" target="#b0">[1]</ref>, governance systems <ref type="bibr" target="#b1">[2]</ref>, or product configuration <ref type="bibr" target="#b2">[3]</ref> to refer to recent work. However, answer set programming for representing models used for configuration and reasoning to obtain valid configuration has recently gained more attention, e.g., see <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b3">4,</ref><ref type="bibr" target="#b4">5]</ref>. In this paper, we contribute to this research direction and introduce a model and an evaluation for configuring networks comprising computing nodes for executing pre-defined tasks. The underlying problem is related to scheduling and shift designs <ref type="bibr" target="#b5">[6]</ref>.</p><p>The main motivation behind our work comes from practical applications, where, for example, tasks, i.e., programs, have to be deployed on computing nodes in a network. Although this problem can be seen as a static one that must only be solved before the operation, we may require to re-configure such a task assignment during operation whenever a computing node fails (see, e.g., <ref type="bibr" target="#b6">[7]</ref>). Such re-configuration tasks have to be carried out under time restrictions. To evaluate whether modern reasoning methods like answer set programming can be used for this task, we conduct an experimental evaluation. This evaluation comprises several instances of the corresponding task to computing node assignment problems considering various sizes of nodes and tasks. The evaluation utilizes the answer set programming solver clingo <ref type="bibr" target="#b7">[8]</ref>. The question we want to answer is regarding the approach's limitations regarding the problem size.</p><p>Can we use answer set programming (and in particular clingo) to provide task assignments fast enough to be used during operation?</p><p>We structure this paper as follows. First, we introduce the underlying configuration problem and clingo implementation. Afterward, we discuss the experimental evaluation, i.e., the basic setup and the results obtained. Finally, we conclude the paper.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Problem description</head><p>We start defining the task to node assignment problem. We assume we have 𝑘 computing nodes 𝑛1, . . . , 𝑛 𝑘 and 𝑛 tasks 𝑡1, . . . , 𝑡𝑛 to be assigned to the nodes. For each node 𝑛𝑖, we know the maximum number of tasks 𝑐(𝑛𝑖) it can hold and the available memory 𝑚(𝑛𝑖). For each task 𝑡𝑗, we know its memory consumption 𝑚(𝑡𝑗). From this knowledge, we obtain several constraints an assignment must fulfill to be valid. In the following, we formalize these constraints assuming that the function 𝑎𝑠𝑠𝑖𝑔𝑛𝑒𝑑(𝑛𝑖) returns a set of tasks that is assigned to a node 𝑛𝑖 First, the required memory from the tasks assigned to a node shall never exceed the available memory of this node. These constraints can be formalized as follows: ∀𝑖 ∈ {1, . . . , 𝑘} :</p><formula xml:id="formula_0">⎛ ⎝ ∑︁ 𝑡 𝑗 ∈𝑎𝑠𝑠𝑖𝑔𝑛𝑒𝑑(𝑛 𝑖 ) 𝑚(𝑡𝑗) ≤ 𝑚(𝑛𝑖) ⎞ ⎠ (1)</formula><p>Second, the number of tasks assigned to a node shall never exceed the maximum number of tasks the node can hold, i.e., formally, we write: A solution to the tasks to computing nodes assignment problem is an assignment of all tasks to all nodes such that ∀𝑗 ∈ {1, . . . , 𝑘} : ∃𝑖 ∈ {1, . . . , 𝑛} : 𝑡𝑗 ∈ 𝑎𝑠𝑠𝑖𝑔𝑛𝑒𝑑(𝑛𝑖), there is no tasks assigned to two different nodes, i.e., ∀𝑖, 𝑗 ∈ {1, . . . , 𝑘}, 𝑖 ̸ = 𝑗 : 𝑎𝑠𝑠𝑖𝑔𝑛𝑒𝑑(𝑛𝑖) ∩ 𝑎𝑠𝑠𝑖𝑔𝑛𝑒𝑑(𝑛𝑗) = ∅, and all constraints are fulfilled. Such an assignment is a valid one and may not exist. For example, if the number of tasks exceeds the number of free slots of the nodes or if the required memory for the tasks is not provided, there is no solution. Hence, we have two necessary conditions that must hold for obtaining a solution, i.e.:</p><formula xml:id="formula_1">𝑛 ≤ 𝑘 ∑︁ 𝑖=1 𝑐(𝑛𝑖)<label>(3)</label></formula><formula xml:id="formula_2">𝑛 ∑︁ 𝑗=1 𝑚(𝑡𝑗) ≤ 𝑘 ∑︁ 𝑖=1 𝑚(𝑛𝑖)<label>(4)</label></formula><p>It is worth noting that similar problems have additional constraints, e.g., stating that tasks need to be together in the same computing node. We may also introduce optimality criteria like preferring solutions requiring the least amount of computing nodes. Furthermore, we may also consider variants of the problem, i.e., reconfiguration of assignments. In the context of this paper, we do not tackle such extensions. We solely focus on answering the question regarding the applicability of the answer set program to solve the problem within a reasonable amount of time.</p><p>After outlining the problem in general, we present a solution using answer set programming where we rely on the syntax of the clingo solver<ref type="foot" target="#foot_0">1</ref>  <ref type="bibr" target="#b7">[8]</ref>, which is similar to the Prolog language. Due to space restrictions, we do not give an introduction to answer set programming (ASP). Instead, we refer to introductory literature into ASP, e.g., <ref type="bibr" target="#b8">[9]</ref>.</p><p>A clingo model for the node assignment problem comprises three parts. First, we define the number of computing nodes and tasks and their capacities and requirements. For every node, e.g., n2, we use three facts, where the predicate tcapacity denotes the maximum number of tasks, and mcapacity the maximum available memory for the given task.: node(n2). tcapacity(n2,1). mcapacity(n2,20).</p><p>For each task, e.g., t1, we add two facts, where the predicate memory is for defining the required memory of the given task to a pre-defined value: task(t1). memory(t1,30).</p><p>Second, we generate all potential solutions. For this purpose, we introduce a predicate for a node assignment of a task. Let us call this predicate select that takes a task T as the first parameter and node N as the second. In clingo, the generate part for the node assignment problem is given as follows:</p><formula xml:id="formula_3">{ select(T,N) : node(N) } = 1 :-task(T).</formula><p>This rule generates a grounded predicate that assigns tasks to each computing node. Obviously, not all assignments are correct when considering the constraints. Hence, in the last part, we formalize the first two constraints of the general problem, i.e., Equations 1 and 2, but not the other Equations 3 and 4. For this purpose, we introduce a predicate nrTasksAssigned that holds the number of tasks that are assigned to a particular node and a predicate memRequired that holds the required memory for a node considering the assigned tasks. The information regarding the predicates can be obtained from the selected task for a node (select predicate) and the memory required for a task. For the latter, we introduce the predicate memory. The predicate nrTasksAssigned can be formalized in clingo as follows:</p><formula xml:id="formula_4">nrTasksAssigned(N,M) :- M = #count {T:select(T,N)}, node(N).</formula><p>Similar, we can define the memRequired predicate:</p><formula xml:id="formula_5">memRequired(N,M) :- M = #sum {NM:select(T,N), memory(T,NM)}, node(N).</formula><p>Using these predicates, we can formulate the constraints:</p><p>:-nrTasksAssigned(N,M), tcapacity(N,C), M&gt;C. :-memRequired(N,M), mcapacity(N,C), M &gt; C.</p><p>The first constraint states that it is impossible to assign more tasks to a node than the node can hold. The second constraint states that the memory requirements of all tasks should not exceed the memory capacity of the computing node.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Experimental evaluation</head><p>The following experimental evaluation aims to investigate the runtime behavior for finding one solution of the task to computation node assignment problem using the ASP solver clingo. In particular, we are interested in the number of nodes that can be handled requiring less than a fixed boundary of time, e.g., 0.01 or 0.1 seconds. In the following, we outline the experimental setup and present and discuss the obtained results. Experimental setup: To develop several instances of the task assignment problem, we wrote a Java program for generating such instances automatically. We ranged the number of nodes from 5 to 100. The number of tasks for each instance was randomly chosen between the number of nodes and double the number of nodes. The capacity of each node was randomly set from 1,2, . . . , 10. The memory provided by each node was randomly chosen from 20, 40, 60,. . . , 200. The memory required by every task was randomly set from 10, 20, and 30. With this setup, we generated only satisfiable instances, i.e., problem instances where a solution exists. For a category of instances comprising 𝑛 nodes, we called the instance generator 10 times. Finally, we received 200 different problem instances.</p><p>We conducted the experiments using an Apple Mac-Book Pro, with an Apple M1 CPU comprising 8 cores and 16 GB of main memory, running under macOS Sonoma Version 14.4.1. For computing solutions, we relied on clingo version 5.7.1 and applied the standard setup.</p><p>Experimental results: After generating the problem instances, we ran clingo to compute one solution, i.e., we ran clingo using the prompt clingo -time-limit=10 -outf=2 for each file. Hence, we set a time limit of 10 seconds and obtained all results in JSON format. After analyzing the results for correctness, we summarized the outcome, i.e., the runtime for each category of a particular number of nodes. Figure <ref type="figure" target="#fig_1">1</ref> depicts the minimum, maximum, and average runtime for all 10 runs for each category.</p><p>We see that when using ASP solving utilizing clingo we can provide one solution even for larger instances of 100 computing nodes in a reasonable amount of time. However, when using the approach during operation, and especially for systems with harder requirements regarding answering time, e.g., real-time systems, a runtime of almost 3 seconds might not be feasible. We would like answers in less than 0.1 or 0.01 seconds for such systems, which can be achieved for 20 or 13 nodes, respectively.</p><p>Motivated by the results, we performed further experiments, considering problems that likely cannot be solved. Unfortunately, in this case, we often ran into reaching the solving time limit of 10 seconds, even starting with small examples only considering 5 computing nodes. Instances with more than 7 nodes that might be unsatisfiable always reach the 10-second limit. For those instances where unsatisfiability could be established, the runtime varies between 0.003 and 6.255 seconds. The latter was obtained for a problem instance comprising 7 computing nodes. Hence, unsatisfiable instances can hardly be identified when considering more computing nodes, which might also be an issue for practical applications.</p><p>We carried out another experiment to tackle the mentioned problem of potential unsatisfiability. We selected 3 problem instances for which we could not compute a result. Two instances had 7 nodes, and one had 15 nodes. For these problem instances, we added further constraints that cover Equations 3 and 4. For all three clingo files that correspond to the problem instances, we added the following code: Note that the 21 in the above code represents the number of tasks<ref type="foot" target="#foot_1">2</ref> . We adapted this value for each instance and set it to 21, 28, and 60 respectively. When running clingo on the three files, we obtained an immediate response of unsatisfiability. In all cases, this response was less than 0.025 seconds. Hence, adding further constraints that allow distinguishing satisfiable from unsatisfiable cases as early as possible solves the problem.</p><p>In summary, clingo allows for fast computation of solutions if they exist. The reasoning for the mentioned tasks-to-computing-nodes assignment problem is fast enough for at least smaller examples to ensure a timely response. However, whether this is good enough depends on the application domain. The challenges we obtained in the case of unsatisfiability can be solved by setting a time limit for clingo and introducing additional constraints. Results from this case study may also apply to other configuration problems.</p><p>Threats to validity: There are many threats to validity worth mentioning. The experimental evaluation is limited in the number of problem instances. There might be satisfiable instances that may take longer than reported for a given number of computing nodes. However, we do not expect a very large deviation from the results. Furthermore, we only considered one rather simple configuration problem. In case of more complex problems, we expect different runtimes. Nevertheless, the effect of adding constraints to determine unsatisfiability as early as possible should still be visible. This might also hold for the observation that unsatisfiability might be hard to identify and, therefore, require more computing time. We carried out all experiments using clingo's standardsetting. There might be differences to observe when changing parameters and setup. There might also be differences when considering other versions of clingo, the hardware, or the operating system. Finally, the representation of the problem in clingo might also influence the performance.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Conclusions</head><p>In this paper, we used the configuration problem of assigning tasks to computing nodes to answer whether answer-set programming is feasible for practical applications. For smaller problem instances, answer set programming might be feasible, providing a fast response within a fraction of a second. For larger instances, we may not be able to provide a solution within a reasonable answer time. Furthermore, we identified a challenge, i.e., the extended runtime required for providing an answer in case of unsatisfiability, and a solution, i.e., the effect of additional constraints on reducing the runtime. In future research, we want to extend the configuration problem to capture the case of task assignments for computing networks at runtime. For this purpose, we want to formulate a corresponding re-configuration problem. Furthermore, we want to extend the experimental evaluation using more example instances and additional constraints and consider computing optimal solutions concerning a given optimization criteria, e.g., using the least number of computing nodes.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>∀𝑖 ∈ {1, . . . , 𝑘} : (|𝑎𝑠𝑠𝑖𝑔𝑛𝑒𝑑(𝑛𝑖)| ≤ 𝑐(𝑛𝑖)) (2)</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Solving runtime of consistent instances</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>totalCapacity(C) :-C=#sum{T:tcapacity(N,T)}. totalMemReq(C) :-C=#sum{M:memory(T,M)}. totalMem(C) :-C=#sum{N:mcapacity(CN,N)}. :-totalCapacity(C), C &lt; 21. :-totalMemReq(Ctask), totalMem(Cnode), Ctask &gt; Cnode.</figDesc></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">See https://potassco.org/about/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">The number of tasks for a particular problem instance can also be obtained using clingo. The command #count{T:task(T)} delivers this number. However, we set the number manually for the three experiments.</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Identifying potential applications of service configuration systems in a logistics company</title>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">M</forename><surname>Strøm</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">M</forename><surname>Münsberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Hvam</surname></persName>
		</author>
		<idno>CEUR-WS.org</idno>
		<ptr target="https://ceur-ws.org/Vol-3509/paper9.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proc. 25th Intl. Workshop on Configuration</title>
				<editor>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Horcas</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Galindo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Comploi-Taupe</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><surname>Fuentes</surname></persName>
		</editor>
		<meeting>25th Intl. Workshop on Configuration<address><addrLine>Málaga, Spain</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2023">September 6-7, 2023. 2023</date>
			<biblScope unit="page" from="60" to="66" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Multi-level configuration in smart governance systems</title>
		<author>
			<persName><forename type="first">S</forename><surname>Muñoz-Hermoso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Benavides</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">J D</forename><surname>Mayo</surname></persName>
		</author>
		<idno>CEUR-WS.org</idno>
		<ptr target="https://ceur-ws.org/Vol-3509/paper10.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proc. 25th Intl. Workshop on Configuration</title>
				<editor>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Horcas</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Galindo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Comploi-Taupe</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><surname>Fuentes</surname></persName>
		</editor>
		<meeting>25th Intl. Workshop on Configuration<address><addrLine>Málaga, Spain</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2023">September 6-7, 2023. 2023</date>
			<biblScope unit="page" from="67" to="74" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Dynamic aggregates in expressive ASP heuristics for configuration problems</title>
		<author>
			<persName><forename type="first">R</forename><surname>Comploi-Taupe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Friedrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Niestroj</surname></persName>
		</author>
		<idno>CEUR-WS.org</idno>
		<ptr target="https://ceur-ws.org/Vol-3509/paper11.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proc. 25th Intl. Workshop on Configuration</title>
				<editor>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Horcas</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Galindo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Comploi-Taupe</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><surname>Fuentes</surname></persName>
		</editor>
		<meeting>25th Intl. Workshop on Configuration<address><addrLine>Málaga, Spain</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2023">September 6-7, 2023. 2023</date>
			<biblScope unit="page" from="75" to="84" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Towards a formalization of configuration problems for asp-based reasoning: Preliminary report</title>
		<author>
			<persName><forename type="first">N</forename><surname>Rühling</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schaub</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Stolzmann</surname></persName>
		</author>
		<idno>CEUR-WS.org</idno>
		<ptr target="https://ceur-ws.org/Vol-3509/paper12.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proc. 25th Intl. Workshop on Configuration</title>
				<editor>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Horcas</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Galindo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Comploi-Taupe</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><surname>Fuentes</surname></persName>
		</editor>
		<meeting>25th Intl. Workshop on Configuration<address><addrLine>Málaga, Spain</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2023">September 6-7, 2023. 2023</date>
			<biblScope unit="page" from="85" to="94" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Interactive configuration with ASP multi-shot solving</title>
		<author>
			<persName><forename type="first">R</forename><surname>Comploi-Taupe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">A</forename><surname>Falkner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Hahn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schaub</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Schenner</surname></persName>
		</author>
		<idno>CEUR-WS.org</idno>
		<ptr target="https://ceur-ws.org/Vol-3509/paper13.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proc. 25th Intl. Workshop on Configuration</title>
				<editor>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Horcas</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Galindo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Comploi-Taupe</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><surname>Fuentes</surname></persName>
		</editor>
		<meeting>25th Intl. Workshop on Configuration<address><addrLine>Málaga, Spain</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2023">September 6-7, 2023. 2023</date>
			<biblScope unit="page" from="95" to="103" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Shift design with answer set programming</title>
		<author>
			<persName><forename type="first">M</forename><surname>Abseher</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Gebser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Musliu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schaub</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Woltran</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-23264-5_4</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-319-23264-5\_4" />
	</analytic>
	<monogr>
		<title level="m">Proc. 13th Intl. Conf. on Logic Programming and Nonmonotonic Reasoning, 2015</title>
				<editor>
			<persName><forename type="first">F</forename><surname>Calimeri</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Ianni</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Truszczynski</surname></persName>
		</editor>
		<meeting>13th Intl. Conf. on Logic Programming and Nonmonotonic Reasoning, 2015<address><addrLine>Lexington, KY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015">September 27-30, 2015. 2015</date>
			<biblScope unit="volume">9345</biblScope>
			<biblScope unit="page" from="32" to="39" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">An infrastructure for enabling dynamic fault tolerance in highlyreliable adaptive distributed embedded systems based on switched ethernet</title>
		<author>
			<persName><forename type="first">A</forename><surname>Ballesteros</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Barranco</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Proenza</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Almeida</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Pozo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Palmer-Rodríguez</surname></persName>
		</author>
		<idno type="DOI">10.3390/S22187099</idno>
		<ptr target="https://doi.org/10.3390/s22187099.doi:10.3390/S22187099" />
	</analytic>
	<monogr>
		<title level="j">Sensors</title>
		<imprint>
			<biblScope unit="volume">22</biblScope>
			<biblScope unit="page">7099</biblScope>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Multi-shot asp solving with clingo</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.1017/S1471068418000054</idno>
	</analytic>
	<monogr>
		<title level="j">Theory and Practice of Logic Programming</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="page" from="27" to="82" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Answer set programming: A primer</title>
		<author>
			<persName><forename type="first">T</forename><surname>Eiter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Ianni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Krennwallner</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-03754-2_2</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-642-03754-2\_2" />
	</analytic>
	<monogr>
		<title level="m">Reasoning Web. Semantic Technologies for Information Systems: 5th Intl. Summer School</title>
				<editor>
			<persName><forename type="first">S</forename><surname>Tessaris</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">E</forename><surname>Franconi</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">T</forename><surname>Eiter</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><surname>Gutierrez</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><surname>Handschuh</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M.-C</forename><surname>Rousset</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><forename type="middle">A</forename><surname>Schmidt</surname></persName>
		</editor>
		<meeting><address><addrLine>Brixen-Bressanone, Italy; Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2009-09-04">August 30 -September 4, 2009</date>
			<biblScope unit="page" from="40" to="110" />
		</imprint>
	</monogr>
</biblStruct>

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