The Smalltalk Open Unification Language (SOUL) is a language integrated into Smalltalk environments and is designed for declarative meta programming. Declarative meta programming is the use of a declarative language for meta programming. SOUL falls in the class of logic-based declarative languages and is similar to Prolog, but includes some specialized features for meta programming.
The meta programs written in SOUL can process programs written in several different programming languages through the use of three libraries: LiCoR, Cava (previously Irish) and Zombie. These provide logic predicates for processing programs written respectively in Smalltalk, Java and C.
SOUL itself and its IDE tools are integrated into Smalltalk environments, currently VisualWorks and Squeak Smalltalk. SOUL is used in a number of applications of declarative meta programming, such as the IntensiVE tool suite for documenting source code.
For a more general introduction to declarative meta programming, we refer you to the DMP website. This site covers SOUL and its associated libraries LiCoR, Cava and Zombie.


