12 research outputs found
Certifying and reasoning about cost annotations of functional programs
We present a so-called labelling method to insert cost annotations in a
higher-order functional program, to certify their correctness with respect to a
standard compilation chain to assembly code including safe memory management,
and to reason on them in a higher-order Hoare logic.Comment: Higher-Order and Symbolic Computation (2013
31ème Journées Francophones des Langages Applicatifs
International audienc
Des types aux assertions logiques (preuve automatique ou assistée de propriétés sur les programmes fonctionnels)
PARIS7-Bibliothèque centrale (751132105) / SudocSudocFranceF
JFLA 2021 - 32 èmes Journées Francophones des Langages Applicatifs
International audienc
Stratified type inference for generalized algebraic data types
We offer a solution to the type inference problem for an extensionof Hindley and Milner's type system with generalized algebraic data types. Our approach is in two strata. The bottom stratum isa core language that marries type inference in the style of Hindley and Milner with type checking for generalized algebraic data types.This results in an extremely simple specification, where case con-structs must carry an explicit type annotation and type conversions must be made explicit. The top stratum consists of (two variants of)an independent shape inference algorithm. This algorithm accepts a source term that contains some explicit type information, propa-gates this information in a local, predictable way, and produces a new source term that carries more explicit type information. It canbe viewed as a preprocessor that helps produce some of the type annotations required by the bottom stratum. It is proven sound inthe sense that it never inserts annotations that could contradict the type derivation that the programmer has in mind
Extended Static Checking of Call-by-Value Functional Programs
We present a Hoare logic for a call-by-value programming language equipped with recursive, higher-order functions, algebraic data types, and a polymorphic type system in the style of Hindley and Milner. It is the theoretical basis for a tool that extracts proof obligations out of programs annotated with logical assertions. These proof obligations, expressed in a typed, higher-order logic, are discharged using off-the-shelf automated or interactive theorem provers. Although the technical apparatus that we exploit is by now standard, its application to call-by-value functional programming languages appears to be new, and (we claim) deserves attention. As a sample application, we check the partial correctness of a balanced binary search tree implementation