• Andrei Paskevich's avatar
    adapt the standard library · cb9aa0a2
    Andrei Paskevich authored
    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?).
smt-libv2.drv 3.38 KB