# The Kansas University rewrite engine

@article{Sculthorpe2014TheKU, title={The Kansas University rewrite engine}, author={Neil Sculthorpe and Nicolas Frisby and Andy Gill}, journal={Journal of Functional Programming}, year={2014}, volume={24}, pages={434 - 473} }

Abstract When writing transformation systems, a significant amount of engineering effort goes into setting up the infrastructure needed to direct individual transformations to specific targets in the data being transformed. Strategic programming languages provide general-purpose infrastructure for this task, which the author of a transformation system can use for any algebraic data structure. The Kansas University Rewrite Engine (KURE) is a typed strategic programming language, implemented as a…

## 13 Citations

Theorem Provers as Libraries - An Approach to Formally Verifying Functional Programs

- Computer Science
- 2015

This dissertation details a hybrid approach that captures the best of both worlds: the formality of a proof system paired with the native integration of an embedded, domain specific language (EDSL) for testing.

Lightweight Higher-Order Rewriting in Haskell

- Computer ScienceTFP
- 2015

A generic Haskell library for expressing rewrite rules with a safe treatment of variables and binders, and it is shown by example that the library is capable of expressing useful simplifications that might be used in a compiler.

Making a Century in HERMIT Extended Abstract

- Computer Science
- 2014

This extended abstract presents a detailed case study of HERMIT usage in practice: mechanising Bird’s classic “Making a Century” pearl, and uses the mechanised pearl to introduce recent HERMIT developments for supporting for equational reasoning.

The HERMIT in the stream: fusing stream fusion's concatMap

- Computer SciencePEPM '14
- 2014

A custom optimization plugin is developed which implements the proposed concatMap transformation, and a new translation scheme for list comprehensions which enables them to be optimized, and extends the transformation to monadic streams.

Reasoning with the HERMIT: tool support for equational reasoning on GHC core programs

- Computer ScienceHaskell
- 2015

HerMIT's recently developed support for equational reasoning is described, and two case studies of HERMIT usage are presented: checking that type-class laws hold for specific instance declarations, and mechanising textbook equational Reasoning.

Optimizing SYB is easy!

- Computer SciencePEPM '14
- 2014

This paper optimizes SYB-style traversals to be as fast as handwritten, non-generic code, and benchmarks show that this optimization improves the speed of SYB -style code by an order of magnitude or more.

True sums of products

- Computer ScienceWGP '14
- 2014

The sum-of-products (SOP) view for datatype-generic programming (in Haskell) allows for the definition of powerful high-level traversal combinators, which in turn encourage thedefinition of generic functions in a compositional and concise style.

On mu-Symmetric Polynomials

- Mathematics, Computer ScienceArXiv
- 2020

Three algorithms for checking if a given root function is $\mu$-symmetric are designed: one based on Grobner bases, another based on preprocessing and reduction, and the third based on solving linear equations.

On μ-symmetric polynomials

- Mathematics, Computer ScienceJournal of Algebra and Its Applications
- 2021

Three algorithms for checking if a given root function is [Formula: see text]-symmetric are introduced, one based on Gröbner bases, another based on canonical bases and reduction, and the third based on solving linear equations.

## References

SHOWING 1-10 OF 72 REFERENCES

First Class Rules and Generic Traversals for Program Transformation Languages

- Computer Science
- 2001

A pure non-strict functional language called RhoStratego is developed, incorporating features from Stratego, and a type system is developed which consists of the Hindley-Milner type system extended with rank-2 polymorphism and typing rules to support generic traversals.

Modular specification and dynamic enforcement of syntactic language constraints when generating code

- Computer ScienceMODULARITY
- 2014

This work has integrated support for typesmart constructors into the run-time system of Stratego to enforce usage of typesmartconstructors implicitly whenever a regular constructor is called, and demonstrates how to derive them automatically from a grammar.

Scrap your boilerplate: a practical design pattern for generic programming

- Computer ScienceTLDI '03
- 2003

This work describes a design pattern for writing programs that traverse data structures built from rich mutually-recursive data types that makes essential use of rank-2 polymorphism, an extension found in some implementations of Haskell.

Alloy: fast generic transformations for Haskell

- Computer ScienceHaskell
- 2009

This work describes use cases for a generic system derived from work on a nanopass compiler, and detail a new generics approach (Alloy) that is developed in Haskell to allow the authors' compiler passes to traverse the abstract syntax tree quickly.

Run your research: on the effectiveness of lightweight mechanization

- Computer SciencePOPL '12
- 2012

Redex is a domain-specific language for semantic models that is embedded in the Racket programming language and comes with tools for the semantics engineering life cycle.

Stratego/XT 0.17. A language and toolset for program transformation

- Computer ScienceSci. Comput. Program.
- 2008

A survey of strategies in rule-based program transformation systems

- Computer ScienceJ. Symb. Comput.
- 2005

Monad transformers and modular interpreters

- Computer SciencePOPL '95
- 1995

A fully modular interpreter based on monad transformers that incudes features missing from Steele's, Espinosa's, and Wadler's earlier efforts is designed and implemented in Gofer, whose constructor classes provide just the added power over Haskell's type classes to allow precise and convenient expression of the ideas.

A Haskell Hosted DSL for Writing Transformation Systems

- Computer ScienceDSL
- 2009

KURE is a strongly typed strategy control language in the tradition of Stratego and Strafunski intended for writing reasonably efficient rewrite systems, makes use of type families to provide a delimited generic mechanism for tree rewriting, and provides support for efficient identity rewrite detection.

Rewriting Strategies in Java

- Computer ScienceElectron. Notes Theor. Comput. Sci.
- 2008