On Sun, Aug 12, 2007 at 01:00:44AM -0500, JK Smith at Grid-Sky wrote:
> Three things needed in FPC:
> 
> 2) Contract programming. We have to be able to show proof of correctness in
> code to prove the business value of FPC. This will be a major theme for the
> business side of software development in the future.

Actually, we (at Dept. Math/CS of TUE) have already contributed an
experimental branch to the repository for this.  See branches/tue.
That project is in a stable state, ready to be merged (since January).
It is not finished (still a number of missing features).

I am to blame for the delay in taking follow-up actions; my apologies.

Documentation can be found at (in formann.zip, but also is also unzipped)

        <http://www.win.tue.nl/~wstomv/software/formann/>

Basically, the current features are available (see user.pdf).

        It is possible to insert assertions before, between or after
        any statement, using {@ ...} syntax.  These are (optionally)
        compiled just like regular Assert()-statements.  Furthermore,
        pre- and postconditions of functions, procedures and methods
        can be given.  Class invariants are supported in a limited way.
        Before loops the programmer can insert an invariant and a
        variant function.  Finally, there is support for propositions
        and definitions, that act as abbreviations.

        Missing are the abilities to use quantified expressions like
        'for all', inheritance of class invariants, and giving pre- and
        postconditions of procedures and functions in the unit header
        instead of the unit implementation.

        ...

        By default, formal annotation parsing is switched off.  This
        is to maintain backwards compatibility with programs that have
        comments that start with [EMAIL PROTECTED]  The FreePascal compiler 
itself has
        at least one place where a comment starts with [EMAIL PROTECTED]

        To control the behavior of the compiler with respect to formal
        annotation parsing, two options are made available: compiler
        directives and command-line arguments.

        The command-line argument -Sf switches formal annotation
        parsing on.

        The compiler directive {$FORMAL+} switches formal annotation
        parsing on, {$FORMAL-} switches it off.

        The directives take precedence.

        (Please note that some formal annotation constructs make the
        compiler generate run-time assertion checks. These are not
        compiled into actual code if assert()-statement compilation is
        switched off.)

        If the argument -Aproofobl is given on the command-line, then
        proof obligations for procedures and functions with pre- and
        postconditions are generated (if feasible), as a LaTeX file.
        (Two examples arincluded: naive.pdf, intelligent.pdf.)

The file programmer.pdf contains information for developers; it documents
how things have been implemented.

Maybe a developer can take a look, and we can discuss off-line whether
to merge this, and if so, how to proceed.

Best regards,

        Tom
-- 
E-MAIL: T.Verhoeff @ TUE.NL     | Dept. of Math. & Comp. Science
PHONE:  +31 40 247 41 25        | Technische Universiteit Eindhoven
FAX:    +31 40 247 54 04        | PO Box 513, NL-5600 MB Eindhoven
http://www.win.tue.nl/~wstomv/  | The Netherlands
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to