Towards Flexible Goal-Oriented Logic Programming

Total Page:16

File Type:pdf, Size:1020Kb

Towards Flexible Goal-Oriented Logic Programming FACULTY OF SCIENCES Towards Flexible Goal-Oriented Logic Programming ir. Benoit Desouter Dissertation submitted in partial fulfillment of the requirements for the degree of Doctor of Computer Science Supervisors: prof. dr. ir. Tom Schrijvers prof. dr. ir. Marko van Dooren Department of Applied Mathematics, Computer Science and Statistics Faculty of Sciences, Ghent University ii Acknowledgments As it feels more natural to thank people in the language that we have used on a daily basis during the journey towards completing this PhD thesis, I'll use Dutch for most of the next few pages. In de eerste plaats wil ik mijn promotoren Tom en Marko bedanken. Tom, bedankt voor het geduld als ik occasioneel iets maar half begreep, en om er altijd vertrouwen in te blijven hebben. Je hebt me heel wat kansen aangereikt, waardoor ik van heel wat onderwerpen iets heb opgestoken. Marko, hoewel je er pas halverwege bijkwam, toonde je al snel interesse voor het onderwerp en heb je er vanuit je eigen expertise heel wat aan toegevoegd. Je deur stond altijd voor me open als ik even een tussentijdse statusupdate wou geven. Bedankt voor de babbels over vanalles en nog wat, en om me grondig te betrekken bij het geven van Programmeren 1. Ik heb nog heel wat bijgeleerd over objec- tori¨entatie door jouw visie, slides en codevoorbeelden. Daarnaast ook bedankt om mijn lokale LATEX-goeroe te zijn: niettegenstaande ik LATEX al tien jaar lang gebruik, heb ik voor het precies goed krijgen van deze thesis heel wat nieuwe pakketten en trucjes moeten gebruiken, met regelmatig vreemde out- put of cryptische foutmeldingen tot gevolg die ik niet altijd alleen kon oplossen | of het zou me op zijn minst veel meer tijd gekost hebben. Ook wil ik graag Bart Demoen, Jan Wielemaker, Christophe Scholliers, Kris Coolsaet en Gunnar Brinkmann bedanken voor het grondig nalezen van mijn thesis en voor hun kritische feedback. In het bijzonder wil ik Bart bedanken voor zijn ondersteuning van hPro- log, het experimentele Prolog-systeem waarop ik zoveel heb gevloekt. Zon- der hProlog zou het meeste van deze thesis echter niet mogelijk geweest zijn. Meer dan eens heb je geduldig geantwoord op mijn emails met vragen over het iii iv \vreemde" gedrag van hProlog. Bedankt voor de stroom aan Prolog tips en WAM-expertise. Het is bijzonder leuk als je werk ook gebruikt wordt door iemand anders dan jezelf, en zeker als die persoon een alom gerespecteerde voortrekker is in dat gebied. Daarom wil ik Jan bedanken om onze implementatie van tabling te porten naar SWI-Prolog, de datastructuren te herschrijven in C en het geheel op te nemen in de offici¨ele development release. Daardoor heeft SWI- Prolog nu een experimentele tabling implementatie die stapsgewijs verbeterd kan worden. Het was heel onverwachts om zoveel positieve reacties te zien uit de SWI-Prolog community. Gunnar en Kris, bedankt om de administratie op jullie te nemen; ik weet dat dat niet altijd de leukste taak is. I would also like to thank LogicBlox, Inc. for giving us the ability to inves- tigate the integration of Datalog and constraint programming in their system. Ik heb heel graag gewerkt op de vakgroep WE02 omwille van de goede sfeer. De verzameling van TWISTers die ik moet bedanken is in de loop der jaren behoorlijk groot geworden. Om die verzameling te kunnen neerschrijven, heb ik noodgedwongen een volgorde moeten kiezen, hoewel ik dat liever niet had moeten doen. Op andere momenten in de tijd was de volgorde misschien anders geweest. Mezelf kennende, ben ik waarschijnlijk ook wel iemand onterecht vergeten, daarvoor al vast een sorry en dankjewel voor wie hieronder geen specifieke vermelding heeft, maar zich toch aangesproken voelt. Herman, ik had me geen betere bureaugenoot kunnen indenken. Merci voor de komische noot die nooit ver weg was, de ernst wanneer het nodig was en voor niet-ophoudende babbels over geeky en minder geeky onderwerpen. Lynn en Sofie, bedankt voor de vele aangename gesprekken, het aanhoren van mijn occasionele gezeur, en voor de inside jokes over het oprichten van een eigen vakgroep bestaande uit de mensen van de \vaagheid" en mezelf. Aan de wan- delzoektocht die we met ons drie hebben ondernomen op de personeelssportdag 2015, heb ik hele goede herinneringen. Lynn, bedankt om op de zonnige mei- dag toen Bart, Sofie en wij op het grasveld achter S9 zaten te werken (wegens de veel te warme bureaus), bij het zien van een eerdere versie van dit manu- script, spontaan suggesties te maken voor het verbeteren van mijn wiskundige notatie. Virginie, bedankt voor je enthousiasme, zowel bij badminton als op het werk, en voor het hart onder de riem wanneer ik daar nood aan had. Om gelijkaardige redenen een grote dankjewel voor het het een\man"spraesidium van onze niet-erkende \studentenvereniging": Catherine. Daarbovenop nog een dankjewel voor het organiseren van spelletjesavonden, weekendjes en der- gelijke. Je besefte van bij het begin als geen ander het belang van teambuilding en je slaagt er telkens opnieuw in om elke vreemde eend in de bijt zich al snel v thuis te laten voelen. Bij toekomstige organisaties zal ik zeker van de partij zijn; jullie zijn nog niet van mij af, beloofd! Charlotte, dankjewel voor bab- bels over verbouwingen, over je schattige dochtertje Emilina (bij de laatste aanpassing van dit dankwoord, ben je nog maar net bevallen van Jolan) en zoveel meer. Machteld en Jens, dankjewel voor het tweewekelijks reserveren van de badmintonpleintjes in het GUSB en voor goede babbels. Dieter en Bart, jullie waren als \de informatica-assistenten" best wel een voorbeeld voor mij. Bedankt daarvoor! Felix, ik ben er zeker van dat ook jij een voorbeel- dassistent zult zijn voor toekomstige collega's. Katia en Ann, de koffiepauzes waren voor mij de manier om even alle dagelijkse beslommeringen rond onder- zoek en onderwijs uit mijn hoofd te zetten. Bedankt om die momenten nog aangenamer te maken. Hilde, bedankt voor alle petten die jij droeg. Kris, om het er na zoveel keer inwrijven dat ik qua diploma een ingenieur ben, op je geheel eigen wijze toch je appreciatie voor me uit te drukken: bedankt! Glad, niet alleen tijdens je S9 tijd, maar telkens we elkaar op straat tegenkwamen, was je bereid je ervaring met me te delen. We hebben samen behoorlijk de draak gestoken met alles wat maar enigszins naar bureaucratie rook. Nico, ook uit jouw ervaring kon ik rijkelijk putten. Joyce en jij zijn bovendien fan- tastische TWIST-organisatoren en Minions! Micha¨el, officieel was je de peter van Herman, maar tijdens die eerste onzekere weken, nu 4 jaar geleden, deed je meer dan je best om ook mij op m'n gemak te stellen. Jean-Marie, Jan en Dominiek, jullie enthousiasme en inzet was aanstekelijk! Annick, Davy, Nico, Niels en Bert, voor het samen geven van en uitgebreid discussi¨eren over Programmeren 1. De cursus van vier jaar geleden lijkt in het niets meer op de cursus van vandaag; dat bracht vaak een hoop last minute werk en kinderziektes met zich mee, die we samen hebben aangepakt en over- wonnen. We hebben honderden studenten naar de eindmeet geleid. Annick, dankjewel voor het delen van pure onderwijservaring, je vele voorbereidings- werk in het weekend, en voor de aangename babbels tussenin! Ik keek altijd uit naar een les Programmeren 1. Davy, bedankt voor de technische hulpmid- delen waarmee we de uitdaging konden aangaan om eerstejaarsstudenten zo goed mogelijk de basis van objectori¨entatie bij te brengen. Ik bedoel natuurlijk Indianio en Capthook. Ook merci voor de luchtige insteek die bij jou nooit ver te zoeken was. Nico en Niels, steeds als ik weer eens dreigde bedolven te worden onder de berg oefeningen en bijhorende testen die we in de loop der jaren opgesteld en gewijzigd hebben, kon ik op jullie hulp rekenen. Sarah, je verdient een bijzondere vermelding voor je inspirerende persoon- lijkheid. Zelden heb ik iemand ontmoet met zo'n geduld, rustig, realistisch en supervriendelijk. Bedankt voor alle korte en langere topgesprekken, voor je verstandige opmerkingen en om me meer dan eens met m'n mond vol tanden vi te zetten. Al ben je dan al bijna twee jaar vol toewijding aan je doctoraat aan het schrijven, je blijft de verstandigste student aan wie ik ooit les heb mogen geven. Als halftime TWIST-er, halftime VIB-er en nog met een promotor in het verre Granada, heb je het misschien niet altijd even gemakkelijk, maar ik heb je niet ´e´enkeer horen klagen. Integendeel, je benadert alles vanuit je positieve maar kritische ingesteldheid. Aster, Cara en Malin (in alfabetische volgorde), ik ben behoorlijk trots op jullie; daarom kunnen jullie hier ook niet ontbreken. Tot slot wil ik ook mijn ouders bedanken voor alle goede zorgen en voor alle kansen. Jullie hebben me altijd gesteund, al snapten jullie vaak helemaal niks van wat ik aan het doen was, en jullie stonden ook altijd klaar voor me. Contents Acknowledgements iii 1 Introduction 1 1.1 The Purpose and Structure of this Dissertation . .5 1.2 Scientific Output . .7 2 Goal-directed Logic Programming 11 2.1 Introduction . 11 2.2 Vanilla Meta-Interpreter . 21 2.3 Definite Clause Grammars . 22 2.4 Nonbacktrackable Variables and Mutation . 23 2.4.1 Global Nonbacktrackable Variables . 24 2.4.2 Nonbacktrackable Mutation . 25 3 Modular Search 27 3.1 Introduction . 27 3.2 Problem Statement . 28 3.2.1 Problems with this Approach . 29 3.2.2 Current Solutions . 30 3.3 Solution Overview . 31 3.3.1 User Perspective . 31 3.3.2 Modularity Aspects . 33 3.4 Search Method Library . 36 3.4.1 Discrepancy-Bounded Search . 36 3.4.2 Iterative Deepening .
Recommended publications
  • Answer Set Programming: a Tour from the Basics to Advanced Development Tools and Industrial Applications
    Answer Set Programming: A tour from the basics to advanced development tools and industrial applications Nicola Leone and Francesco Ricca Department of Mathematics and Computer Science, University of Calabria, Italy leone,ricca @mat.unical.it { } Abstract. Answer Set Programming (ASP) is a powerful rule-based language for knowledge representation and reasoning that has been developed in the field of logic programming and nonmonotonic reasoning. After more than twenty years from the introduction of ASP, the theoretical properties of the language are well understood and the solving technology has become mature for practical appli- cations. In this paper, we first present the basics of the ASP language, and we then concentrate on its usage for knowledge representation and reasoning in real- world contexts. In particular, we report on the development of some industry-level applications with the ASP system DLV, and we illustrate two advanced develop- ment tools for ASP, namely ASPIDE and JDLV, which speed-up and simplify the implementation of applications. 1 Introduction Answer Set Programming (ASP) [11, 19, 30] is a powerful rule-based language for knowledge representation and reasoning that has been developed in the field of logic programming and nonmonotonic reasoning. ASP features disjunction in rule heads, non monotonic negation in rule bodies [30], aggregate atoms [16] for concise mod- eling of complex combinatorial problems, and weak constraints [12] for the declarative encoding of optimization problems. Computational problems, even of high complexity [19], can be solved in ASP by specifying a logic program, i.e., a set of logic rules, such that its answer sets correspond to solutions, and then, using an answer set solver to find such solutions [38, 34].
    [Show full text]
  • The Design and Implementation of Object-Constraint Programming
    Felgentreff, The Design and Implementation of Object-Constraint Programming The Design and Implementation of Object-Constraint Programming von Tim Felgentreff Dissertation zur Erlangung des akademischen Grades des Doktor der Naturwissenschaften (Doctor rerum naturalium) vorgelegt der Mathematisch-Naturwissenschaftlichen Fakultät der Universität Potsdam. Betreuer Prof. Dr. Robert Hirschfeld Fachgebiet Software-Architekturen Hasso-Plattner-Institut Universität Potsdam 21. April 2017 Erklärung Hiermit erkläre ich an Eides statt, dass ich die vorliegende Dissertation selbst angefertigt und nur die im Literaturverzeichnis aufgeführten Quellen und Hilfsmittel verwendet habe. Diese Dissertation oder Teile davon wurden nicht als Prüfungsarbeit für eine staatliche oder andere wissenschaftliche Prüfung eingereicht. Ich versichere weiterhin, dass ich diese Arbeit oder eine andere Abhandlung nicht bei einer anderen Fakultät oder einer anderen Universität eingereicht habe. Potsdam, den 21. April 2017 Tim Felgentreff v Abstract Constraints allow developers to specify properties of systems and have those properties be main- tained automatically. This results in compact declarations to describe interactive applications avoid- ing scattered code to check and imperatively re-satisfy invariants in response to user input that perturbs the system. Constraints thus provide flexibility and expressiveness for solving complex problems and maintaining a desired system state. Despite these advantages, constraint program- ming is not yet widespread, with imperative programming still being the norm. There is a long history of research on constraint programming as well as its integration with general purpose programming languages, especially from the imperative paradigm. However, this integration typically does not unify the constructs for encapsulation and abstraction from both paradigms and often leads to a parallel world of constraint code fragments and abstractions inter- mingled with the general purpose code.
    [Show full text]
  • Complexity Results for Probabilistic Answer Set Programming
    International Journal of Approximate Reasoning 118 (2020) 133–154 Contents lists available at ScienceDirect International Journal of Approximate Reasoning www.elsevier.com/locate/ijar Complexity results for probabilistic answer set programming ∗ Denis Deratani Mauá a, , Fabio Gagliardi Cozman b a Institute of Mathematics and Statistics, Universidade de São Paulo, Brazil b Escola Politécnica, Universidade de São Paulo, Brazil a r t i c l e i n f o a b s t r a c t Article history: We analyze the computational complexity of probabilistic logic programming with Received 16 May 2019 constraints, disjunctive heads, and aggregates such as sum and max. We consider Received in revised form 25 October 2019 propositional programs and relational programs with bounded-arity predicates, and look Accepted 9 December 2019 at cautious reasoning (i.e., computing the smallest probability of an atom over all Available online 16 December 2019 probability models), cautious explanation (i.e., finding an interpretation that maximizes the Keywords: lower probability of evidence) and cautious maximum-a-posteriori (i.e., finding a partial Probabilistic logic programming interpretation for a set of atoms that maximizes their lower probability conditional on Answer set programming evidence) under Lukasiewicz’s credal semantics. Computational complexity © 2019 Elsevier Inc. All rights reserved. 1. Introduction Probabilities and logic programming have been combined in a variety of ways [1–8]. A particularly interesting and power- ful combination is offered by probabilistic answer set programming, which exploits the powerful knowledge representation and problem solving toolset of answer set programming [9]. Available surveys describe probabilistic logic programming in detail and go over many promising applications [10–13].
    [Show full text]
  • Answer Set Programming: a Primer?
    Answer Set Programming: A Primer? Thomas Eiter1, Giovambattista Ianni2, and Thomas Krennwallner1 1 Institut fur¨ Informationssysteme, Technische Universitat¨ Wien Favoritenstraße 9-11, A-1040 Vienna, Austria feiter,[email protected] 2 Dipartimento di Matematica, Universita´ della Calabria, I-87036 Rende (CS), Italy [email protected] Abstract. Answer Set Programming (ASP) is a declarative problem solving para- digm, rooted in Logic Programming and Nonmonotonic Reasoning, which has been gaining increasing attention during the last years. This article is a gentle introduction to the subject; it starts with motivation and follows the historical development of the challenge of defining a semantics for logic programs with negation. It looks into positive programs over stratified programs to arbitrary programs, and then proceeds to extensions with two kinds of negation (named weak and strong negation), and disjunction in rule heads. The second part then considers the ASP paradigm itself, and describes the basic idea. It shows some programming techniques and briefly overviews Answer Set solvers. The third part is devoted to ASP in the context of the Semantic Web, presenting some formalisms and mentioning some applications in this area. The article concludes with issues of current and future ASP research. 1 Introduction Over the the last years, Answer Set Programming (ASP) [1–5] has emerged as a declar- ative problem solving paradigm that has its roots in Logic Programming and Non- monotonic Reasoning. This particular way of programming, in a language which is sometimes called AnsProlog (or simply A-Prolog) [6, 7], is well-suited for modeling and (automatically) solving problems which involve common sense reasoning: it has been fruitfully applied to a range of applications (for more details, see Section 6).
    [Show full text]
  • Functional and Logic Programming - Wolfgang Schreiner
    COMPUTER SCIENCE AND ENGINEERING - Functional and Logic Programming - Wolfgang Schreiner FUNCTIONAL AND LOGIC PROGRAMMING Wolfgang Schreiner Research Institute for Symbolic Computation (RISC-Linz), Johannes Kepler University, A-4040 Linz, Austria, [email protected]. Keywords: declarative programming, mathematical functions, Haskell, ML, referential transparency, term reduction, strict evaluation, lazy evaluation, higher-order functions, program skeletons, program transformation, reasoning, polymorphism, functors, generic programming, parallel execution, logic formulas, Horn clauses, automated theorem proving, Prolog, SLD-resolution, unification, AND/OR tree, constraint solving, constraint logic programming, functional logic programming, natural language processing, databases, expert systems, computer algebra. Contents 1. Introduction 2. Functional Programming 2.1 Mathematical Foundations 2.2 Programming Model 2.3 Evaluation Strategies 2.4 Higher Order Functions 2.5 Parallel Execution 2.6 Type Systems 2.7 Implementation Issues 3. Logic Programming 3.1 Logical Foundations 3.2. Programming Model 3.3 Inference Strategy 3.4 Extra-Logical Features 3.5 Parallel Execution 4. Refinement and Convergence 4.1 Constraint Logic Programming 4.2 Functional Logic Programming 5. Impacts on Computer Science Glossary BibliographyUNESCO – EOLSS Summary SAMPLE CHAPTERS Most programming languages are models of the underlying machine, which has the advantage of a rather direct translation of a program statement to a sequence of machine instructions. Some languages, however, are based on models that are derived from mathematical theories, which has the advantages of a more concise description of a program and of a more natural form of reasoning and transformation. In functional languages, this basis is the concept of a mathematical function which maps a given argument values to some result value.
    [Show full text]
  • Constraint Programming and Operations Research
    Noname manuscript No. (will be inserted by the editor) Constraint Programming and Operations Research J. N. Hooker and W.-J. van Hoeve November 2017 Abstract We present an overview of the integration of constraint program- ming (CP) and operations research (OR) to solve combinatorial optimization problems. We interpret CP and OR as relying on a common primal-dual solution approach that provides the basis for integration using four main strategies. The first strategy tightly interweaves propagation from CP and relaxation from OR in a single solver. The second applies OR techniques to domain filtering in CP. The third decomposes the problem into a portion solved by CP and a portion solved by OR, using CP-based column generation or logic-based Benders decomposition. The fourth uses relaxed decision diagrams developed for CP propagation to help solve dynamic programming models in OR. The paper cites a significant fraction of the literature on CP/OR integration and concludes with future perspectives. Keywords Constraint Programming, Operations Research, Hybrid Optimization 1 Introduction Constraint programming (CP) and operations research (OR) have the same overall goal. They strive to capture a real-world situation in a mathematical model and solve it efficiently. Both fields use constraints to build the model, often in conjunction with an objective function to evaluate solutions. It is therefore only natural that the two fields join forces to solve problems. J. N. Hooker Carnegie Mellon University, Pittsburgh, USA E-mail: [email protected] W.-J. van Hoeve Carnegie Mellon University, Pittsburgh, USA E-mail: [email protected] 2 J. N.
    [Show full text]
  • Chapter 1 GLOBAL CONSTRAINTS and FILTERING ALGORITHMS
    Chapter 1 GLOBAL CONSTRAINTS AND FILTERING ALGORITHMS Jean-Charles R´egin ILOG 1681, route des Dolines, Sophia Antipolis, 06560 Valbonne, France [email protected] Abstract Constraint programming (CP) is mainly based on filtering algorithms; their association with global constraints is one of the main strengths of CP. This chapter is an overview of these two techniques. Some of the most frequently used global constraints are presented. In addition, the filtering algorithms establishing arc consistency for two useful con- straints, the alldiff and the global cardinality constraints, are fully de- tailed. Filtering algorithms are also considered from a theoretical point of view: three different ways to design filtering algorithms are described and the quality of the filtering algorithms studied so far is discussed. A categorization is then proposed. Over-constrained problems are also mentioned and global soft constraints are introduced. Keywords: Global constraint, filtering algorithm, arc consistency, alldiff, global car- dinality constraint, over-constrained problems, global soft constraint, graph theory, matching. 1. Introduction A constraint network (CN) consists of a set of variables; domains of possible values associated with each of these variables; and a set of con- straints that link up the variables and define the set of combinations of values that are allowed. The search for an instantiation of all vari- ables that satisfies all the constraints is called a Constraint Satisfaction Problem (CSP), and such an instantiation is called a solution of a CSP. A lot of problems can be easily coded in terms of CSP. For instance, CSP has already been used to solve problems of scene analysis, place- 1 2 ment, resource allocation, crew scheduling, time tabling, scheduling, fre- quency allocation, car sequencing, and so on.
    [Show full text]
  • Answer Set Programming
    ANSWER SET PROGRAMMING Tran Cao Son Department of Computer Science New Mexico State University Las Cruces, NM 88011, USA [email protected] http://www.cs.nmsu.edu/~tson October 2005 Answer Set Programming. Acknowledgement This tutorial contains some materials from tutorials on answer set programming and on knowledge representation and logic programming from those provided by • Chitta Baral, available at www.public.asu.edu/~cbaral. • Michael Gelfond, available at www.cs.ttu.ued/~mgelfond. Tran Cao Son 1 Answer Set Programming. Introduction — Answer Set Programming Answer set programming is a new programming paradigm. It is introduced in the late 90’s and manages to attracts the intention of different groups of researchers thanks to its: • declarativeness: programs do not specify how answers are computed; • modularity: programs can be developed incrementally; • expressiveness: answer set programming can be used to solve problems in high 2 complexity classes (e.g. ΣP , Π2P , etc.) Answer set programming has been applied in several areas: reasoning about actions and changes, planning, configuration, wire routing, phylogenetic inference, semantic web, information integration, etc. Tran Cao Son 2 Answer Set Programming. Purpose • Introduce answer set programming • Provide you with some initial references, just in case • ...you get excited about answer set programming Tran Cao Son 3 Answer Set Programming. Outline • Foundation of answer set programming: logic programming with answer set semantics (syntax, semantics, early application). • Answer set programming: general ideas and examples • Application of answer set programming in – Knowledge representation – Constraint satisfaction problem – Combinatoric problems – Reasoning about action and change – Planning and diagnostic reasoning • Current issues Tran Cao Son 4 LOGIC PROGRAMMING AND ANSWER SET SEMANTICS Answer Set Programming.
    [Show full text]
  • A Meta-Programming Technique for Debugging Answer-Set Programs∗
    A Meta-Programming Technique for Debugging Answer-Set Programs∗ Martin Gebser1, Jorg¨ Puhrer¨ 2, Torsten Schaub1, and Hans Tompits2 1 Institut fur¨ Informatik, Universitat¨ Potsdam, Germany, {gebser,torsten}@cs.uni-potsdam.de 2 Institut fur¨ Informationssysteme 184/3, Technische Universitat¨ Wien, Austria, {puehrer,tompits}@kr.tuwien.ac.at Abstract applying such an approach to ASP results in some deci- sive drawbacks, undermining the declarativity of answer- Answer-set programming (ASP) is widely recognised as a vi- able tool for declarative problem solving. However, there is set semantics. In particular, establishing canonical tracing- currently a lack of tools for developing answer-set programs. based techniques for debugging answer-set programs re- In particular, providing tools for debugging answer-set pro- quires also a canonical procedure for answer-set computa- grams has recently been identified as a crucial prerequisite tion, and programmers would have to be familiar with the al- for a wider acceptance of ASP. In this paper, we introduce a gorithm. This would lead to a shift of perspectives in which meta-programming technique for debugging in ASP. The ba- an answer-set program is degraded from a declarative prob- sic question we address is why interpretations expected to be lem description to a set of parameters for a static solving answer sets are not answer sets of the program to debug. We algorithm. Therefore, we argue for declarative debugging thus deal with finding semantical errors of programs. The ex- strategies that are independent of answer-set computation. planations provided by our method are based on an intuitive Indeed, among the few approaches dealing with debug- scheme of errors that relies on a recent characterisation of the answer-set semantics.
    [Show full text]
  • Belgium a Logic Meta-Programming Framework for Supporting The
    Vrije Universiteit Brussel - Belgium Faculty of Sciences In Collaboration with Ecole des Mines de Nantes - France 2003 ERSITEIT IV B N R U U S E S J I E R L V S C S I E A N R B T E IA N VIN TE CERE ECOLE DES MINES DE NANTES A Logic Meta-Programming Framework for Supporting the Refactoring Process A Thesis submitted in partial fulfillment of the requirements for the degree of Master of Science in Computer Science (Thesis research conducted in the EMOOSE exchange) By: Francisca Mu˜nozBravo Promotor: Prof. Dr. Theo D’Hondt (Vrije Universiteit Brussel) Co-Promotors: Dr. Tom Tourw´eand Dr. Tom Mens (Vrije Universiteit Brussel) Abstract The objective of this thesis is to provide automated support for recognizing design flaws in object oriented code, suggesting proper refactorings and performing automatically the ones selected by the user. Software suffers from inevitable changes throughout the development and the maintenance phase, and this usually affects its internal structure negatively. This makes new changes diffi- cult to implement and the code drifts away from the original design. The introduced structural disorder can be countered by applying refactorings, a kind of code transformation that improves the internal structure without affecting the behavior of the application. There are several tools that support applying refactorings in an automated way, but little help for deciding where to apply a refactoring and which refactoring could be applied. This thesis presents an advanced refactoring tool that provides support for the earlier phases of the refactoring process, by detecting and analyzing bad code smells in a software application, proposing appropriate refactorings that solve these smells, and letting the user decide which one to apply.
    [Show full text]
  • Prolog Lecture 6
    Prolog lecture 6 ● Solving Sudoku puzzles ● Constraint Logic Programming ● Natural Language Processing Playing Sudoku 2 Make the problem easier 3 We can model this problem in Prolog using list permutations Each row must be a permutation of [1,2,3,4] Each column must be a permutation of [1,2,3,4] Each 2x2 box must be a permutation of [1,2,3,4] 4 Represent the board as a list of lists [[A,B,C,D], [E,F,G,H], [I,J,K,L], [M,N,O,P]] 5 The sudoku predicate is built from simultaneous perm constraints sudoku( [[X11,X12,X13,X14],[X21,X22,X23,X24], [X31,X32,X33,X34],[X41,X42,X43,X44]]) :- %rows perm([X11,X12,X13,X14],[1,2,3,4]), perm([X21,X22,X23,X24],[1,2,3,4]), perm([X31,X32,X33,X34],[1,2,3,4]), perm([X41,X42,X43,X44],[1,2,3,4]), %cols perm([X11,X21,X31,X41],[1,2,3,4]), perm([X12,X22,X32,X42],[1,2,3,4]), perm([X13,X23,X33,X43],[1,2,3,4]), perm([X14,X24,X34,X44],[1,2,3,4]), %boxes perm([X11,X12,X21,X22],[1,2,3,4]), perm([X13,X14,X23,X24],[1,2,3,4]), perm([X31,X32,X41,X42],[1,2,3,4]), perm([X33,X34,X43,X44],[1,2,3,4]). 6 Scale up in the obvious way to 3x3 7 Brute-force is impractically slow There are very many valid grids: 6670903752021072936960 ≈ 6.671 × 1021 Our current approach does not encode the interrelationships between the constraints For more information on Sudoku enumeration: http://www.afjarvis.staff.shef.ac.uk/sudoku/ 8 Prolog programs can be viewed as constraint satisfaction problems Prolog is limited to the single equality constraint: – two terms must unify We can generalise this to include other types of constraint Doing so leads
    [Show full text]
  • Integrating Answer Set Programming and Constraint Logic Programming
    Integrating Answer Set Programming and Constraint Logic Programming Veena S. Mellarkod and Michael Gelfond and Yuanlin Zhang {veena.s.mellarkod,mgelfond,yzhang}@cs.ttu.edu Texas Tech University Dedicated to Victor Marek on his 65th birthday as a specification for the sets of beliefs to be held by a ra- tional reasoner associated with Π. Such sets, called an- Abstract swer sets of Π, are represented by collections of ground literals. A rule (1) is viewed as a constraint which says We introduce a knowledge representation language that if literals lk+1, . , ln belong to an answer set A of AC(C) extending the syntax and semantics of ASP Π and none of the literals ln+1, . , lm belong to A then and CR-Prolog, give some examples of its use, and A must contain at least one of the literals l , . , l . To present an algorithm, ACsolver, for computing answer 1 k sets of AC(C) programs. The algorithm does not re- form answer sets of Π, the reasoner must satisfy Π’s quire full grounding of a program and combines “clas- rules together with the rationality principle which says: sical” ASP solving methods with constraint logic pro- “Believe nothing you are not forced to believe”. gramming techniques and CR-Prolog based abduction. The AC(C) based approach often allows to solve prob- Given a computational problem P , an ASP programmer lems which are impossible to solve by more traditional • Expresses information relevant to the problem in the ASP solving techniques. We belief that further inves- language of ASP; tigation of the language and development of more effi- cient and reliable solvers for its programs can help to • Reduces P to a query Q requesting computation of substantially expand the domain of applicability of the (parts of) answer sets of Π.
    [Show full text]