1. 21 Oct, 2016 2 commits
    • Sylvain Dailler's avatar
      PA03-013 counterex: Projection function defined after being applied. · b00248b5
      Sylvain Dailler authored
      This patch solves a problem on the order of the generation of new
      declarations by intro_projections_counterexmp. The problem came from
      the combination of Trans.on_tagged_ls and Trans.decl. The former was used
      to know each projection function in advance and the latter would
      introduce new declarations directly at the definition of the decl being
      analysed sometimes using projections functions before they are defined.
      
      This patch makes intro_projections_counterexmp.ml adds declarations only
      at the end of the task. So we are sure that any meta is really defined
      before.
      
      * src/transform/intro_projections_counterexmp.ml
       (introduce_constant): Minor clarification.
       (projections_for_term): Replacing append with proper symbol. Also adding
        already computed list of declaration to the output.
       (introduce_projs): Removing already defined declarations from the set of
        declaration we will add.
       (build_projections_map): The order of elements is irrelevant so
        it is faster to use cons instead of append.
       (meta_transform2): Add declarations created by f at the end of the task.
       (encapsulate): Compose meta_transform2 and introduce_projs.
       (commented meta_transform2): Request for a fold able to do what is
        described.
      b00248b5
    • Sylvain Dailler's avatar
      P419-017 counterex- Missing one liner with multidim array · bc0b6ca9
      Sylvain Dailler authored
      The one liner is missing because we did not project value of array
      elements in intro_projections_counterexmp. I changed the whole algorithm
      of projections to allow projecting values of multidim array. Also,
      moved local functions outside the main function. Added some trivial
      helping functions.
      
      * intro_projections_counterexmp
       (detect_map_types): Takes a type and return the list of successive types
        in the map and the return type. On map int (map int int) returns
        ([int; int], int).
       (last_type): Takes a list of proj_functions and returns the return type
        of the last projections_function that will be applied.
       (recreate_types): Recreates the type of the map with projected return
        type.
       (create_index_list): Returns a list of new well typed symbol for
        application in the axiom.
       (recreate_term_applications): Apply array to indices.
       (list_projection_until_base_type): Returns the list of all possible
        list of proj_functions applied to it.
       (projections_for_term): Changed the map part almost completely. We do
        not call this function recursively but we used other functions to get
        the recursive behavior.
      bc0b6ca9
  2. 29 Sep, 2016 1 commit
  3. 26 Sep, 2016 1 commit
  4. 19 Sep, 2016 1 commit
    • Sylvain Dailler's avatar
      Keeping keep_on_simp labels during wp generation. · 64b1fda4
      Sylvain Dailler authored
      We changed t_map_simp, track_values and the eval_match transformation
      in order to prevent them from removing terms whose head has label
       keep_on_simp. Note that simplification inside those terms is
      still possible.
      
      * src/core/term.ml
      (t_map_simp): Adding the case when f has label keep_on_simp.
      
      * src/transform/eval_match.ml
      (eval_match): Adding keep_on_simp as a stop label.
      
      * src/whyml/mlw_wp.ml
      (track_values): Stopping on keep_on_simp label.
      64b1fda4
  5. 30 Aug, 2016 2 commits
    • Sylvain Dailler's avatar
      P530-020 counterex - Disallow printing of value not introduced · 76c67c9c
      Sylvain Dailler authored
      I introduced bug with last counterexample commit. This was due to
      querying counterexample value of variables that were not introduced. This
      commits introduce a container that save introduced variables and check if
      they should be taken as counterex.
      
      * src/transform/intro_vc_vars_counterexmp.ml
      (do_intro): Adding vc_var which contains all variables that we can safely
      print as counterexamples.
      (remove_positive_foralls): Adding vc_var and introduce variables in vc_var
      when quantified over.
      (intros): Adding vc_var.
      (do_intro_vc_vars_counterexmp): Adding vc_var.
      
      Change-Id: Ic6bf732f1e50241a42df8e097f52aa46dd473bd2
      76c67c9c
    • Sylvain Dailler's avatar
      P530-020 counterex - Printing quantified variables · 27b053f3
      Sylvain Dailler authored
      We changed the prepare_for_counterexamples transformation to allow
      printing of quantified expressions, remove duplications of printed
      examples and adding an incomplete function to print universally
      quantified variables that are positive but not at head of the term.
      
      * src/transform/intro_projections_counterexmp.ml
      (intro_const_equal_to_term): Generating of the preid for a counterex.
      
      * src/transform/intro_projections_counterexmp.mli
      (val_intro_const_equal_to_term): Changing signature.
      
      * src/transform/intro_vc_vars_counterexmp.ml
      (Hprid): Adding a container for preids.
      (do_intro): Adding cases for generation of counterexample in the Tvar
      case, factorising the construction of vc_constant in a function
      new_counter_example_variable. Adding argument vc_map to avoid
      duplication of vc_constants
      (new_counter_example_variable): Adding a check to avoid duplication of
      vc_constant.
      (remove_positive_foralls): New experimental incomplete function that aims
      at introducting foralls even when they are under a construct.
      "H /\ forall i. P(i)" becomes "i as premisse and H /\ P(i)".
      (intros): Added calls to do_intro and removed optimizations.
      (do_intro_vc_vars_counterexmp): Concatenate results of intros and
      do_intros and create the prop goal.
      
      * src/transform/introduction.ml
      (stop_intro): Removed stop_intro.
      
      * src/transform/prepare_for_counterexmp.ml
      (prepare_for_counterexmp2): Removed call to introduce_premisses.
      
      Change-Id: I836ae9e69b887247eb64196705cc7ad32ba36825
      27b053f3
  6. 26 Jul, 2016 2 commits
    • Sylvain Dailler's avatar
      minor : Adding comment · 3c5580d0
      Sylvain Dailler authored
      3c5580d0
    • Sylvain Dailler's avatar
      P718-014 Adding a label stop_intros into introduce_premises · 83b74fbd
      Sylvain Dailler authored
      We need to stop the transformation intro_premises to introduce variables
      past a label. This allows us to keep variables in the goal (for counterex
      generation) and be able to retrieve them as counterexamples.
      
      * transform/intro_vc_vars_counterexmp.ml:
        changed vc_term_info so that it is not mutable anymore
        (do_intro): Removing the passing records to the do_intros calls which
      may prevent us from seeing last vc_model
        (do_intro_vc_vars): adding a reference to keep the location of the vc
      
      * transform/introduction.ml
        (intros): When encountering stop_intro label, the function should
      stop introducing.
      83b74fbd
  7. 25 Jul, 2016 1 commit
  8. 05 Jul, 2016 3 commits
  9. 04 Jul, 2016 1 commit
  10. 01 Jul, 2016 3 commits
  11. 10 Jun, 2016 1 commit
  12. 24 May, 2016 1 commit
  13. 18 May, 2016 1 commit
  14. 13 May, 2016 5 commits
  15. 25 Apr, 2016 1 commit
  16. 14 Apr, 2016 1 commit
  17. 23 Mar, 2016 2 commits
  18. 18 Mar, 2016 2 commits
  19. 16 Mar, 2016 1 commit
  20. 15 Mar, 2016 2 commits
  21. 14 Mar, 2016 2 commits
  22. 05 Feb, 2016 3 commits
  23. 02 Feb, 2016 1 commit