 21 Oct, 2016 2 commits


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.

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.

 29 Sep, 2016 1 commit


Martin Clochard authored

 26 Sep, 2016 1 commit


MARCHE Claude authored
Contribution of Nicolas Jeannerod [niols@niols.fr]

 19 Sep, 2016 1 commit


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.

 30 Aug, 2016 2 commits


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. ChangeId: Ic6bf732f1e50241a42df8e097f52aa46dd473bd2

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. ChangeId: I836ae9e69b887247eb64196705cc7ad32ba36825

 26 Jul, 2016 2 commits


Sylvain Dailler authored

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.

 25 Jul, 2016 1 commit


MARCHE Claude authored

 05 Jul, 2016 3 commits


Martin Clochard authored

Martin Clochard authored

Martin Clochard authored

 04 Jul, 2016 1 commit


Martin Clochard authored

 01 Jul, 2016 3 commits


Martin Clochard authored

Martin Clochard authored
The goal is that most recent rules will shadow older ones. Previous behavior was the converse.

Martin Clochard authored

 10 Jun, 2016 1 commit


Ralf Treinen authored

 24 May, 2016 1 commit


Guillaume Melquiond authored

 18 May, 2016 1 commit


JeanChristophe Filliatre authored

 13 May, 2016 5 commits


Martin Clochard authored

Martin Clochard authored

Martin Clochard authored

MARCHE Claude authored

MARCHE Claude authored

 25 Apr, 2016 1 commit


Martin Clochard authored

 14 Apr, 2016 1 commit


David Hauzar authored
Use source code locations of the original element rather than the inlined element.

 23 Mar, 2016 2 commits


Andrei Paskevich authored

Martin Clochard authored

 18 Mar, 2016 2 commits


JeanChristophe Filliatre authored

Martin Clochard authored

 16 Mar, 2016 1 commit


Martin Clochard authored

 15 Mar, 2016 2 commits


Andrei Paskevich authored

Andrei Paskevich authored

 14 Mar, 2016 2 commits


Martin Clochard authored

Andrei Paskevich authored

 05 Feb, 2016 3 commits


Martin Clochard authored

Martin Clochard authored

Guillaume Melquiond authored

 02 Feb, 2016 1 commit


Martin Clochard authored
