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. 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.