Program Transformation

14,000,000 Leading Edge Experts on the ideXlab platform

Scan Science and Technology

Contact Leading Edge Experts & Companies

Scan Science and Technology

Contact Leading Edge Experts & Companies

The Experts below are selected from a list of 76737 Experts worldwide ranked by ideXlab platform

Eelco Visser - One of the best experts on this subject based on the ideXlab platform.

  • Fundamenta Informaticae Draft 2004 1–73 1 IOS Press Program Transformation with Scoped Dynamic Rewrite Rules
    2015
    Co-Authors: Martin Bravenboer, Arthur Van Dam, Karina Olmos, Eelco Visser
    Abstract:

    Abstract. The applicability of term rewriting to Program Transformation is limited by the lack of control over rule application and by the context-free nature of rewrite rules. The first problem is addressed by languages supporting user-definable rewriting strategies. The second problem is ad-dressed by the extension of rewriting strategies with scoped dynamic rewrite rules. Dynamic rules are defined at run-time and can access variables available from their definition context. Rules defined within a rule scope are automatically retracted at the end of that scope. In this paper we explore the design space of dynamic rules, their application to Transformation problems, and their implemen-tation. The technique is formally defined by extending the operational semantics underlying the Program Transformation language Stratego, and illustrated by means of several Program tranforma-tions in Stratego, including constant propagation, bound variable renaming, dead code elimination, function inlining, and function specialization. 1

  • stratego xt 0 17 a language and toolset for Program Transformation
    Technical Report Series TUD-SERG-2008-011, 2008
    Co-Authors: Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, Eelco Visser
    Abstract:

    Preprint of paper published in: Science of Computer Programming (Elsevier), 72 (1-2), 2008; doi:10.1016/j.scico.2007.11.003 Stratego/XT is a language and toolset for Program Transformation. The Stratego language provides rewrite rules for expressing basic Transformations, Programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive Transformations, thus supporting the development of Transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable Transformation components, and tools for generating such components from declarative specifications. Complete Program Transformation systems are composed from these components. This paper gives an overview of Stratego/XT 0.17, including a description of the Stratego language and XT Transformation tools; a discussion of the implementation techniques and software engineering process; and a description of applications built with Stratego/XT.

  • stratego xt 0 17 a language and toolset for Program Transformation
    Science of Computer Programming, 2008
    Co-Authors: Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, Eelco Visser
    Abstract:

    Stratego/XT is a language and toolset for Program Transformation. The Stratego language provides rewrite rules for expressing basic Transformations, Programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive Transformations, thus supporting the development of Transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable Transformation components, and tools for generating such components from declarative specifications. Complete Program Transformation systems are composed from these components. This paper gives an overview of Stratego/XT 0.17, including a description of the Stratego language and XT Transformation tools; a discussion of the implementation techniques and software engineering process; and a description of applications built with Stratego/XT.

  • Program Transformation with Scoped Dynamic Rewrite Rules
    Fundamenta Informaticae, 2006
    Co-Authors: Martin Bravenboer, Arthur Van Dam, Karina Olmos, Eelco Visser
    Abstract:

    The applicability of term rewriting to Program Transformation is limited by the lack of control over rule application and by the context-free nature of rewrite rules. The first problem is addressed by languages supporting user-definable rewriting strategies. The second problem is addressed by the extension of rewriting strategies with scoped dynamic rewrite rules. Dynamic rules are defined at run-time and can access variables available from their definition context. Rules defined within a rule scope are automatically retracted at the end of that scope. In this paper, we explore the design space of dynamic rules, and their application to Transformation problems. The technique is formally defined by extending the operational semantics underlying the Program Transformation language Stratego, and illustrated by means of several Program Transformations in Stratego, including constant propagation, bound variable renaming, dead code elimination, function inlining, and function specialization.

  • metaborg in action examples of domain specific language embedding and assimilation using stratego xt
    Lecture Notes in Computer Science, 2005
    Co-Authors: Martin Bravenboer, Rene De Groot, Eelco Visser
    Abstract:

    General-purpose Programming languages provide limited facilities for expressing domain-specific concepts in a natural manner. All domain concepts need to be captured using the same generic syntactic and semantic constructs. Generative Programming methods and Program Transformation techniques can be used to overcome this lack of abstraction in general-purpose languages. In this tutorial we describe the MetaBorg method for embedding domain-specific languages, tailored syntactically and semantically to the application domain at hand, in a general-purpose language. MetaBorg is based on Stratego/XT, a language and toolset for the implementation of Program Transformation systems, which is used for the definition of syntactic embeddings and assimilation of the embedded constructs into the surrounding code. We illustrate MetaBorg with three examples. JavaSwul is a custom designed language for implementing graphical user-interfaces, which provides high-level abstractions for component composition and event-handling. JavaRegex is a new embedding of regular expression matching and string rewriting. JavaJava is an embedding of Java in Java for generating Java code. For these cases we show how Java Programs in these domains become dramatically more readable, and we give an impression of the implementation of the language embeddings.

