Why are these called "contracts"? It's just another generic type mechanism. "Contracts" are generally associated with entry and exit conditions for functions, and are not confined to single variables. A real contract looks like:
func foo(a integer, b integer)
{ entry(a>b);
...
}