adapt the standard library
except for modules/impset.mlw (because of Fset) and modules/mach/* (because of program cloning), the standard library now typechecks. This is still very much the work in progress. Many functions and predicates have still to be converted to "let function" and "let predicate". Here are some TODOs: - do not require the return type for "val predicate", "val lemma", etc. - do not require explicit variant for "let rec" if the code passes the termination check in Decl (see list.why) - what should become "val ghost function" and what should stay just "function" (see array.mlw, matrix.mlw, string.mlw, etc)? - some defined functions in algebra.why and relations.why had to be removed, so that they can be implemented with "let function" in int.mlw (since they are defined, they cannot be instantiated with let-functions). This seems too restrictive. One way out would be to authorise instantiation of defined functions (with a VC). - should we keep the keyword "model"? reuse of "abstract" in types breaks syntax coloring ("abstract" requires closing "end" in programs but not in types; maybe we can drop that "end" again?).