1. 23 Aug, 2019 1 commit
  2. 02 Aug, 2019 4 commits
    • Julien Signoles's avatar
    • Julien Signoles's avatar
      [rational] rename Libr to Real · 0324062d
      Julien Signoles authored
      0324062d
    • Julien Signoles's avatar
      11b9381a
    • Fonenantsoa Maurica 's avatar
      Extend Interval, Typing and Translate: · ad8d968c
      Fonenantsoa Maurica authored and Julien Signoles's avatar Julien Signoles committed
        - Interval:
          - Not_an_integer -> Is_a_real|Not_a_number.
          - infer -> infer_with_real
            because Not_a_number has priority over Is_a_real
          - Ival.bottom when Is_a_real
            because the interval is for integers
        - Typing:
          - integer_ty -> number_ty=Cty|Gmpz|Libr|Nan
          - Other -> 'Other (Oreal|Onan)'
        - Translate:
          Encode real constants into strings:
            - **NO** conversion to float-point type
            - strnum_ty=StrZ|StrR|Not_a_strnum
              for tracking the type of the string
      Add Libr:
        - Gmpz -> Gmp=Gmpz+Gmpq
        - Libr=ref to Gmpq
      Add Gmpq builtins:
        - Custom mini-gmp -> libgmp
          because mini-gmp has no support for Q
        - Add arithmetic over Q in e_acsl_gmp_api.h
      Misc:
        - dec_to_frac: decimal expansion to fractional representation
          because decimal expansion is interpreted as double by Gmpq
      Tests:
        - BTS 1307 has an assertion wrongly evaluated, fixed
        - Add tests/gmp/reals.c
      THE MOST IMPORTANT TODO:
        - Completely hide the library for numbers (currently Gmp)
          inside Libr: Typing, Env and Translate should only know
          Libr and never directly call Gmp.
          This is crucial for extending E-ACSL in the future
          (eg: Gmp has no support for elementary functions), and
          also for using it as part of an abstract compiler
          (eg: with Fldlib)
          For the time being, in Translate,
          we have something as ugly as:
            let init_set =
              if Libr.is_t ty then Libr.init_set
              else Gmp.init_set
      ad8d968c
  3. 15 Jul, 2019 1 commit
  4. 29 Apr, 2019 5 commits
  5. 18 Apr, 2019 1 commit
  6. 27 Feb, 2019 1 commit
  7. 15 Nov, 2018 1 commit
  8. 19 Oct, 2018 1 commit
  9. 15 Oct, 2018 1 commit
  10. 05 Oct, 2018 1 commit
  11. 04 Oct, 2018 1 commit
  12. 03 Oct, 2018 8 commits
    • Fonenantsoa Maurica 's avatar
      Addresses Julien's review no.5: · 84b1b024
      Fonenantsoa Maurica authored
      - Stack of varinfos instead of list of varinfos
      - stmts_block -> block_to_stmt, which results in less @
      - fold_right instead of map+ref
      - Optimizing with SkipChildren
      - Useless parentheses. Typo. Indentation. No if not then else. begin...end instead of (...) for imperative constructs.
      84b1b024
    • Fonenantsoa Maurica 's avatar
    • Fonenantsoa Maurica 's avatar
      Addresses Julien's review no.3 (part 2/2) and no.4: · 4339d34c
      Fonenantsoa Maurica authored
      - Less lengthy closure in index_from_sizes_and_shifts
      - String on multiple lines.
      - Comment for extend_stmt_in_place
      - Detail pattern matching in vblock
      - List.exists instead of List.find
      - mem instead of find in At_with_lscope.remove_all
      - effective_lscope -> is_used
      4339d34c
    • Fonenantsoa Maurica 's avatar
      Addresses Julien's review no.3 (part 1/2): · 74c8f25f
      Fonenantsoa Maurica authored
       - Sad goodbye to insert_before_element_under_condition
       - ~label instead of ~pre
       - No superfluous Env.Varname.get
       - Gmp only allowed
       - Dataflow analysis allowed
       - Using exception for term_has_lv_from_vi
       - Fix incorrect assert false from effective_lscope_from_pred_or_term
       - fold_left for index_from_sizes_and_shifts
      74c8f25f
    • Fonenantsoa Maurica 's avatar
      Addresses Julien's review no.2: · 78f9aaab
      Fonenantsoa Maurica authored
      MAJOR:
      - malloc and free
        - Distinct tables for malloc and free
        - Efficient insertion of free and malloc
        - Remove entries for malloc and free when they are not needed anymore
      - Using kf instead of fundec
      - Using closure of vi_at: not (straightforwardly) possible
      - Logic scope:
        - No Lscope.top
        - Proper reseting of the lscope
        - Proper binding of logic variables
        - Module Env.Logic_scope
      - Comment for the over-approximation of t_size
      
      STYLE:
      - No useless new lines
      - Spaces
      - Parentheses
      - Latex style for formula in comment of index_from_sizes_and_shifts
      - match -> function
      - Logical variable -> logic variable
      - Renaming:
        - add_to_lscope ->  extend_lscope
        - memory_infos_from_quantifs -> sizes_and_shifts_from_quantifs
        - res -> sizes_and_shifts, memory_infos -> sizes_and_shifts
      - Typos
      - Forward references at the end of the mli
      - Consistent ordering of arguments inside Lscope API
      
      OTHERS:
      - Auxiliary function append_block_of_env_to_block
      - Squash pattern matching of mk_storing_loops
      - No Interval.infer in to_exp
      - Refactoring of pre_from_label
      - pi_beta_j with fold_left
      - No superfluous env for sizes_and_shifts_from_quantifs
      - More efficient accumulator for computing size
      - Squash pattern matching of sizes_and_shifts_from_quantifs
      - No superfluous option for get_lscope_var
      - Better definition of effective_lscope_from_pred_or_term
      - Using List.find for defining get_lscope_var
      - Do not export get_lscope_var
      - Lscope.empty () -> Lscope.empty
      78f9aaab
    • Fonenantsoa Maurica 's avatar
      Addresses Julien's review no.1: · c9f1976f
      Fonenantsoa Maurica authored
      - No superfluous white space
      - No camel case
      - No unauthorized open
      - Longic_const.tinteger -> Cil.lone, Cil.lzero
      - lscope -> Lscope.t
      - lscope becomes abstract
      - 'with non-void logic scope' -> 'on purely logical variables'
      - Make lscope be part of env
      - Discard all the translation in a new module: At_with_lscope
      - No extra variable for size
      - Cil.(theMachine.typeOfSizeOf) instead of Cil.intType
      - No superfluous block for storing_loops
      - mem_infos -> memory_infos
      - Prevent GMP result (actually already done previously)
      - record for malloc and free
      - H_malloc_free = Cil_datatype.Fundec.Hashtbl
      - dedicated insert_malloc_and_free_stmts in Visit
      - Kernel_function.is_entry_point for testing main function
      - no visit in term_has_lv_from_vi and effective_lscope_from_pot
      - term_has_lv_from_vi moved to Misc
      - Passing kf to add_malloc_and_free_stmt instead of fundec
      - Less @ during the insertion of free stmts
      - ty_array -> ty_ptr
      - Typos
      - Comments on:
        - Exported functions in MLIs
        - Computation of pre in put_block_at_label
        - Use of global scope for Env.Varname.get
        - Description of mk_storing_loops
        - New binding in mk_storing_loops
        - Description of effective_lscope_from_pred_or_term
        - Motivation of the over-approximation on t_size
      c9f1976f
    • Fonenantsoa Maurica 's avatar
      \at with non-void logic scope. · 26cef0ce
      Fonenantsoa Maurica authored
      26cef0ce
    • Fonenantsoa Maurica 's avatar
      Tracking logic scope. · e3dc1c6d
      Fonenantsoa Maurica authored
      e3dc1c6d
  13. 02 Oct, 2018 2 commits
  14. 18 Sep, 2018 9 commits
  15. 05 Jul, 2018 1 commit
  16. 12 Apr, 2018 1 commit
  17. 30 Mar, 2018 1 commit