(No personal opinions offered or implied -Mark)
The aim is to try to capture and formally express the interaction between the higher phases of software development (design, analysis, etc...) and the actual implementation level. To express this interaction between the program code and the (higher-level) documentation of a software system, we believe that a declarative programming language is highly suited. This is because documentation has a declarative nature and because we can use meta-programming to link this information to the actual code. As such, the design-information of a system is meta-information of the program itself that can be actively used by the programming environment.