118 research outputs found

    An intensional implementation technique for functional languages

    Get PDF
    The potential of functional programming languages has not been widely accepted yet. The reason lies in the difficulties associated with their implementation. In this dissertation we propose a new implementation technique for functional languages by compiling them into 'Intensional Logic' of R. Montague and R. Carnap. Our technique is not limited to a particular hardware or to a particular evaluation strategy; nevertheless it lends itself directly to demand-driven tagged dataflow architecture. Even though our technique can handle conventional languages as well, our main interest is exclusively with functional languages in general and with Lucid-like dataflow languages in particular. We give a brief general account of intensional logic and then introduce the concept of intensional algebras as structures (models) for intensional logic. We, formally, show the computability requirements for such algebras. The target language of our compilation is the family of languages DE (definitional equations over intensional expressions). A program in DE is a linear (not structured) set of non-ambiguous equations defining nullary variable symbols. One of these variable symbols should be the symbol result. We introduce the compilation of Iswim (a first order variant of Landin's ISWIM) as an example of compiling functions into intensional expressions. A compilation algorithm is given. Iswim(A), for any algebra of data types A, is compiled into DE(Flo(A)) where Flo(A) is a uniquely defined intensional algebra over the tree of function calls. The approach is extended to compiling Luswim and Lucid. We describe the demand-driven tagged dataflow (the eduction) approach to evaluating the intensional family of target languages DE. Furthermore, for each intensional algebra, we introduce a collection of rewrite rules. A justification of correctness is given. These rules are the basis for evaluating programs in the target DE by reduction. Finally, we discuss possible refinements and extensions to our approach

    Intensional semantics for purely functional first-order lazy data structures

    Get PDF
    Ο σκοπός αυτής της εργασίας είναι να προτείνουμε μία νοηματική σημασιολογία για οκνηρές συναρτησιακές δομές δεδομένων πρώτης τάξης. Στο θεωρητικό μέρος, ο στόχος μας είναι να ορίσουμε μία τέτοια σημασιολογία στο πλαίσιο μίας συναρτησιακής γλώσσας πρώτης τάξης με δομές δεδομένων, και να αποδείξουμε ότι είναι ισοδύναμη με τη συνήθη εκτατική σημασιολογία, τόσο για να μελετήσουμε τις ιδιότητες των οκνηρών συναρτησιακών δομών δεδομένων όσο και για να παρέχουμε μία ισχυρή θεωρητική βάση και καθοδήγηση για πιθανές υλοποιήσεις. Στο πρακτικό μέρος, περιγράφουμε μία μη-τετριμμένη υλοποίηση της σημασιολογίας, ενοποιημένη με τη νοηματική σημασιολογία για συναρτήσεις. Τέλος, συζητούμε πώς η σημασιολογία μας μπορεί να ενσωματωθεί στη νοηματική σημασιολογία για συναρτήσεις για να προκύψει μία πλήρως νοηματική σημασιολογία για συναρτησιακές γλώσσες πρώτης τάξης με δομές δεδομένων, και πώς μπορεί να επεκταθεί για να υποστηρίξει συναρτησιακές γλώσσες υψηλότερης τάξης.The purpose of this thesis is to propose an intensional semantics for purely functional first-order lazy data structures. On the theoretical side, our goal is to formally define such a semantics in the context of a first-order functional language with data structures, and prove that it is equivalent to the usual extensional semantics, both to study the properties of lazy functional data structures and to provide a robust theoretical foundation and guide for possible implementations. From a practical point of view, we describe a non-trivial implementation of our semantics that is integrated with the intensional semantics for functions. Finally, we discuss how our semantics can be formally incorporated into the intensional semantics for functions to obtain a fully intensional semantics for first-order functional languages with data structures, and how it can be extended to support higher-order functions

    Querying Schemas With Access Restrictions

    Full text link
    We study verification of systems whose transitions consist of accesses to a Web-based data-source. An access is a lookup on a relation within a relational database, fixing values for a set of positions in the relation. For example, a transition can represent access to a Web form, where the user is restricted to filling in values for a particular set of fields. We look at verifying properties of a schema describing the possible accesses of such a system. We present a language where one can describe the properties of an access path, and also specify additional restrictions on accesses that are enforced by the schema. Our main property language, AccLTL, is based on a first-order extension of linear-time temporal logic, interpreting access paths as sequences of relational structures. We also present a lower-level automaton model, Aautomata, which AccLTL specifications can compile into. We show that AccLTL and A-automata can express static analysis problems related to "querying with limited access patterns" that have been studied in the database literature in the past, such as whether an access is relevant to answering a query, and whether two queries are equivalent in the accessible data they can return. We prove decidability and complexity results for several restrictions and variants of AccLTL, and explain which properties of paths can be expressed in each restriction.Comment: VLDB201

    Historical introduction to “concrete domains” by G. Kahn and G.D. Plotkin

    Get PDF

    Towards a unified theory of intensional logic programming

    Get PDF
    AbstractIntensional Logic Programming is a new form of logic programming based on intensional logic and possible worlds semantics. Intensional logic allows us to use logic programming to specify nonterminating computations and to capture the dynamic aspects of certain problems in a natural and problem-oriented style. The meanings of formulas of an intensional first-order language are given according to intensional interpretations and to elements of a set of possible worlds. Neighborhood semantics is employed as an abstract formulation of the denotations of intensional operators. Then we investigate general properties of intensional operators such as universality, monotonicity, finitariness and conjunctivity. These properties are used as constraints on intensional logic programming systems. The model-theoretic and fixpoint semantics of intensional logic programs are developed in terms of least (minimum) intensional Herbrand models. We show in particular that our results apply to a number of intensional logic programming languages such as Chronolog proposed by Wadge and Templog by Abadi and Manna. We consider some elementary extensions to the theory and show that intensional logic program clauses can be used to define new intensional operators. Intensional logic programs with intensional operator definitions are regarded as metatheories

    Program analysis is harder than verification: A computability perspective

    Get PDF
    We study from a computability perspective static program analysis, namely detecting sound program assertions, and verification, namely sound checking of program assertions. We first design a general computability model for domains of program assertions and correspond- ing program analysers and verifiers. Next, we formalize and prove an instantiation of Rice\u2019s theorem for static program analysis and verifica- tion. Then, within this general model, we provide and show a precise statement of the popular belief that program analysis is a harder prob- lem than program verification: we prove that for finite domains of pro- gram assertions, program analysis and verification are equivalent prob- lems, while for infinite domains, program analysis is strictly harder than verification
    corecore