Skip to main content

Showing 1–20 of 20 results for author: Hanus, M

Searching in archive cs. Search in all archives.
.
  1. arXiv:2402.12960  [pdf, ps, other

    cs.PL cs.SE

    Inferring Non-Failure Conditions for Declarative Programs

    Authors: Michael Hanus

    Abstract: Unintended failures during a computation are painful but frequent during software development. Failures due to external reasons (e.g., missing files, no permissions) can be caught by exception handlers. Programming failures, such as calling a partially defined operation with unintended arguments, are often not caught due to the assumption that the software is correct. This paper presents an approa… ▽ More

    Submitted 20 February, 2024; originally announced February 2024.

    Comments: Extended version of a paper presented at the 17th International Symposium on Functional and Logic Programming (FLOPS 2024)

  2. arXiv:2205.06841  [pdf, ps, other

    cs.PL

    From Logic to Functional Logic Programs

    Authors: Michael Hanus

    Abstract: Logic programming is a flexible programming paradigm due to the use of predicates without a fixed data flow. To extend logic languages with the compact notation of functional programming, there are various proposals to map evaluable functions into predicates in order to stay in the logic programming framework. Since amalgamated functional logic languages offer flexible as well as efficient evaluat… ▽ More

    Submitted 13 May, 2022; originally announced May 2022.

    Comments: Paper presented at the 38th International Conference on Logic Programming (ICLP 2022), 16 pages (without appendix)

  3. arXiv:2009.01001   

    cs.PL

    Pre-Proceedings of the 28th International Workshop on Functional and Logic Programming (WFLP 2020)

    Authors: Michael Hanus, Claudio Sacerdoti Coen

    Abstract: This volume constitutes the pre-proceedings of the 28th International Workshop on Functional and Logic Programming (WFLP 2020), organized by the University of Bologna, Italy, as part of Bologna Federated Conference on Programming Languages 2020. The international Workshop on Functional and (constraint) Logic Programming (WFLP) aims at bringing together researchers, students, and practitioners inte… ▽ More

    Submitted 4 September, 2020; v1 submitted 2 September, 2020; originally announced September 2020.

    Comments: Pre-Proceedings of WFLP 2020

  4. arXiv:2008.11999  [pdf, ps, other

    cs.PL

    Memoized Pull-Tabbing for Functional Logic Programming

    Authors: Michael Hanus, Finn Teegen

    Abstract: Pull-tabbing is an evaluation technique for functional logic programs which computes all non-deterministic results in a single graph structure. Pull-tab steps are local graph transformations to move non-deterministic choices towards the root of an expression. Pull-tabbing is independent of a search strategy so that different strategies (depth-first, breadth-first, parallel) can be used to extract… ▽ More

    Submitted 27 August, 2020; originally announced August 2020.

    Comments: Part of WFLP 2020 pre-proceedings

  5. arXiv:1909.09562  [pdf, ps, other

    cs.PL

    Equivalence Checking of Non-deterministic Operations

    Authors: Sergio Antoy, Michael Hanus

    Abstract: Checking the semantic equivalence of operations is an important task in software development. For instance, regression testing is a routine task performed when software systems are developed and improved, and software package managers require the equivalence of operations in different versions of a package within the same major number version. A solid foundation is required to support a good autom… ▽ More

    Submitted 20 September, 2019; originally announced September 2019.

  6. arXiv:1908.11101  [pdf, ps, other

    cs.PL

    ICurry

    Authors: Sergio Antoy, Michael Hanus, Andy Jost, Steven Libby

    Abstract: FlatCurry is a well-established intermediate representation of Curry programs used in compilers that translate Curry code into Prolog and Haskell code. Some FlatCurry constructs have no direct translation into imperative code. These constructs must be each handled differently when translating Curry code into C, C++ and Python code. We introduce a new representation of Curry programs, called ICurry… ▽ More

    Submitted 29 August, 2019; originally announced August 2019.

    Comments: Part of DECLARE 19 proceedings

  7. arXiv:1908.10607  [pdf, ps, other

    cs.PL

    Adding Data to Curry

    Authors: Michael Hanus, Finn Teegen

    Abstract: Functional logic languages can solve equations over user-defined data and functions. Thus, the definition of an appropriate meaning of equality has a long history in these languages, ranging from reflexive equality in early equational logic languages to strict equality in contemporary functional logic languages like Curry. With the introduction of type classes, where the equality operation "==" is… ▽ More

    Submitted 28 August, 2019; originally announced August 2019.

    Comments: Part of DECLARE 19 proceedings

  8. arXiv:1808.07401  [pdf, ps, other

    cs.PL

    Synthesizing Set Functions

    Authors: Sergio Antoy, Michael Hanus, Finn Teegen

    Abstract: Set functions are a feature of functional logic programming to encapsulate all results of a non-deterministic computation in a single data structure. Given a function $f$ of a functional logic program written in Curry, we describe a technique to synthesize the definition of the set function of $f$. The definition produced by our technique is based on standard Curry constructs. Our approach is inte… ▽ More

    Submitted 22 August, 2018; originally announced August 2018.

    Comments: 17 pages, Accepted for presentation in WFLP 2018

  9. arXiv:1709.04816  [pdf, ps, other

    cs.PL cs.LO

    Combining Static and Dynamic Contract Checking for Curry

    Authors: Michael Hanus

    Abstract: Static type systems are usually not sufficient to express all requirements on function calls. Hence, contracts with pre- and postconditions can be used to express more complex constraints on operations. Contracts can be checked at run time to ensure that operations are only invoked with reasonable arguments and return intended results. Although such dynamic contract checking provides more reliable… ▽ More

    Submitted 14 September, 2017; originally announced September 2017.

    Comments: Pre-proceedings paper presented at the 27th International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR 2017), Namur, Belgium, 10-12 October 2017 (arXiv:1708.07854)

    Report number: Report number: LOPSTR/2017/21

  10. Proving Non-Deterministic Computations in Agda

    Authors: Sergio Antoy, Michael Hanus, Steven Libby

    Abstract: We investigate proving properties of Curry programs using Agda. First, we address the functional correctness of Curry functions that, apart from some syntactic and semantic differences, are in the intersection of the two languages. Second, we use Agda to model non-deterministic functions with two distinct and competitive approaches incorporating the non-determinism. The first approach eliminates… ▽ More

    Submitted 3 January, 2017; originally announced January 2017.

    Comments: In Proceedings WLP'15/'16/WFLP'16, arXiv:1701.00148

    Journal ref: EPTCS 234, 2017, pp. 180-195

  11. A Typeful Integration of SQL into Curry

    Authors: Michael Hanus, Julia Krone

    Abstract: We present an extension of the declarative programming language Curry to support the access to data stored in relational databases via SQL. Since Curry is statically typed, our emphasis on this SQL integration is on type safety. Our extension respects the type system of Curry so that run-time errors due to ill-typed data are avoided. This is obtained by preprocessing SQL statements at compile ti… ▽ More

    Submitted 3 January, 2017; originally announced January 2017.

    Comments: In Proceedings WLP'15/'16/WFLP'16, arXiv:1701.00148

    Journal ref: EPTCS 234, 2017, pp. 104-119

  12. arXiv:1608.05617  [pdf, ps, other

    cs.PL cs.LO

    CurryCheck: Checking Properties of Curry Programs

    Authors: Michael Hanus

    Abstract: We present CurryCheck, a tool to automate the testing of programs written in the functional logic programming language Curry. CurryCheck executes unit tests as well as property tests which are parameterized over one or more arguments. In the latter case, CurryCheck tests these properties by systematically enumerating test cases so that, for smaller finite domains, CurryCheck can actually prove pro… ▽ More

    Submitted 19 August, 2016; originally announced August 2016.

    Comments: Pre-proceedings paper presented at the 26th International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR 2016), Edinburgh, Scotland UK, 6-8 September 2016 (arXiv:1608.02534)

    Report number: LOPSTR/2016/43

  13. Default Rules for Curry

    Authors: Sergio Antoy, Michael Hanus

    Abstract: In functional logic programs, rules are applicable independently of textual order, i.e., any rule can potentially be used to evaluate an expression. This is similar to logic languages and contrary to functional languages, e.g., Haskell enforces a strict sequential interpretation of rules. However, in some situations it is convenient to express alternatives by means of compact default rules. Althou… ▽ More

    Submitted 4 May, 2016; originally announced May 2016.

    Comments: To appear in Theory and Practice of Logic Programming (TPLP)

  14. arXiv:1307.4648  [pdf, other

    cs.PL

    A Generic Analysis Server System for Functional Logic Programs

    Authors: Michael Hanus, Fabian Reck

    Abstract: We present a system, called CASS, for the analysis of functional logic programs. The system is generic so that various kinds of analyses (e.g., groundness, non-determinism, demanded arguments) can be easily integrated. In order to analyze larger applications consisting of dozens or hundreds of modules, CASS supports a modular and incremental analysis of programs. Moreover, it can be used by differ… ▽ More

    Submitted 17 July, 2013; originally announced July 2013.

    Comments: Proceedings of the 13th International Colloquium on Implementation of Constraint LOgic Programming Systems (CICLOPS 2013), Istanbul, Turkey, August 25, 2013

  15. arXiv:1108.5609  [pdf, ps, other

    cs.PL

    Implementing Equational Constraints in a Functional Language

    Authors: Bernd Braßel, Michael Hanus, Björn Peemöller, Fabian Reck

    Abstract: KiCS2 is a new system to compile functional logic programs of the source language Curry into purely functional Haskell programs. The implementation is based on the idea to represent the search space as a data structure and logic variables as operations that generate their values. This has the advantage that one can apply various, and in particular, complete search strategies to compute solutions.… ▽ More

    Submitted 29 August, 2011; originally announced August 2011.

    Comments: To appear in the Proceedings of the 25th Workshop on Logic Programming (WLP 2011)

  16. An ER-based Framework for Declarative Web Programming

    Authors: Michael Hanus, Sven Koschnicke

    Abstract: We describe a framework to support the implementation of web-based systems intended to manipulate data stored in relational databases. Since the conceptual model of a relational database is often specified as an entity-relationship (ER) model, we propose to use the ER model to generate a complete implementation in the declarative programming language Curry. This implementation contains operations… ▽ More

    Submitted 17 September, 2012; v1 submitted 21 March, 2011; originally announced March 2011.

    Comments: To appear in Theory and Practice of Logic Programming (TPLP)

    Journal ref: Theory and Practice of Logic Programming 14 (2014) 269-291

  17. arXiv:0711.0348  [pdf, ps, other

    cs.PL cs.SE

    Compiling ER Specifications into Declarative Programs

    Authors: Bernd Braßel, Michael Hanus, Marion Muller

    Abstract: This paper proposes an environment to support high-level database programming in a declarative programming language. In order to ensure safe database updates, all access and update operations related to the database are generated from high-level descriptions in the entity- relationship (ER) model. We propose a representation of ER diagrams in the declarative language Curry so that they can be co… ▽ More

    Submitted 2 November, 2007; originally announced November 2007.

    Comments: Paper presented at the 17th Workshop on Logic-based Methods in Programming Environments (WLPE2007)

    ACM Class: D.2.6; D.1.6

  18. arXiv:cs/0701147  [pdf, ps, other

    cs.PL

    A Generic Analysis Environment for Curry Programs

    Authors: Michael Hanus

    Abstract: We present CurryBrowser, a generic analysis environment for the declarative multi-paradigm language Curry. CurryBrowser supports browsing through the program code of an application written in Curry, i.e., the main module and all directly or indirectly imported modules. Each module can be shown in different formats (e.g., source code, interface, intermediate code) and, inside each module, various… ▽ More

    Submitted 24 January, 2007; originally announced January 2007.

    Comments: Paper presented at the 16th Workshop on Logic-based Methods in Programming Environments

  19. arXiv:cs/0403011  [pdf, ps, other

    cs.PL

    Specialization of Functional Logic Programs Based on Needed Narrowing

    Authors: Maria Alpuente, Michael Hanus, Salvador Lucas, German Vidal

    Abstract: Many functional logic languages are based on narrowing, a unification-based goal-solving mechanism which subsumes the reduction mechanism of functional languages and the resolution principle of logic languages. Needed narrowing is an optimal evaluation strategy which constitutes the basis of modern (narrowing-based) lazy functional logic languages. In this work, we present the fundamentals of pa… ▽ More

    Submitted 9 March, 2004; originally announced March 2004.

    Comments: 48 pages. This paper has been accepted for publication in the Journal of Theory and Practice of Logic Programming. In contrast to the journal version, this paper contains the detailed proofs of the results presented in this paper

    ACM Class: D.1.1; D.1.6; D.3.4

  20. arXiv:cs/0111039  [pdf, ps, other

    cs.PL cs.SE

    An Integrated Development Environment for Declarative Multi-Paradigm Programming

    Authors: Michael Hanus, Johannes Koj

    Abstract: In this paper we present CIDER (Curry Integrated Development EnviRonment), an analysis and programming environment for the declarative multi-paradigm language Curry. CIDER is a graphical environment to support the development of Curry programs by providing integrated tools for the analysis and visualization of programs. CIDER is completely implemented in Curry using libraries for GUI programming… ▽ More

    Submitted 19 November, 2001; v1 submitted 14 November, 2001; originally announced November 2001.

    Comments: In A. Kusalik (ed), proceedings of the Eleventh International Workshop on Logic Programming Environments (WLPE'01), December 1, 2001, Paphos, Cyprus. cs.PL/0111042

    ACM Class: D.1.1; D.1.3; D.1.6; D.2.6; D.2.5; D.3.4