libhstar
Pure untyped extensional non-deterministic memoized combinator machine.
TODO
- Test infrastructure
- Collect benchmark problems
- Specify behavior
- Build test jig
- Basic reduction
- Eager linear reduction
- Memoization
- Eta reduction as in - [ ]
- Nondeterminism
- Reduction rules for JOIN
- Sampling from joins over flat domains
- Todd-Coxeter
- Forward-chaining merge logic
- Types
- Reduction rules for basic datatypes
- Optimizations for basic datatypes (byte operations, integers)
- Json datatypes: booleans, numbers, strings, lists, dicts
- Serialization via protobuf, json, etc. (use upb)
- Fast C implementation
- C implementation
- Python bindings for c version
- Define performance metrics
- Build performance benchmarking jig
References
- [Scott76]
Dana Scott (1976)
Datatypes as Lattices - [Hindley08]
J. Roger Hindley, J.P. Seldin (2008)
"Lambda calculus and combinatory logic: an introduction" - [Koopman91]
Philip Koopman, Peter Lee (1991)
Architectural considerations for graph reduction - [Boulifa03]
Rabea Boulifa, Mohamed Mezghiche (2003)
Another Implementation Technique for Functional Languages - [Obermeyer09]
Fritz Obermeyer (2009)
Automated Equational Reasoning in Nondeterministic λ-Calculi Modulo Theories H* - [Fischer11]
Sebastian Fischer, Oleg Kiselyov, Chung-Chieh Shan (2011)
Purely functional lazy nondeterministic programming
License
Copyright (c) 2016 Fritz Obermeyer.
Libhstar is licensed under the Apache 2.0 License.
On this page
Languages
C90.2%CMake5.3%Makefile4.5%
Contributors
Apache License 2.0
Created February 1, 2016
Updated February 26, 2022