Martin Bravenboer - One of the best experts on this subject based on the ideXlab platform.

  • Fundamenta Informaticae Draft 2004 1–73 1 IOS Press Program Transformation with Scoped Dynamic Rewrite Rules
    2015
    Co-Authors: Martin Bravenboer, Arthur Van Dam, Karina Olmos, Eelco Visser
    Abstract:

    Abstract. The applicability of term rewriting to Program Transformation is limited by the lack of control over rule application and by the context-free nature of rewrite rules. The first problem is addressed by languages supporting user-definable rewriting strategies. The second problem is ad-dressed by the extension of rewriting strategies with scoped dynamic rewrite rules. Dynamic rules are defined at run-time and can access variables available from their definition context. Rules defined within a rule scope are automatically retracted at the end of that scope. In this paper we explore the design space of dynamic rules, their application to Transformation problems, and their implemen-tation. The technique is formally defined by extending the operational semantics underlying the Program Transformation language Stratego, and illustrated by means of several Program tranforma-tions in Stratego, including constant propagation, bound variable renaming, dead code elimination, function inlining, and function specialization. 1

  • stratego xt 0 17 a language and toolset for Program Transformation
    Technical Report Series TUD-SERG-2008-011, 2008
    Co-Authors: Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, Eelco Visser
    Abstract:

    Preprint of paper published in: Science of Computer Programming (Elsevier), 72 (1-2), 2008; doi:10.1016/j.scico.2007.11.003 Stratego/XT is a language and toolset for Program Transformation. The Stratego language provides rewrite rules for expressing basic Transformations, Programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive Transformations, thus supporting the development of Transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable Transformation components, and tools for generating such components from declarative specifications. Complete Program Transformation systems are composed from these components. This paper gives an overview of Stratego/XT 0.17, including a description of the Stratego language and XT Transformation tools; a discussion of the implementation techniques and software engineering process; and a description of applications built with Stratego/XT.

  • stratego xt 0 17 a language and toolset for Program Transformation
    Science of Computer Programming, 2008
    Co-Authors: Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, Eelco Visser
    Abstract:

    Stratego/XT is a language and toolset for Program Transformation. The Stratego language provides rewrite rules for expressing basic Transformations, Programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive Transformations, thus supporting the development of Transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable Transformation components, and tools for generating such components from declarative specifications. Complete Program Transformation systems are composed from these components. This paper gives an overview of Stratego/XT 0.17, including a description of the Stratego language and XT Transformation tools; a discussion of the implementation techniques and software engineering process; and a description of applications built with Stratego/XT.

  • Program Transformation with Scoped Dynamic Rewrite Rules
    Fundamenta Informaticae, 2006
    Co-Authors: Martin Bravenboer, Arthur Van Dam, Karina Olmos, Eelco Visser
    Abstract:

    The applicability of term rewriting to Program Transformation is limited by the lack of control over rule application and by the context-free nature of rewrite rules. The first problem is addressed by languages supporting user-definable rewriting strategies. The second problem is addressed by the extension of rewriting strategies with scoped dynamic rewrite rules. Dynamic rules are defined at run-time and can access variables available from their definition context. Rules defined within a rule scope are automatically retracted at the end of that scope. In this paper, we explore the design space of dynamic rules, and their application to Transformation problems. The technique is formally defined by extending the operational semantics underlying the Program Transformation language Stratego, and illustrated by means of several Program Transformations in Stratego, including constant propagation, bound variable renaming, dead code elimination, function inlining, and function specialization.

  • metaborg in action examples of domain specific language embedding and assimilation using stratego xt
    Lecture Notes in Computer Science, 2005
    Co-Authors: Martin Bravenboer, Rene De Groot, Eelco Visser
    Abstract:

    General-purpose Programming languages provide limited facilities for expressing domain-specific concepts in a natural manner. All domain concepts need to be captured using the same generic syntactic and semantic constructs. Generative Programming methods and Program Transformation techniques can be used to overcome this lack of abstraction in general-purpose languages. In this tutorial we describe the MetaBorg method for embedding domain-specific languages, tailored syntactically and semantically to the application domain at hand, in a general-purpose language. MetaBorg is based on Stratego/XT, a language and toolset for the implementation of Program Transformation systems, which is used for the definition of syntactic embeddings and assimilation of the embedded constructs into the surrounding code. We illustrate MetaBorg with three examples. JavaSwul is a custom designed language for implementing graphical user-interfaces, which provides high-level abstractions for component composition and event-handling. JavaRegex is a new embedding of regular expression matching and string rewriting. JavaJava is an embedding of Java in Java for generating Java code. For these cases we show how Java Programs in these domains become dramatically more readable, and we give an impression of the implementation of the language embeddings.

