9 research outputs found

    Translating logic programs into conditional rewriting systems

    Get PDF

    Datalog-Based program analysis with BES and RWL

    Full text link
    This paper describes two techniques for Datalog query evaluation and their application to object-oriented program analysis. The first technique transforms Datalog programs into an implicit Boolean Equation System (Bes) that can then be solved by using linear-time complexity algorithms that are available in existing, general purpose verification toolboxes such as Cadp. In order to improve scalability and to enable analyses involving advanced meta-programming features, we develop a second methodology that transforms Datalog programs into rewriting logic (Rwl) theories. This method takes advantage of the preeminent features and facilities that are available within the high-performance system Maude, which provides a very efficient implementation of Rwl. We provide evidence of the practicality of both approaches by reporting on some experiments with a number of real-world Datalog-based analyses. © 2011 Springer-Verlag.This work has been partially supported by the eu(feder), the Spanish mec/micinn under grants tin2007-68093-C02 and tin2010-21062-C02-02, and the Generalitat Valenciana under grant Emergentes gv/2009/024. M.A.Feliu was partially supported by the Spanish mec fpu grant AP2008-00608.Alpuente Frasnedo, M.; Feliú Gabaldón, MA.; Joubert, C.; Villanueva García, A. (2011). Datalog-Based program analysis with BES and RWL. En Datalog Reloaded. Springer Verlag (Germany). 6702:1-20. https://doi.org/10.1007/978-3-642-24206-9_1S1206702Afrati, F.N., Ullman, J.D.: Optimizing joins in a map-reduce environment. In: Manolescu, I., Spaccapietra, S., Teubner, J., Kitsuregawa, M., Léger, A., Naumann, F., Ailamaki, A., Özcan, F. (eds.) EDBT. ACM International Conference Proceeding Series, vol. 426, pp. 99–110. ACM, New York (2010)Alpuente, M., Feliú, M., Joubert, C., Villanueva, A.: Defining Datalog in Rewriting Logic. Technical Report DSIC-II/07/09, DSIC, Universidad Politécnica de Valencia (2009)Alpuente, M., Feliú, M., Joubert, C., Villanueva, A.: Using Datalog and Boolean Equation Systems for Program Analysis. In: Cofer, D., Fantechi, A. (eds.) FMICS 2008. LNCS, vol. 5596, pp. 215–231. Springer, Heidelberg (2009)Alpuente, M., Feliú, M.A., Joubert, C., Villanueva, A.: Defining datalog in rewriting logic. In: De Schreye, D. (ed.) LOPSTR 2009. LNCS, vol. 6037, pp. 188–204. Springer, Heidelberg (2010)Andersen, H.R.: Model checking and boolean graphs. Theoretical Computer Science 126(1), 3–30 (1994)Bancilhon, F., Maier, D., Sagiv, Y., Ullman, J.D.: Magic Sets and Other Strange Ways to Implement Logic Programs. In: Proc. 5th ACM SIGACT-SIGMOD Symp. on Principles of Database Systems, PODS 1986, pp. 1–15. ACM Press, New York (1986)Ceri, S., Gottlob, G., Tanca, L.: Logic Programming and Databases. Springer, Heidelberg (1990)Chen, T., Ploeger, B., van de Pol, J., Willemse, T.A.C.: Equivalence Checking for Infinite Systems Using Parameterized Boolean Equation Systems. In: Caires, L., Vasconcelos, V.T. (eds.) CONCUR 2007. LNCS, vol. 4703, pp. 120–135. Springer, Heidelberg (2007)Clavel, M., Durán, F., Ejer, S., Lincoln, P., Martí-Oliet, N., Meseguer, J., Talcott, C.: All About Maude - A High-Performance Logical Framework. LNCS, vol. 4350. Springer, Heidelberg (2007)Dam, A., Ploeger, B., Willemse, T.: Instantiation for Parameterised Boolean Equation Systems. In: Fitzgerald, J.S., Haxthausen, A.E., Yenigun, H. (eds.) ICTAC 2008. LNCS, vol. 5160, pp. 440–454. Springer, Heidelberg (2008)de Moor, O., Sereni, D., Verbaere, M., Hajiyev, E., Avgustinov, P., Ekman, T., Ongkingco, N., Tibble, J.: QL: Object-oriented queries made easy. In: Lämmel, R., Visser, J., Saraiva, J. (eds.) GTTSE 2008. LNCS, vol. 5235, pp. 78–133. Springer, Heidelberg (2008)Feliú, M., Joubert, C., Tarín, F.: Efficient BES-based Bottom-Up Evaluation of Datalog Programs. In: Gulías, V., Silva, J., Villanueva, A. (eds.) Proc. X Jornadas sobre Programación y Lenguajes (PROLE 2010), Garceta, pp. 165–176 (2010)Feliú, M., Joubert, C., Tarín, F.: Evaluation strategies for datalog-based points-to analysis. In: Bendisposto, J., Leuschel, M., Roggenbach, M. (eds.) Proc. 10th Workshop on Automated Verification of Critical Systems (AVoCS 2010), pp. 88–103. Technical Report of Düsseldorf University (2010)Garavel, H., Mateescu, R., Lang, F., Serwe, W.: CADP 2006: A Toolbox for the Construction and Analysis of Distributed Processes. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 158–163. Springer, Heidelberg (2007)Hajiyev, E., Verbaere, M., de Moor, O.: CodeQuest: Scalable Source Code Queries with Datalog. In: Hu, Q. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 2–27. Springer, Heidelberg (2006)Hanus, M.: The Integration of Functions into Logic Programming: From Theory to Practice. Journal on Logic Programming 19 & 20, 583–628 (1994)Joubert, C., Mateescu, R.: Distributed On-the-Fly Model Checking and Test Case Generation. In: Valmari, A. (ed.) SPIN 2006. LNCS, vol. 3925, pp. 126–145. Springer, Heidelberg (2006)Leeuwen, J. (ed.): Formal Models and Semantics, vol. B. Elsevier, The MIT Press (1990)Liu, X., Smolka, S.A.: Simple Linear-Time Algorithms for Minimal Fixed Points. In: Larsen, K.G., Skyum, S., Winskel, G. (eds.) ICALP 1998. LNCS, vol. 1443, pp. 53–66. Springer, Heidelberg (1998)Liu, Y.A., Stoller, S.D.: From datalog rules to efficient programs with time and space guarantees. ACM Trans. Program. Lang. Syst. 31(6) (2009)Livshits, B., Whaley, J., Lam, M.: Reflection Analysis for Java. In: Yi, K. (ed.) APLAS 2005. LNCS, vol. 3780, pp. 139–160. Springer, Heidelberg (2005)Marchiori, M.: Logic Programs as Term Rewriting Systems. In: Rodríguez-Artalejo, M., Levi, G. (eds.) ALP 1994. LNCS, vol. 850, pp. 223–241. Springer, Heidelberg (1994)Mateescu, R.: Local Model-Checking of an Alternation-Free Value-Based Modal Mu-Calculus. In: Proc. 2nd Int’l Workshop on Verication, Model Checking and Abstract Interpretation, VMCAI 1998 (1998)Mateescu, R., Thivolle, D.: A Model Checking Language for Concurrent Value-Passing Systems. In: Cuellar, J., Sere, K. (eds.) FM 2008. LNCS, vol. 5014, pp. 148–164. Springer, Heidelberg (2008)Meseguer, J.: Conditional Rewriting Logic as a Unified Model of Concurrency. Theoretical Computer Science 96(1), 73–155 (1992)Meseguer, J.: Membership algebra as a logical framework for equational specification. In: Parisi-Presicce, F. (ed.) WADT 1997. LNCS, vol. 1376, pp. 18–61. Springer, Heidelberg (1998)Reddy, U.: Transformation of Logic Programs into Functional Programs. In: Proc. Symposium on Logic Programming (SLP 1984), pp. 187–197. IEEE Computer Society Press, Los Alamitos (1984)Reps, T.W.: Solving Demand Versions of Interprocedural Analysis Problems. In: Adsul, B. (ed.) CC 1994. LNCS, vol. 786, pp. 389–403. Springer, Heidelberg (1994)Rosu, G., Havelund, K.: Rewriting-Based Techniques for Runtime Verification. Autom. Softw. Eng. 12(2), 151–197 (2005)Schneider-Kamp, P., Giesl, J., Serebrenik, A., Thiemann, R.: Automated Termination Analysis for Logic Programs by Term Rewriting. In: Puebla, G. (ed.) LOPSTR 2006. LNCS, vol. 4407, pp. 177–193. Springer, Heidelberg (2007)Ullman, J.D.: Principles of Database and Knowledge-Base Systems, Volume I and II, The New Technologies. Computer Science Press, Rockville (1989)Vieille, L.: Recursive Axioms in Deductive Databases: The Query/Subquery Approach. In: Proc. 1st Int’l Conf. on Expert Database Systems, EDS 1986, pp. 253–267 (1986)Whaley, J.: Joeq: a Virtual Machine and Compiler Infrastructure. In: Proc. Workshop on Interpreters, Virtual Machines and Emulators, IVME 2003, pp. 58–66. ACM Press, New York (2003)Whaley, J., Avots, D., Carbin, M., Lam, M.S.: Using Datalog with Binary Decision Diagrams for Program Analysis. In: Yi, K. (ed.) APLAS 2005. LNCS, vol. 3780, pp. 97–118. Springer, Heidelberg (2005)Zheng, X., Rugina, R.: Demand-driven alias analysis for C. In: Proc. 35th ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, POPL 2008, pp. 197–208. ACM Press, New York (2008

    Translating logic programs into conditional rewriting systems

    Get PDF
    In this paper a translation from a subclass of logic programs consisting of the simply moded logic programs into rewriting systems is defined. In these rewriting systems conditions and explicit substitutions may be present. We argue that our translation is more natural than previously studied ones and establish a result showing its correctness

    Evaluation of Datalog queries and its application to the static analysis of Java code

    Full text link
    Two approaches for evaluating Datalog programs are presented: one based on boolean equation systems, and the other based on rewriting logic. The work is presented in the context of the static analysis of Java programs specified in Datalog.Feliú Gabaldón, MA. (2010). Evaluation of Datalog queries and its application to the static analysis of Java code. http://hdl.handle.net/10251/14016Archivo delegad

    Logic-based techniques for program analysis and specification synthesis

    Full text link
    La Tesis investiga técnicas ágiles dentro del paradigma declarativo para dar solución a dos problemas: el análisis de programas y la inferencia de especificaciones a partir de programas escritos en lenguajes multiparadigma y en lenguajes imperativos con tipos, objetos, estructuras y punteros. Respecto al estado actual de la tesis, la parte de análisis de programas ya está consolidada, mientras que la parte de inferencia de especificaciones sigue en fase de desarrollo activo. La primera parte da soluciones para la ejecución de análisis de punteros especificados en Datalog. En esta parte se han desarrollado dos técnicas de ejecución de especificaciones en dicho lenguaje Datalog: una de ellas utiliza resolutores de sistemas de ecuaciones booleanas, y la otra utiliza la lógica de reescritura implementada eficientemente en el lenguaje Maude. La segunda parte desarrolla técnicas de inferencia de especificaciones a partir de programas. En esta parte se han desarrollado dos métodos de inferencia de especificaciones. El primer método se desarrolló para el lenguaje lógico-funcional Curry y permite inferir especificaciones ecuacionales mediante interpretación abstracta de los programas. El segundo método está siendo desarrollado para lenguajes imperativos realistas, y se ha aplicado a un subconjunto del lenguaje de programación C. Este método permite inferir especificaciones en forma de reglas que representan las distintas relaciones entre las propiedades que el estado de un programa satisface antes y después de su ejecución. Además, estas propiedades son expresables en términos de las abstracciones funcionales del propio programa, resultando en una especificación de muy alto nivel y, por lo tanto, de más fácil comprensión.Feliú Gabaldón, MA. (2013). Logic-based techniques for program analysis and specification synthesis [Tesis doctoral no publicada]. Universitat Politècnica de València. https://doi.org/10.4995/Thesis/10251/33747TESI

    Automatic program analysis in a Prolog Intelligent Teaching System

    Get PDF

    The design and implementation of a multiparadigm programming language.

    Get PDF
    by Chi-keung Luk.Thesis (M.Phil.)--Chinese University of Hong Kong, 1993.Includes bibliographical references (leaves 169-174).Preface --- p.xiChapter 1 --- Introduction --- p.1Chapter 1.1 --- Programming Languages --- p.2Chapter 1.2 --- Programming Paradigms --- p.2Chapter 1.2.1 --- What is a programming paradigm --- p.2Chapter 1.2.2 --- Which came first? Languages or paradigms? --- p.2Chapter 1.2.3 --- Overview of some paradigms --- p.4Chapter 1.2.4 --- A spectrum of paradigms --- p.6Chapter 1.2.5 --- Mulitparadigm systems --- p.7Chapter 1.3 --- The Objectives of this research --- p.8Chapter 2 --- "Studies of the object-oriented, the logic and the functional paradigms" --- p.10Chapter 2.1 --- The Object-Oriented Paradigm --- p.10Chapter 2.1.1 --- Basic components --- p.10Chapter 2.1.2 --- Motivations --- p.11Chapter 2.1.3 --- Some related issues --- p.12Chapter 2.1.4 --- Computational models for object-oriented programming --- p.16Chapter 2.2 --- The Functional Paradigm --- p.18Chapter 2.2.1 --- Basic concepts --- p.18Chapter 2.2.2 --- Lambda calculus --- p.20Chapter 2.2.3 --- The characteristics of functional programs --- p.21Chapter 2.2.4 --- Practicality of functional programming --- p.25Chapter 2.3 --- The Logic Paradigm --- p.28Chapter 2.3.1 --- Relations --- p.28Chapter 2.3.2 --- Logic programs --- p.29Chapter 2.3.3 --- The opportunity for parallelism --- p.30Chapter 2.4 --- Summary --- p.31Chapter 3 --- A survey of some existing multiparadigm languages --- p.32Chapter 3.1 --- Logic + Object-Oriented --- p.33Chapter 3.1.1 --- LogiC++ --- p.33Chapter 3.1.2 --- Intermission --- p.34Chapter 3.1.3 --- Object-Oriented Programming in Prolog (OOPP) --- p.36Chapter 3.1.4 --- Communication Prolog Unit (CPU) --- p.37Chapter 3.1.5 --- DLP --- p.37Chapter 3.1.6 --- Representing Objects in a Logic Programming Language with Scoping Constructs (OLPSC) --- p.39Chapter 3.1.7 --- KSL/Logic --- p.40Chapter 3.1.8 --- Orient84/K --- p.41Chapter 3.1.9 --- Vulcan --- p.42Chapter 3.1.10 --- The Bridge approach --- p.43Chapter 3.1.11 --- Discussion --- p.44Chapter 3.2 --- Functional + Object-Oriented --- p.46Chapter 3.2.1 --- PROOF --- p.46Chapter 3.2.2 --- A Functional Language with Classes (FLC) --- p.47Chapter 3.2.3 --- Common Lisp Object System (CLOS) --- p.49Chapter 3.2.4 --- FOOPS --- p.50Chapter 3.2.5 --- Discussion --- p.51Chapter 3.3 --- Logic + Functional --- p.52Chapter 3.3.1 --- HOPE --- p.52Chapter 3.3.2 --- FUNLOG --- p.54Chapter 3.3.3 --- F* --- p.55Chapter 3.3.4 --- LEAF --- p.56Chapter 3.3.5 --- Applog --- p.57Chapter 3.3.6 --- Discussion --- p.58Chapter 3.4 --- Logic + Functional + Object-Oriented --- p.61Chapter 3.4.1 --- Paradise --- p.61Chapter 3.4.2 --- LIFE --- p.62Chapter 3.4.3 --- UNIFORM --- p.63Chapter 3.4.4 --- G --- p.64Chapter 3.4.5 --- FOOPlog --- p.66Chapter 3.4.6 --- Logic and Objects (L&O) --- p.66Chapter 3.4.7 --- Discussion --- p.67Chapter 4 --- The design of a multiparadigm language I --- p.70Chapter 4.1 --- An Object-Oriented Framework --- p.71Chapter 4.1.1 --- A hierarchy of classes --- p.71Chapter 4.1.2 --- Program structure --- p.71Chapter 4.1.3 --- Parametric classes --- p.72Chapter 4.1.4 --- Inheritance --- p.73Chapter 4.1.5 --- The meanings of classes and methods --- p.75Chapter 4.1.6 --- Objects and messages --- p.75Chapter 4.2 --- The logic Subclasses --- p.76Chapter 4.2.1 --- Syntax --- p.76Chapter 4.2.2 --- Distributed inference --- p.76Chapter 4.2.3 --- Adding functions and expressions to logic programs --- p.77Chapter 4.2.4 --- State modelling --- p.79Chapter 4.3 --- The functional Subclasses --- p.80Chapter 4.3.1 --- The syntax of functions --- p.80Chapter 4.3.2 --- Abstract data types --- p.81Chapter 4.3.3 --- Augmented list comprehensions --- p.82Chapter 4.4 --- The Semantic Foundation of I Programs --- p.84Chapter 4.4.1 --- T1* : Transform functions into Horn clauses --- p.84Chapter 4.4.2 --- T2*: Transform object-oriented features into pure logic --- p.85Chapter 4.5 --- Exploiting Parallelism in I Programs --- p.89Chapter 4.5.1 --- Inter-object parallelism --- p.89Chapter 4.5.2 --- Intra-object parallelism --- p.92Chapter 4.6 --- Discussion --- p.96Chapter 5 --- An implementation of a prototype of I --- p.99Chapter 5.1 --- System Overview --- p.99Chapter 5.2 --- I-to-Prolog Translation --- p.101Chapter 5.2.1 --- Pass 1 - lexical and syntax analysis --- p.101Chapter 5.2.2 --- Pass 2 - Class Table Construction and Semantic Checking --- p.101Chapter 5.2.3 --- Pass 3 - Determination of Multiple Inheritance Precedence --- p.105Chapter 5.2.4 --- Pass 4 - Translation of the directive part --- p.110Chapter 5.2.5 --- Pass 5 - Creation of Prolog source code for an I object --- p.110Chapter 5.2.6 --- Using expressions in logic methods --- p.112Chapter 5.3 --- I-to-LML Translation --- p.114Chapter 5.4 --- The Run-time Handler --- p.117Chapter 5.4.1 --- Object Management --- p.118Chapter 5.4.2 --- Process Management and Message Passing --- p.121Chapter 6 --- Some applications written in I --- p.125Chapter 6.1 --- Modeling of a State Space Search --- p.125Chapter 6.2 --- A Solution to the N-queen Problem --- p.129Chapter 6.3 --- Object-Oriented Modeling of a Database --- p.131Chapter 6.4 --- A Simple Expert System --- p.133Chapter 6.5 --- Summary --- p.138Chapter 7 --- Conclusion and future work --- p.139Chapter 7.1 --- Conclusion --- p.139Chapter 7.2 --- Future Work --- p.141Chapter A --- Language manual --- p.146Chapter A.1 --- Introduction --- p.146Chapter A.2 --- Syntax --- p.146Chapter A.2.1 --- The lexical specification --- p.146Chapter A.2.2 --- The syntax specification --- p.149Chapter A3 --- Classes --- p.152Chapter A.4 --- Object Creation and Method Invocation --- p.153Chapter A.5 --- The logic Subclasses --- p.155Chapter A.6 --- The functional Subclasses --- p.156Chapter A.7 --- Types --- p.158Chapter A.8 --- Mutable States --- p.158Chapter B --- User's guide --- p.160Chapter B.1 --- System Calls --- p.160Chapter B.2 --- Configuration Parameters --- p.162Chapter B.3 --- Errors --- p.163Chapter B.4 --- Implementation Limits --- p.164Chapter B.5 --- How to install the system --- p.164Chapter B.6 --- How to use the system --- p.164Chapter B.7 --- How to recompile the system --- p.166Chapter B.8 --- Directory arrangement --- p.167Chapter C --- List of publications --- p.168Bibliography --- p.16
    corecore