[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Generalizing Types as Provable Invariants
Pixel, if a language isn't safe, a type system is only half as helpful.
Think of C++. If it verifies x is a char, then at run-time it may still
throw in some bits from an int into x, and what do you know -- is it
an int then? No, but it will print as one.
Is adding more stuff to such type systems truly useful? Be more selective.
-- Matthias
At 01 Jun 2002 01:17:31 +0200, Pixel wrote:
> Waldemar Horwat <waldemar@acm.org> writes:
>
> > A static type system can be thought of as a small framework for proving
> > invariants about a program -- in a type-safe language, if a variable is typed
> > as an integer then I know that I can't get a string out of it. The compiler
> > knows it too and doesn't let me modify the program to violate that assumption.
> >
> > How much work has been done on generalizing the notion of a static type system
> > into a more complete framework for proving interesting invariants about a
> > program?
>
> various examples of static checks:
> - keeping track of exceptions (Java)
> - const'ness (C++)
> - more generally: A Theory of Type Qualifiers
> http://citeseer.nj.nec.com/foster99theory.html
>
> extended type systems
> - dependent types (cf recent thread on comp.lang.functional)
> Cayenne http://www.math.chalmers.se/~augustss/cayenne
> DML & DeCaml http://www.ececs.uc.edu/~hwxi/DML/DML.html
> Delphin http://cs-www.cs.yale.edu/homes/carsten/delphin
> - type checked macros using staged evaluation
> MetaOcaml http://cs-www.cs.yale.edu/homes/taha/MetaOCaml/
> (if I understood)
> - maybe DrSpidey (and MrFlow) ?
>
> full proof checkers
> - method B http://archive.comlab.ox.ac.uk/formal-methods/ b.html
> (programming language, quite heavy and not decidable)
> - theorem proovers
> Coq http://coq.inria.fr
> (i don't really know what it is)
> - many more things at http://archive.comlab.ox.ac.uk/formal-methods
> (but once again, i don't really know what it is)