 08 Mar, 2016 2 commits


Andrei Paskevich authored
also, remove the "material_type_arg" meta for (>), hardcoded now in Eliminate_algebraic

Andrei Paskevich authored

 20 Aug, 2015 1 commit


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 letfunctions). 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?).

 20 Jan, 2014 1 commit


Andrei Paskevich authored
Currently, the builtin theory why3.HighOrd (or just HighOrd) must be explicitly "use"d. However, the type (HighOrd.func 'a 'b) can be written ('a > 'b), and the type (HighOrd.pred 'a) can be written ('a > bool), and the application operation (HighOrd.(@)) can be written as the usual juxtaposition. Thus, normally, you do not have to write the qualifiers. The builtin theory why3.Bool (or just Bool) is needed for "bool". The names "HighOrd", "func", "pred", and "(@)" are not yet fixed and may change. "eliminate_epsilon" tries to be smart when a lambda (or some other comprehension form) occurs under equality or at the top of a definition. We could go even further and replace (\ x . t) s with t[x < s], without lifting the lambda. I'm not sure it's worth it: we rarely write redexes manually. They can and will appear through inlining, though. Anyone who wants to construct epsilonterms directly using the API should remember that these are not Hilbert's epsilons: by writing an epsilon term, you postulate the existence (though not necessarily uniqueness) of the described object, and "eliminate_epsilon" will happily convert it to an axiom expressing this existence. We only use epsilons to write comprehensions whose soundness is guaranteed by a background theory, e.g. lambdacalculus.

 03 Nov, 2013 1 commit


Andrei Paskevich authored

 02 Nov, 2013 1 commit


Andrei Paskevich authored
also, avoid the "encoding_sort" transformation, if it can be done directly in the printer. On the same example as in the previous commits, this gives 5x acceleration together with some memory usage reduction.

 06 Aug, 2013 2 commits


Andrei Paskevich authored
in a series of tests on available examples, lightweight polymorphism encoding techniques combined with a more agressive generation of monomorphic instances (via Discriminate) show better results than our earlier defaults. In the same commit:  remove Encoding_explicit (unsound), Encoding_decoexp (too naive), and Encoding_instantiate (subsumed by Discriminate)  rename Encoding_decorate to Encoding_tags_full and Encoding_guard to Encoding_guards_full  move Encoding_guards_full specific functions from Libencoding to Encoding_guards_full  do not apply type protection in "encoding_tptp" and remove Protect_finite which is not needed anymore.

Andrei Paskevich authored

 01 Sep, 2012 1 commit


Guillaume Melquiond authored
Add monoids to the algebraic hierarchy.

 20 Jun, 2012 1 commit


MARCHE Claude authored

 31 Mar, 2012 1 commit


MARCHE Claude authored

 17 Mar, 2012 1 commit


Andrei Paskevich authored

 14 Dec, 2011 1 commit


Andrei Paskevich authored

 29 Jun, 2011 1 commit


Andrei Paskevich authored

 05 Jun, 2011 1 commit


Andrei Paskevich authored
What was its purpose in the first place? Integers are protected in Simplify anyway and then we can simply forget the difference between the infinite sorts (as we do in encoding_tptp).

 03 Jun, 2011 1 commit


Andrei Paskevich authored

 21 Apr, 2011 1 commit


François Bobot authored

 16 Mar, 2011 1 commit


Andrei Paskevich authored

 15 Feb, 2011 1 commit


François Bobot authored
TPTP/simplify : explicit not anymore the default

 21 Jan, 2011 1 commit


François Bobot authored

 17 Dec, 2010 1 commit


François Bobot authored
whycpulimit : Fix return the status of the prover gappa : Fix inversion (should use meta showing what musn't be instantiated)

 16 Dec, 2010 1 commit


François Bobot authored
"%h:%m:%s:%i" (i for mIlliseconds) Spass does'nt give cputime but wallclock. eprover doesn't always give time. so use cpulimit_time for them. add %b for the memlimit in bytes

 15 Dec, 2010 1 commit


François Bobot authored

 26 Oct, 2010 1 commit


Andrei Paskevich authored

 02 Sep, 2010 2 commits


Andrei Paskevich authored

Andrei Paskevich authored

 01 Sep, 2010 1 commit


MARCHE Claude authored

 23 Aug, 2010 1 commit


Andrei Paskevich authored

 11 Aug, 2010 1 commit


Andrei Paskevich authored

 15 Jul, 2010 1 commit


JeanChristophe Filliâtre authored

 13 Jul, 2010 1 commit


Francois Bobot authored
encoding_enumeration add projection for enumerated type. Seems to work (on valid and not valid goal) for simplify, spass, eprover see examples/programs/sorted_list.mlw with eprover, spass, simplify!! encoding_enumeration must be used with encoding_decorate and encoding_instantiate if an enumeration type is kept.

 12 Jul, 2010 1 commit


Andrei Paskevich authored

 09 Jul, 2010 1 commit


Andrei Paskevich authored
 bring driver syntax closer to that of theories  some simple API improvements

 08 Jul, 2010 2 commits


Francois Bobot authored
Since its already incorrect no encoding for simplify, and also no trigger because its buggy inside simplify

Francois Bobot authored

 17 May, 2010 1 commit


JeanChristophe Filliâtre authored

 12 May, 2010 2 commits


Francois Bobot authored

Francois Bobot authored

 06 May, 2010 2 commits


Francois Bobot authored
simplify_trivial_quantifier va moins sous les triggers (il peut encore remplacer dessous mais pas y trouver d'égalité)

Francois Bobot authored
(exists x. x=t and F) > F[t/x] (forall x. x<>t or F) > F[t/x] Cette transformation n'élimine pas les quantifications qui ont des triggers mais s'applique sous ces derniers. Le but est de pouvoir éliminer les quantifications inutilement ajoutées lors de eliminate inductive.
