Institutions: abstract model theory for specification and programming
Proving Properties of Programs by Structural Induction