<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Association for Logic Programming</title>
	<atom:link href="http://www.cs.nmsu.edu/ALP/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cs.nmsu.edu/ALP</link>
	<description></description>
	<lastBuildDate>Wed, 16 May 2012 10:28:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CILC2012 &#8211; Accepted Papers and Call for Participation</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/05/cilc2012-papers-accepted-and-call-for-participation/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/05/cilc2012-papers-accepted-and-call-for-participation/#comments</comments>
		<pubDate>Wed, 16 May 2012 08:11:16 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[Asyncronous News]]></category>
		<category><![CDATA[Call for Participation]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=2012</guid>
		<description><![CDATA[CILC2012 - Papers Accepted and Call for Participation. By Francesca A. Lisi.]]></description>
			<content:encoded><![CDATA[<h3 style="text-align: center;">CILC 2012 &#8211; 9th Italian Convention on Computational Logic</h3>
<p style="text-align: center;"><a href="http://www.dis.uniroma1.it/~cilc2012/program.html">www.dis.uniroma1.it/~cilc2012</a><br />
June 6-7, 2012, Università di Roma &#8220;La Sapienza&#8221;</p>
<h3>OVERVIEW</h3>
<p>The Italian Convention on Computational Logic is an annual event  organized by GULP (Gruppo ricercatori e Utenti Logic Programming), the  Italian association for Logic Programming affiliated to ALP (Association  for Logic Programming). Since 1986, the annual meeting organized by GULP  is the most important occasion for meeting and exchanging ideas and  experiences between users, researchers and developers, who work in the  field of computational logic. During its 26 years of recurrence, the  annual GULP meeting has continually widened its horizons from the field  of traditional logic programming to the more general areas of  declarative programming and its applications in various neighboring  fields, such as Artificial Intelligence or Deductive Databases. Also in  this year&#8217;s convention, GULP wants to continue and possibly widen this  policy, using the general term Computational Logic for integrating the  various research fields, which use in direct or indirect, practical or  theoretical ways or just addresses the ideas or techniques of logic as a  tool for representation and calculation.</p>
<h3>VENUE</h3>
<p>CILC 2012 will be held at the Dipartimento di Ingegneria Informatica,  Automatica e Gestionale &#8220;A. Ruberti&#8221; (formerly, DIS: Dipartimento di  Informatica e Sistemistica) of Sapienza Università di Roma from June 6th  to June 7th, 2012, in co-location with DL 2012, NMR 2012, KR 2012, and  AI*IA 2012.<br />
Details about how to find the CILC 2012 venue are available at <a href="http://www.dis.uniroma1.it/~cilc2012/venue.html">http://www.dis.uniroma1.it/~cilc2012/venue.html</a></p>
<h3>REGISTRATION</h3>
<p>The convention is an event organized by GULP. Participants have to be  members of GULP for 2012 (participants can join GULP at the event). Participants are invited to register as soon as possible in order to allow for a better organization of the event.</p>
<p>Free passes to KR 2012 tutorials are available for a limited number of CILC 2012 registrants. This possibility is open only to those who are not registered for KR 2012. When registering, CILC 2012 participants are invited to express an interest in this possibility.</p>
<p>Details about the registration are available at  <a href="http://www.dis.uniroma1.it/~cilc2012/registration.html">http://www.dis.uniroma1.it/~cilc2012/registration.html</a></p>
<h3>PROGRAM  (and accepted papers)</h3>
<p>The program is available here: <a href="http://www.dis.uniroma1.it/~cilc2012/program.html">http://www.dis.uniroma1.it/~cilc2012/program.html</a></p>
<h3>ORGANIZATION</h3>
<ul>
<li>Francesca Alessandra Lisi, Università degli Studi di Bari &#8220;Aldo Moro&#8221;, Italy (PC Chair)</li>
<li> Fabio Patrizi, &#8220;Sapienza&#8221; Università di Roma, Italy (Local Organization Chair)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/05/cilc2012-papers-accepted-and-call-for-participation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CFP: Eighth ICLP Doctoral Student Consortium</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/04/cfp-eighth-iclp-doctoral-student-consortium/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/04/cfp-eighth-iclp-doctoral-student-consortium/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 14:42:15 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[Asyncronous News]]></category>
		<category><![CDATA[Call for papers]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=2008</guid>
		<description><![CDATA[by Stefan Woltran,
TU Wien]]></description>
			<content:encoded><![CDATA[<p>URL:<a href="http://sites.unife.it/iclp-dc-2012/"> http://sites.unife.it/iclp-dc-2012/</a></p>
<h2>Introduction</h2>
<p>The ICLP Doctoral Consortium (DC) is the eighth doctoral consortium to be offered as part  of the 28th International Conference on Logic Programming. The DC follows the very  positive experience of the previous events held in Sitges (Spain) on October 3rd, 2005, in  Seattle (WA, USA) on August 21st, 2006, in Porto (Portugal) on September 8th, 2007, in  Udine (Italy) on December 10th, 2008, in Pasadena (USA) on July 15th, 2009, in Edinburgh  (Scotland) on July 20th, 2010, and in Lexington (KY, USA) on July 6th, 2011.</p>
<p>The DC will take place during the ICLP 2012 in Budapest, Hungary. The Doctoral Consortium  is designed for doctoral students working in areas related to logic and constraint  programming, with a particular emphasis to students interested in pursuing a career in academia. The Consortium is also open to exceptional Master&#8217;s students developing MS Theses  in Logic Programming. The Doctoral Consortium aims to provide students with an opportunity  to present and discuss their research directions and to obtain feedback from peers as well  as world-renown experts in the field.</p>
<h2>General Information</h2>
<p>The aims of the Doctoral Consortium are:</p>
<ul>
<li> To provide doctoral students working in the field of logic and constraint programming  with a friendly and open forum to present their research ideas, listen to ongoing work  from peer students, and receive constructive feedback.</li>
<li>To provide students with relevant information about important issues for doctoral  candidates and future academics.  To develop a supportive community of scholars and a  spirit of collaborative research.</li>
<li>To support a new generation of researchers with information and advice on academic,  research, industrial, and non-traditional career paths.</li>
</ul>
<p>The Consortium is designed for students currently enrolled in a Ph.D. program, though we  are also open to exceptions (e.g., students currently in a Masters program and interested  in doctoral studies). Students at any stage in their doctoral studies are encouraged to  apply. Applicants are expected to be conducting research in the field of Logic Programming;  topics of interest include (but are not limited to):</p>
<ul>
<li> Theoretical Foundations of Logic and Constraint Logic Programming</li>
<li> Sequential and Parallel Implementation Technology</li>
<li> Static and Dynamic Analysis, Abstract Interpretation, Compilation Technology and  Verification</li>
<li> Logic-based Paradigms (e.g., Answer Set Programming, Concurrent Logic Programming,  Inductive Logic Programming)</li>
<li> Innovative Applications of Logic Programming</li>
</ul>
<p>Submissions by students who have presented their work at a previous ICLP Doctoral Consortia  are allowed, but should occur only if there are substantial changes or improvements to the  student&#8217;s work.</p>
<p>The Consortium allows participants to interact with established researchers and with other  students, through presentations, question-answer sessions, panel discussions, and invited  presentations. The Doctoral Consortium will provide the possibility to reflect &#8211; through  short activities, information sessions, and discussions &#8211; on the process and lessons of  research and life in academia. Each participant will give a short, critiqued, research  presentation.</p>
<p>Several renowned faculty members and researchers in the field of Logic Programming will  join in evaluating the submission packets and will participate in the Doctoral Consortium, providing feedback to the presenters.</p>
<h2>Important Dates</h2>
<p>Submission Deadline:     May 8th, 2012<br />
Acceptance Notification: May 25th, 2012<br />
Camera ready version:    June 10th, 2012<br />
Doctoral Consortium:     September 4th, 2012<br />
ICLP 2012 Conference:    September 4th-8th, 2012</p>
<h2>Submission Process</h2>
<h3>Application Process:</h3>
<p>To apply for participation to the ICLP 2012 Doctoral Consortium, prepare a  submission package consisting of a cover letter, a research summary, and a  letter of recommendation (e.g., from your supervisor). The material should  be submitted electronically, in PDF format.</p>
<h3>Review Criteria:</h3>
<p>The ICLP Doctoral Consortium review committee will select participants based  on their anticipated contribution to the Consortium objectives. Participants  typically have settled on their thesis directions and had their research  proposal accepted by their thesis committee. Students will be selected based  on clarity and completeness of the submission packet, relevance of their research area w.r.t. the focus of the ICLP Conference, stage of research, advisor&#8217;s letter, and evidence of promise towards a successful research and academic career, such as published papers or technical reports.</p>
<h3>Award:</h3>
<p>The ICLP Doctoral Consortium Discussants will review the submissions to select  the ones to be presented. The organizing committee is actively seeking support to offer scholarship packages to accepted participants. We will update the web site as soon as we have more information regarding this.</p>
<h3>Submission Package</h3>
<p>Send the submission package by e-mail to: iclp12dc@dbai.tuwien.ac.at Include the three documents as separate pdf files in attachment.</p>
<p>All submissions must be in English. Submissions will not be considered if they arrive after the deadline. Your submission should not contain any proprietary or confidential material.</p>
<p>Cover Page:<br />
Please include the following information in the cover page:</p>
<ul>
<li> Statement of interest in participating in the Doctoral Consortium</li>
<li> Full name and School and Department in which you are earning your doctorate degree</li>
<li> Contact information &#8211; address, telephone number, and email address</li>
<li> Title of your research and keywords pertinent to your research</li>
<li> The URL of your web page (if any)</li>
<li> Name of your supervising professor</li>
<li> Current stage in your program of study, e.g. (Master/PhD student, start date)</li>
</ul>
<p>Research Summary:<br />
Prepare your research summary as a PDF document, using the LIPIcs template. (<a href="http://www.dagstuhl.de/publikationen/lipics/anleitung-fuer-autoren/?L=1">http://www.dagstuhl.de/publikationen/lipics/anleitung-fuer-autoren/?L=1</a>) Make sure to include your complete name, address and affiliation.<br />
The body of your research summary (no more than 6 pages, but 3 is fine as well!)  should provide a clear overview of the research, its potential impact, and its  current status. You are encouraged to include the following sections:</p>
<ul>
<li> Introduction and problem description</li>
<li> Background and overview of the existing literature</li>
<li> Goal of the research</li>
<li> Current status of the research</li>
<li> Preliminary results accomplished (if any)</li>
<li> Open issues and expected achievements</li>
<li> Bibliographical references</li>
</ul>
<p>Letter of Recommendation:<br />
Include a letter of recommendation written by your Graduate Advisor or Thesis  Advisor. Please, invite your advisor to include an assessment of the current  status of your thesis research and an indication of the expected deadline for  thesis submission. In addition, your advisor should indicate what she/he hopes  you would gain from participation in the Doctoral Consortium.</p>
<h2>Chairs</h2>
<p>Marco Gavanelli, Engineering Department. Ferrara University, Italy<br />
Stefan Woltran, Institute of Information Systems, TU Wien, Austria</p>
<h3>Program Committee</h3>
<p>Fabio Fioravanti, University &#8220;G. d&#8217;Annunzio&#8221; of Chieti &#8211; Pescara (Italy)<br />
Paul Fodor, Stony Brook University (USA)<br />
Martin Gebser, University of Potsdam (Germany)<br />
Francesca A. Lisi, Universita degli Studi di Bari &#8220;Aldo Moro&#8221; (Italy)<br />
Marco Maratea, University of Genova (Italy)<br />
Gerardo I. Simari, University of Oxford (UK)<br />
Jon Sneyers, K.U.Leuven (Belgium)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/04/cfp-eighth-iclp-doctoral-student-consortium/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Job Opportunity: Consulting Positions in LP</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/04/job-opportunity-consulting-positions-in-lp/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/04/job-opportunity-consulting-positions-in-lp/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 20:21:28 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[Asyncronous News]]></category>
		<category><![CDATA[Positions in LP]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=1997</guid>
		<description><![CDATA[Looking for 1 or 2 software engineers for a long-term consulting engagement in the Washington, DC, area.
The application provides a reasoning component to a parallel high-transaction rate VLDB application environment. Other components are Java, C, .Net and script languages in a primarily Linux environment.
Technical requirements: Must understand logic programming, be comfortable with Linux and have [...]]]></description>
			<content:encoded><![CDATA[<p>Looking for 1 or 2 software engineers for a long-term consulting engagement in the Washington, DC, area.</p>
<p>The application provides a reasoning component to a parallel high-transaction rate VLDB application environment. Other components are Java, C, .Net and script languages in a primarily Linux environment.</p>
<p>Technical requirements: Must understand logic programming, be comfortable with Linux and have experience with the  ‘back-end’ development including SQL. Pluses are: Java, Description Logics, Oracle, Drools. Supply-chain, import-export, or travel related application experience a plus.</p>
<p>The successful candidate will be self-motivated contributor who quickly can get up-to-speed in the domain, who enjoys a fast-paced environment with immediate feedback, who works well as part of a team of high-performing engineers, and who likes to expand his or her areas of competence.</p>
<p>Must be a US citizen.</p>
<p>For information, please contact Walter G. Wilson at WALTER.G.WILSON  AT CBP.DHS.GOV</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/04/job-opportunity-consulting-positions-in-lp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editorial, March 2012</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/04/editorial-march-2012/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/04/editorial-march-2012/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 06:01:17 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[ALP ISSUE]]></category>
		<category><![CDATA[Editorial]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=1944</guid>
		<description><![CDATA[Dear LPers,
In the last three months we posted several important announcements: various call for papers and positions, the Book Review of Luís Moniz Pereira on the Book by Bob Kowalski, and the new document for ISO Prolog (by Jonathan Hodgson).
The contributions to this issue are mainly concerned with applications of Logic Programming, that are crucial [...]]]></description>
			<content:encoded><![CDATA[<p>Dear LPers,</p>
<p>In the last three months we posted several important announcements: various call for papers and positions, the Book Review of Luís Moniz Pereira on the Book by Bob Kowalski, and the new document for ISO Prolog (by Jonathan Hodgson).</p>
<p>The contributions to this issue are mainly concerned with applications of Logic Programming, that are crucial for the growth of the logic programming field and its assertion as a critical problem solving technology to the broadest audience. The contribution by Francesco Calimeri and Francesco Ricca reports on the industrial applications of ASP made with the DLV system. They focus on two main applications but there are many other:</p>
<ul>
<li>computing optimal allocations of the available personnel in a major European seaport in such a way that the right processing of the shoring cargo boats is guaranteed, and</li>
<li>an e-tourism system that exploits ASP for finding the best matches between the offers from the tour operators and the requests of the tourists.</li>
</ul>
<p>The second contribution is by Boon Thau Loo that presents the Network Datalog (NDlog) language, an extension of Datalog used in declarative networking.</p>
<p style="text-align: center;"><a href="http://www.cs.nmsu.edu/ALP/wp-content/uploads/2012/04/EasterEggs.jpg"><img class="size-full wp-image-1945 aligncenter" title="EasterEggs" src="http://www.cs.nmsu.edu/ALP/wp-content/uploads/2012/04/EasterEggs.jpg" alt="" width="351" height="155" /></a></p>
<p><strong>ICLP 2012: </strong>Now an informal report from ICLP  2012 organization. Great news: Logic Programming  is definitely alive and kicking! We received 102 abstracts!  Roughly 20 of them will be directly accepted as TPLP papers; but probably many more will be accepted as technical communication and presented in Budapest (September 4-8). You have still chance to submit papers in the various ICLP workshops: ASPOCP, CHR, CICLOPS, WCB, LoCoCo, WLPE, and Co-LP, and to participate to the works of WG17. We will have as usual the Doctoral Consortium, and two special events.</p>
<ul>
<li>A special event celebrating the 25th birthday of SWI Prolog, one of our favorite Prolog implementations, and</li>
<li>A VERY SPECIAL session where the author(s) of the most influential paper of ICLP 1992 (-20 years) and ICLP 2002 (-10 years) will be presented an award and given the opportunity to present the evolution of their original works. The winners will be kept secret till that day! Don&#8217;t miss that session.</li>
</ul>
<p>But don&#8217;t forget PPDP and LOPSTR. Deadlines are approaching and the trip from Budapest to Leuven is very nice!</p>
<p><strong>ALP Web site:</strong> The original design we proposed for the ALP web site included the option of providing feedback and comments for each article posted.  Unfortunately we experienced two problems with this design: the first is that we have received very few comments to the articles (14 in two years); the second is that, in spite of using a re-CAPTCHA filter, we continue receiving an overwhelming number of spam messages &#8211; in the order of one hundred spam comments per day.</p>
<p>We decided to implement a change in policy to address this situation. We will leave comments open only associated to the Editorial and for the period of one month (of course if there is an active discussion, the deadline will be extended). In case of comments after that date (or on other papers), just send us an email and we will open that page for comments. We apologize for this change, but the amount of spam was not sustainable any longer.</p>
<p><strong>Turing:</strong> And now to another topic. Alan Mathison Turing was born in London on June 23rd, 1912. During his short life, he had the time to lay the foundations of Computer Science. Several conferences are dedicated to celebrate the hundredth anniversary of his birth this year.</p>
<p>We would like to add here few lines of Prolog codes (most of you probably have written a variant of this program once in your life) that constitutes (maybe) the shortest and simplest complete Prolog implementation of an interpreter for a Turing machine, and it is a small contribution of Logic Programming to the memory of Alan:</p>
<div id="attachment_1946" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.cs.nmsu.edu/ALP/wp-content/uploads/2012/04/turingmachine2.jpg"><img class="size-medium wp-image-1946" title="turingmachine2" src="http://www.cs.nmsu.edu/ALP/wp-content/uploads/2012/04/turingmachine2-300x146.jpg" alt="" width="300" height="146" /></a><p class="wp-caption-text">A Turing Machine</p></div>
<pre>%%% turing(+Left_tape_ini,+State_ini,+Symbol_ini,+Right_tape_ini,
%%%        -Left_tape_fin,-State_fin,-Symbol_fin,-Right_tape_fin ).</pre>
<pre>turing(Left,halt,S,Right, Left,halt,S,Right).

turing([L|L_i],Q,S,R_i,L_o,Q_o,S_o,R_o) :-
           delta(Q,S,Q1,S1,left),
           turing(L_i,Q1,[S1|R_i],L_o,Q_o,S_o,R_o).
turing([],Q,S,R_i,L_o,Q,S_o,R_o) :-
           delta(Q,S,Q1,S1,left),
           turing([bk],Q,S,R_i,L_o,Q,S_o,R_o).
turing(L_i,Q,S,[R|R_i],L_o,Q_o,S_o,R_o) :-
           delta(Q,S,Q1,S1,right),
           turing([S1|L_i],Q1,S1,R_i,L_o,Q_o,S_o,R_o).
turing(L_i,Q,S,[],L_o,Q,S_o,R_o) :-
           delta(Q,S,Q1,S1,right),
           turing(L_i,Q,S,[bk],L_o,Q,S_o,R_o).</pre>
<p>where delta is defined using facts of the form:</p>
<pre>delta(q0,bk,qa,bk,right).
delta(q0, 0,qb,1,left).
...
delta(qn,1,qc,0,right).</pre>
<p>The interpreter is of course called using goals as:</p>
<pre>?- turing([],q_0,bk,Input,L_fin,Q_fin,S_fin,R_fin).</pre>
<p>Can you come up with a more declarative or simpler implementation? Is your favorite flavor of logic programming capable of doing better? Or maybe functional programming? The challenge is on&#8230;</p>
<p>Last but not least,</p>
<p>Happy Easter!</p>
<p>Agostino and Enrico</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/04/editorial-march-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On the Application of the Answer Set Programming System DLV in Industry: a Report from the Field</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/03/on-the-application-of-the-answer-set-programming-system-dlv-in-industry-a-report-from-the-field/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/03/on-the-application-of-the-answer-set-programming-system-dlv-in-industry-a-report-from-the-field/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 06:02:02 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[ALP ISSUE]]></category>
		<category><![CDATA[Feature Articles]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=1927</guid>
		<description><![CDATA[By Francesco Calimeri and Francesco Ricca, Univ. of Calabria and DLV Systems, Rende, Italy]]></description>
			<content:encoded><![CDATA[<p>By<br />
<strong>Francesco Calimeri </strong> and <strong>Francesco Ricca</strong><br />
Department of Mathematics, University of Calabria, Rende, Italy<br />
DLVSystem s.r.l., Technest @Unical, Rende, Italy</p>
<p><a href="http://www.cs.nmsu.edu/ALP/wp-content/uploads/2012/03/cali-ricc-alp-apps.pdf">PDF Version</a></p>
<p><strong>Abstract</strong></p>
<p>Answer Set Programming (ASP) is a declarative logic programming paradigm developed in the area of logic programming and nonmonotonic reasoning. Nowadays, the formal properties of ASP are well-understood, and several efficient ASP systems are available. Among them, DLV is one of the most relevant. DLV is the product of more than twelve years of research, and, notably, it is one of the first ASP systems effectively employed for developing applications at the industrial level. This paper presents some of the most valuable among such applications, and reports on the lessons we have learned on the field using DLV as a powerful tool in industry.</p>
<h3>1 Introduction</h3>
<p>Answer Set Programming (ASP) is a declarative approach to computer programming stemming roots in the area of nonmonotonic reasoning and logic programming <a href="#ref">[21, 22, 29, 32].</a> In its general form, allowing disjunction in rule heads <a href="#ref">[31] </a>and nonmonotonic negation in rule bodies, ASP can represent every problem in the second level of the polynomial hierarchy <a href="#ref">[13]</a>. The high knowledge modeling power of ASP, and the availability of a number of efficient ASP systems [9], have recently ignited the interest on this formalism. Indeed, the applications of ASP belong to several fields, including Artificial Intelligence<a href="#ref"> [2, 4, 5, 18, 19, 33, 48]</a>, Information Integration <a href="#ref">[27, 30]</a>, Knowledge Management <a href="#ref">[3, 6, 24]</a>, Bioinformatics<a href="#ref"> [12, 20, 34]</a>, etc. Moreover, in the last few years, ASP has been exploited also for the development of industrial-level applications<a href="#ref"> [25, 35].</a></p>
<p>One of the first ASP systems employed for developing commercial applications<a href="#ref"> [25]</a> is DLV<a href="#ref"> [28]</a>. The DLV system is the product of more than twelve years of research and development, and it is nowadays one of the most relevant state-of-the art implementations of ASP<a href="#ref"> [9]</a>. The implementation of DLV started within a project funded by the Austrian Science Funds (FWF) and led by Nicola Leone at Vienna University of Technology (TU Vienna). At present, DLV is the subject of an international cooperation between the University of Calabria and the TU Vienna. After the very first release, it has been significantly improved over and over in the years, both by enriching the language and optimizing the computational machinery<a href="#ref"> [1, 7, 14, 15, 36, 39, 46, 47]</a>, thus making it suitable for developing real-world applications.</p>
<p>In the last few years, DLVSystem s.r.l. <a href="#ref">[16]</a>, a spin-off company of the University of Calabria, has started the industrial exploitation of DLV, which is now currently employed in many industrial applications <a href="#ref">[25, 41]</a>.</p>
<p>This paper reports on our on-the-field experience in developing industrial applications with DLV. In particular, after briefly describing system language and architecture, we focus on two relevant industrial applications, namely:</p>
<ul>
<li>a workforce management system <a href="#ref">[41]</a> developed under request of a company operating in the international seaport of Gioia-Tauro, where DLV is used for computing optimal allocations of the available personnel in such a way that the right processing of the shoring cargo boats is guaranteed; and,</li>
<li> IDUM <a href="#ref">[38]</a>, an e-tourism system that exploits ASP for finding the best matches between the offers from the tour operators and the requests of the tourists.</li>
</ul>
<p>The paper mentions also some other applications and commercial products based on DLV, and eventually reports some lessons we have learned while developing the above-mentioned applications.</p>
<h3>2 The DLV System</h3>
<p>In this section, we introduce both the language and the architecture of DLV.</p>
<h4>2.1 The Language of DLV</h4>
<p>We describe in the following the language of the DLV system by means of examples, in order to provide the intuitive meaning of the main constructs. For further details, formal definitions, and discussions about language extensions, we refer the reader to the existing literature <a href="#ref">[8, 15, 28]</a>.</p>
<p>The language of DLV is based on the foundational work by Gelfond and Lifschitz <a href="#ref">[22],</a> and the main construct is the rule, which is an expression of the form <em>Head :- Body</em>. where Body is a conjunction of literals and Head is a disjunction of atoms. Informally, a rule can be read as follows: “if Body is true, then Head is true”. A rule without a body is called a fact, since it models an unconditional truth (for simplicity, the symbol :- is omitted), whereas a rule with an empty head, called strong constraint, is used to model a condition that must be false in any possible solution. A set of rules is called program. The semantics of a program is given by its <em>answer sets</em><a href="#ref"> [22]</a>. A program can be used to model a problem to be solved: the answer sets of the program (which are computed by DLV) correspond one-to-one to the solutions of the modeled problem. Therefore, a program may have no answer set (if the problem has no solution), one (if the problem has a unique solution) or several (if the problem has more than one possible solutions).</p>
<p>As an example, consider the problem of automatically creating an assessment test from a given database of questions, where each question is identified by a unique string, covers a particular topic, and requires an estimated time to be answered. The input data about questions can be represented by means of a set of facts of type question(q,topic,time); in addition, facts of the form relatedTopic(topic) specify the topics related to the subject of the test.</p>
<p>Suppose that we are in the case in which only four questions are given, represented by the facts: question(q1,computerscience,8), question(q2, computerscience,15), question(q3, mathematics,15), and question(q4,mathematics,25). Moreover, suppose that computer science is the only topic to be covered by the test, and therefore relatedTopic(computerscience) is also part of the input facts. The program consisting of these facts only has a unique answer set A1, featuring exactly the five facts.</p>
<p style="text-align: left;">Assessment creation amounts then to selecting a set of questions from the database, according to a given specification. In order to single out questions related to the subject of the test, one can write the rule:</p>
<p style="text-align: center;">relatedQuestion(Q) :- question(Q,Topic,Time), relatedTopic(Topic).</p>
<p>that can be read: “Q is a question related to the test if Q has a topic related to some of the subjects that have to be assessed”. The addition of this rule to the input facts reported earlier yields the only answer set A2 = A1∪{relatedQuestion(q1),relatedQuestion(q2)}. Now, the following disjunctive rule can be used in order to determine all the possible subsets of related questions:</p>
<p style="text-align: center;">inTest(Q) v discard(Q) :- relatedQuestion(Q).</p>
<p>Intuitively, this rule can be read as: “if Q identifies a related question, then either Q is taken in the test, or Q is discarded.” This rule causes the effect of associating each possible choice of related questions with an answer set of the program; indeed, the answer sets of the program P consisting of the above two rules and the input facts are:</p>
<p style="text-align: center;">A3 = A2 ∪ {discard(q1),discard(q2)}, A4 = A2 ∪ {inTest(q1),discard(q2)}</p>
<p style="text-align: center;">A5 = A2 ∪ {discard(q1),inT est(q2)}, A5 = A2 ∪ {inTest(q1),inT est(q2)}</p>
<p>corresponding to the four possible choices of questions {},{q1},{q2},{q1,q2}. Note that the answer sets are minimal with respect to subset inclusion. Indeed, for each question Q there is no answer set in which both inTest(Q) and discard(Q) appear.</p>
<p>At this point, some strong constraints can be used to single out some solutions fulfilling a number of specification requirements. For instance, suppose that we are interested in tests containing only questions requiring less than 10 minutes to be answered. The following constraint models this requirement:</p>
<p style="text-align: center;">:- inTest(Q), question(Q,Topic,Time), Time &gt;= 10.</p>
<p>Informally, the constraint can be read as follows: “discard tests having a question requiring less than 10 minutes to be answered.” It is easy to see that the program resulting from the addition of this constraint to program P reported above features two answer sets only, namely A3 and A4.</p>
<p>In order to ease the modeling of a large number of practical cases, DLV supports aggregates [15], a construct similar to aggregation in the SQL language. At present, DLV supports five aggregate functions: #sum, #count, #times, #max, #min. In our running example, we might want to have a test solvable in an estimated time of less than 60 minutes. This can be achieved thanks to the following strong constraint, featuring an aggregate literal:</p>
<p style="text-align: center;">:- not #sum{Time,Q: inTest(Q), question(Q,Topic,Time)} &lt; 60.</p>
<p>The aggregate sums up the estimated solution times of all questions in the test, and the constraint will eliminate all scenarios in which this sum is not less than 60.</p>
<h4>2.2 Architecture</h4>
<p>We briefly present the architecture of DLV (see Figure 1); for more insights we refer the reader to<a href="#ref"> [28]</a>. The DLV Core (the shaded part of the figure) is an efficient engine for computing answer sets, and has three layers, each of which is a powerful subsystem per se: The Intelligent Grounder (IG, also Instantiator) has the power of a deductive database system; the Model Generator (MG) is as powerful as a Satisfiability Checker; and the Model Checker (MC) verifies that a candidate interpretation model is an answer set. In addition to its kernel language described above, DLV provides a number of application front-ends. Each front-end maps its problem specific input into a DLV program, invokes the DLV kernel, and then post-processes any answer set returned, extracting from it the desired solution.</p>
<p style="text-align: center;"><img class="aligncenter" src="data:image/png;base64,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" alt="" width="706" height="349" /><br />
Figure 1: DLV– Overall System Architecture</p>
<p>Upon startup, the DLV Core, or one of the front-ends, parses the input and transforms it into proper internal data structures; the input can be read from text files, but DLV also provides a bridge to relational databases through an ODBC interface. The Intelligent Grounding module then efficiently generates a ground instantiation of the input that has the same answer sets as the full program instantiation, but is much smaller in general. The heart of the computation is then performed by the Model Generator and the Model Checker. Roughly, the former produces some “candidate” answer sets, the stability of which is subsequently verified by the latter. Finally, once an answer set has been found, the control is returned to the front-end in use, if one; this performs post-processing, and possibly invokes the Model Generator to look for further models.</p>
<h3>3 Main Industrial Applications of the DLV System</h3>
<p>In this section we describe two relevant industrial products having their kernel features implemented by exploiting DLV: the e-tourism system IDUM<a href="#ref"> [38]</a>, and the workforce management system developed for a transshipment company operating in the international seaport of Gioia Tauro<a href="#ref"> [41]</a>.</p>
<h3>3.1 IDUM</h3>
<p>A large share of the products in the travel and tourism market are nowadays traded on-line; however, even if the most common e-tourism portals and web sites allow the customer for itinerary arrangements and bookings, no one can guarantee the same feeling and customization of a “traditional” travel agency, where people interact with other people, and possibly know them for years. The need for a more “human” on-line selling process found a solution with the application of Artificial Intelligence techniques and the DLV system, that led to IDUM: Internet Diventa UMana.</p>
<p>IDUM has been developed within a technological transfer project funded by the Regione Calabria, Italy, and constitutes an e-tourism system strongly relying on knowledge; it is based on detailed representations of the domains and the users, and has been conceived in order to help both the employees and the customers of any travel agency, in the quest for the best deal while saving time. IDUM can be roughly seen as a “middleman” between offers coming from tour operators and requests coming from customers, and “mimics” the typical behaviors of a travel agent. The system can be accessed via a web-based user interface, thus allowing the agency for a dialog with the customer which actually starts from the very first phase. The system collects the specific needs of the customer (trip kind, preferred means, etc.) and her constraints (time, budget, etc.), and then builds the recommendations that are best suited for her, thanks to a number of reasoning modules implemented with DLV. Basically, the system features the following capabilities.</p>
<ul>
<li>Intelligent building of a knowledge base of offers. Indeed, the agency typically receives such offers as electronic leaflets that are barely, or by no means, structured; in additions, they are too many to be effectively useful without the help of some sort of automatic tools.</li>
<li>Customer profiling. This is pursued collecting information both explicitly, by means of questionnaires, and implicitly, by analyzing the history of the interaction with the system.</li>
<li>“Semantic” suggestions of products. The system predicts the customer’s behavior while examining the offers, according to her profile.</li>
</ul>
<p>The system allows people for a more “human” interaction with an intelligent guide, and greatly supports the travel agencies, that can easily cancel or reduce the effects of the typical “exploration phase”: customers coming to agency in order to get preliminary information, often without purchasing a thing.</p>
<p><strong>Some technical insight.</strong> As an example, we briefly talk here about the crucial task of performing a customized trip search, where the deductions made by an employee are “simulated” by a set of specifically devised logic programs.</p>
<p>In a typical scenario, the travel agent proposes a number of candidate offers to the customer, and then he has to understand her needs by interpreting her preferences. Such preferences depend on personal information (age, gender, marital status, lifestyle, budget, etc.), but also on her habits (e.g. she prefers going to the mountains, or she has already been in Italy) of the customer. This pieces of information are elicited by interviewing the customer, but most might be already known, while serving a returning customer. The seller has to understand<em> where</em> the customer wants to go;<em> when</em> she can/wishes to leave; how much time she will dedicate to his holiday; which is the preferred transportation mean (how); and, eventually, the available budget. However, the customer usually does not give such information directly, rather the seller has to exploit her knowledge, in order to infer it. This is exactly what the IDUM system does when a user starts a new search. Current needs are specified by filling an appropriate search form, while, notably, an appropriate tourism ontology models both the knowledge of the seller and the profile of customers; at the same time, an automatic extraction process continuously populates the ontology with new tourist offers. The system, by running a specifically devised reasoning module, combines the specified information with the one available in the knowledge base, and shows the packages that best fit the customer needs. For example, suppose that a customer specifies only the kind of holiday and the period; then, the following module1 (we report next an excerpt of a simplified version) would take care of selecting the appropriate packages.</p>
<pre>%detect possible and suggested places</pre>
<pre>possiblePlace(Place)    :- askFor(_,TripKind,_), PlaceOffer(Place, TripKind).</pre>
<pre>suggestPlace(Place)     :- possiblePlace(Place), askFor(_,_,Period),
      SuggestedPeriod(Place_1, Period),
      not BadPeriod(Place_1, Period).</pre>
<pre>%select possible and alternative offers and suggestible packages
 possibleOffer(Offer)    :- TouristOffer(Offer, Place,_), possiblePlace(Place).</pre>
<pre>alternativeOffer(Offer) :- TouristOffer(Offer, Place,_), suggestPlace(Place).</pre>
<pre>suggestOffer(Offer)     :- TouristOffer(Offer, Place, Mean),
     suggestPlace(Place), askFor(Customer,_,_),
     CustomerPrefersMean(Customer, Mean).</pre>
<p>Intuitively, the first two rules select places matching the kind of holiday requested and places to be suggested because the corresponding offer matches the time of the year requester. The remaining three rules search in the available holiday packages the ones that offer an holiday that matches the original input (possible offer), or that constitute good alternatives to suggested places (alternativeOffer), or match the customer’s preferred mean. Once such reasoning processes have been translated into DLV programs, they constitute a formal and at the same time executable specification, that can be easily adjusted and updated as needed.</p>
<p>In order to provide a concrete idea on the system behavior, we mention here a result reported in [38], where system performances have been assessed in a concrete usage scenario. Given a corpus of 755 tourism leaflets received by a travel agency, corresponding to 10285 offers in total, a logic program that computes the offers matching customer’s preferred destination and budget requires less than two seconds on the average to be evaluated on a standard desktop hardware.</p>
<p>The success of IDUM has been confirmed by the flattering appreciation of the Touring Club Italiano, the largest Italian organization of travel agents: the president spoke at the system presentation conference, held at the University of Calabria. Major Italian and international operators shown interest, and proposed to offer their own data in order to foster testings on a larger industrial base. At the time of writing, commercial negotiations are in progress.</p>
<h4>3.2 Team-Building at Gioia Tauro Seaport</h4>
<p>The Gioia Tauro international seaport is the biggest industrial hub on the Mediterranean Sea. The seaport mainly works on transhipment, which consists of transferring a load from an incoming ship to other ships that will head to the final destination. This activity requires the companies working in the seaport to meet many, usually very strong, constraints that are enforced by the transportation companies and cost high non-compliance penalties. In addition, processing the load of a ship is quite a complex job: goods must be managed, processed, stored and sent again. This requires a working team consisting of employees able to play different and very specialized roles, depending on the kind of ship and load. The traffic volume requires to manage a complex shift organization, thus making the task of building adequate teams even more difficult. Each team must fulfill many conditions: some constraints are enforced by the employment contracts (such as the maximum amount of worked hours in a week, for instance), by equity criteria (guarantee a proper workload distribution among employees, especially in case of heavy or dangerous jobs), or simply by the skills required for a particular task. Upon request of the company ICO BLG, that manages logistics within the seaport, a DLV-based “team-building” system has been implemented, that is able to automatically generate proper working groups starting from the description of the required resources and the personnel availability. The system can both build the teams from scratch, and automatically complete partial allocations in case of roles fixed in advance for some employees. Moreover, a friendly user interface allows one to manually modify each team, while automatically checks that the constraints remain fulfilled after each change. In case of errors, the system highlights the reasons and conveniently provide some suggestions to overcome the problems.</p>
<p><strong>Some technical insight</strong>. We report below a simplified version of the kernel part of the employed ASP program.</p>
<pre> (r)      assign(Em,Sh,Sk) v nAssign(Em,Sh,Sk) :-
                      skill(Em,Sk),metaPlan(Sh,Sk,_,D), not absent(Em),
                      not manuallyExcluded(Em), workedHours(Em,Wh), Wh+D &lt;= 36.
(c1)      :- metaPlan(Sh,Sk,EmpNum,_),
             #count{ Em : assign(Em,Sh,Sk) } != EmpNum.
(c2)      :- assign(Em,Sh,Sk1), assign(Em,Sh,Sk2), Sk1 != Sk2.
(c3)      :- wstats(Em1,Sk,_,LastTime1), wstats(Em2,Sk,_,LastTime2),
             LastTime1 &gt; LastTime2, assign(Em1,Sh,Sk),not assign(Em2,Sh,Sk).
(c4)      :- workedHours(Em1,Wh1), workedHours(Em2,Wh2), threshold(Tr),
              Wh1+Tr &lt; Wh2, assign(Em1,Sh,Sk), not assign(Em2,Sh,Sk).</pre>
<pre>(r_aux)   workedHours(Em,Wh) :- skill(Em,_), #count{ H, Em : wstats(Em,_,H,_) } = Wh.</pre>
<p style="text-align: center;"><img class="aligncenter" src="data:image/png;base64,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" alt="" width="599" height="175" />Table 1: Predicates from Team-Building description in Section 3.2</p>
<p>The input predicates are described in Table 1. Following the guess&amp;check programming methodology<a href="#ref"> [28],</a> the disjunctive rule (r) generates the search space by guessing the assignment of a number of available employees to the shift in the appropriate roles. Absent or manually excluded employees, together with employees exceeding the maximum number of weekly working hours, are automatically discarded. Then, admissible solutions are selected by means of constraints: (c_1) discards assignments with an wrong number of employees in some skill; (c_2) avoids that an employee covers two roles in the same shift; (c_3) implement the tournament of roles; and (c_4) guarantees a fair distribution of the workload; (r_aux) computes the total number of worked hours per employee.</p>
<p>In order to provide a concrete image on the behavior of the system, the result of an experimental analysis are reported in <a href="#ref">[41]</a>. In order to give an idea, the management of ICO BLG dedicated several hours per day to manually schedule the next day; whereas the system required a few seconds to generate a shift plan, and in some minutes we could simulate a complete allocation covering an entire month.</p>
<p>The most prominent advantage of a solution based on logics with respect to other approaches, in this application, is given by the purely declarative nature of the specification language. Indeed, the use of DLV allowed to obtain in very short time a first set of logic rules, which constitutes a logic program able to provide admissible solutions, and then to refine and calibrate it according to problem specifications while directly interacting with the interested people. The resulting logic program is not only very powerful, but also extremely flexible: to change its behavior it is enough to modify, add, or delete the constituting rules by editing simple text files, and checking correctness in “real-time”.</p>
<h3>4 Other Applications and Industrial Products</h3>
<p>We briefly report next on the role of DLV in the development of a number of other applications, as well as some specialized products for knowledge management, information extraction, and content management.</p>
<p>Other applications. The European Commission funded a project on Information Integration, which produced a sophisticated and efficient data integration system, called INFOMIX, which uses DLV at its computational core<a href="#ref"> [27]</a>. The powerful mechanisms for database interoperability, together with magic sets [10, 14] and other database optimization techniques, which are implemented in DLV, make DLV very well-suited for handling information integration tasks. And DLV (in INFOMIX) was succesfully employed to develop in an integration system for the information system of the University of Rome “La Sapienza”. The DLV system has been experimented also with an application for Census Data Repair [18], in which errors in census data are identified and eventually repaired.</p>
<p>DLV has been employed at CERN, the European Laboratory for Particle Physics, for an advanced deductive database application that involves complex knowledge manipulation on large-sized databases.</p>
<p>The Polish company Rodan Systems S.A. has exploited DLV in a tool for the detection of price manipulations and unauthorized use of confidential information, which is used by the Polish Securities and Exchange Commission.</p>
<p>In the area of self-healing Web Services, moreover, DLV is exploited for implementing the computation of minimum cardinality diagnoses<a href="#ref"> [19]</a>.</p>
<p>In <a href="#ref">[26]</a> a complete on-line exam taking portal has been described, called EXAM. The system allows teachers and students to be assisted in the whole process of assessment test building, exam taking, and test correction. The system exploits ASP for automatically generating assessment tests based on user defined constraints: a teacher is made able to build up an assessment test template; her preferences are then translated into a logic specification executable by DLV.</p>
<p>DLV is the core of a system that helps the citizens of the Regione Calabria, Italy while moving within the transportation system (including public and private companies). The user can access a web portal and ask the automatic building of a complete itineray, freely choosing any locations as starting and destination points. The system is actually very accurate: it tells the user where and when to take the train/bus, where to get off and change, and how long the trip will last; it even gives precise directions for the distance to be covered on foot.</p>
<p>Knowledge Management Products. Three among the main industrial products offered by the Exeura s.r.l. company (a spin-off of the University of Calabria) are based on DLV, namely: OntoDLV<a href="#ref"> [40, 42]</a>, OLEX<a href="#ref"> [11, 45]</a>, and HiLεX<a href="#ref"> [44, 43]</a>. OntoDLV<a href="#ref"> [40, 42]</a> is an ontology management and reasoning system; indeed, OntoDLV implements a powerful logic-based ontology representation language, called OntoDLP, which is an extension of (disjunctive) ASP with all the main ontology constructs including classes, inheritance, relations, and axioms. Using OntoDLV, domain experts can create, modify, store, navigate, and query ontologies thanks to a user-friendly visual environment; at the same time, application developers can easily implement knowledge-intensive applications embedding OntoDLP specifications. The OntoLog Enterprise Categorizer System (OLEX)<a href="#ref"> [11, 45]</a> is a corporate classification system supporting the entire content classification life-cycle, including document storage and organization, ontology construction, pre-processing and classification. OLEX exploits a reasoning-based approach to text classification exploiting ASP as categorization rule language. Logic rules provide a natural and powerful way to encode how document contents may relate to ontology concepts. HiLεX<a href="#ref"> [44, 43]</a> is an advanced system for ontology-based information extraction from semi-structured and unstructured documents. HiLεX is based on OntoDLP for describing ontologies, since this language perfectly fits the definition of semantic extraction rules. It is worth mentioning that the extraction module employed in the IDUM system was developed by using HiLεX.</p>
<h3>5 Learned Lessons</h3>
<p>The strong efforts spent by the scientific community made ASP a powerful tool for problem solving and knowledge representation and reasoning; the availability of a number of efficient and solid systems stimulated the interest in developing ASP-based applications and solutions. The exploitation of ASP for developing real-world, industrial-level applications has started in the last few years; and the DLV system has been one of the first successfully exploited ASP systems in this respect, so far.</p>
<p>In this work we have reported on the applications of DLV for solving real-world problems, mainly focusing on industrial-level applications. The experience we have gained developing real-world DLV-based applications, has confirmed on the one hand, the viability of the industrial exploitation of ASP; on the other hand, it has brought into light some practical problems.</p>
<p>ASP has confirmed on the field some of its strong points, particularly from the perspective of software engineering. Above all, we mention its suitability for fast prototyping and the very high flexibility it provides in the implementation of new requirement specifications. For instance, the key features that allowed the rapid development of an effective solution for Team-Building at Gioia Tauro Seaport were: (i) the possibility to design and implement complex reasoning modules at a lower (development) price than “traditional” imperative programming approaches, and (ii) the ease of modifying ready-to-execute logic specifications according to continuously changing requirements. The workforce management system was designed side by side with the management of the transshipment company; during this process we had to repeatedly change the model, and we were able to follow all the new directions by the customer, who could immediately validate its requirements. Indeed, thanks to DLV, we were always able to modify and test the system in a relatively short time. We could hardly have achieved the same level of productivity by working with “traditional” imperative programming approaches: even in presence of a complex workforce model with a large number of constraints, the requirements have been elicited, rapidly transformed in executable specifications, and immediately tested and validated by the customer on a live working instance of the system. Moreover, the knowledge representation and reasoning feature of ASP allowed us to easily develop the customized search features of IDUM.</p>
<p>Nonetheless, the same experience allowed us also to discover what is still missing, or not yet completely adequate, in a software development process where ASP is employed. For instance, we noticed the lack of advanced development tools for ASP that are able to support programmers during the entire development life-cycle, from (assisted) programs editing to the management of large and complex projects. The most polular programming languages always come with SDKs featuring a rich set of tools that significantly simplify both programming and maintenance tasks; this observation led us to start the ASPIDE <a href="#ref">[17]</a> project. Another important observation is that there is a strong need of integrating ASP technologies (i.e., ASP programs and solvers) in the well-assessed software-development processes and platforms. Indeed, since ASP is not a full general-purpose language, ASP programs must be embedded, at some point, in systems components that are usually built by employing imperative/object-oriented programming languages, e.g., for developing visual user-interfaces. We already developed the DLV Java Wrapper API<a href="#ref"> [37]</a>, but we are already working on much more powerful tools, and aiming at a more tight integration of DLV with industrial development tools and imperative languages.</p>
<p>To summarize, our experience confirms ASP can be effectively exploited in industry, but there are some issues that must be faced. In particular, a strong effort must be spent in order to make it easy to apply for developers, by integrating ASP in the most polular development environments. We do believe that a central role will be played by the future advancements in software engineering for ASP, and this is why we are actively involved in this mission on a number of fronts.</p>
<h3>Acknowledgements</h3>
<p>We would like to thank Nicola Leone, as the leader of the DLV team, for the useful directions, and, together with Exeura s.r.l. and DLVSystem s.r.l., for the chance to access the insights of all projects and applications herein cited.</p>
<h3><a name="ref">References</a></h3>
<p>[1]   Mario Alviano, Wolfgang Faber, and Nicola Leone. Disjunctive asp with functions: Decidable queries and effective computation. Theory and Practice of Logic Programming, 26th Int’l. Conference on Logic Programming (ICLP 2010) Special Issue, 10(4–6):497–512, 2010.</p>
<p>[2]   Marcello Balduccini, Michael Gelfond, Richard Watson, and Monica Nogeira. The USA-Advisor: A Case Study in Answer Set Planning. In Thomas Eiter, Wolfgang Faber, and Mirosław Truszczyński, editors, Proceedings of the 6th International Conference on Logic Programming and Nonmonotonic Reasoning (LPNMR 2001), volume 2173 of LNCS, pages 439–442. Springer, 2001.</p>
<p>[3]   Chitta Baral. Knowledge Representation, Reasoning and Declarative Problem Solving. Cambridge University Press, 2003.</p>
<p>[4]   Chitta Baral and Michael Gelfond. Reasoning Agents in Dynamic Domains. In Jack Minker, editor, Logic-Based Artificial Intelligence, pages 257–279. Kluwer Academic Publishers, 2000.</p>
<p>[5]   Chitta Baral and Cenk Uyan. Declarative Specification and Solution of Combinatorial Auctions Using Logic Programming. In Thomas Eiter, Wolfgang Faber, and Mirosław Truszczyński, editors, Proceedings of the 6th International Conference on Logic Programming and Nonmonotonic Reasoning (LPNMR 2001), volume 2173 of Lecture Notes in AI (LNAI), pages 186–199. Springer Verlag, 2001.</p>
<p>[6]   Victor A. Bardadym. Computer-Aided School and University Timetabling: The New Wave. In Edmund Burke and Peter Ross, editors, Practice and Theory of Automated Timetabling, First International Conference 1995, volume 1153 of LNCS, pages 22–45. Springer, 1996.</p>
<p>[7]   Francesco Buccafurri, Nicola Leone, and Pasquale Rullo. Enhancing Disjunctive Datalog by Constraints. IEEE Transactions on Knowledge and Data Engineering, 12(5):845–860, 2000.</p>
<p>[8]   Francesco Calimeri, Susanna Cozza, Giovambattista Ianni, and Nicola Leone. Computable Functions in ASP: Theory and Implementation. In Proceedings of the 24th International Conference on Logic Programming (ICLP 2008), volume 5366 of Lecture Notes in Computer Science, pages 407–424, Udine, Italy, December 2008. Springer.</p>
<p>[9]   Francesco Calimeri, Giovambattista Ianni, Francesco Ricca, Mario Alviano, Annamaria Bria, Gelsomina Catalano, Susanna Cozza, Wolfgang Faber, Onofrio Febbraro, Nicola Leone, Marco Manna, Alessandra Martello, Claudio Panetta, Simona Perri, Kristian Reale, Maria Carmela Santoro, Marco Sirianni, Giorgio Terracina, and Pierfrancesco Veltri. The Third Answer Set Programming Competition: Preliminary Report of the System Competition Track. In Logic Programming and Nonmonotonic Reasoning &#8211; 11th International Conference (LPNMR 2011), Proceedings, pages 388–403, Vancouver, Canada, May 2011.</p>
<p>[10]   Chiara Cumbo, Wolfgang Faber, Gianluigi Greco, and Nicola Leone. Enhancing the magic-set method for disjunctive datalog programs. In Proceedings of the the 20th International Conference on Logic Programming (ICLP 2004), volume 3132 of Lecture Notes in Computer Science, pages 371–385, 2004.</p>
<p>[11]   Chiara Cumbo, Salvatore Iiritano, and Pasquale Rullo. OLEX &#8211; A Reasoning-Based Text Classifier. In Proceedings of Logics in Artificial Intelligence, 9th European Conference, (JELIA 2004), September 27-30, 2004, volume 3229 of Lecture Notes in Computer Science, pages 722–725, Lisbon, Portugal, 2004.</p>
<p>[12]   Agostino Dovier. Recent constraint/logic programming based advances in the solution of the protein folding problem. Intelligenza Artificiale, 5(1):113–117, 2011.</p>
<p>[13]   Thomas Eiter, Georg Gottlob, and Heikki Mannila. Disjunctive Datalog. ACM Transactions on Database Systems, 22(3):364–418, September 1997.</p>
<p>[14]   Wolfgang Faber, Gianluigi Greco, and Nicola Leone. Magic Sets and their Application to Data Integration. Journal of Computer and System Sciences, 73(4):584–609, 2007.</p>
<p>[15]   Wolfgang Faber, Nicola Leone, and Gerald Pfeifer. Semantics and complexity of recursive aggregates in answer set programming. Artificial Intelligence, 175(1):278–298, 2011. Special Issue: John McCarthy’s Legacy.</p>
<p>[16]   Wolfgang Faber and Gerald Pfeifer. <a href="http://www.dlvsystem.com/">DLV homepage</a>, since 1996</p>
<p>[17]   Onofrio Febbraro, Kristian Reale, and Francesco Ricca. Aspide: Integrated development environment for answer set programming. In Logic Programming and Nonmonotonic Reasoning &#8211; 11th International Conference, LPNMR 2011, Vancouver, Canada, May 16-19, 2011. Proceedings, volume 6645 of Lecture Notes in Computer Science, pages 317–330, 2011.</p>
<p>[18]   Enrico Franconi, Antonio Laureti Palma, Nicola Leone, Simona Perri, and Francesco Scarcello. Census Data Repair: a Challenging Application of Disjunctive Logic Programming. In Logic for Programming, Artificial Intelligence, and Reasoning, 8th International Conference (LPAR 2001), volume 2250 of Lecture Notes in Computer Science, pages 561–578. Springer, 2001.</p>
<p>[19]   G. Friedrich and V. Ivanchenko. <a href="http://proserver3-iwas.uni-klu.ac.at/download_area/Technical-Reports/technical_report_2008_02.pdf">Diagnosis from first principles for workflow executions</a>. Technical report, Alpen Adria University, Applied Informatics, Klagenfurt, Austria, 2008.</p>
<p>[20]   Martin Gebser, Torsten Schaub, Sven Thiele, and Philippe Veber. Detecting inconsistencies in large biological networks with answer set programming. Theory and Practice of Logic Programming, 11:323–360, 2011.</p>
<p>[21]   Michael Gelfond and Vladimir Lifschitz. The Stable Model Semantics for Logic Programming. In Logic Programming: Proceedings Fifth Intl Conference and Symposium, pages 1070–1080, Cambridge, Mass., 1988. MIT Press.</p>
<p>[22]   Michael Gelfond and Vladimir Lifschitz. Classical Negation in Logic Programs and Disjunctive Databases. New Generation Computing, 9:365–385, 1991.</p>
<p>[23]   Giovanni Grasso, Salvatore Iiritano, Nicola Leone, Vincenzino Lio, Francesco Ricca, and Francesco Scalise. An ASP-Based System for Team-Building in the Gioia-Tauro Seaport. In Manuel Carro and Ricardo Peña, editors, PADL, volume 5937 of Lecture Notes in Computer Science, pages 40–42. Springer, 2010.</p>
<p>[24]   Giovanni Grasso, Salvatore Iiritano, Nicola Leone, and Francesco Ricca. Some DLV Applications for Knowledge Management. In Esra Erdem, Fangzhen Lin, and Torsten Schaub, editors, Proceedings of the 10th International Conference on Logic Programming and Nonmonotonic Reasoning (LPNMR 2009), volume 5753 of Lecture Notes in Computer Science, pages 591–597. Springer, 2009.</p>
<p>[25]   Giovanni Grasso, Nicola Leone, Marco Manna, and Francesco Ricca. Asp at work: Spin-off and applications of the dlv system. In Logic Programming, Knowledge Representation, and Nonmonotonic Reasoning &#8211; Essays Dedicated to Michael Gelfond on the Occasion of His 65th Birthday, volume 6565 of LNCS, pages 432–451. Springer, 2011.</p>
<p>[26]   Giovambattista Ianni, Francesco Ricca, and Claudio Panetta. Specification of Assessment-Test Criteria through ASP Specification. In Answer Set Programming: Advances in Theory and Implementation, pages 293–302, Bath, UK, 2005. Research Press International, P.O. Box 144, Bristol BS 1YA.</p>
<p>[27]   Nicola Leone, Georg Gottlob, Riccardo Rosati, Thomas Eiter, Wolfgang Faber, Michael Fink, Gianluigi Greco, Giovambattista Ianni, Edyta Kałka, Domenico Lembo, Maurizio Lenzerini, Vincenzino Lio, Bartosz Nowicki, Marco Ruzzi, Witold Staniszkis, and Giorgio Terracina. The INFOMIX System for Advanced Integration of Incomplete and Inconsistent Data. In Proceedings of the 24th ACM SIGMOD International Conference on Management of Data (SIGMOD 2005), pages 915–917, Baltimore, Maryland, USA, June 2005. ACM Press.</p>
<p>[28]   Nicola Leone, Gerald Pfeifer, Wolfgang Faber, Thomas Eiter, Georg Gottlob, Simona Perri, and Francesco Scarcello. The DLV System for Knowledge Representation and Reasoning. ACM Transactions on Computational Logic, 7(3):499–562, July 2006.</p>
<p>[29]   Victor W. Marek and Mirosław Truszczyński. Stable Models and an Alternative Logic Programming Paradigm. In Krzysztof R. Apt, V. Wiktor Marek, Mirosław Truszczyński, and David S. Warren, editors, The Logic Programming Paradigm – A 25-Year Perspective, pages 375–398. Springer Verlag, 1999.</p>
<p>[30]   Mónica Caniupán Marileo and Leopoldo E. Bertossi. The consistency extractor system: Answer set programs for consistent query answering in databases. Data &amp; Knowledge Engineering, 69(6):545–572, 2010.</p>
<p>[31]   Jack Minker. On Indefinite Data Bases and the Closed World Assumption. In Donald W. Loveland, editor, Proceedings 6th Conference on Automated Deduction (CADE ’82), volume 138 of Lecture Notes in Computer Science, pages 292–308, New York, 1982. Springer.</p>
<p>[32]   Ilkka Niemelä. Logic Programming with Stable Model Semantics as Constraint Programming Paradigm. Annals of Mathematics and Artificial Intelligence, 25(3–4):241–273, 1999.</p>
<p>[33]   Monica Nogueira, Marcello Balduccini, Michael Gelfond, Richard Watson, and Matthew Barry. An A-Prolog Decision Support System for the Space Shuttle. In I.V. Ramakrishnan, editor, Practical Aspects of Declarative Languages, Third International Symposium (PADL 2001), volume 1990 of Lecture Notes in Computer Science, pages 169–183. Springer, 2001.</p>
<p>[34]   Luigi Palopoli, Simona E. Rombo, and Giorgio Terracina.<a href="http://dx.doi.org/10.1007/11425274_52"> Flexible Pattern Discovery with (Extended) Disjunctive Logic Programming</a>. In Foundations of Intelligent Systems, 15th International Symposium, (ISMIS 2005), Proceedings, pages 504–513, May 2005.</p>
<p>[35]   Alessandro Dal Palú and Paolo Torroni. 25 years of applications of logic programming in italy. In Agostino Dovier and Enrico Pontelli, editors, 25 Years GULP, volume 6125 of LNCS, pages 300–328. Springer, 2010.</p>
<p>[36]   Simona Perri, Francesco Scarcello, Gelsomina Catalano, and Nicola Leone. Enhancing DLV instantiator by backjumping techniques. Annals of Mathematics and Artificial Intelligence, 51(2–4):195–228, 2007.</p>
<p>[37]   Francesco Ricca.<a href="http://CEUR-WS.org/Vol-78"> The DLV Java Wrapper</a>. In Marina de Vos and Alessandro Provetti, editors, Proceedings ASP03 &#8211; Answer Set Programming: Advances in Theory and Implementation, pages 305–316, Messina, Italy, September 2003.</p>
<p>[38]   Francesco Ricca, Antonella Dimasi, Giovanni Grasso, Salvatore Maria Ielpa, Salvatore Iiritano, Marco Manna, and Nicola Leone. A Logic-Based System for e-Tourism. Fundamenta Informaticae, 105(1-2):35–55, 2010.</p>
<p>[39]   Francesco Ricca, Wolfgang Faber, and Nicola Leone. A Backjumping Technique for Disjunctive Logic Programming. AI Communications – The European Journal on Artificial Intelligence, 19(2):155–172, 2006.</p>
<p>[40]   Francesco Ricca, Lorenzo Gallucci, Roman Schindlauer, Tina Dell’Armi, Giovanni Grasso, and Nicola Leone. OntoDLV: an ASP-based system for enterprise ontologies. Journal of Logic and Computation, 2009.</p>
<p>[41]   Francesco Ricca, Giovanni Grasso, Mario Alviano, Marco Manna, Vincenzino Lio, Salvatore Iiritano, and Nicola Leone. <a href="http://dx.doi.org/10.1017/S147106841100007X">Team-building with Answer Set Programming in the Gioia-Tauro Seaport</a>. Theory and Practice of Logic Programming, 2011.</p>
<p>[42]   Francesco Ricca and Nicola Leone. Disjunctive Logic Programming with types and objects: The DLV+ System. Journal of Applied Logics, 5(3):545–573, 2007.</p>
<p>[43]   Massimo Ruffolo, Nicole Leone, Marco Manna, Domenico Saccà, and Antonio Zavatto. Exploiting ASP for Semantic Information Extraction. In Marina de Vos and Alessandro Provetti, editors, Proceedings ASP05 &#8211; Answer Set Programming: Advances in Theory and Implementation, pages 248–262, Bath, UK, July 2005.</p>
<p>[44]   Massimo Ruffolo and Marco Manna. HiLeX: A System for Semantic Information Extraction from Web Documents. In Yannis Manolopoulos, Joaquim Filipe, Panos Constantopoulos, and José Cordeiro, editors, ICEIS (Selected Papers), volume 3 of Lecture Notes in Business Information Processing, pages 194–209, 2008.</p>
<p>[45]   Pasquale Rullo, Chiara Cumbo, and Veronica L. Policicchio. Learning rules with negation for text categorization. In Yookun Cho, Roger L. Wainwright, Hisham Haddad, Sung Y. Shin, and Yong Wan Koo, editors, Proceedings of the 2007 ACM Symposium on Applied Computing (SAC), Seoul, Korea, March 11-15, pages 409–416. ACM, 2007.</p>
<p>[46]   Giorgio Terracina, Erika De Francesco, Claudio Panetta, and Nicola Leone. Enhancing a DLP system for advanced database applications. In Proceedings of the International Conference on Web Reasoning and Rule Systems (RR 2008), Karlsruhe, Germany, 2008. Springer Verlag.</p>
<p>[47]   Giorgio Terracina, Nicola Leone, Vincenzino Lio, and Claudio Panetta. Experimenting with recursive queries in database and logic programming systems. Theory and Practice of Logic Programming, 8:129–165, 2008.</p>
<p>[48]   Wasp showcase.<a href="http://www.kr.tuwien.ac.at/projects/WASP/showcase.html"> http://www.kr.tuwien.ac.at/projects/WASP/showcase.html</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/03/on-the-application-of-the-answer-set-programming-system-dlv-in-industry-a-report-from-the-field/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing Network Protocols as Distributed Logic Programs</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/03/implementing-network-protocols-as-distributed-logic-programs/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/03/implementing-network-protocols-as-distributed-logic-programs/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 06:01:24 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[ALP ISSUE]]></category>
		<category><![CDATA[Feature Articles]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=1917</guid>
		<description><![CDATA[By Boon Thau Loo, University of Pennsylvania]]></description>
			<content:encoded><![CDATA[<h3>Implementing Network Protocols as Distributed Logic Programs</h3>
<p>By<strong> Boon Thau Loo</strong>, University of Pennsylvania</p>
<p><a href="http://www.cs.nmsu.edu/ALP/wp-content/uploads/2012/03/dn.pdf">PDF version</a></p>
<p><strong>Abstract:</strong></p>
<p><em>Declarative networking</em><a href="#uno"> [1--4]</a> is an application of database query-language and processing techniques to the domain of networking. Declarative networking is based on the observation that network protocols deal at their core with computing and maintaining distributed state (e.g., routes, sessions, performance statistics) according to basic information locally available at each node (e.g., neighbor tables, link measurements, local clocks) while enforcing constraints such as local routing policies. Recursive query languages studied in the deductive database literature <span class="cite">[<a href="#Xramakrishnan93survey">6</a>]</span> are a natural fit for expressing the relationship between base data, derived data, and the associated constraints. Simple extensions to these languages and their implementations enable the natural expression and efficient execution of network protocols.<br />
<!--l. 116--></p>
<p class="indent">Declarative networking aims to accelerate the process of specifying, implementing, experimenting with and evolving designs for network architectures. Declarative networking can reduce program sizes of distributed protocols by orders of magnitude relative to traditional approaches. In addition to serving as a platform for rapid prototyping of network protocols, declarative networking also open up opportunities for automatic protocol optimization and hybridization, program checking and debugging.<br />
<!--l. 125--></p>
<p class="indent">This paper presents an introduction to declarative networking using a simple routing protocol example. For more details on declarative networking related projects, refer to the NetDB@Penn website <span class="cite">[<a href="#Xnetdbpenn">5</a>]</span>, and the RapidNet <span class="cite">[<a href="#Xrapidnet">7</a>]</span> declarative networking engine.</p>
<h3 class="likesectionHead"><a id="x1-1000"></a>Declarative Networking By Example</h3>
<p>The Network Datalog (<span class="cmti-10">NDlog</span>) language used in declarative networking is based on extensions to traditional Datalog, a well-known recursive query language designed for querying graph-structured data in a centralized database. <span class="cmti-10">NDlog</span>’s integration of networking and logic is unique from the perspectives of both domains. As a network protocol language, it is notable for the absence of any communication primitives like “send” or “receive”; instead, communication is implicit in a simple high-level specification of data partitioning. In comparison to traditional logic languages, it is enhanced to capture typical network realities including distribution, link-layer constraints on communication (and hence deduction), and soft-state semantics.<br />
<!--l. 148--></p>
<p class="indent">We introduce Network Datalog (<span class="cmti-10">NDlog</span>), the declarative network using an example program shown below that implements the <span class="cmti-10">Path-vector protocol</span>, which computes in a distributed fashion, for every node, the shortest paths to all other nodes in a network. The path-vector protocol is used as the base routing protocol for exchanging routes among Internet Service Providers.</p>
<div class="alltt">
<p><!--l. 156--></p>
<pre class="obeylines-v"><span class="cmtt-9">sp1</span><span class="cmtt-9"> path(@Src,Dest,Path,Cost)</span><span class="cmtt-9"> :-</span><span class="cmtt-9"> link(@Src,Dest,Cost), </span><span class="cmtt-9">
            Path</span><span class="cmtt-9"> =</span><span class="cmtt-9"> f</span><span class="cmtt-9">_init(Src,Dest).</span>
<span class="cmtt-9">sp2</span><span class="cmtt-9"> path(@Src,Dest,Path,Cost)</span><span class="cmtt-9"> :-</span><span class="cmtt-9"> link(@Src,Nxt,Cost1),
            path(@Nxt,Dest,Path2,Cost2),
            Cost</span><span class="cmtt-9"> =</span><span class="cmtt-9"> Cost1+Cost2,</span><span class="cmtt-9">
            Path</span><span class="cmtt-9"> =</span><span class="cmtt-9"> f</span><span class="cmtt-9">_concatPath(Src,Path2).</span>
<span class="cmtt-9">sp3</span><span class="cmtt-9"> spCost(@Src,Dest,min&lt;Cost&gt;)</span><span class="cmtt-9"> :-</span><span class="cmtt-9"> path(@Src,Dest,Path,Cost).</span>
<span class="cmtt-9">sp4</span><span class="cmtt-9"> shortestPath(@Src,Dest,Path,Cost)</span><span class="cmtt-9"> :-</span><span class="cmtt-9">
            spCost(@Src,Dest,C</span><span class="cmtt-9">ost),
            path(@Src,Dest,Path,Cost).</span>

<span class="cmtt-9">Query</span><span class="cmtt-9"> shortestPath(@Src,Dest,Path,Cost).</span></pre>
</div>
<p><!--l. 170--></p>
<p class="indent">The program has four rules (which for convenience we label <span class="cmtt-9">sp1-sp4</span>), and takes as input a base (<span class="cmti-10">extensional</span>) relation <span class="cmtt-9">link(Src, Dest, Cost)</span>. Rules <span class="cmtt-9">sp1-sp2 </span>are used to derive “paths” in the graph, represented as tuples in the derived (<span class="cmti-10">intensional</span>) relation<span class="cmtt-9"> path(Src,Dest,Path,Cost)</span>. The <span class="cmtt-9">Src </span>and <span class="cmtt-9">Dest </span>fields represent the source and destination endpoints of the path, <span class="cmtt-9">Path </span>is the actual path from <span class="cmtt-9">Src </span>to node <span class="cmtt-9">Dest</span>. The number and types of fields in relations are inferred from their (consistent) use in the program’s rules.<br />
<!--l. 180--></p>
<p class="indent">Since network protocols are typically computations over distributed network state, one of the important requirements of <span class="cmti-10">NDlog </span>is the ability to support rules that express distributed computations. <span class="cmti-10">NDlog </span>builds upon traditional Datalog by providing control over the storage location of tuples explicitly in the syntax via <span class="cmti-10">location</span><span class="cmti-10"> specifiers</span>. Each location specifier is a field within a predicate that dictates the partitioning of the table. To illustrate, in the above program, each predicate has an “<span class="cmtt-9">@</span>” symbol prepended to a single field denoting the location specifier. Each tuple generated is stored at the address determined by its location specifier. For example, each <span class="cmtt-9">path </span>and <span class="cmtt-9">link </span>tuple is stored at the address held in its first field<span class="cmtt-9"> @Src</span>.<br />
<!--l. 198--></p>
<p>Rule <span class="cmtt-9">sp1 </span>produces <span class="cmtt-9">path </span>tuples directly from existing <span class="cmtt-9">link </span>tuples, and rule <span class="cmtt-9">sp2</span> recursively produces <span class="cmtt-9">path </span>tuples of increasing cost by matching (joining) the destination fields of existing links to the source fields of previously computed paths. The matching is expressed using the repeated <span class="cmtt-9">Nxt </span>variable in <span class="cmtt-9">link(Src,Nxt,Cost1)</span> and <span class="cmtt-9">path(Nxt,Dest,Path2,Cost2) </span>of rule <span class="cmtt-9">sp2</span>. Intuitively, rule <span class="cmtt-9">sp2 </span>says that “if there is a link from node <span class="cmtt-9">Src </span>to node <span class="cmtt-9">Nxt</span>, and there is a path from node <span class="cmtt-9">Nxt </span>to node <span class="cmtt-9">Dest</span> along a path <span class="cmtt-9">Path2</span>, then there is a path <span class="cmtt-9">Path </span>from node <span class="cmtt-9">Src </span>to node <span class="cmtt-9">Dest </span>where <span class="cmtt-9">Path</span> is computed by prepending <span class="cmtt-9">Src </span>to <span class="cmtt-9">Path2</span>”. The matching of the common <span class="cmtt-9">Nxt</span> variable in <span class="cmtt-9">link </span>and <span class="cmtt-9">path </span>corresponds to a <span class="cmti-10">join </span>operation used in relational databases.<br />
<!--l. 212--></p>
<p class="indent">Given the <span class="cmtt-9">path </span>relation, rule <span class="cmtt-9">sp3 </span>derives the relation <span class="cmtt-9">spCost(Src,Dest,Cost) </span>that computes the minimum cost <span class="cmtt-9">Cost </span>for each source and destination for all input paths. Rule <span class="cmtt-9">sp4 </span>takes as input <span class="cmtt-9">spCost </span>and <span class="cmtt-9">path </span>tuples and then finds<span class="cmtt-9"> shortestPath(Src,Dest,Path,Cost) </span>tuples that contain the shortest path <span class="cmtt-9">Path </span>from<span class="cmtt-9"> Src </span>to <span class="cmtt-9">Dest </span>with cost <span class="cmtt-9">Cost</span>. Last, as denoted by the <span class="cmtt-9">Query </span>label, the <span class="cmtt-9">shortestPath </span>table is the output of interest.</p>
<h3 class="likesectionHead"><a id="x1-2000"></a>Shortest Path Execution Example</h3>
<p class="noindent"><!--l. 225-->We step through an execution of the <span class="cmti-10">shortest-path NDlog </span>program above to illustrate derivation and communication of tuples as the program is computed. We make use of the example network in Figure <a href="#x1-20011">1<!--tex4ht:ref: SP example --></a>. Our discussion is necessarily informal since we have not yet presented our distributed implementation strategies; in the next section, we show in greater detail the steps required to generate the execution plan. Here, we focus on a high-level understanding of the data movement in the network during query processing.</p>
<p style="text-align: center;"><img class="aligncenter" src="data:image/png;base64,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" alt="" width="634" height="320" /></p>
<div class="figure">
<div class="caption" style="text-align: center;"><span class="id">Fig. 1: </span><span class="content"><span class="cmr-9">Nodes in the network are running the shortest-path program. We only show</span><span class="cmr-9"> newly derived tuples at each iteration.</span></span></div>
<p><!--tex4ht:label?: x1-20011 --></p>
<p><!--l. 243--></p>
<p class="indent">
</div>
<p><!--l. 245--></p>
<p class="indent">For ease of exposition, we will describe communication in synchronized <span class="cmti-10">iterations</span>, where at each iteration, each network node generates <span class="cmmi-10">paths </span>of increasing hop count, and then propagates these paths to neighbor nodes along links. We show only the derived paths communicated along the solid lines. In actual query execution, derived tuples can be sent along the bidirectional network links (dashed links).<br />
<!--l. 255--></p>
<p class="indent">In the 1<sup><span class="cmmi-7">st</span></sup> iteration, all nodes initialize their local path tables to 1-hop paths using rule <span class="cmtt-9">sp1</span>. In the 2<sup><span class="cmmi-7">nd</span></sup> iteration, using rule <span class="cmtt-9">sp2</span>, each node takes the input paths generated in the previous iteration, and computes 2-hop paths, which are then propagated to its neighbors. For example, <span class="cmtt-9">path(@a,d,[a,b,d],6) </span>is generated at node<span class="cmti-10"> b </span>using <span class="cmtt-9">path(@b,d,[b,d],1) </span>from the 1<sup><span class="cmmi-7">st</span></sup> iteration, and propagated to node <span class="cmti-10">a</span>. In fact, many network protocols propagate only the <span class="cmti-10">nextHop </span>and avoid sending the entire path vector.<br />
<!--l. 270--></p>
<p class="indent">As paths are computed, the shortest one is incrementally updated. For example, node <span class="cmmi-10">a </span>computes the cost of the shortest path from <span class="cmtt-9">a </span>to <span class="cmtt-9">b </span>as 5 with rule <span class="cmtt-9">sp3</span>, and then finds the corresponding shortest path <span class="cmtt-9">[a,b] </span>with rule <span class="cmtt-9">sp4</span>. In the next iteration, node<span class="cmmi-10"> a </span>receives <span class="cmtt-9">path(@a,b,[a,c,b],2) </span>from node <span class="cmtt-9">c</span>, which has lower cost compared to the previous lowest cost of 5, and hence <span class="cmtt-9">shortestPath(@a,b,[a,c,b],2) </span>replaces the previous tuple (the first two fields of source and destination are the primary key of this relation).<br />
<!--l. 280--></p>
<p class="indent">Interestingly, while <span class="cmti-10">NDlog </span>is a language to describe networks, there are no explicit communication primitives. All communication is implicitly generated during rule execution as a result of data placement specifications. For example, in rule <span class="cmtt-9">sp2</span>, the<span class="cmtt-9"> path </span>and <span class="cmtt-9">link </span>predicates have different location specifiers, and in order to execute the rule body of <span class="cmtt-9">sp2 </span>based on their matching fields, <span class="cmtt-9">link </span>and <span class="cmtt-9">path </span>tuples have to be shipped in the network. It is the movement of these tuples that generates the messages for the resulting network protocol.</p>
<h3 class="likesectionHead"><a id="x1-3000"></a><span class="cmr-7">References</span></h3>
<p><!--l. 1--></p>
<div class="thebibliography">
<p class="bibitem"><span class="biblabel"><br />
<a name="uno">[1]</a> B.  T.   Loo,   T. Condie,   M. Garofalakis,   D.  E.   Gay,   J.  M.   Hellerstein, P. Maniatis, R. Ramakrishnan, T. Roscoe, and I. Stoica. Declarative Networking:  Language,  Execution  and  Optimization.     In Proceedings  of  ACM  SIGMOD International Conference on Management of Data, 2006.</span></p>
<p class="bibitem"><a>[2]</a> <span class="bibsp"><span class="cmr-9"> </span><span class="cmr-9"> </span><span class="cmr-9"> </span></span><span class="cmr-9">B.</span><span class="cmr-9"> T.   Loo,   T.</span><span class="cmr-9"> Condie,   M.</span><span class="cmr-9"> Garofalakis,   D.</span><span class="cmr-9"> E.   Gay,   J.</span><span class="cmr-9"> M.   Hellerstein,</span><span class="cmr-9"> P.</span><span class="cmr-9"> Maniatis, R.</span><span class="cmr-9"> Ramakrishnan, T.</span><span class="cmr-9"> Roscoe, and I.</span><span class="cmr-9"> Stoica. Declarative Networking.</span><span class="cmr-9"> In </span><span class="cmti-9">Communications of the ACM (CACM)</span><span class="cmr-9">, 2009.</span></p>
<p><span class="biblabel"><span class="cmr-9">[3]</span> <span class="bibsp"><span class="cmr-9"> </span><span class="cmr-9"> </span><span class="cmr-9"> </span></span></span><span class="cmr-9">B.</span><span class="cmr-9"> T. Loo, T.</span><span class="cmr-9"> Condie, J.</span><span class="cmr-9"> M. Hellerstein, P.</span><span class="cmr-9"> Maniatis, T.</span><span class="cmr-9"> Roscoe, and I.</span><span class="cmr-9"> Stoica. Implementing  Declarative  Overlays.    In </span><span class="cmti-9">Proceedings  of  ACM  Symposium  on</span><span class="cmti-9"> Operating Systems Principles</span><span class="cmr-9">, 2005.</span></p>
<p class="bibitem"><span class="biblabel"><span class="cmr-9">[4]</span> <span class="bibsp"><span class="cmr-9"> </span><span class="cmr-9"> </span><span class="cmr-9"> </span></span></span><span class="cmr-9">B.</span><span class="cmr-9"> T. Loo,  J.</span><span class="cmr-9"> M. Hellerstein,  I.</span><span class="cmr-9"> Stoica,  and R.</span><span class="cmr-9"> Ramakrishnan.   Declarative</span><span class="cmr-9"> Routing: Extensible Routing with Declarative Queries.   In </span><span class="cmti-9">Proceedings of ACM</span><span class="cmti-9"> SIGCOMM Conference on Data Communication</span><span class="cmr-9">, 2005.</span></p>
<p class="bibitem">[5] <span class="bibsp"><span class="cmr-9"> </span><span class="cmr-9"> </span><span class="cmr-9"> </span></span><span class="cmr-9">NetDB@Penn. </span><a class="url" href="http://netdb.cis.upenn.edu/"><span class="cmtt-9">http://netdb.cis.upenn.edu/</span></a><span class="cmr-9">.</span><span class="biblabel"> </span></p>
<p class="bibitem"><span class="biblabel"><span class="cmr-9">[6]</span> <span class="bibsp"><span class="cmr-9"> </span><span class="cmr-9"> </span><span class="cmr-9"> </span></span></span><span class="cmr-9">R.</span><span class="cmr-9"> Ramakrishnan  and  J.</span><span class="cmr-9"> D.  Ullman.   A  Survey  of  Research  on  Deductive</span><span class="cmr-9"> Database Systems. </span><span class="cmti-9">Journal of Logic Programming</span><span class="cmr-9">, 23(2):125–149, 1993.</span><span class="biblabel"><br />
<span class="cmr-9"> </span></span></p>
<p class="bibitem"><span class="biblabel"><span class="cmr-9">[7]</span> <span class="bibsp"><span class="cmr-9"> </span><span class="cmr-9"> </span><span class="cmr-9"> </span></span></span><span class="cmr-9">RapidNet                 Declarative                 Networking                 Engine.</span><a class="url" href="http://netdb.cis.upenn.edu/rapidnet/"><span class="cmtt-9"> http://netdb.cis.upenn.edu/rapidnet/</span></a><span class="cmr-9">.</span></p>
<p class="bibitem">
<p class="bibitem"><span class="cmr-9"><br />
</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/03/implementing-network-protocols-as-distributed-logic-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012 ACP Summer School in Constraint Programming</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/03/2012-acp-summer-school-in-constraint-programming/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/03/2012-acp-summer-school-in-constraint-programming/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 07:19:15 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[Asyncronous News]]></category>
		<category><![CDATA[Schools]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=1962</guid>
		<description><![CDATA[ACP Summer School, Wroclaw, Poland, Sept 24-28, 2012]]></description>
			<content:encoded><![CDATA[<h3>2012 ACP Summer School in Constraint Programming<br />
Call for Participation</h3>
<p>The next Summer School in Constraint Programming will take place 24-28 September 2012 in Wroclaw, Poland.  The school is sponsored by the Association for Constraint Programming and will be organized by the Institute of Computer Science University of Wroclaw, Poland,<a href="http://www.ii.uni.wroc.pl/en"> http://www.ii.uni.wroc.pl/en</a>.  The subject of the school will be the theory and practice of constraint programming.</p>
<h3>Speakers</h3>
<p><em>Andrei Bulatov</em> (Constraints: Counting and Approximation)<br />
Simon Fraser University, Burnaby, Canada</p>
<p><em>Witold Charatonik </em>(Set constraints)<br />
Wroclaw University, Poland</p>
<p><em>Agostino Dovier </em>(Constraint programming and biology)<br />
University of Udine, Italy</p>
<p><em>Willem Jan van Hoeve</em> (Operations Research techniques in constraint programming)<br />
Carnegie Mellon University, Pittsburgh, USA</p>
<p><em>Peter Jeavons </em>(Constraints and complexity)<br />
University of Oxford, UK</p>
<p><em>Michele Lombardi</em> (Resource allocation and scheduling)<br />
University of Bologna, Italy</p>
<h3>Registration costs</h3>
<p>until July 15th: 300 Euro<br />
after July 15th: 400 Euro</p>
<p>The registration costs include lunches and school material.</p>
<h3>Organizers</h3>
<p><em>Krzysztof Apt </em>(CWI and University of Amsterdam, The Netherlands)<br />
<em>Witold Charatonik</em> (Wroclaw University, Poland)<br />
<em>Leszek Pacholski</em> (Wroclaw University, Poland)</p>
<h3>Local information</h3>
<p>Wroclaw is a city of more than 600 thousand inhabitants, rich in history and in monuments, see <a href="http://en.wikipedia.org/wiki/Wroclaw">http://en.wikipedia.org/wiki/Wroclaw</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/03/2012-acp-summer-school-in-constraint-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FLOPS 2012 &#8211; Call for Participation</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/03/flops-2012-call-for-participation/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/03/flops-2012-call-for-participation/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 10:02:59 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[Asyncronous News]]></category>
		<category><![CDATA[Call for Participation]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=1909</guid>
		<description><![CDATA[FLOPS 2012, May 23-25, Kobe, Japan - call for participation. Communciated by Tom Schrijvers]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><strong>Call for Participation</strong><strong><br />
</strong></p>
<p style="text-align: center;"><strong>Eleventh International Symposium on Functional and Logic Programming (FLOPS 2012)</strong><br />
May 23-25, 2012 Kobe, Japan</p>
<p style="text-align: center;">[<a href="http://www.org.kobe-u.ac.jp/flops2012/">http://www.org.kobe-u.ac.jp/flops2012/</a>]</p>
<p style="text-align: center;">Early Registration Payment Due: April 25 (Wed)</p>
<p>FLOPS is a forum for research on all issues concerning declarative programming, including functional programming and logic programming, and aims to promote cross-fertilization and integration between the two paradigms. Previous FLOPS meetings were held in Fuji Susono (1995), Shonan Village (1996), Kyoto (1998), Tsukuba (1999), Tokyo (2001), Aizu (2002), Nara (2004), Fuji Susono (2006), Ise (2008), and Sendai (2010).</p>
<p><strong>Topics</strong><br />
FLOPS solicits original papers in all areas of functional and logic programming, including (but not limited to):</p>
<ul>
<li> Declarative Pearls: new and excellent declarative programs with illustrative applications.</li>
<li> Language issues: language design and constructs, programming methodology, integration of paradigms, interfacing with other languages, type systems, constraints, concurrency and distributed computing.</li>
<li> Foundations: logic and semantics, rewrite systems and narrowing, type theory, proof systems.</li>
<li> Implementation issues: compilation techniques, memory management, program analysis and transformation, partial evaluation, parallelism.</li>
<li> Applications: case studies, real-world applications, graphical user interfaces, Internet applications, XML, databases, formal methods and model checking.</li>
</ul>
<p>The proceedings will be published as LNCS 7294.</p>
<p><strong>Venue</strong></p>
<p>Conference venue (Takikawa Memorial Hall) is located in the Rokkodai Campus of Kobe University.</p>
<p>Takikawa Memorial Hall, Kobe University, 1-1 Rokkodai-cho, Nada-ku, Kobe 657-8501 Japan.</p>
<p>Free shuttle bus will be available for symposium attendees between the FLOPS 2012 main hotel located in Sannomiya area and the conference venue.</p>
<p><strong>Registration</strong></p>
<p>The registration should be made from the FLOPS 2012 web site.</p>
<p>Category   Early        Regular      On-site<br />
Standard   30,000 JPY   40,000 JPY   50,000 JPY<br />
Student    20,000 JPY   30,000 JPY   40,000 JPY</p>
<ul>
<li>JPY stands for Japanese Yen (100 JPY is roughly equal to 1.23 USD and 0.93 EUR on March 6th).</li>
<li>Early Registration Payment Due: April 25 (Wed), 2012 24:00 JST (GMT+9). Payment of the registration should be completed before the due date.</li>
<li>Regular Registration Payment Due: May 9 (Wed), 2012 24:00 JST (GMT+9). Payment of the registration should be completed before the due date.</li>
<li>On-site registration: After May 9, please make a payment of the registration fee at the reception of the conference.  We accept cash only.</li>
<li>NO REFUND will be made for cancellation after May 10, 2012 00:00 JST (GMT+9).</li>
<li>The followings are included in the registration fee.</li>
<li>One copy of the FLOPS 2012 proceedings</li>
<li>Excursion fee for one person</li>
<li>Banquette fee for one person</li>
</ul>
<p><strong>Accommodation</strong></p>
<p>Several hotels in Sannomiya area will be offered at the FLOPS 2012 registration site.<br />
The price ranges between 7,500 JPY to 11,025 JPY per night for single room.</p>
<p><strong>Transportation</strong></p>
<p>Kansai International Airport (KIX) is the most convenient airport getting to Kobe from abroad.<br />
There is a limousine bus from KIX to Kobe Sannomiya departing every 20 minutes.<br />
It takes about 75 minutes and costs 3,000 JPY for a round trip.</p>
<p><strong>Schedule</strong></p>
<p>The following is a tentative schedule of the symposium.</p>
<p>Date                   Time   Program<br />
&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
May 23 (Wed)   09:00&#8211;10:00   Registration<br />
10:00&#8211;11:30   Technical sessions<br />
11:30&#8211;13:00   Lunch<br />
13:00&#8211;17:30   Technical sessions<br />
&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
May 24 (Thu)   09:00&#8211;11:30   Technical sessions<br />
11:30&#8211;13:00   Lunch<br />
13:00&#8211;14:00   Technical sessions<br />
14:00&#8211;20:30   Excursion and Banquette<br />
&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
May 25 (Fri)   09:00&#8211;11:30   Technical sessions<br />
11:30&#8211;13:00   Lunch<br />
13:00&#8211;17:00   Technical sessions</p>
<p>The 23rd International Conference on Rewriting Techniques and<br />
Applications (RTA 2012) and satellite workshops including WFLP 2012<br />
will be held in the week after FLOPS at Nagoya, Japan.</p>
<p><strong>Invited Speakers</strong></p>
<p>- Tachio Terauchi (Graduate School of Information Science, Nagoya University).<br />
Automated Verification of Higher-order Functional Programs<br />
- Michael Codish (Department of Computer Science, Ben-Gurion University of the Negev).<br />
Programming with Boolean Satisfaction<br />
- Stephanie Weirich (School of Engineering and Applied Science, University of Pennsylvania).<br />
Dependently-typed programming in GHC</p>
<p><strong>Accepted Papers</strong></p>
<p>- Akimasa Morihata.<br />
Calculational Developements of New Parallel Algorithms for Size-constrained Maximum-Sum Segment Problems<br />
- Rafael Caballero, Yolanda GarcÃ­a-Ruiz and Fernando Saenz-Perez.<br />
Declarative Debugging of Wrong and Missing Answers for SQL Views<br />
- Gerlof Bouma.<br />
Real-time Persistent Queues and Deques with Logic Variables<br />
- Kristoffer Rose, Lionel Villard and Naoto Sato.<br />
A Data Flow Calculus for Hybrid Query and Programming Languages<br />
- Makoto Hamana.<br />
Constructing Correct Looping Arrows from Cyclic Terms: Traced Categorical Interpretation in Haskell<br />
- Sergio Antoy and Arthur Peters.<br />
Compiling a Functional Logic Language<br />
- Yoshihiro Tobita, Takeshi Tsukada and Naoki Kobayashi.<br />
Exact Flow Analysis by Higher-Order Model Checking<br />
- Yoichi Hirai.<br />
A Lambda Calculus for Goedel-Dummett Logic Capturing Waitfreedom<br />
- Dariusz Biernacki and SergueÃ¯ Lenglet.<br />
Normal Form Bisimulations for Delimited-Control Operators<br />
- Sonia Estévez-Martín, Jesus Correas Fernandez and Fernando Saenz-Perez.<br />
Extending the TOY System with the ECLIPSE Solver over Sets of Integers<br />
- Pablo Chico De Guzmán, Manuel Carro, Manuel Hermenegildo and Peter Stuckey.<br />
A General Implementation Framework for TCLP<br />
- Asami Tanaka and Yukiyoshi Kameyama.<br />
A Call-by-Name CPS Hierarchy<br />
- Jael Kriener and Andy King.<br />
Mutual Exclusion by Interpolation<br />
- Beniamino Accattoli and Luca Paolini.<br />
Call-by-value solvability, revisited<br />
- Neda Saeedloei and Gopal Gupta.<br />
Coinductive Constraint Logic Programming<br />
- Zena Ariola, Paul Downen, Hugo Herbelin, Keiko Nakata and Alexis Saurin.<br />
Classical call-by-need sequent calculi: The unity of semantic artifacts<br />
- Tarmo Uustalu.<br />
Explicit binds: effortless efficiency with and without trees<br />
- Neil Toronto and Jay McCarthy.<br />
Computing in Cantor&#8217;s Paradise With Lambda-ZFC<br />
- Oleg Lobachev.<br />
Parallel Computation Skeletons with Premature Termination Property<br />
- Markus Triska.<br />
The Finite Domain Constraint Solver of SWI-Prolog<br />
- Ignacio Castiñeiras and Fernando Sáenz-Pérez<br />
Improving the Performance of FD Constraint Solving in a CFLP System<br />
- Oleg Kiselyov.<br />
Iteratees: System Description</p>
<p><strong>PC co-Chairs</strong></p>
<p>- Tom Schrijvers (Ghent University, Belgium)<br />
- Peter Thiemann (University of Freiburg, Germany)</p>
<p><strong>PC Members</strong></p>
<p>- Salvador Abreu (University of Evora, Portugal)<br />
- Thorsten Altenkirch (University of Nottingham, UK)<br />
- Sebastian Brand (NICTA, Australia)<br />
- Giuseppe Castagna (CNRS Univ Paris 7, France)<br />
- Sebastian Fischer (Germany)<br />
- Marco Gavanelli (University of Ferrara, Italy)<br />
- Joxan Jaffar (National University of Singapore, Singapore)<br />
- Barry Jay (University of Sydney, Australia)<br />
- Andy King (University of Kent, UK)<br />
- Claude Kirchner (INRIA, France)<br />
- Neelakantan R. Krishnaswami (Microsoft Cambridge, UK)<br />
- Yulya Lierler (University of Kentucky, USA)<br />
- Keiko Nakata (Tallinn University of Technology, Estonia)<br />
- Peter Schneider-Kamp (University of Southern Denmark, Denmark)<br />
- Olin Shivers (Northeastern University, USA)<br />
- Paul Tarau (University of Northern Texas, USA)<br />
- Kazunori Ueda (Waseda University, Japan)<br />
- Meng Wang (Chalmers Technical University, Sweden)</p>
<p><strong>General Chair and Local co-Chairs</strong></p>
<p>- Naoyuki Tamura (Kobe University, Japan)<br />
- Mutsunori Banbara (Kobe University, Japan)<br />
- Katsutoshi Hirayama (Kobe University, Japan)</p>
<p><strong>Sponsors</strong></p>
<p>- Japan Society for Software Science and Technology (JSSST) SIGPPL<br />
- Information Science and Technology Center, Kobe University</p>
<p><strong>In Cooperation with</strong></p>
<p>- ACM SIGPLAN<br />
- Asian Association for Foundation of Software (AAFS)<br />
- Association for Logic Programming (ALP)<strong></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/03/flops-2012-call-for-participation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ISO Prolog new document</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/03/iso-prolog-new-document/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/03/iso-prolog-new-document/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 10:59:27 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[Asyncronous News]]></category>
		<category><![CDATA[Community News]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=1882</guid>
		<description><![CDATA[Communicated by Jonathan Hodgson]]></description>
			<content:encoded><![CDATA[<p>By <strong>Jonathan Hodgson</strong><br />
Saint Joseph&#8217;s University,Philadelphia PA</p>
<p>WG 17 is pleased to announce that the second Technical Corrigendum for Prolog Part 1, ISO/IEC 13211-1:1995/Cor.2:2012(E) was been published 2012-02-15.  The document is available free of charge from your national member body or directly from ISO:</p>
<p><a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=58033">http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=58033</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/03/iso-prolog-new-document/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ICLP2012 &#8211; Extended Deadline</title>
		<link>http://www.cs.nmsu.edu/ALP/2012/03/iclp2012-extended-deadline/</link>
		<comments>http://www.cs.nmsu.edu/ALP/2012/03/iclp2012-extended-deadline/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 10:54:02 +0000</pubDate>
		<dc:creator>Editors</dc:creator>
				<category><![CDATA[Asyncronous News]]></category>
		<category><![CDATA[Call for papers]]></category>

		<guid isPermaLink="false">http://www.cs.nmsu.edu/ALP/?p=1878</guid>
		<description><![CDATA[ICLP2012 - Budapest September 4-8, 2012. Extended Deadline: March 18 registration, March 25 Submission.]]></description>
			<content:encoded><![CDATA[<h2 style="text-align: center;">CALL FOR PAPERS</h2>
<h2 style="text-align: center;">28th International Conference on Logic Programming</h2>
<h2 style="text-align: center;">Budapest, Hungary, September 4-8, 2012</h2>
<h2 style="text-align: center;"><a href="http://www.cs.bme.hu/iclp2012/">http://www.cs.bme.hu/iclp2012/</a></h2>
<p><img class="aligncenter" title="Buda" src="http://www.cs.nmsu.edu/ALP/wp-content/uploads/2011/12/buda.jpg" alt="" width="800" /></p>
<h3>Important Dates</h3>
<ul>
<li><span style="color: #ff0000;">Workshop Proposals:			January 29, 2012</span></li>
<li>Paper registration (abstract):<span style="color: #ff0000;"> <span style="text-decoration: line-through;"> March 11, 2012</span><span style="font-size: large;"> <span style="color: #000000;">March 18, 2012</span></span><br />
</span></li>
<li>Submission deadline: <span style="text-decoration: line-through;"> </span><span style="color: #ff0000;"><span style="text-decoration: line-through;">March 18, 2012</span> </span><span style="font-size: large;">March 25, 2012</span></li>
<li>Notification to Authors (first round): <span style="color: #ff0000;"> <span style="text-decoration: line-through;">April 28, 2012</span> <span style="font-size: large;"><span style="color: #800000;">May 5, 2012</span></span><br />
</span></li>
<li>Notification to Authors (second round): 	June 10, 2012</li>
<li>Camera-ready LIPIcs copy due:           	June 10, 2012</li>
<li>Camera-ready TPLP copy due:     		July 1, 2012</li>
<li>Conference:                     		September 4-8, 2012</li>
</ul>
<p>The International Conference on Logic Programming is the premier  venue for presenting research in logic programming. ICLP 2012 will take  place in Budapest, honouring the important contribution that the  Hungarian logic programming community has given to this field. The ICLP  technical program will include presentations of accepted papers, invited  talks, advanced tutorials and panels, a special session on most  influential papers, the doctoral consortium, the programming contest,  and several workshops.  Contributions are sought in all areas of logic  programming, including but not restricted to:</p>
<ul>
<li> Theory: Semantic Foundations, Formalisms, Non-Monotonic Reasoning,    Knowledge Representation.</li>
<li>Implementation: Compilation, Memory Management, Virtual Machines,    Parallelism.</li>
<li>Environments: Program Analysis,  Transformation, Validation,    Verification, Debugging, Profiling, Testing.</li>
<li>Language Issues: Concurrency, Objects, Coordination, Mobility,  Higher    Order, Types, Modes, Assertions, Programming Techniques.</li>
<li>Related Paradigms: Abductive/Inductive/Constraint Logic Programming,    Answer-Set Programming.</li>
<li> Applications: Databases, Data Integration and Federation, Software     Engineering, Natural Language Processing, (Semantic) Web,    Agents,  Artificial Intelligence, Bioinformatics,  Declarative    Networking.</li>
</ul>
<p>There are four broad categories for submissions:</p>
<ol>
<li>technical papers describe technically sound, innovative      ideas that can advance the state of the art of logic programming;</li>
<li>application papers present real-world applications  of logic programming;</li>
<li>system and tool papers focus on the novelty, practicality, usability       and general availability of the systems and tools described; and</li>
<li>technical communications aim at describing recent developments,       new projects, and other materials that are not ready for publication       as standard papers.</li>
</ol>
<div id="post-1516">
<div>
<h3>General Chair</h3>
<p>Peter Szeredi (Budapest Univ. of Technology and Economics)</p>
<h3>Program Committee Chairs</h3>
<p>Agostino Dovier (Univ. of Udine)</p>
<p>Vitor Santos Costa (Univ. of Porto)</p>
<h3>Workshop Chair</h3>
<p>Mats Carlsson (SICS, Sweden)</p>
<h3>Doctoral Consortium Chairs</h3>
<p>Marco Gavanelli (Univ. of Ferrara)<br />
Stefan Woltran (T.U. Wien)</p>
<h3>Programming Contest</h3>
<p>Tom Schrijvers (Univ. of Gent)</p>
<h3>Publicity Chair</h3>
<p>Gergely Lukacsy (Cisco Systems Inc.)</p>
<h3>Web Manager</h3>
<p>Janos Csorba (Budapest Univ. of Technology and Economics)</p>
<h3>Program Committee</h3>
<p>Elvira Albert (U.C. Madrid)<br />
Sergio Antoy (Portland State Univ.)<br />
Marcello Balduccini (Kodak Res. Labs)<br />
Manuel Carro (U.P. Madrid)<br />
Michael Codish (Ben Gurion Univ.)<br />
Veronica Dahl (Simon Fraser Univ.)<br />
Marina De Vos (Univ. of Bath)<br />
Alessandro Dal Palu’ (Univ. of Parma)<br />
Bart Demoen (K.U. Leuven)<br />
Thomas Eiter (T.U. Wien)<br />
Esra Erdem (Sabanci Univ.)<br />
Thom Fruehwirth (Univ. of Ulm)<br />
Andrea Formisano (Univ. of Perugia)<br />
Maria Garcia de la Banda (Monash Univ.)<br />
Marco Gavanelli (Univ. of Ferrara)<br />
Hai-Feng Guo (Univ. of Nebraska, Omaha)<br />
Gopal Gupta (Univ. of Texas, Dallas)<br />
Katsumi Inoue (National Inst. of Informatics, Japan)<br />
Angelika Kimmig (K.U. Leuven)<br />
Joohyung Lee (Arizona State Univ.)<br />
Evelina Lamma (Univ. of Ferrara)<br />
Nicola Leone (Univ. of Calabria)<br />
Yuliya Lierler (Univ. of Kentucky)<br />
Boon Thau Loo (Univ. of Pennsylvania)<br />
Michael Maher (R.R.I., Sidney)<br />
Alessandra Mileo (DERI, Galway)<br />
Jose Morales (U.P. Madrid)<br />
Enrico Pontelli (New Mexico State Univ.)<br />
Gianfranco Rossi (Univ. of Parma)<br />
Beata Sarna-Starosta (Cambian, Vancouver)<br />
Torsten Schaub (Univ. of Potsdam)<br />
Tom Schrijvers (Univ. of Gent)<br />
Fernando Silva (Univ. of Porto)<br />
Tran Cao Son (New Mexico State Univ.)<br />
Terrance Swift (Univ. Nova de Lisboa)<br />
Peter Szeredi (Budapest Univ. of Tech.)<br />
Francesca Toni (I.C. London)<br />
Mirek Truszczynski (Univ. of Kentucky)<br />
German Vidal (U.P. of Valencia)<br />
Stefan Woltran (T.U. Wien)<br />
Neng-Fa Zhou (CUNY, New York)</p>
<p>For other information see Conference Web Site</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.cs.nmsu.edu/ALP/2012/03/iclp2012-extended-deadline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

