26 research outputs found

    Axioms and Decidability for Type Isomorphism in the Presence of Sums

    Get PDF
    We consider the problem of characterizing isomorphisms of types, or, equivalently, constructive cardinality of sets, in the simultaneous presence of disjoint unions, Cartesian products, and exponentials. Mostly relying on results about polynomials with exponentiation that have not been used in our context, we derive: that the usual finite axiomatization known as High-School Identities (HSI) is complete for a significant subclass of types; that it is decidable for that subclass when two types are isomorphic; that, for the whole of the set of types, a recursive extension of the axioms of HSI exists that is complete; and that, for the whole of the set of types, the question as to whether two types are isomorphic is decidable when base types are to be interpreted as finite sets. We also point out certain related open problems

    Perspectives for proof unwinding by programming languages techniques

    Get PDF
    In this chapter, we propose some future directions of work, potentially beneficial to Mathematics and its foundations, based on the recent import of methodology from the theory of programming languages into proof theory. This scientific essay, written for the audience of proof theorists as well as the working mathematician, is not a survey of the field, but rather a personal view of the author who hopes that it may inspire future and fellow researchers

    The exp-log normal form of types

    Get PDF
    Lambda calculi with algebraic data types lie at the core of functional programming languages and proof assistants, but conceal at least two fundamental theoretical problems already in the presence of the simplest non-trivial data type, the sum type. First, we do not know of an explicit and implemented algorithm for deciding the beta-eta-equality of terms---and this in spite of the first decidability results proven two decades ago. Second, it is not clear how to decide when two types are essentially the same, i.e. isomorphic, in spite of the meta-theoretic results on decidability of the isomorphism. In this paper, we present the exp-log normal form of types---derived from the representation of exponential polynomials via the unary exponential and logarithmic functions---that any type built from arrows, products, and sums, can be isomorphically mapped to. The type normal form can be used as a simple heuristic for deciding type isomorphism, thanks to the fact that it is a systematic application of the high-school identities. We then show that the type normal form allows to reduce the standard beta-eta equational theory of the lambda calculus to a specialized version of itself, while preserving the completeness of equality on terms. We end by describing an alternative representation of normal terms of the lambda calculus with sums, together with a Coq-implemented converter into/from our new term calculus. The difference with the only other previously implemented heuristic for deciding interesting instances of eta-equality by Balat, Di Cosmo, and Fiore, is that we exploit the type information of terms substantially and this often allows us to obtain a canonical representation of terms without performing sophisticated term analyses

    Curry-style type Isomorphisms and Game Semantics

    Get PDF
    Curry-style system F, ie. system F with no explicit types in terms, can be seen as a core presentation of polymorphism from the point of view of programming languages. This paper gives a characterisation of type isomorphisms for this language, by using a game model whose intuitions come both from the syntax and from the game semantics universe. The model is composed of: an untyped part to interpret terms, a notion of game to interpret types, and a typed part to express the fact that an untyped strategy plays on a game. By analysing isomorphisms in the model, we prove that the equational system corresponding to type isomorphisms for Curry-style system F is the extension of the equational system for Church-style isomorphisms with a new, non-trivial equation: forall X.A = A[forall Y.Y/X] if X appears only positively in A.Comment: Accept\'e \`a Mathematical Structures for Computer Science, Special Issue on Type Isomorphism

    Genetic Programming + Proof Search = Automatic Improvement

    Get PDF
    Search Based Software Engineering techniques are emerging as important tools for software maintenance. Foremost among these is Genetic Improvement, which has historically applied the stochastic techniques of Genetic Programming to optimize pre-existing program code. Previous work in this area has not generally preserved program semantics and this article describes an alternative to the traditional mutation operators used, employing deterministic proof search in the sequent calculus to yield semantics-preserving transformations on algebraic data types. Two case studies are described, both of which are applicable to the recently-introduced `grow and graft' technique of Genetic Improvement: the first extends the expressiveness of the `grafting' phase and the second transforms the representation of a list data type to yield an asymptotic efficiency improvement

    Algorithms for Extended Alpha-Equivalence and Complexity

    Get PDF
    Equality of expressions in lambda-calculi, higher-order programming languages, higher-order programming calculi and process calculi is defined as alpha-equivalence. Permutability of bindings in let-constructs and structural congruence axioms extend alpha-equivalence. We analyse these extended alpha-equivalences and show that there are calculi with polynomial time algorithms, that a multiple-binding “let ” may make alpha-equivalence as hard as finding graph-isomorphisms, and that the replication operator in the pi-calculus may lead to an EXPSPACE-hard alpha-equivalence problem

    Second-Order Type Isomorphisms Through Game Semantics

    Get PDF
    The characterization of second-order type isomorphisms is a purely syntactical problem that we propose to study under the enlightenment of game semantics. We study this question in the case of second-order λμ\mu-calculus, which can be seen as an extension of system F to classical logic, and for which we define a categorical framework: control hyperdoctrines. Our game model of λμ\mu-calculus is based on polymorphic arenas (closely related to Hughes' hyperforests) which evolve during the play (following the ideas of Murawski-Ong). We show that type isomorphisms coincide with the "equality" on arenas associated with types. Finally we deduce the equational characterization of type isomorphisms from this equality. We also recover from the same model Roberto Di Cosmo's characterization of type isomorphisms for system F. This approach leads to a geometrical comprehension on the question of second order type isomorphisms, which can be easily extended to some other polymorphic calculi including additional programming features.Comment: accepted by Annals of Pure and Applied Logic, Special Issue on Game Semantic

    Component documentation: An approach based on sequence diagrams

    Get PDF
    Los rápidos cambios que experimentan las reglas de negocio asociadas a las empresas, hacen que por una parte se incremente el número de nuevas soluciones software a construir, mientras que por otro lado aumente el tiempo y dinero destinado a la evolución de los sistemas existentes. La falta de información sobre el comportamiento preciso de los componentes utilizados dificulta la evolución de los sistemas desarrollados. De esta manera, añadir un nuevo componente o sustituir uno existente plantea problemas derivados por las nuevas interacciones que se dan para integrarlo en un sistema en funcionamiento. Este artículo presenta una herramienta que partiendo de los diagramas de secuencia y demás información obtenida en la fase de Análisis y Diseño, permite mejorar el conocimiento de los servicios de los componentes utilizados y de sus interacciones con el entorno en donde se utiliza. Así mismo, se estudia la posibilidad de agregación o sustitución, individual o mediante la utilización de conjuntos de componentes que cooperen para adaptarse a los nuevos requisitos del sistema. Con todo ello, se pretende minimizar los posibles problemas de integración de nuevos componentes en un sistema software.The rapid changes experienced by the business rules associated with companies, They mean that, on the one hand, the number of new software solutions to be built increases, while on the other hand, the time and money allocated to evolution increases. of existing systems. Lack of accurate behavioral information of the components used hinders the evolution of the developed systems. From In this way, adding a new component or replacing an existing one poses problems derived from the new interactions that occur to integrate it into a functioning system. This article presents a tool that, starting from the diagrams of sequence and other information obtained in the Analysis and Design phase, allows to improve the knowledge of the services of the components used and their interactions with the environment in which it is used. Likewise, the possibility of aggregation or substitution, individually or through the use of sets of components that cooperate to adapt to new system requirements. With all this, it is intended minimize the potential problems of integrating new components into a system software

    Documentación de componentes: una aproximación basada en diagramas de secuencia

    Get PDF
    Los rápidos cambios que experimentan las reglas de negocio asociadas a las empresas, hacen que por una parte se incremente el número de nuevas soluciones software a construir, mientras que por otro lado aumente el tiempo y dinero destinado a la evolución de los sistemas existentes. La falta de información sobre el comportamiento preciso de los componentes utilizados dificulta la evolución de los sistemas desarrollados. De esta manera, añadir un nuevo componente o sustituir uno existente plantea problemas derivados por las nuevas interacciones que se dan para integrarlo en un sistema en funcionamiento.Palabras clave: componentes software, escenarios, reutilización, mantenimiento de sistemas, diagramas de paso de mensajes, autómatas
    corecore