1,220 research outputs found

    Making prolog more expressive

    Get PDF
    AbstractThis paper introduces extended programs and extended goals for logic programming. A clause in an extended program can have an arbitrary first-order formula as its body. Similarly, an extended goal can have an arbitrary first-order formula as its body. The main results of the paper are the soundness of the negation as failure rule and SLDNF-resolution for extended programs and goals. We show how the increased expressibility of extended programs and goals can be easily implemented in any PROLOG system which has a sound implementation of the negation as failure rule. We also show how these ideas can be used to implement first-order logic as a query language in a deductive database system. An application to integrity constraints in deductive database systems is also given

    Targets for the MalI repressor at the divergent Escherichia coliK-12malX-malI promoters

    Get PDF
    Random mutagenesis has been used to identify the target DNA sites for the MalI repressor at the divergent Escherichia coli K-12 malX-malI promoters. The malX promoter is repressed by MalI binding to a DNA site located from position -24 to position -9, upstream of the malX promoter transcript start. The malI promoter is repressed by MalI binding from position +3 to position +18, downstream of the malI transcript start. MalI binding at the malI promoter target is not required for repression of the malX promoter. Similarly, MalI binding at the malX promoter target is not required for repression of the malI. Although the malX and malI promoters are regulated by a single DNA site for cyclic AMP receptor protein, they function independently and each is repressed by MalI binding to a different independent operator site

    Deciding Full Branching Time Logic by Program Transformation

    Get PDF
    We present a method based on logic program transformation, for verifying Computation Tree Logic (CTL*) properties of finite state reactive systems. The finite state systems and the CTL* properties we want to verify, are encoded as logic programs on infinite lists. Our verification method consists of two steps. In the first step we transform the logic program that encodes the given system and the given property, into a monadic ω -program, that is, a stratified program defining nullary or unary predicates on infinite lists. This transformation is performed by applying unfold/fold rules that preserve the perfect model of the initial program. In the second step we verify the property of interest by using a proof method for monadic ω-program

    Non-leftmost Unfolding in Partial Evaluation of Logic Programs with Impure Predicates

    Get PDF
    Abstract. Partial evaluation of logic programs which contain impure predicates poses non-trivial challenges. Impure predicates include those which produce side-effects, raise errors (or exceptions), and those whose truth value varies according to the degree of instantiation of arguments 4. In particular, non-leftmost unfolding steps can produce incorrect results since the independence of the computation rule no longer holds in the presence of impure predicates. Existing proposals allow non-leftmost unfolding steps, but at the cost of accuracy: bindings and failure are not propagated backwards to predicates which are potentially impure. In this work we propose a partial evaluation scheme which substantially reduces the situations in which such backpropagation has to be avoided. With this aim, our partial evaluator takes into account the information about purity of predicates expressed in terms of assertions. This allows achieving some optimizations which are not feasible using existing partial evaluation techniques. We argue that our proposal goes beyond existing ones in that it is a) accurate, since the classification of pure vs impure is done at the level of atoms instead of predicates, b) extensible, as the information about purity can be added to programs using assertions without having to modify the partial evaluator itself, and c) automatic, since (backwards) analysis can be used to automatically infer the required assertions. Our approach has been implemented in the context of CiaoPP, the abstract interpretation-based preprocessor of the Ciao logic programming system.

    Detecting Determinacy in Prolog Programs: 22nd International Conference, ICLP 2006, Seattle, WA, USA, August 17-20, 2006. Proceedings

    Get PDF
    In program development it is useful to know that a call to a Prolog program will not inadvertently leave a choice-point on the stack. Determinacy inference has been proposed for solving this problem yet the analysis was found to be wanting in that it could not infer determinacy conditions for programs that contained cuts or applied certain tests to select a clause. This paper shows how to remedy these serious deficiencies. It also addresses the problem of identifying those predicates which can be rewritten in a more deterministic fashion. To this end, a radically new form of determinacy inference is introduced, which is founded on ideas in ccp, that is capable of reasoning about the way bindings imposed by a rightmost goal can make a leftmost goal deterministic

    Specializing Interpreters using Offline Partial Deduction

    No full text
    We present the latest version of the Logen partial evaluation system for logic programs. In particular we present new binding-types, and show how they can be used to effectively specialise a wide variety of interpreters.We show how to achieve Jones-optimality in a systematic way for several interpreters. Finally, we present and specialise a non-trivial interpreter for a small functional programming language. Experimental results are also presented, highlighting that the Logen system can be a good basis for generating compilers for high-level languages

    Enhancing declarative debugging with loop expansion and tree compression

    Full text link
    This work has been partially supported by the Spanish Ministerio de Econom´ıa y Competitividad (Secretar´ıa de Estado de Investigaci´on, Desarrollo e Innovaci´on) under grant TIN2008-06622-C03-02 and by the Generalitat Valenciana under grant PROMETEO/2011/052. David Insa was partially supported by the Spanish Ministerio de Eduaci´on under FPU grant AP2010-4415Insa Cabrera, D.; Silva Galiana, JF.; Tomás Franco, C. (2013). Enhancing declarative debugging with loop expansion and tree compression. En Logic-Based Program Synthesis and Transformation. Springer Verlag (Germany). 71-88. https://doi.org/10.1007/978-3-642-38197-3_6S7188Binks, D.: Declarative Debugging in Gödel. PhD thesis, University of Bristol (1995)Calejo, M.: A Framework for Declarative Prolog Debugging. PhD thesis, New University of Lisbon (1992)Davie, T., Chitil, O.: Hat-delta: One Right Does Make a Wrong. In: Butterfield, A. (ed.) Draft Proceedings of the 17th International Workshop on Implementation and Application of Functional Languages, IFL 2005, p. 11. Tech. Report No: TCD-CS-2005-60, University of Dublin, Ireland (September 2005)Davie, T., Chitil, O.: Hat-delta: One Right Does Make a Wrong. In: Seventh Symposium on Trends in Functional Programming, TFP 2006 (April 2006)Harrison, P.G., Khoshnevisan, H.: A new approach to recursion removal. Theor. Comput. Sci. 93(1), 91–113 (1992)Hirunkitti, V., Hogger, C.J.: A Generalised Query Minimisation for Program Debugging. In: Adsul, B. (ed.) AADEBUG 1993. LNCS, vol. 749, pp. 153–170. Springer, Heidelberg (1993)Insa, D., Silva, J.: An Algorithmic Debugger for Java. In: Proc. of the 26th IEEE International Conference on Software Maintenance, pp. 1–6 (2010)Insa, D., Silva, J.: Debugging with Incomplete and Dynamically Generated Execution Trees. In: Proc. of the 20th International Symposium on Logic-based Program Synthesis and Transformation, LOPSTR 2010, Austria (2010)Insa, D., Silva, J.: A Transformation of Iterative Loops into Recursive Loops. Technical Report DSIC/05/12, Universidad Politécnica de Valencia (2012), http://www.dsic.upv.es/~jsilva/research.htm#techsInsa, D., Silva, J., Tomás, C.: Enhancing Declarative Debugging with Loop Expansion and Tree Compression. Technical Report DSIC/11/12, Universidad Politécnica de Valencia (2012), http://www.dsic.upv.es/~jsilva/research.htm#techsLiu, Y.A., Stoller, S.D.: From recursion to iteration: what are the optimizations? In: Proceedings of the 2000 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, PEPM 2000, pp. 73–82. ACM, New York (2000)Lloyd, J.W.: Declarative error diagnosis. New Gen. Comput. 5(2), 133–154 (1987)Nilsson, H.: Declarative Debugging for Lazy Functional Languages. PhD thesis, Linköping, Sweden (May 1998)NIST: The Economic Impacts of Inadequate Infrastructure for Software Testing. USA National Institute of Standards and Technology, NIST Planning Report 02-3 (May 2002)Riesco, A., Verdejo, A., Martí-Oliet, N., Caballero, R.: Declarative Debugging of Rewriting Logic Specifications. Journal of Logic and Algebraic Programming (September 2011)Shapiro, E.Y.: Algorithmic Program Debugging. MIT Press (1982)Silva, J.: A Survey on Algorithmic Debugging Strategies. Advances in Engineering Software 42(11), 976–991 (2011)Yi, Q., Adve, V., Kennedy, K.: Transforming loops to recursion for multi-level memory hierarchies. In: Proceedings of the SIGPLAN 2000 Conference on Programming Language Design and Implementation, pp. 169–181 (2000

    An Inference Model for Semantic Entailment in Natural Language

    Full text link
    corecore