- 11 Oct, 2018 1 commit
-
-
Andrei Paskevich authored
-
- 01 Jun, 2018 1 commit
-
-
Andrei Paskevich authored
-
- 11 Jan, 2018 1 commit
-
-
Guillaume Melquiond authored
-
- 12 Apr, 2017 1 commit
-
-
MARCHE Claude authored
-
- 03 Jan, 2017 1 commit
-
-
- 25 Jul, 2016 1 commit
-
-
MARCHE Claude authored
-
- 15 Mar, 2016 3 commits
-
-
Andrei Paskevich authored
-
Andrei Paskevich authored
-
Andrei Paskevich authored
-
- 20 Oct, 2015 1 commit
-
-
Martin Clochard authored
-
- 09 Oct, 2015 1 commit
-
-
Martin Clochard authored
-
- 01 Oct, 2015 1 commit
-
-
Martin Clochard authored
-
- 20 Mar, 2015 1 commit
-
-
Andrei Paskevich authored
-
- 19 Mar, 2015 1 commit
-
-
MARCHE Claude authored
-
- 09 Dec, 2014 1 commit
-
-
Martin Clochard authored
-
- 22 Oct, 2014 1 commit
-
-
Andrei Paskevich authored
-
- 14 Mar, 2014 1 commit
-
-
Jean-Christophe Filliâtre authored
-
- 16 Feb, 2014 1 commit
-
-
Andrei Paskevich authored
We do not want to generate distinct liftings for every single partial application of a function or predicate symbol. Canonical closures have an easily recognizable shape, thus we can detect them and replace them with a unique constant "f_closure".
-
- 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 epsilon-terms 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. lambda-calculus.
-