59 research outputs found

    A Type-Directed, Dictionary-Passing Translation of Featherweight Generic Go

    Full text link
    Featherweight Generic Go (FGG) is a minimal core calculus modeling the essential features of the programming language Go. It includes support for overloaded methods, interface types, structural subtyping and generics. The most straightforward semantic description of the dynamic behavior of FGG programs is to resolve method calls based on runtime type information of the receiver. This article shows a different approach by defining a type-directed translation from FGG to an untyped lambda-calculus. The translation of an FGG program provides evidence for the availability of methods as additional dictionary parameters, similar to the dictionary-passing approach known from Haskell type classes. Then, method calls can be resolved by a simple lookup of the method definition in the dictionary. Every program in the image of the translation has the same dynamic semantics as its source FGG program. The proof of this result is based on a syntactic, step-indexed logical relation. The step-index ensures a well-founded definition of the relation in the presence of recursive interface types and recursive methods.Comment: Submitted to JFP. 58 pages, includes appendix with full proof

    A type-directed, dictionary-passing translation of method overloading and structural subtyping in Featherweight Generic Go

    Get PDF
    Featherweight Generic Go (FGG) is a minimal core calculus modeling the essential features of the programming language Go. It includes support for overloaded methods, interface types, structural subtyping, and generics. The most straightforward semantic description of the dynamic behavior of FGG programs is to resolve method calls based on runtime type information of the receiver. This article shows a different approach by defining a type-directed translation from FGG− to an untyped lambda-calculus. FGG− includes all features of FGG but type assertions. The translation of an FGG− program provides evidence for the availability of methods as additional dictionary parameters, similar to the dictionary-passing approach known from Haskell type classes. Then, method calls can be resolved by a simple lookup of the method definition in the dictionary. Every program in the image of the translation has the same dynamic semantics as its source FGG− program. The proof of this result is based on a syntactic, step-indexed logical relation. The step index ensures a well-founded definition of the relation in the presence of recursive interface types and recursive methods. Although being non-deterministic, the translation is coherent

    Set-theoretic Types for Erlang

    Full text link
    Erlang is a functional programming language with dynamic typing. The language offers great flexibility for destructing values through pattern matching and dynamic type tests. Erlang also comes with a type language supporting parametric polymorphism, equi-recursive types, as well as union and a limited form of intersection types. However, type signatures only serve as documentation, there is no check that a function body conforms to its signature. Set-theoretic types and semantic subtyping fit Erlang's feature set very well. They allow expressing nearly all constructs of its type language and provide means for statically checking type signatures. This article brings set-theoretic types to Erlang and demonstrates how existing Erlang code can be statically typechecked without or with only minor modifications to the code. Further, the article formalizes the main ingredients of the type system in a small core calculus, reports on an implementation of the system, and compares it with other static typecheckers for Erlang.Comment: 14 pages, 9 figures, IFL 2022; latexmk -pdf to buil

    HETEAC: The Aerosol Classification Model for EarthCARE

    Get PDF
    We introduce the Hybrid End-To-End Aerosol Classification (HETEAC) model for the upcoming EarthCARE mission. The model serves as the common baseline for development, evaluation, and implementation of EarthCARE algorithms. It shall ensure the consistency of different aerosol products from the multi-instrument platform as well as facilitate the conform specification of broad-band optical properties necessary for the EarthCARE radiative closure efforts. The hybrid approach ensures the theoretical description of aerosol microphysics consistent with the optical properties of various aerosol types known from observations. The end-to-end model permits the uniform representation of aerosol types in terms of microphysical, optical and radiative properties

    Strategies for protein synthetic biology

    Get PDF
    Proteins are the most versatile among the various biological building blocks and a mature field of protein engineering has lead to many industrial and biomedical applications. But the strength of proteins—their versatility, dynamics and interactions—also complicates and hinders systems engineering. Therefore, the design of more sophisticated, multi-component protein systems appears to lag behind, in particular, when compared to the engineering of gene regulatory networks. Yet, synthetic biologists have started to tinker with the information flow through natural signaling networks or integrated protein switches. A successful strategy common to most of these experiments is their focus on modular interactions between protein domains or domains and peptide motifs. Such modular interaction swapping has rewired signaling in yeast, put mammalian cell morphology under the control of light, or increased the flux through a synthetic metabolic pathway. Based on this experience, we outline an engineering framework for the connection of reusable protein interaction devices into self-sufficient circuits. Such a framework should help to ‘refacture’ protein complexity into well-defined exchangeable devices for predictive engineering. We review the foundations and initial success stories of protein synthetic biology and discuss the challenges and promises on the way from protein- to protein systems design

    Application guide for omics approaches to cell signaling

    Get PDF
    Research in signal transduction aims to identify the functions of different signaling pathways in physiological and pathological states. Traditional techniques using biochemical, genetic or cell biological approaches have made important contributions to our understanding of cellular signaling. However, the single-gene approach does not take into account the full complexity of cell signaling. With the availability of omics techniques, great progress has been made in understanding signaling networks. Omics approaches can be classified into two categories: 'molecular profiling', including genomic, proteomic, post-translational modification and interactome profiling; and 'molecular perturbation', including genetic and functional perturbations

    Biological Earth observation with animal sensors

    Get PDF
    Space-based tracking technology using low-cost miniature tags is now delivering data on fine-scale animal movement at near-global scale. Linked with remotely sensed environmental data, this offers a biological lens on habitat integrity and connectivity for conservation and human health; a global network of animal sentinels of environmen-tal change

    A Software Architecture Based on Coarse-Grained Self-Adjusting Computations

    No full text
    Ensuring that software applications present their users the most recent version of data is not trivial. Self-adjusting computations are a technique for automatically and efficiently recomputing output data whenever some input changes. This article describes the software architecture of a large, commercial software system built around a framework for coarse-grained self-adjusting computations in Haskell. It discusses advantages and disadvantages based on longtime experience. The article also presents a demo of the system and explains the API of the framework

    ML modules and Haskell type classes: A constructive comparison

    No full text
    Researchers repeatedly observed that the module system of ML and the type class mechanism of Haskell are related. So far, this relationship has not been formally investigated. The work at hand fills this gap by presenting a constructive comparison between ML modules and Haskell type classes; that is, it introduces two formal translations from modules to type classes and vice versa, which enable a thorough comparison of the two concepts. The source language of the first translation is a subset of Standard ML. The target language is Haskell with common extensions and one new feature, which was developed as part of this work. The second translation maps a subset of Haskell 98 to ML with well-established extensions. I prove that the translations preserve type correctness and provide implementations for both. Building on the insights obtained from the translations, I present a thorough comparison between ML modules and Haskell type classes. Moreover, I evaluate to what extent the techniques used in the translations can be exploited for modular programming in Haskell and for programming with ad-hoc polymorphism in ML

    Semantic preservation for a type directed translation scheme of Featherweight Go

    No full text
    Featherweight Go (FG) is a minimal core calculus that includes essential Go features such as overloaded methods and interface types. The most straightforward semantic description of the dynamic behavior of FG programs is to resolve method calls based on run-time type information. A more efficient approach is to apply a type-directed translation scheme where interface-values are replaced by dictionaries that contain concrete method definitions. Thus, method calls can be resolved by a simple lookup of the method definition in the dictionary. Establishing that the target program obtained via the type-directed translation scheme preserves the semantics of the original FG program is an important task. To establish this property we employ logical relations that are indexed by types to relate source and target programs. We provide rigorous proofs and give a detailed discussion of the many subtle corners that we have encountered including the need for a step index due to recursive inter- faces and method definitions
    corecore