6,326 research outputs found

    Postcondition-preserving fusion of postorder tree transformations

    Get PDF
    Tree transformations are commonly used in applications such as program rewriting in compilers. Using a series of simple transformations to build a more complex system can make the resulting software easier to understand, maintain, and reason about. Fusion strategies for combining such successive tree transformations promote this modularity, whilst mitigating the performance impact from increased numbers of tree traversals. However, it is important to ensure that fused transformations still perform their intended tasks. Existing approaches to fusing tree transformations tend to take an informal approach to soundness, or be too restrictive to consider the kind of transformations needed in a compiler. We use postconditions to define a more useful formal notion of successful fusion, namely postcondition-preserving fusion. We also present criteria that are sufficient to ensure postcondition-preservation and facilitate modular reasoning about the success of fusion

    Heterogeneous substitution systems revisited

    Full text link
    Matthes and Uustalu (TCS 327(1-2):155-174, 2004) presented a categorical description of substitution systems capable of capturing syntax involving binding which is independent of whether the syntax is made up from least or greatest fixed points. We extend this work in two directions: we continue the analysis by creating more categorical structure, in particular by organizing substitution systems into a category and studying its properties, and we develop the proofs of the results of the cited paper and our new ones in UniMath, a recent library of univalent mathematics formalized in the Coq theorem prover.Comment: 24 page

    A Coq-based synthesis of Scala programs which are correct-by-construction

    Full text link
    The present paper introduces Scala-of-Coq, a new compiler that allows a Coq-based synthesis of Scala programs which are "correct-by-construction". A typical workflow features a user implementing a Coq functional program, proving this program's correctness with regards to its specification and making use of Scala-of-Coq to synthesize a Scala program that can seamlessly be integrated into an existing industrial Scala or Java application.Comment: 2 pages, accepted version of the paper as submitted to FTfJP 2017 (Formal Techniques for Java-like Programs), June 18-23, 2017, Barcelona , Spai

    Beating the Productivity Checker Using Embedded Languages

    Full text link
    Some total languages, like Agda and Coq, allow the use of guarded corecursion to construct infinite values and proofs. Guarded corecursion is a form of recursion in which arbitrary recursive calls are allowed, as long as they are guarded by a coinductive constructor. Guardedness ensures that programs are productive, i.e. that every finite prefix of an infinite value can be computed in finite time. However, many productive programs are not guarded, and it can be nontrivial to put them in guarded form. This paper gives a method for turning a productive program into a guarded program. The method amounts to defining a problem-specific language as a data type, writing the program in the problem-specific language, and writing a guarded interpreter for this language.Comment: In Proceedings PAR 2010, arXiv:1012.455

    The CoQ oxidoreductase FSP1 acts parallel to GPX4 to inhibit ferroptosis.

    Get PDF
    Ferroptosis is a form of regulated cell death that is caused by the iron-dependent peroxidation of lipids1,2. The glutathione-dependent lipid hydroperoxidase glutathione peroxidase 4 (GPX4) prevents ferroptosis by converting lipid hydroperoxides into non-toxic lipid alcohols3,4. Ferroptosis has previously been implicated in the cell death that underlies several degenerative conditions2, and induction of ferroptosis by the inhibition of GPX4 has emerged as a therapeutic strategy to trigger cancer cell death5. However, sensitivity to GPX4 inhibitors varies greatly across cancer cell lines6, which suggests that additional factors govern resistance to ferroptosis. Here, using a synthetic lethal CRISPR-Cas9 screen, we identify ferroptosis suppressor protein 1 (FSP1) (previously known as apoptosis-inducing factor mitochondrial 2 (AIFM2)) as a potent ferroptosis-resistance factor. Our data indicate that myristoylation recruits FSP1 to the plasma membrane where it functions as an oxidoreductase that reduces coenzyme Q10 (CoQ) (also known as ubiquinone-10), which acts as a lipophilic radical-trapping antioxidant that halts the propagation of lipid peroxides. We further find that FSP1 expression positively correlates with ferroptosis resistance across hundreds of cancer cell lines, and that FSP1 mediates resistance to ferroptosis in lung cancer cells in culture and in mouse tumour xenografts. Thus, our data identify FSP1 as a key component of a non-mitochondrial CoQ antioxidant system that acts in parallel to the canonical glutathione-based GPX4 pathway. These findings define a ferroptosis suppression pathway and indicate that pharmacological inhibition of FSP1 may provide an effective strategy to sensitize cancer cells to ferroptosis-inducing chemotherapeutic agents

    Fibrational induction rules for initial algebras

    Get PDF
    This paper provides an induction rule that can be used to prove properties of data structures whose types are inductive, i.e., are carriers of initial algebras of functors. Our results are semantic in nature and are inspired by Hermida and Jacobs’ elegant algebraic formulation of induction for polynomial data types. Our contribution is to derive, under slightly different assumptions, an induction rule that is generic over all inductive types, polynomial or not. Our induction rule is generic over the kinds of properties to be proved as well: like Hermida and Jacobs, we work in a general fibrational setting and so can accommodate very general notions of properties on inductive types rather than just those of particular syntactic forms. We establish the correctness of our generic induction rule by reducing induction to iteration. We show how our rule can be instantiated to give induction rules for the data types of rose trees, finite hereditary sets, and hyperfunctions. The former lies outside the scope of Hermida and Jacobs’ work because it is not polynomial; as far as we are aware, no induction rules have been known to exist for the latter two in a general fibrational framework. Our instantiation for hyperfunctions underscores the value of working in the general fibrational setting since this data type cannot be interpreted as a set
    • …
    corecore