P. Sadayappan - One of the best experts on this subject based on the ideXlab platform.

  • Analytical modeling of cache behavior for affine Programs
    Proceedings of the ACM on Programming Languages, 2018
    Co-Authors: Wenlei Bao, Sriram Krishnamoorthy, Louis-noël Pouchet, P. Sadayappan
    Abstract:

    Optimizing compilers implement Program Transformation strategies aimed at reducing data movement to or from main memory by exploiting the data-cache hierarchy. However, instead of attempting to minimize the number of cache misses, very approximate cost models are used, due to the lack of precise compile-time models for misses for hierarchical caches. The current state of practice for cache miss analysis is based on accurate simulation. However, simulation requires time proportional to the dataset/problem size, as well as the number of distinct cache configurations of interest to be evaluated. This paper takes a fundamentally different approach, by focusing on polyhedral Programs with static control flow. Instead of relying on costly simulation, a closed-form solution for modeling of misses in a set associative cache hierarchy is developed. This solution can enable Program Transformation choice at compile time to optimize cache misses. A tool implementing the approach has been developed and used for validation of the framework.

  • a compiler framework for optimization of affine loop nests for gpgpus
    International Conference on Supercomputing, 2008
    Co-Authors: Muthu Baskaran, Uday Bondhugula, Jothi Ramanujam, Sriram Krishnamoorthy, Atanas Rountev, P. Sadayappan
    Abstract:

    GPUs are a class of specialized parallel architectures with tremendous computational power. The new Compute Unified Device Architecture (CUDA) Programming model from NVIDIA facilitates Programming of general purpose applications on their GPUs. However, manual development of high-performance parallel code for GPUs is still very challenging. In this paper, a number of issues are addressed towards the goal of developing a compiler framework for automatic parallelization and performance optimization of affine loop nests on GPGPUs: 1) approach to Program Transformation for efficient data access from GPU global memory, using a polyhedral compiler model of data dependence abstraction and Program Transformation; 2) determination of optimal padding factors for conflict-minimal data access from GPU shared memory; and 3) model-driven empirical search to determine optimal parameters for unrolling and tiling. Experimental results on a number of kernels demonstrate the effectiveness of the compiler optimization approaches developed.

  • a compiler framework for optimization of affine loop nests for gpgpus
    International Conference on Supercomputing, 2008
    Co-Authors: Muthu Baskaran, Uday Bondhugula, Jothi Ramanujam, Sriram Krishnamoorthy, Atanas Rountev, P. Sadayappan
    Abstract:

    GPUs are a class of specialized parallel architectures with tremendous computational power. The new Compute Unified Device Architecture (CUDA) Programming model from NVIDIA facilitates Programming of general purpose applications on their GPUs. However, manual development of high-performance parallel code for GPUs is still very challenging. In this paper, a number of issues are addressed towards the goal of developing a compiler framework for automatic parallelization and performance optimization of affine loop nests on GPGPUs: 1) approach to Program Transformation for efficient data access from GPU global memory, using a polyhedral compiler model of data dependence abstraction and Program Transformation; 2) determination of optimal padding factors for conflict-minimal data access from GPU shared memory; and 3) model-driven empirical search to determine optimal parameters for unrolling and tiling. Experimental results on a number of kernels demonstrate the effectiveness of the compiler optimization approaches developed.

