The CARE language

A CARE program consists of types, fragments and theorems. CARE types correspond to data structures; fragments correspond roughly to functions and procedures in a procedural programming language; and theorems correspond to definitions, lemmas and CARE proof obligations.

Each CARE program component has its own formal specification, which may include constraints on how the component can be used. Program components are classified as primitive or higher-level. In essence, primitive components are those whose proof of correctness is outside the scope of CARE, while higher-level components have associated proof obligations. More specifically:

CARE programs are developed incrementally: top-down, bottom-up or in a mixture of styles. During development a CARE program may contain components which have specifications but which do not yet have implementations. A complete program is one in which all components are implemented.

For full details.

Other CARE papers

Return to CARE home page