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}
}
• Published 1 July 2014
• Computer Science
• Journal of Functional Programming
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
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.
• Computer Science
TFP
• 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 Science
PEPM '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.
Optimizing SYB traversals is easy!
• Computer Science
Sci. Comput. Program.
• 2015
Reasoning with the HERMIT: tool support for equational reasoning on GHC core programs
• Computer Science
• 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 Science
PEPM '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 Science
WGP '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 Science
ArXiv
• 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 Science
Journal 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
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 Science
MODULARITY
• 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 Science
TLDI '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 Science
• 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 Science
POPL '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.