The Larch Project develops aids for formal specifications. Each Larch specification has two components: an interface containing predicates written in the LIL (Larch Interface Language) designed for the target language and a 'trait' containing assertions about the predicates written in LSL, the Larch Shared Language common to all.
["The Larch Family of Specification Languages", J. Guttag et al, IEEE Trans Soft Eng 2(5):24-365