Jiři Barnat - One of the best experts on this subject based on the ideXlab platform.

  • symbolic computation via Program Transformation
    International Colloquium on Theoretical Aspects of Computing, 2018
    Co-Authors: Henrich Lauko, Petr Rockai, Jiři Barnat
    Abstract:

    Symbolic computation is an important approach in automated Program analysis. Most state-of-the-art tools perform symbolic computation as interpreters and directly maintain symbolic data. In this paper, we show that it is feasible, and in fact practical, to use a compiler-based strategy instead. Using compiler tooling, we propose and implement a Transformation which takes a standard Program and outputs a Program that performs a semantically equivalent, but partially symbolic, computation. The transformed Program maintains symbolic values internally and operates directly on them; therefore, the Program can be processed by a tool without support for symbolic manipulation.

  • symbolic computation via Program Transformation
    arXiv: Programming Languages, 2018
    Co-Authors: Henrich Lauko, Petr Rockai, Jiři Barnat
    Abstract:

    Symbolic computation is an important approach in automated Program analysis. Most state-of-the-art tools perform symbolic computation as interpreters and directly maintain symbolic data. In this paper, we show that it is feasible, and in fact practical, to use a compiler-based strategy instead. Using compiler tooling, we propose and implement a Transformation which takes a standard Program and outputs a Program that performs semantically equivalent, but partially symbolic, computation. The transformed Program maintains symbolic values internally and operates directly on them hence the Program can be processed by a tool without support for symbolic manipulation. The main motivation for the Transformation is in symbolic verification, but there are many other possible use-cases, including test generation and concolic testing. Moreover using the Transformation simplifies tools, since the symbolic computation is handled by the Program directly. We have implemented the Transformation at the level of LLVM bitcode. The paper includes an experimental evaluation, based on an explicit-state software model checker as a verification backend.

Michael Tautschnig - One of the best experts on this subject based on the ideXlab platform.

  • software verification for weak memory via Program Transformation
    European Symposium on Programming, 2013
    Co-Authors: Jade Alglave, Daniel Kroening, Vincent Nimal, Michael Tautschnig
    Abstract:

    Multiprocessors implement weak memory models, but Program verifiers often assume Sequential Consistency (SC), and thus may miss bugs due to weak memory. We propose a sound Transformation of the Program to verify, enabling SC tools to perform verification w.r.t. weak memory. We present experiments for a broad variety of models (from x86-TSO to Power) and a vast range of verification tools, quantify the additional cost of the Transformation and highlight the cases when we can drastically reduce it. Our benchmarks include work-queue management code from PostgreSQL.

  • software verification for weak memory via Program Transformation
    arXiv: Logic in Computer Science, 2012
    Co-Authors: Jade Alglave, Daniel Kroening, Vincent Nimal, Michael Tautschnig
    Abstract:

    Despite multiprocessors implementing weak memory models, verification methods often assume Sequential Consistency (SC), thus may miss bugs due to weak memory. We propose a sound Transformation of the Program to verify, enabling SC tools to perform verification w.r.t. weak memory. We present experiments for a broad variety of models (from x86/TSO to Power/ARM) and a vast range of verification tools, quantify the additional cost of the Transformation and highlight the cases when we can drastically reduce it. Our benchmarks include work-queue management code from PostgreSQL.