Two of the most frequently used programming languages in teaching Artificial Intelligence (AI) are declarative. Many undergraduates have difficulty in making the transition from the procedural programming language lea...
详细信息
Two of the most frequently used programming languages in teaching Artificial Intelligence (AI) are declarative. Many undergraduates have difficulty in making the transition from the procedural programming language learned in their early years in college to the declarative programming paradigm used in the AI course. This paper presents a methodology that supports declarative programming in an AI course by using analogy. Several classroom examples are presented along with the analogous out of class assignments.
We present a logical and semantic framework for diagnosing wrong computed answers in CFLP(D), a newly proposed generic scheme for lazy Constraint Functional Logic programming which can be instantiated by any constrain...
详细信息
We present a logical and semantic framework for diagnosing wrong computed answers in CFLP(D), a newly proposed generic scheme for lazy Constraint Functional Logic programming which can be instantiated by any constraint domain D given as parameter, and supports a powerful combination of functional and constraint logic programming over D. Our approach extends and combines declarative debugging techniques previously developed for less expressive programming paradigms, namely the CLP(D) scheme and lazy functional logic languages. Debugging starts with the observation of a wrong computed answer which the user regards as incorrect w.r.t. an intended model that provides a declarative description of the program's semantics. Debugging proceeds by exploring an abridged proof tree that provides a purely declarative view of the computation, so that the user does not need to understand the complex underlying operational mechanisms. Debugging ends with the detection of a function rule in the program that is incorrect w.r.t. the intended model. We prove the logical correctness of the debugging method for any sound CFLP(D)system whose computed answers are logical consequences of the program, and we describe a practical tool which implements the debugging method for the domain of arithmetic constraints over the real numbers.
Massive deployments of devices across all kinds of environments pose the need for engineering their collaborative, macro-level behaviour. To address this challenge, so-called macro-programming approaches have emerged....
详细信息
ISBN:
(纸本)9798400709692
Massive deployments of devices across all kinds of environments pose the need for engineering their collaborative, macro-level behaviour. To address this challenge, so-called macro-programming approaches have emerged. A prominent nature-inspired example of macro-programming is aggregate computing. In aggregate computing, macroscopic and self-organising behaviour is declared as a functional manipulation of computational fields. Fields are macro-level abstractions mapping devices to values over time, whose computation details, typically based on an execution model of asynchronous sense-compute-interact rounds, are abstracted. In more than ten years of research, multiple software engineering concerns in aggregate computing systems have been investigated, addressing aspects at the level of the language, execution dynamics, middle-ware, and deployment. Arguably, the enabling factor for many of such investigations and results is precisely the declarative nature of the aggregate computing paradigm. In this experience report, we analyse aggregate computing through the lenses of declarative programming, and draw significant insights and perspectives related to the engineering of complex adaptive systems.
We demonstrate how TransLucid can be used as a reactive system by introducing sets and privileged dimensions for time and port in the language. At each instant, there is a set of active ports, where sets of equations,...
详细信息
ISBN:
(纸本)9781424445257
We demonstrate how TransLucid can be used as a reactive system by introducing sets and privileged dimensions for time and port in the language. At each instant, there is a set of active ports, where sets of equations, demands and threads are all registered. Each thread defines a sequence of (state, demand) pairs, and threads may interact through the overall set of equations. The en tire system remains fully declarative.
The paper describes how the built-in tools for stochastic dynamic control of the computation process in a programming paradigm, named Control Network programming (CNP), could be used to achieve declarative (non-proced...
详细信息
ISBN:
(纸本)9781450371490
The paper describes how the built-in tools for stochastic dynamic control of the computation process in a programming paradigm, named Control Network programming (CNP), could be used to achieve declarative (non-procedural) implementations of a genetic algorithm. As these implementations are very intuitive and easily programmed, CNP can be used as an excellent approach for teaching, learning and programming the basic model of the genetic algorithms. They are presented on the well-known 8-queens problem often used as an example problem for various programming techniques, including non-traditional approaches such as genetic algorithms. More specifically, the emphasis is on automatic, non-procedural modelling of certain selection operators such as roulette wheel selection and rank selection, as well as the Bernoulli trial, used in crossover and mutation operators.
Dynamic programming is a well-established technique to solve combinatorial optimization problems. In several areas of applied computer science, such as operations research, natural language processing, or biosequence ...
详细信息
ISBN:
(纸本)9781450307765
Dynamic programming is a well-established technique to solve combinatorial optimization problems. In several areas of applied computer science, such as operations research, natural language processing, or biosequence analysis, dynamic programming problems arise in many variations and with a considerable degree of sophistication. The simple way dynamic programming problems are normally presented in computer science textbooks as a set of table recurrences scales poorly for real world problems, where the search space is deeply structured and the scoring model is elaborate. Coming up with pages of correct recurrences is difficult, implementation is error-prone, and debugging is tedious. Algebraic Dynamic programming (ADP) is a language-independent, declarative approach which alleviates these problems for a relevant class of dynamic programming problems over sequence data. Bellman's GAP implements ADP by providing a declarative language (GAP-L) with a Java-reminiscent syntax, and a compiler (GAP-C) translating declarative programs into C++ code, which is competitive to handwritten code, and arguably more reliable. This article introduces the GAP-L language, demonstrates the benefits of developing dynamic programming algorithms in a declarative framework by educational example, and reports on the practice of programming bioinformatics applications with Bellman's GAP.
Designing and implementing AI in games is an interesting, yet complex task. This paper briefly presents some applications that make use of Answer Set programming for such a task, and show some advantages of declarativ...
详细信息
Designing and implementing AI in games is an interesting, yet complex task. This paper briefly presents some applications that make use of Answer Set programming for such a task, and show some advantages of declarative programming frameworks against imperative (algorithmic) approaches while dealing with knowledge representation and reasoning: solid theoretical bases, no need for algorithm design or coding, explicit (and thus easily modifiable/upgradeable) knowledge representation, declarative specifications which are already executable, very fast prototyping, quick error detection, modularity.
In the control and supervision of smart grids, the objective is to handle any change in the system as fast as possible, with as few resources as possible. In this context, this paper proposes a new language, called Sm...
详细信息
In the control and supervision of smart grids, the objective is to handle any change in the system as fast as possible, with as few resources as possible. In this context, this paper proposes a new language, called Smartlog, designed with a declarative approach. This avoids collecting and analyzing data presenting no interest, and thus being less efficient in bandwidth usage and computational time. Smartlog is designed for operating smart grids defined as abstract structures of large and scalable distributed databases. From its definition, some major properties of this language, such as simplicity, incremental capacity, and scalability are highlighted. The language is tested on the application of the secondary control of an isolated microgrid using a real-time simulator connected to Raspberry Pis. The characteristics of Smartlog are illustrated thanks to a comparison with an imperative programming implementation of the same regulation. (C) 2019 Elsevier Ltd. All rights reserved.
This paper investigates how high school students in an introductory computer science (CS) course approach computing in the logic programming (LP) paradigm. This qualitative study shows how novice students operate with...
详细信息
This paper investigates how high school students in an introductory computer science (CS) course approach computing in the logic programming (LP) paradigm. This qualitative study shows how novice students operate within the LP paradigm while engaging in foundational computing concepts and skills: students are engaged in a cyclical process of abstraction, reasoning, and creating representations of their ideas in code while also being informed by the (procedural) requirements and the revision/debugging process. As these computing concepts and skills are also expected in traditional approaches to introductory K-12 CS courses, this paper asserts that LP is a viable paradigm choice for high school novices.
This introduction to the Constraint Logic programming language CLP(R) uses applications to provide insight to the language's strengths. An overview of CLP(R) is followed by a discussion of three applications that ...
详细信息
This introduction to the Constraint Logic programming language CLP(R) uses applications to provide insight to the language's strengths. An overview of CLP(R) is followed by a discussion of three applications that illustrate the language's unifying treatment both of numeric and symbolic computing and of engineering analysis and synthesis problems. Another discussion dissects the interpreter's constraint solver and clarifies how a problem's search space can be restricted declaratively. The final example is an extended description of the construction of a network of interpreters, which can be used to distributively solve a set of linear equations. This extension requires no modification of the CLP(R) interpreter and points out the benefits of revisiting established algorithms vis-a-vis CLP(R).
暂无评论