8,241 research outputs found

    Programación lógica

    Get PDF
    Treballs Finals de Grau d'Enginyeria Informàtica, Facultat de Matemàtiques, Universitat de Barcelona, Any: 2015, Director: Juan Carols Martínez AlonsoThis text aims to collect the research work done in a very specific field of programming, logic programming. Therefore, I have focused my work on the study of first-order logic and specific language for this paradigm: Prolog. Dr. Peña Marí wrote in bis book "De Euclides a Java", about the history of algorithmics: «This story begins almost at very same time that the history of mankind... ». But this study does not go that far. Since the purpose of the work is programming -or rather, a part of it-, we must move forward in time a bit... The aim of this work is to expand the knowledge received in the course of "Logica i llenguatges, Grade Computer Engineering" at UB. In previous editions more study material was dealt with, so that the course had to be divided in two different matters. My work has consisted on studying all materials that are no longer a topic within the course, extending them when necessary, namely the study of Prolog language. I want to start my presentation by putting, both in historical and scientific context, everything connected with what I'm going to talk about in this work. In this introductory chapter I will try to provide you with some historical details. I will cite the most basic, necessary elements that make possible programming, the programmable machines. I will give a context to our programming paradigm, that is, logic programming. In chapter 2 I will explain the first-order logic, in full detail. I will review the basic and most characteristic predicate language concepts, interpretations in these languages and some logical equivalences. At the end we'll see the unification algorithm and the method of resolution specifics for languages with declarative paradigm, and more specifically, the logical one. In chapter 3 we will see the programming language Prolog. We will see its relationship with the declarative and logic languages, its evolution throughout history, the way we use it, its basic elements, and how it makes it possible to unify terms. We'll see the way lists are dealt with, arithmetic expressions are used, cut is used, etc. We will finish in chapter 4 with a few solved exercises to exemplify all the the information in this work, either related to predicate logic, or to fundamentals of Prolog

    Logic programming in the context of multiparadigm programming: the Oz experience

    Full text link
    Oz is a multiparadigm language that supports logic programming as one of its major paradigms. A multiparadigm language is designed to support different programming paradigms (logic, functional, constraint, object-oriented, sequential, concurrent, etc.) with equal ease. This article has two goals: to give a tutorial of logic programming in Oz and to show how logic programming fits naturally into the wider context of multiparadigm programming. Our experience shows that there are two classes of problems, which we call algorithmic and search problems, for which logic programming can help formulate practical solutions. Algorithmic problems have known efficient algorithms. Search problems do not have known efficient algorithms but can be solved with search. The Oz support for logic programming targets these two problem classes specifically, using the concepts needed for each. This is in contrast to the Prolog approach, which targets both classes with one set of concepts, which results in less than optimal support for each class. To explain the essential difference between algorithmic and search programs, we define the Oz execution model. This model subsumes both concurrent logic programming (committed-choice-style) and search-based logic programming (Prolog-style). Instead of Horn clause syntax, Oz has a simple, fully compositional, higher-order syntax that accommodates the abilities of the language. We conclude with lessons learned from this work, a brief history of Oz, and many entry points into the Oz literature.Comment: 48 pages, to appear in the journal "Theory and Practice of Logic Programming

    The CIAO Multi-Dialect Compiler and System: An Experimentation Workbench for Future (C)LP Systems

    Full text link
    CIAO is an advanced programming environment supporting Logic and Constraint programming. It offers a simple concurrent kernel on top of which declarative and non-declarative extensions are added via librarles. Librarles are available for supporting the ISOProlog standard, several constraint domains, functional and higher order programming, concurrent and distributed programming, internet programming, and others. The source language allows declaring properties of predicates via assertions, including types and modes. Such properties are checked at compile-time or at run-time. The compiler and system architecture are designed to natively support modular global analysis, with the two objectives of proving properties in assertions and performing program optimizations, including transparently exploiting parallelism in programs. The purpose of this paper is to report on recent progress made in the context of the CIAO system, with special emphasis on the capabilities of the compiler, the techniques used for supporting such capabilities, and the results in the áreas of program analysis and transformation already obtained with the system

    Probabilistic Programming Concepts

    Full text link
    A multitude of different probabilistic programming languages exists today, all extending a traditional programming language with primitives to support modeling of complex, structured probability distributions. Each of these languages employs its own probabilistic primitives, and comes with a particular syntax, semantics and inference procedure. This makes it hard to understand the underlying programming concepts and appreciate the differences between the different languages. To obtain a better understanding of probabilistic programming, we identify a number of core programming concepts underlying the primitives used by various probabilistic languages, discuss the execution mechanisms that they require and use these to position state-of-the-art probabilistic languages and their implementation. While doing so, we focus on probabilistic extensions of logic programming languages such as Prolog, which have been developed since more than 20 years

    Abstract State Machines 1988-1998: Commented ASM Bibliography

    Get PDF
    An annotated bibliography of papers which deal with or use Abstract State Machines (ASMs), as of January 1998.Comment: Also maintained as a BibTeX file at http://www.eecs.umich.edu/gasm
    corecore