- 15 Jul, 2015 4 commits
-
-
David Hauzar authored
-
David Hauzar authored
-
David Hauzar authored
displayed in any case (even if the debug flag whyml_wp is not given).
-
David Hauzar authored
Conflicts: src/core/model_parser.ml
-
- 09 Jul, 2015 1 commit
-
-
Martin Clochard authored
-
- 08 Jul, 2015 1 commit
-
-
MARCHE Claude authored
-
- 07 Jul, 2015 1 commit
-
-
MARCHE Claude authored
-
- 06 Jul, 2015 3 commits
-
-
MARCHE Claude authored
-
Jean-Christophe Filliâtre authored
maps Why3 type int to OCaml type int this is of course unsafe, unless one has proved absence of overflows
-
MARCHE Claude authored
-
- 02 Jul, 2015 3 commits
-
-
Andrei Paskevich authored
-
Martin Clochard authored
This commits enable the possibility to use variants with different types/well-founded relations for mutually recursive functions. This is useful if the termination of sub-groups of those functions requires a finer termination argument. Example use case: Suppose for example the following mutually recursive function structure: type t = A (list t) let rec f (x:t) (...other args...) variant { x , other variants } = ... f x (...different args...)... with g (l:list t) (...other args...) variant { l } = ... The global termination argument is structural descent trough the type t. However, as it is not enough for f which perform a non-structural recursive calls, we add other variants. Such variants were forbidden under the previous behavior because f and g variants were considered incompatible: As x and l have different types, it was impossible to write the lexicographic comparison of both n-uplets (even when completing g's list). The new behavior for mutual recursive calls is the following: We first scan both variants to find the longest compatible common prefix, e.g prefixes for which types and relations are the same. Additionally, we allow the last elements of such prefix to have different types if their well-founded relation is structural descent. Then, we generate a lexicographic descent obligation on those prefixes only. We still enforce that in a mutually recursive group, the first component of each variant must corresponds to the same well-founded relation. This event is much more likely to be symptomatic of an error, as functions with such fully mismatched variants cannot call each other anyway. Moreover, one can always break them in different recursive groups.
-
Andrei Paskevich authored
-
- 30 Jun, 2015 1 commit
-
-
MARCHE Claude authored
-
- 26 Jun, 2015 2 commits
-
-
David Hauzar authored
by wp displayed in counter-example only if the debug flag whyml_wp is given.
-
David Hauzar authored
-
- 24 Jun, 2015 1 commit
-
-
Jean-Christophe Filliâtre authored
-
- 22 Jun, 2015 2 commits
-
-
MARCHE Claude authored
-
Andrei Paskevich authored
-
- 21 Jun, 2015 1 commit
-
-
Andrei Paskevich authored
-
- 19 Jun, 2015 2 commits
-
-
Andrei Paskevich authored
-
Andrei Paskevich authored
-
- 18 Jun, 2015 2 commits
-
-
David Hauzar authored
Label model_trace:x is automatically added to every element with name x that has a model label and does not have a model_trace:y label.
-
Andrei Paskevich authored
-
- 17 Jun, 2015 1 commit
-
-
David Hauzar authored
Setting whether counter-example should be get in why3ide is done by in GUI - instead of setting this using command-line option.
-
- 12 Jun, 2015 5 commits
-
-
Martin Clochard authored
-
MARCHE Claude authored
-
David Hauzar authored
-
David Hauzar authored
-
MARCHE Claude authored
-
- 10 Jun, 2015 1 commit
-
-
David Hauzar authored
-
- 09 Jun, 2015 8 commits
-
-
Andrei Paskevich authored
-
Andrei Paskevich authored
-
Andrei Paskevich authored
-
Andrei Paskevich authored
-
David Hauzar authored
-
François Bobot authored
-
François Bobot authored
when one of the field is empty. (Thx Jean-Christophe)
-
David Hauzar authored
-
- 08 Jun, 2015 1 commit
-
-
David Hauzar authored
-