Because set theory underpins all mathematics and is pervasive in many facets of computer science and engineering, it is useful to have tools to describe and manipulate set-theoretic formulations.
Sal (Set Assembly Language) is a system for computing with non-enumerative set representations. Sal's operations correspond to an implementation of the algebra of sets, with minimal added syntactic sugar; a compiler (Salc) validates and performs static optimizations of Sal definitions. A virtual machine architecture (Svm) executes Sal definitions.
Sal/Svm has turned out to be a surprisingly versatile framework for a growing number of problems. One such application, as a framework for declaratively specifying computational problems with the same level of precision that traditional machine languages enable the specification of computational algorithms, is presented.
Status: This is an ongoing project. I plan to make Sal, the Sal VM, and the Salc compiler publicly available by 2016. If you are interested in collaborating on some of the unsolved problems or applications, please get in touch!
Collaborations: For his M.Sc. thesis, Rik Jongerius at TU Eindhoven built a language for specifying computational problems (Copernicus), that compiles down to Sal. You can find his M.Sc. report listing at TU/e here and [Download a PDF of the report here].
- R. Jongerius, P. Stanley-Marbell, and H. Corporaal. "Quantifying the Common Computational Problems in Contemporary Applications (Extended Version)". IBM Research Report RZ 3885, 2014.
- R. Jongerius and P. Stanley-Marbell. Language Definition for a Notation of Computational Problems. IBM Research Report RZ 3828, 2012
- R. Jongerius, P. Stanley-Marbell, and H. Corporaal. Quantifying the Common Computational Problems in Contempo- rary Applications. In Proceedings of the 2011 IEEE International Symposium on Workload Characterization, IISWC ’11, page 74, 2011.
- P. Stanley-Marbell. "Sal/Svm: An Assembly Language and Virtual Machine for Computing with Non-Enumerated Sets" Proceedings of the ACM VMIL '10 Virtual Machines and Intermediate Languages, pp. 1--10, 2010.