Leonardo de Moura
dbefc91151
fix(kernel/metavar): add normalize assignment justification
...
We need that when we normalize the assignment in a metavariable environment.
That is, we replace metavariable in a substitution with other assignments.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-27 11:02:34 -07:00
Leonardo de Moura
92f5a31976
feat(kernel/expr): add new mk_app template for creating applications using a collection
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-27 08:53:58 -07:00
Leonardo de Moura
eaccdcb558
refactor(assumption_justification): move to the kernel
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-26 14:21:29 -07:00
Leonardo de Moura
4bed9f85b0
feat(kernel/for_each): add option for disabling cache of atomic expressions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 15:25:17 -07:00
Leonardo de Moura
ce10bfeaf6
perf(kernel/metavar): improve performance of has_assigned_metavar by avoiding for_each+exception
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 15:19:59 -07:00
Leonardo de Moura
57d9d23bd4
feat(kernel/for_each): allow function F to interrupt for_each search
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 14:58:02 -07:00
Leonardo de Moura
2dd44bdf1a
perf(kernel/for_each): delay initialization of visited set
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 14:52:08 -07:00
Leonardo de Moura
e765105ea5
fix(frontends/lean/pp): let expressions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 12:30:39 -07:00
Leonardo de Moura
c3c66b6c90
feat(make): add THREAD_SAFE build option
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 11:50:35 -07:00
Leonardo de Moura
c53d559f7f
perf(library/elaborator): improve process_metavar
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 11:19:17 -07:00
Leonardo de Moura
471bbd4040
refactor(kernel/metavar): combine several splay_trees (at metavar_env) into a single one
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 11:02:19 -07:00
Leonardo de Moura
5e34f410b3
refactor(splay_map): modify splay_find signature
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 10:47:15 -07:00
Leonardo de Moura
5812dfcf44
perf(kernel/justification): remove cache from depends_on
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 10:26:05 -07:00
Leonardo de Moura
2b5c951de3
perf(name): add quick_cmp for hierarchical names
...
It first compare names using hash codes.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 09:58:06 -07:00
Leonardo de Moura
66f4834dbc
perf(kernel/metavar): add quick test that catches many cases
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 09:24:01 -07:00
Leonardo de Moura
f38178311c
perf(kernel/expr_eq): delay hashtable initialization
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 09:21:47 -07:00
Leonardo de Moura
e0ca27bfb3
fix(tests/library/rewriter): warning
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 08:33:53 -07:00
Leonardo de Moura
412bc792c9
fix(style): missing include
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 08:10:28 -07:00
Leonardo de Moura
0c21f45292
fix(kernel/unification_constraint): memory leak
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-25 08:06:21 -07:00
Leonardo de Moura
f0e149d77b
fix(frontends/lean/pp): fix how Type expressions are pretty printed
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 20:02:34 -07:00
Leonardo de Moura
a5c3829d1b
feat(kernel): add unexpected_metavar_occurrence exception
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 19:56:44 -07:00
Leonardo de Moura
83907d7c73
fix(elaborator): max constraints
...
elaborator was not handling max constraints where one of the arguments was a Bool. Example:
ctx |- max(Bool, Type) == ?M
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 19:27:57 -07:00
Leonardo de Moura
65a514ad8a
fix(frontends/lean/parser): option propagation
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 19:04:06 -07:00
Leonardo de Moura
576b4e2169
fix(frontends/lean/pp): missing comma when printing contexts
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 19:00:24 -07:00
Leonardo de Moura
df07a84d11
feat(frontends/lean/parser): display elaborator error messages
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 18:48:53 -07:00
Leonardo de Moura
ca6a6d71e5
fix(kernel/printer): bug when printing let expression
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 18:05:23 -07:00
Leonardo de Moura
e3efe39eeb
fix(elaborator): fix bug in higher-order matching/unification
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 17:53:37 -07:00
Leonardo de Moura
d1a2a4ea7e
feat(frontends/lean/elaborator): add support for coercions in let declarations
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 17:01:06 -07:00
Leonardo de Moura
872b698bc3
feat(elaborator): add option m_assume_injectivity for getting more concise solutions
...
We may miss solutions, but the solutions found are much more readable.
For example, without this option, for elaboration problem
Theorem Example4 (a b c d e : N) (H: (a = b ∧ b = e ∧ b = c) ∨ (a = d ∧ d = c)) : (h a c) = (h c a) :=
DisjCases H
(fun H1 : _,
let AeqC := Trans (Conjunct1 H1) (Conjunct2 (Conjunct2 H1))
in CongrH AeqC (Symm AeqC))
(fun H1 : _,
let AeqC := Trans (Conjunct1 H1) (Conjunct2 H1)
in CongrH AeqC (Symm AeqC))
the elaborator generates
Theorem Example4 (a b c d e : N) (H : a = b ∧ b = e ∧ b = c ∨ a = d ∧ d = c) : (h a c) = (h c a) :=
DisjCases
H
(λ H1 : if
Bool
(if Bool (a = b) (if Bool (if Bool (if Bool (b = e) (if Bool (b = c) ⊥ ⊤) ⊤) ⊥ ⊤) ⊥ ⊤) ⊤)
⊥
⊤,
let AeqC := Trans (Conjunct1 H1) (Conjunct2 (Conjunct2 H1)) in CongrH AeqC (Symm AeqC))
(λ H1 : if Bool (if Bool (a = d) (if Bool (d = c) ⊥ ⊤) ⊤) ⊥ ⊤,
let AeqC := Trans (Conjunct1 H1) (Conjunct2 H1) in CongrH AeqC (Symm AeqC))
The solution is correct, but it is not very readable. The problem is that the elaborator expands the definitions of \/ and /\.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 16:47:50 -07:00
Leonardo de Moura
d2f9c24d3c
fix(tests/lean): adjust tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 15:42:17 -07:00
Leonardo de Moura
a7f94b55db
fix(frontends/lean/elaborator): fix bugs and adjust tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 15:29:56 -07:00
Leonardo de Moura
bbc265ded4
feat(frontends/lean): hook new elaborator in the default frontend
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 15:14:29 -07:00
Leonardo de Moura
c9f7b8bce2
feat(frontends/lean): add get_coercions method
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 14:38:09 -07:00
Leonardo de Moura
71ccec5b9e
refactor(frontends/lean/elaborator): delete old_elaborator, and create frontend_elaborator class that will be based on library/elaborator/elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-24 10:45:59 -07:00
Leonardo de Moura
449454efdb
fix(debug): remove typeid information from assertion, the names are mangled and are not very useful
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 16:41:51 -07:00
Leonardo de Moura
434c33f225
feat(metavar): automatically apply beta-reduction when instantiating metavariable applications (i.e., expressions of the form (?m a)), when the metavariable is a lambda
...
This feature is useful for problems that require higher-order matching and/or unification.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 16:35:50 -07:00
Leonardo de Moura
873e56844a
refactor(beta_reduction): add function apply_beta
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 16:03:52 -07:00
Leonardo de Moura
f1e0d6ec29
refactor(beta_reduction): move beta reduction functions to the kernel, delete reduce.cpp file and tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 15:44:26 -07:00
Leonardo de Moura
c1e451151a
feat(replace_visitor): add an abstract class for applying transformations on expressions
...
I also removed replace_using_ctx since it is subsumed by the new class.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 15:01:37 -07:00
Leonardo de Moura
13531b7d3e
refactor(kernel): rename trace to justification
...
Motivations:
- We have been writing several comments of the form "... trace/justification..." and "this trace object justify ...".
- Avoid confusion with util/trace.h
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 13:42:17 -07:00
Leonardo de Moura
8e1a75ce1c
feat(elaborator): only process upper bound constraints when the corresponding metavariable does not have lower bound and max constraints
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 13:09:13 -07:00
Leonardo de Moura
172567a2fb
feat(elaborator): add support for upper bounds, max constraints, and fix bugs
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 12:01:39 -07:00
Leonardo de Moura
17b48010b7
fix(unification_constraint): fix printer for max constraints
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 12:00:29 -07:00
Leonardo de Moura
274b11530f
feat(metavar): improve apply_local_context
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 11:59:36 -07:00
Leonardo de Moura
b57f492e2d
fix(kernel/printer): improve printer for Type expressions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-23 11:58:49 -07:00
Leonardo de Moura
c635c16637
refactor(ho_unifier): remove ho_unifier, it has been subsumed by the elaborator class
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 17:51:54 -07:00
Leonardo de Moura
019f64671b
fix(elaborator): add basic support for flex-flex pairs, add more tests, fix bug when enumerating different solutions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 17:49:37 -07:00
Leonardo de Moura
80a507cf45
refactor(tests/frontends/lean/implicit_args): remove implicit_args unit tests from frontends/lean, all tests were moved to tests/library/elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 16:42:07 -07:00
Leonardo de Moura
7ad256131e
feat(elaborator): add support for constraints of the form ?m[inst, ...] == t, fix bugs, add more tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 16:39:22 -07:00
Leonardo de Moura
891d22b3de
feat(kernel/context): add method for remove context entries at positions [s, s+n).
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 15:52:24 -07:00
Leonardo de Moura
3fa4eac4ef
fix(replace_using_ctx_fn): typo
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 15:46:11 -07:00
Leonardo de Moura
8142726923
fix(type_inferer): bug when inferring the type of free variables
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 15:41:22 -07:00
Leonardo de Moura
874f67c605
feat(normalizer): remove normalization rule t == t ==> true
...
This normalization rule is not really a computational rule.
It is essentially encoding the reflexivity axiom as computation.
It can also be abaused. For example, with this rule,
the following definition is valid:
Theorem Th : a = a := Refl b
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 14:02:48 -07:00
Leonardo de Moura
5e61496381
test(elaborator): add more tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 13:45:20 -07:00
Leonardo de Moura
a5b4908f71
fix(elaborator): process_simple_ho_match and missing cases
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 13:45:04 -07:00
Leonardo de Moura
cb2c73cf37
feat(elaborator): add higher-order matching support to elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 11:22:00 -07:00
Leonardo de Moura
f4592da87f
feat(elaborator): solve more unification constraints, add more tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:37 -07:00
Leonardo de Moura
c3e87f106f
fix(kernel/trace): fix typo in depends_on
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:37 -07:00
Leonardo de Moura
dc51d35dc0
feat(library/type_inferer): add support for metavariables at type_inferer
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:37 -07:00
Leonardo de Moura
7f96c07a01
refactor(library): rename light_checker to type_inferer
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
183f5a1ccf
feat(elaborator): solve unification constraints
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
a1710aeeb9
feat(elaborator): add trace objects for elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
dc0e7a4472
feat(pos_info_provider): add position information provider for expressions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
8663ac550f
feat(kernel/trace): add function depends_on for trace objects
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
42edc4a72d
test(set): add set of pointers test
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
b1b49e86e7
test(elaborator): add simple test
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
1548ffabb1
feat(elaborator): add new elaborator interface
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
827c65b5e9
feat(kernel): add static_assert for update_metavar
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
61ccaf741c
fix(frontend/lean): minor modification to be able to execute lean frontend while refactoring elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
7cf83800c0
refactor(metavar): implement metavar_env, and use unification_constraint and trace objects in the type_checker, light_checker
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
1f0eab7a14
test(type_checker): add new tests for type_checker trace objects
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
fc288929a2
feat(type_checker): add trace objects to justify constraints created by the type checker
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
5b1b03bafd
refactor(is_convertible): move from normalizer to type_checker class
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
85bfa45e6a
refactor(kernel_exception): delete kernel_exception_formatter, and implement kernel_exception pretty printer as a virtual method
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
d843d432d3
refactor(kernel): move printer and formatter objects to the kernel
...
The printer and formatter objects are not trusted code.
We moved them to the kernel to be able to provide them as an argument to the trace objects.
Another motivation is to eliminate the kernel_exception_formatter hack.
With the formatter in the kernel, we can implement the pretty printer for kernel exceptions as a virtual method.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
ddb90d3038
feat(kernel): add unification_constraint and trace objects to the kernel
...
Trace objects will be used to justify steps performed by engines such as the elaborator. We use them to implement non-chronological backtracking in the elaborator. They are also use to justify to the user why something did not work.
The unification constraints are in the kernel because the type checker may create them when type checking a term containing metavariables.
Remark: a minimalistic kernel does not need to include metavariables, unification constraints, nor trace objects. We include these objects in our kernel to minimize code duplication.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
e741cc29ef
test(metavar): encode two of the bad examples as unit tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
59914a36f3
refactor(metavar): reorganize and simplify metavariables
...
- Use hierarchical names instead of unsigned integers to identify metavariables.
- Associate type with metavariable.
- Replace metavar_env with substitution.
- Rename meta_ctx --> local_ctx
- Rename meta_entry --> local_entry
- Disable old elaborator
- Rename unification_problems to unification_constraints
- Add metavar_generator
- Fix metavar unit tests
- Modify type checker to use metavar_generator
- Fix placeholder module
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-22 08:15:36 -07:00
Leonardo de Moura
3387c300a0
feat(polynomial): add multivariate polynomials
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-21 18:22:14 -07:00
Leonardo de Moura
93d4466d06
refactor(interval): move interval unit tests to tests/util/interval
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-21 18:17:34 -07:00
Leonardo de Moura
f18d35555e
refactor(interval): organize template source code using the approach described at http://www.codeproject.com/Articles/3515/How-To-Organize-Template-Source-Code
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-21 18:15:27 -07:00
Leonardo de Moura
e208309abd
refactor(numerics): rename power operator to pow, the idea is to follow the C/C++ name convention for the power operator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-21 17:23:56 -07:00
Leonardo de Moura
f1d9312521
feat(numerics/zpz): add numeric_traits for zpz numerals
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-18 14:41:18 -07:00
Leonardo de Moura
1429cc9df2
feat(numerics): add finite field Z/pZ
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-18 13:27:28 -07:00
Leonardo de Moura
bdade0e638
fix(numerics): problem with gcd tests on OSX
...
Now, we only test gcd(a, b) for a != b && a != 0 && b != 0.
When one of these conditions do not hold, the result is implementation dependent.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-17 10:38:02 -07:00
Leonardo de Moura
cf2c0f8ebb
feat(numerics): add gcd and extended gcd templates (for primitive types)
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-16 18:18:20 -07:00
Leonardo de Moura
39f68ed0d6
feat(numerics): add is_prime function
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-16 17:25:08 -07:00
Leonardo de Moura
1097bbfb22
fix(style): fix warnings produced by cpplint.py, disable sizeof(type) warning
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-16 17:04:39 -07:00
Leonardo de Moura
105f55c68b
feat(numerics): add zero() method to all numeric_traits
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-16 16:55:17 -07:00
Leonardo de Moura
ff04c5a2e2
test(numerics): add test to make sure that zeros of different precision mpfp numbers are the equal.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-16 16:54:43 -07:00
Leonardo de Moura
467eff4662
add(numerics): add prime number generator/iterator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-16 16:05:45 -07:00
Leonardo de Moura
0783805671
feat(kernel): add weight to kernel definitions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-15 14:50:08 -07:00
Leonardo de Moura
5bd6ba37d0
fix(light_checker): fix inconsistent cache bug in light_checker, add tests that expose the problem
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-01 19:25:58 -07:00
Leonardo de Moura
aa5be3262f
fix(type_checker): fix inconsistent cache bug in type_checker, add tests that expose the problem
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-01 19:23:55 -07:00
Leonardo de Moura
2089d12bd0
fix(replace_using_ctx): fix inconsistent cache bug in replace_using_ctx, and add tests that expose the problem
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-10-01 18:52:18 -07:00
Soonho Kong
760f2e15ce
feat(library/replace_using_ctx): add static_assert
2013-10-01 16:47:49 -07:00
Soonho Kong
e3b762e909
feat(kernel): add static_assert to expr,expr_eq,replace
2013-10-01 16:47:36 -07:00
Soonho Kong
b823c7d779
feat(util): add static_assert to {scoped,splay}_{map,set}
2013-10-01 16:47:28 -07:00
Soonho Kong
a726f5fbb7
feat(util/list): add static_asserts for map/for_each/compare
2013-10-01 09:05:53 -07:00
Soonho Kong
3381df0150
fix(util/list_fn): rename iter to for_each
2013-10-01 09:03:07 -07:00
Soonho Kong
c50bc13be0
test(library/rewriter): add more tests
2013-10-01 00:30:38 -07:00
Soonho Kong
7c0b56ad0d
feat(library/rewriter): implement repeat/app/lambda/pi/try rewriter
...
- refactor to use rewriter_cell
- implement display and operator<< for debugging
2013-10-01 00:30:31 -07:00
Soonho Kong
e6c76fbe76
refactor(library/rewriter/fo_match): add more lean_trace for debugging
2013-10-01 00:20:12 -07:00
Soonho Kong
a832173f5f
feat(kernel/expr): add expr::operator() which takes 8 args
2013-10-01 00:19:30 -07:00
Soonho Kong
1a3ea26032
feat(util/list_fn): add iter function
2013-10-01 00:18:55 -07:00
Leonardo de Moura
15979ab991
fix(lean): fix warnings produced by cppcheck
...
Fix (relevant) warnings produced by http://cppcheck.sourceforge.net .
Most warnings produced were incorrect. The tool does not seem to support some of the C++11 new features.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-30 21:38:55 -07:00
Leonardo de Moura
30089aa4f8
test(type_checker): add example showing how to use the kernel exception formatter
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-30 16:39:29 -07:00
Soonho Kong
54f4c4d9bc
test(library/rewriter/fo_match): clean up enable_trace
2013-09-29 18:36:01 -07:00
Leonardo de Moura
8d3ae665e7
fix(splay_map): fix typo
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-29 17:30:08 -07:00
Leonardo de Moura
21f9699661
test(splay_tree): add missing test
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-29 17:28:10 -07:00
Leonardo de Moura
790c2a72d5
test(safe_arith): add unit tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-29 17:20:32 -07:00
Leonardo de Moura
1179b6b52b
test(hash): add missing tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-29 17:20:32 -07:00
Leonardo de Moura
57b6148bbb
test(buffer): add missing tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-29 17:20:32 -07:00
Leonardo de Moura
02f621aa45
test(lazy_list): add more tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-29 14:38:35 -07:00
Leonardo de Moura
3c8dff9085
feat(lazy_list): implement ML-like lazy lists
...
We will use lazy lists to represent the set of solutions produced by the elaborator. The elaborator plugins will also use lazy lists.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-29 12:35:26 -07:00
Soonho Kong
841a1fb20c
fix(debug): print type in lean_assert, print bool correctly
...
- use typeinfo to print out a type of value when an assertion fails.
need to use "c++filt --types" to demangle names for non-basic types.
- use std::boolalpha and std::noboolalpha to control the printed values
for "true" and "false"
2013-09-28 23:38:21 -07:00
Soonho Kong
4602dfd209
test(util/numerics): more tests to improve coverage
2013-09-28 23:38:17 -07:00
Soonho Kong
fb3635a9ef
test(util/numerics/mpbp): add more tests for improving coverage
2013-09-28 01:01:52 -07:00
Soonho Kong
6519d4bb0f
chore(memcheck.supp): generalize TCmalloc_Bug2 pattern
...
to suppress a warning from MSR 32bit build
[skip-ci]
2013-09-27 19:16:02 -07:00
Soonho Kong
0065d69e0a
chore(build): put --coverage CXX_FLAGS for TESTCOV build
2013-09-27 10:24:31 -07:00
Leonardo de Moura
d2667d56c0
test(lean/parser): add more tests for improving coverage
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-27 09:59:50 -07:00
Leonardo de Moura
0ff69d28f3
test(lean/scanner): add more tests for improving coverage
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-27 09:59:50 -07:00
Leonardo de Moura
6fc177056e
refactor(tests/frontends/lean): use consistent name convention for file names
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-27 09:59:50 -07:00
Soonho Kong
6a0d211d54
test(fo_match): add more unittests
...
[skip ci]
2013-09-27 01:53:42 -07:00
Soonho Kong
285495313b
refactor(rewrite): use scoped_map as a type of substitution
2013-09-27 01:45:22 -07:00
Soonho Kong
1d4a1b68f5
refactor(fo_match): use scoped_map
2013-09-27 01:44:05 -07:00
Soonho Kong
6307beedc9
feat(scoped_map): add operator<< to scoped_map for debugging
2013-09-27 01:42:11 -07:00
Soonho Kong
a05b6b476e
fix(testcov): install lcov and include testcov only when it's on
2013-09-26 22:24:24 -07:00
Soonho Kong
6abb7bf2ff
chore(testcov): add missing CodeCoverage.cmake
2013-09-26 21:26:52 -07:00
Soonho Kong
3a5a565594
feat(splay_map): add operator<< to splay_map for debugging
2013-09-26 20:44:20 -07:00
Soonho Kong
5e5087b0a3
chore(testcov): add compile target "cov" to run code-coverage locally
...
- need to run cmake with "-DTESTCOV=ON" and "-DCMAKE_BUILD_TYPE=Debug"
- type "make/ninja cov"
- open "coverage/index.html" to check the code coverage
2013-09-26 20:28:52 -07:00
Leonardo de Moura
9d8ff0eadb
test(mpz): add unit tests for mpz
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 20:01:39 -07:00
Leonardo de Moura
5cce74d116
test(library): add tests for improving coverage
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 19:43:10 -07:00
Soonho Kong
60157aa92a
fix(splay_map): add 'const' to coersion operator of ref class
...
[skip ci]
2013-09-26 19:09:37 -07:00
Leonardo de Moura
54e63fd4de
feat(splay_tree): add fold and for_each templates for splay_tree and splay_map
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 18:18:20 -07:00
Leonardo de Moura
1aca1d2d77
refactor(list): improve append function
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 18:18:20 -07:00
Leonardo de Moura
24c173a519
feat(debug): add assert_ne (not equal) macro
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 18:18:20 -07:00
Leonardo de Moura
d7ed1560a9
feat(name_generator): add name_generator for unique names modulo a prefix
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 18:18:06 -07:00
Leonardo de Moura
e5d312dc18
fix(kernel): the hash code of expressions was not being used to compare them
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 08:41:20 -07:00
Leonardo de Moura
19f4554145
test(exception): add tests for improving coverage
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 08:35:13 -07:00
Leonardo de Moura
a24dbc3527
test(buffer): add tests for improving coverage
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-26 08:35:13 -07:00
Soonho Kong
bc31322a78
chore(memcheck): add another memcheck.supp entry for tcmalloc bug
...
suppress a valgrind warning we had on "normalizer" testcase (only with g++-4.8.1)
2013-09-26 00:49:43 -07:00
Soonho Kong
a2a5a77a44
fix(memory): increase memory counters by the actual size of reallocated memory
...
On OSX, we had a test failure on memory module. The problem was in
the realloc function (line 38):
void * realloc(void * ptr, size_t sz) {
size_t old_sz = malloc_size(ptr);
g_global_memory.dec(old_sz);
g_global_memory.inc(sz);
g_thread_memory.dec(old_sz);
g_thread_memory.inc(sz);
void * r = realloc_core(ptr, sz);
if (r || sz == 0)
return r;
else
...
The size of r could be bigger than sz. For instance,
|ptr| = 40 but |r| = 48
In the current code, here we only increase counters by 40.
But later when we free it, we decrease them by 48, and this
caused the problem, underflow of an unsigned counter in
g_global_memory.
2013-09-26 00:33:56 -07:00
Leonardo de Moura
4bae715350
fix(memory): disable problematic test when tcmalloc is used
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 22:39:49 -07:00
Leonardo de Moura
c00534209a
test(splay_map): add tests for improving code coverage
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 22:12:49 -07:00
Leonardo de Moura
98b4e09063
refactor(kernel): simplify expr_eq
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 22:09:08 -07:00
Leonardo de Moura
23e2f72f42
test(list): add tests for improving code coverage
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 22:04:24 -07:00
Leonardo de Moura
db4e5ab0ad
feat(expr_lt): improve expr_lt performance by using hash codes, and add more tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 21:59:58 -07:00
Leonardo de Moura
6477708d78
refactor(debug): improve lean_unreachable(), now we can avoid 'fake' return statements
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 21:27:20 -07:00
Leonardo de Moura
a7707dd669
test(bit_tricks): add tests for log2
2013-09-25 20:58:01 -07:00
Leonardo de Moura
44a16cab6a
test(exception): add new tests exception and parser_exception
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 20:57:53 -07:00
Leonardo de Moura
87e749cd12
test(trace): add unit test for trace module
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 20:30:05 -07:00
Leonardo de Moura
e16f45854b
refactor(deep_copy): simplify deep_copy implementation, and move unit test to separate file
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 20:25:24 -07:00
Leonardo de Moura
037ebfd1d4
refactor(util): make 'util/test.h' the first include
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 20:13:05 -07:00
Soonho Kong
ad62f9762b
fix(tests/util): use lean_assert_eq
2013-09-25 19:22:36 -07:00
Soonho Kong
475338080f
fix(tests/interval): use new lean_assert and lean_assert_eq
2013-09-25 18:40:45 -07:00
Leonardo de Moura
9f0dab1add
fix(kernel): add declarations for operator<<(std::ostream&, expr const&) and operator<<(std::ostream&, context const&) in the kernel
...
The actual implementation of these two operators is outside of the
kernel. They are implemented in the file 'library/printer.cpp'.
We declare them in the kernel to prevent the following problem.
Suppose there is a file 'foo.cpp' that does not include
'library/printer.h', but contains
expr a;
...
std::cout << a << "\n";
...
The compiler does not generate an error message. It silently uses the
operator bool() to coerce the expression into a Boolean. This produces
counter-intuitive behavior, and may confuse developers.
2013-09-25 17:45:54 -07:00
Leonardo de Moura
1452e9319e
feat(debug): improve lean_assert macro
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-25 17:29:00 -07:00
Soonho Kong
1d8b7dc193
Update 'orelse' and 'then' rewriter to take a list of rewriters
2013-09-25 16:46:39 -07:00
Soonho Kong
a50f5f92b8
Rename 'rewrite' to 'Rewriter', change type of rewriter::operator()
2013-09-25 15:38:16 -07:00
Soonho Kong
573ca92a08
Fix typo in CTestConfig.cmake
2013-09-24 21:46:51 -07:00
Soonho Kong
6d10e978dc
Add "--gen-suppressions=all" to valgrind option
2013-09-24 21:36:03 -07:00
Soonho Kong
0ef633a3c5
Fix to be compiled by clang++-3.4
...
Clang++-3.4 is starting to enforce the following item of C++11 standard,
thus it's making lean not compiling:
It's illegal in C++11: §8.3.6.4 [dcl.fct.default]
"If a friend declaration specifies a default argument expression, that
declaration shall be a definition and shall be the only declaration of
the function or function template in the translation unit."
2013-09-24 21:30:56 -07:00
Soonho Kong
8e9bd9ee67
Add Repeat/Success/Fail to rewrite (skeleton)
2013-09-24 20:04:08 -07:00
Soonho Kong
ac0eafa1b6
Fix style-warning
2013-09-24 19:34:58 -07:00
Soonho Kong
57e9e2c658
Re-implement rewrite module using rewrite_cell
2013-09-24 19:11:09 -07:00
Leonardo de Moura
ba0528c298
Implement total order on expressions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-24 12:16:32 -07:00
Leonardo de Moura
e23813f15d
Add support for creating unique internal names.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-24 11:01:30 -07:00
Leonardo de Moura
1779b29355
Implement map using splay_trees
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-24 01:44:46 -07:00
Soonho Kong
71fb150333
Fix type of rewrite() to take an env. Add skeletons for other rewriters
2013-09-24 01:20:45 -07:00
Soonho Kong
81c9de229b
Add then and orelse rewrite combinators and tests
2013-09-24 01:19:03 -07:00
Soonho Kong
9ba6068858
Update fo_match
2013-09-24 01:19:03 -07:00
Soonho Kong
f89ededddc
Add rewrite and first-order pattern matching skeletal
2013-09-24 01:19:03 -07:00
Leonardo de Moura
b78b2e0585
Add remaining splay tree methods
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-24 01:04:02 -07:00
Soonho Kong
01f5fa59b1
Update src/memcheck.supp to suppress warnings caused by tcmalloc
2013-09-24 03:58:13 -04:00
Leonardo de Moura
d31f3facac
Implement splay trees
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-23 22:31:18 -07:00
Soonho Kong
c1b12eae99
Update memcheck.supp to suppress a valgrind warning caused by a bug in tcmalloc-2.0
2013-09-23 19:57:16 -07:00
Leonardo de Moura
46d6c41835
Fix bug in the type checker (when type checking terms with meta-variables).
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-22 19:12:19 -07:00
Leonardo de Moura
1647e44510
Fix memory corruption bug
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-22 18:53:58 -07:00
Leonardo de Moura
16a6a54df1
Fix abuse of operator-> overload
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-22 16:41:51 -07:00
Leonardo de Moura
c847d27763
Improve higher order unification
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-21 00:41:49 -07:00
Soonho Kong
80581a76bb
Update Find{MSize,MallocSize,MallocUsableSize}.cmake to handle the case where find_path fails
2013-09-21 00:10:25 -07:00
Soonho Kong
48318511f2
Undo the previous change which caused compile-errors
2013-09-21 00:04:23 -07:00
Soonho Kong
66ba1a20d7
Suppress cmake warning for OSX build
2013-09-20 23:49:09 -07:00
Leonardo de Moura
d29ec9ab6f
Add tests for memory.cpp
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-20 22:37:13 -07:00
Leonardo de Moura
7ac94ee976
Add max_sharing tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-20 22:01:40 -07:00
Leonardo de Moura
d34cfe3f8a
Add simple formatter tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-20 21:46:32 -07:00
Soonho Kong
bef44899c8
Suppress style warning on util/memory.cpp
2013-09-20 18:07:12 -07:00
Soonho Kong
9226c46358
Add support OSX's malloc_size
2013-09-20 17:48:55 -07:00
Soonho Kong
8dc31dae4d
Fix Check{MSize,MallocUsableSize}.cc and FindMSize.cmake to consider cross-compilation
2013-09-20 16:10:00 -07:00
Leonardo de Moura
3971265bcb
Add support for _msize
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-20 14:14:57 -07:00
Leonardo de Moura
dae654e4c6
Track memory usage. Add new CMake option TRACK_MEMORY_USAGE (It is ON by default).
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-20 12:32:12 -07:00
Leonardo de Moura
9d1266c972
Fix bugs in Tcmalloc detection.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 23:52:50 -07:00
Leonardo de Moura
a7a5426ff5
Fix wrong message in tcmalloc detection code
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 23:36:57 -07:00
Leonardo de Moura
16dc056abc
Remove invalid use of register
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 22:59:39 -07:00
Soonho Kong
49e87ccbb1
Enable "-Wextra" compiler option and fix code to remove warnings
...
"-Wextra" option turns on the following warnings:
-Wclobbered
-Wempty-body
-Wignored-qualifiers
-Wmissing-field-initializers
-Wmissing-parameter-type (C only)
-Wold-style-declaration (C only)
-Woverride-init
-Wsign-compare
-Wtype-limits
-Wuninitialized
-Wunused-parameter (only with -Wunused or -Wall)
-Wunused-but-set-parameter (only with -Wunused or -Wall)
2013-09-19 22:52:52 -07:00
Leonardo de Moura
651c5d6751
Fix warnings and bugs related to unused variables.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 22:41:07 -07:00
Soonho Kong
2b72c5f681
Update cpplint.py, disable "All parameters should be named in a function"
2013-09-19 22:41:07 -07:00
Soonho Kong
ab6ca82e6f
Update to suppress unused-parameter warnings
2013-09-19 22:40:34 -07:00
Leonardo de Moura
80a1b96925
Remove duplicate solutions in the higher order matching module. Simplify solutions when higher-order matching is used, and we don't have a residue.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 18:59:28 -07:00
Leonardo de Moura
ffef055e34
Add options to ho_unifier
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 18:19:25 -07:00
Leonardo de Moura
8c5c17ee12
Fix typo
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 16:30:37 -07:00
Leonardo de Moura
42482622f6
Add imitation for lambdas and Pis
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 16:28:23 -07:00
Leonardo de Moura
4afeb1a400
Add imitation step for equalities.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 16:28:23 -07:00
Leonardo de Moura
b3aa8b37f3
Remove cleanup_subst. The residue may still reference auxiliary variable. So, it is not safe to remove then from the resultant partial substitution.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 16:28:23 -07:00
Leonardo de Moura
d7cc5d2404
Fix bug in ho_unifier
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-19 16:28:23 -07:00
Soonho Kong
0005d22bd1
Update memcheck.supp, add a new suppression rule for 32bit ubuntu
...
[skip ci]
2013-09-19 11:46:47 -07:00
Leonardo de Moura
2f29ff70d7
Implement higher-order unification
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-18 20:46:00 -07:00
Leonardo de Moura
ad901ce087
Use consistent naming conventions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 14:43:07 -07:00
Leonardo de Moura
22949051f1
Higher-order unifier skeleton
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 14:43:07 -07:00
Soonho Kong
27d5ae13d7
Move src/interval to src/util/interval
2013-09-17 14:10:53 -07:00
Leonardo de Moura
df054477eb
Remove unnecessary TODOs.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 13:33:52 -07:00
Leonardo de Moura
3df6149daa
Add support for metavariables in the type checker.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 11:09:59 -07:00
Leonardo de Moura
9f9dcf9a29
Fix bug in the creation of children environments. Remove unnecessary function.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 07:37:33 -07:00
Leonardo de Moura
30b19c314a
Add basic support for metavariables at is_convertible. Swap is_convertible arguments to make it more intuitive.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 07:15:47 -07:00
Leonardo de Moura
a26c7d47f2
Add simplification to add_lift
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 03:14:02 -07:00
Leonardo de Moura
99e8d2feae
Add simplification rule to add_inst
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 02:57:28 -07:00
Leonardo de Moura
21c7a45f67
Relax definition of identity_stack. Fix printer for metavariable contexts.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 02:09:45 -07:00
Leonardo de Moura
d3bce584f4
Add support for new metavariable representation in the normalizer.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 01:57:21 -07:00
Leonardo de Moura
da09e7217a
Cleanup meta_entry code
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-16 19:32:28 -07:00
Leonardo de Moura
99a163f11d
Simplify metavariable context. Now, we have only 'lift' and 'inst' instead of 'subst', 'lift' and 'lower'
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-16 19:32:28 -07:00
Leonardo de Moura
cad562a448
Add support for metavariables in the normalizer.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-16 19:32:28 -07:00
Leonardo de Moura
1be2a30c8c
Fix bug in normalizer. We must create a scope whenever we extend the value stack.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-16 19:32:28 -07:00
Soonho Kong
01339a93a3
Fix cpplint warning in util/safe_arith.cpp
2013-09-16 19:12:12 -07:00
Soonho Kong
13401d534c
Add static assertion to util/safe_arith.cpp
2013-09-16 18:17:05 -07:00
Soonho Kong
6ee14bf17f
Use unsigned short for the type of interval::bound_deps
2013-09-16 18:15:32 -07:00
Soonho Kong
ef18759e77
Update src/CmakeLists.txt - only check style over files starting with [A-z]
2013-09-16 16:23:20 -07:00
Leonardo de Moura
f79f046294
Add partial support for metavariables in the normalizer
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-15 21:23:50 -07:00
Soonho Kong
58c8c1a5ec
Add EXCLUDE_PATTERNS to src/Doxyfile
...
- */src/cmake/*
- GTAGS GPATH GRTAGS
- memcheck.supp
- *.cmake *.cmake.in
- *.txt
2013-09-15 20:31:15 -07:00
Leonardo de Moura
2800292947
Add timestamp to metavar_env
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-15 19:50:48 -07:00
Leonardo de Moura
5a4bc331d2
Make unification_problems a virtual class. Associate a 'standard' context with each metavariable in metavar_env
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-15 19:38:36 -07:00
Leonardo de Moura
63e102055e
Move metavariables to the kernel. This is the first step for implementing the new elaborator.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-15 12:09:01 -07:00
Soonho Kong
e4b327bbaa
Use C++11's <random> in pdeque/pvector tests (cygwin doesn't support rand_r)
2013-09-15 01:38:57 -07:00
Soonho Kong
dcc917a6b4
Use "sprintf" instead of "snprintf" because cygwin doesn't support "snprintf"
2013-09-15 01:38:21 -07:00
Soonho Kong
b553521578
Attempt to suppress valgrind warnings on Travis
...
- don't understand why cmake on travis doesn't pick up the memcheck.supp
file. It works on my local machine.
2013-09-15 01:17:05 -07:00
Soonho Kong
30f4b2de5f
Update memcheck.supp
...
[skip ci]
2013-09-14 19:33:47 -07:00
Soonho Kong
ce05345129
Update CTestConfig.cmake to fix memcheck.supp
2013-09-14 20:22:05 -04:00
Soonho Kong
60903d3cea
Fix cygwin build which was failed due to snprintf
2013-09-14 17:11:37 -07:00
Soonho Kong
c96a6982a0
Add <ctime> header for time() in pdeque/pvector tests
2013-09-13 20:42:49 -07:00
Soonho Kong
5266e22f05
Remove debug code from cpplint.py
2013-09-13 20:37:31 -07:00
Soonho Kong
eda25e77a4
Use time(0) as an initial seed for rand_r() in pvector/pdeque tests
2013-09-13 20:28:15 -07:00
Soonho Kong
f8c0c02cb0
Exclude 'style_check' from MemCheck list
2013-09-13 20:27:35 -07:00
Soonho Kong
0905529720
Add "style_check" test
2013-09-13 20:00:55 -07:00
Soonho Kong
0c450b5c23
Add StyleCheck.cmake
2013-09-13 19:21:02 -07:00
Soonho Kong
f620f54b32
Add target "style" to run cpplint.py
...
- try "ninja style"
2013-09-13 19:15:38 -07:00
Soonho Kong
bc60b47295
Apply coding style
2013-09-13 18:48:09 -07:00
Leonardo de Moura
99eaff0b4f
Extract private and static, and add treeview to documentation
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 17:55:37 -07:00
Leonardo de Moura
bcc3827a99
Modify Doxygen file to extract all elements even the undocumented ones. Disable warnings for undocumented entities. Add extra comments.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 13:46:22 -07:00
Leonardo de Moura
d54834279e
Use consistent coding style for if-then-else
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 12:57:40 -07:00
Leonardo de Moura
8c735f1daa
Use consistent coding style for spaces after ','
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 12:49:03 -07:00
Leonardo de Moura
2c68117adf
Tag TODOs
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 12:25:21 -07:00
Leonardo de Moura
18f9378f97
Rename numtype.h to num_type.h
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 09:07:44 -07:00
Leonardo de Moura
573ec5ccc2
Rename import_all. The idea is to use consistent name for library files.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 09:06:46 -07:00
Leonardo de Moura
0c09e4524a
Use consistent names for import functions, and library files.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 08:58:34 -07:00
Leonardo de Moura
070c87bef0
Rename arith library files
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-13 08:55:09 -07:00
Soonho Kong
5c3866cd71
Use fullpath in #include directives, add missing STL headers
2013-09-13 03:35:29 -07:00
Leonardo de Moura
4c19cc6957
Rename lean frontend files. The prefix lean_ is not necessary anymore.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 20:09:35 -07:00
Leonardo de Moura
26097475fd
Use fullpath in #include directives.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 20:04:10 -07:00
Leonardo de Moura
c655e9fe7b
Move sexpr_funcs to sexpr_fn. Using consistent file name conventions.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 18:27:46 -07:00
Leonardo de Moura
2e990ef7d3
Fix warnings
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 14:02:40 -07:00
Leonardo de Moura
bc69e7803f
Add support for writing a[i] = v instead of a.set(i, v) in the pdeque class.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 11:18:26 -07:00
Leonardo de Moura
74b8a4f0ac
Add support for writing a[i] = v instead of a.set(i, v) in the pvector class.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 11:12:02 -07:00
Leonardo de Moura
f972cc9aae
Fix bugs in pvector. Improve test driver
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 11:01:40 -07:00
Leonardo de Moura
55ff49d2d5
Replace queue.h with pdeque.h
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 10:09:54 -07:00
Leonardo de Moura
cd5e45bae2
Reduce pvector delta_cell quota on reads. Add example that demonstrates why this is needed.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-12 08:28:24 -07:00
Soonho Kong
5858c9d5e0
Update tests/util/list.cpp to suppress a g++ warning
2013-09-12 01:39:04 -07:00
Leonardo de Moura
f7196e05ff
Add 'persistent' vectors. We should use the same approach for queues.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-11 19:48:55 -07:00
Leonardo de Moura
ef0e0ad382
Add (optional) performance tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-11 19:48:55 -07:00
Leonardo de Moura
572c7ced2a
Add #include<atomic> to expr.h. We need it when #define LEAN_THREAD_UNSAFE_REF_COUNT is used
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-11 19:48:55 -07:00
Leonardo de Moura
ed15a2df9b
Use split_reverse_second instead of split and then reverse in queue
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-11 19:48:55 -07:00
Leonardo de Moura
37498f9fb8
Add persistent queues
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-11 19:48:54 -07:00
Leonardo de Moura
3657320edb
Add basic list functions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-11 19:48:54 -07:00
Soonho Kong
7a6032dd86
Update memcheck.supp to ignore bash memroy leak on Fedora19
2013-09-10 22:44:24 -04:00
Soonho Kong
9e3583a04a
Update memcheck.supp to match the thread bug patterns we get by using clang++-3.3
2013-09-10 17:37:22 -07:00
Soonho Kong
a993424165
Use "--gen-suppressions=all" in valgrind
2013-09-10 17:09:39 -07:00
Soonho Kong
6569406fb9
Update memcheck.supp
...
add reference for the suppression stuff
[skip ci]
2013-09-10 15:47:47 -07:00
Soonho Kong
3505ed8adb
Use suppressions file to ignore certain valgrind warnings
2013-09-10 15:37:09 -07:00
Soonho Kong
9113f824bd
Use '--track-origins=yes' option in valgrind
2013-09-10 14:31:30 -07:00
Leonardo de Moura
6fe86ffefd
Fix initialized memory error reported by Valgrind. Disable 2 tests that produce memory leaks due to a bug in g++.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-10 13:51:02 -07:00
Soonho Kong
fae6c29237
Fix memory leaks in mpfp.h
2013-09-10 13:26:14 -07:00
Soonho Kong
8ce18a1508
Use "--leak-check=full" option in valgrind
2013-09-10 13:12:22 -07:00
Soonho Kong
f4edbba325
Turn off '--show-reachable=yes' valgrind option
2013-09-10 12:34:33 -07:00
Soonho Kong
b04bdae763
Use "--trace-children=yes" option for MemCheck(valgrind) to handle
...
leantests shell script
2013-09-10 10:47:04 -07:00
Leonardo de Moura
4c67721d32
Fix test error on Cygwin
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-09 18:35:11 -07:00
Leonardo de Moura
adfbba6447
Fix problem reported by Soonho
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-08 23:10:33 -07:00
Leonardo de Moura
2ca30571b4
Display the input term in the output of the Check command. It is useful to see the fully elaborated term.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-08 22:55:21 -07:00
Leonardo de Moura
a8ba50531b
Fix typo
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-08 20:38:11 -07:00
Leonardo de Moura
59a589037e
Keep expanded form when pretty printings variable declarations with implicit marks (i.e., curly braces)
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-08 11:23:46 -07:00
Leonardo de Moura
df116f88e0
Improve pretty printer for Pi's
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-08 11:04:07 -07:00
Leonardo de Moura
1cee392483
Add light_checker: module for extracting the type of (fully elaborated) expressions. It is much faster than type_checker, which infers the type but also check whether the input is type correct or not.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-07 22:33:18 -07:00
Leonardo de Moura
33c4b44b2b
Encapsulate context implementation. The current implementantion based on lists may be a performance problem in the future, and we should be able to change it without affecting the whole code base.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-07 11:15:11 -07:00
Leonardo de Moura
bab11b57ad
Move Symm and Trans back to basic_thms.cpp
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 23:49:35 -07:00
Leonardo de Moura
c674bb3790
Add castlib as an independent library
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 23:40:47 -07:00
Leonardo de Moura
7a9d53d0d7
Refactor arith libraries
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 23:19:47 -07:00
Leonardo de Moura
b92bbeb83b
Add casting propagation and normalization
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 20:45:26 -07:00
Leonardo de Moura
7eab229114
Improve check_pi in lean elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 18:58:33 -07:00
Leonardo de Moura
c0c2f52087
Add Cast, DomInj and RanInj. Improve operator << for lean_frontend objects.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 18:32:15 -07:00
Leonardo de Moura
b62816cc25
Fix problem with pretty printer. Add another test for elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 18:01:11 -07:00
Leonardo de Moura
edafd519e1
Add missing case to elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 17:43:08 -07:00
Leonardo de Moura
26bf7bcaac
Fix bug in the elaborator. Move character ' to class A
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 17:12:35 -07:00
Leonardo de Moura
8840b37258
Fix type checker and elaborator for let expressions. Fix get_coercions (we need to pass the context). Fix pretty printer for def_type_mismatch_exception.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 11:02:00 -07:00
Leonardo de Moura
2459c4ae7c
Add (optional) type to let declarations
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 10:06:26 -07:00
Leonardo de Moura
6da194334e
Move 'slow' test files to different subdir. Modify CTestCustom.cmake.in to run leantests.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 08:48:12 -07:00
Leonardo de Moura
6f3b0c30fb
Add 'Variables' command.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 08:48:12 -07:00
Leonardo de Moura
3dc55c452c
Parse decimal values
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-06 08:48:12 -07:00
Leonardo de Moura
b3a095b068
Fix pretty printer for evaluator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-05 18:57:29 -07:00
Leonardo de Moura
c22bd8b6ed
Clean elaborator_exception pretty printing
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-05 10:15:52 -07:00
Leonardo de Moura
eb96e6441f
Moved kernel exception formatting to kernel_exception_formatter.cpp.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-05 10:15:43 -07:00
Soonho Kong
974b99b424
Update CTestCustom.cmake.in
...
Exclude "threads" test from valgrind targets
[skip ci]
2013-09-04 16:41:04 -07:00
Leonardo de Moura
87d3961158
Improve elaborator error messages
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 16:36:58 -07:00
Leonardo de Moura
613d83cdf4
Improve application type mismatch errors. We also show the implicit arguments (not just their types)
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 16:36:58 -07:00
Leonardo de Moura
408005b730
Fix typo
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 16:36:57 -07:00
Soonho Kong
30e5ac7004
Fix OSX linker warning issue
2013-09-04 15:35:07 -07:00
Leonardo de Moura
be7fa0932a
Add unicode name for the types: Nat, Int and Real
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 09:03:41 -07:00
Leonardo de Moura
d41160f8a5
Modify environment. Now, when a builtin value is declared, if it has a unicode alternative representation, then we add it as a definition. Now, everything that occurs in the environment has been 'declared'.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 08:53:00 -07:00
Leonardo de Moura
e955c054ca
Modify type checker. Now, it only accepts builtin values that have been declared in the environment. The idea is to be able to track which classes of builtin values have been used in a given environment. We want to be able to quantify the size of the trusted code base for a particular development.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 08:30:04 -07:00
Leonardo de Moura
9f34f96b08
Add another example
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 05:40:28 -07:00
Soonho Kong
a8c16bc127
Fix test coverage problem by forcing to use gcov-4.8
2013-09-04 08:07:24 -04:00
Soonho Kong
5e603dbf9f
Use cdash on cmacslab2 machine due to 10-build per day restriction
2013-09-04 04:46:37 -07:00
Leonardo de Moura
9f64e2b14b
Fix another cdash warning
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 04:43:55 -07:00
Leonardo de Moura
00bee9c96e
Fix warning produced by clang++
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 04:40:43 -07:00
Leonardo de Moura
57c0c69872
Fix bug reported by Valgrind. Reason: m_metavars is a vector of metavar_info; each metavar_info has a context; when we invoke mk_metavar the vector can grow in size, and the context is moved to a new location. The previous location is invalidated. To avoid the problem we have to save ctx in a local variable.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-04 04:29:03 -07:00
Soonho Kong
bbbd584b45
Use my.cdash.org to store results of unittests, coverage, and valgrind
2013-09-04 00:51:20 -07:00
Leonardo de Moura
887f696f66
Factor duplicate code. Add more comments
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 23:27:58 -07:00
Leonardo de Moura
0c071d43af
Move examples to lean examples subdir. We should have an example subdirectory for each frontend
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 20:42:20 -07:00
Leonardo de Moura
fc9e395818
Define absolute value function and notation for it. Add new example.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 20:39:54 -07:00
Leonardo de Moura
3992c4b8f9
Define divides, and add examples
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 20:18:20 -07:00
Leonardo de Moura
8e7c657cf7
Use expected type of a definition in the elaborator. Improve elaborator solver. Add new example
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 18:04:42 -07:00
Leonardo de Moura
4a75e2d965
Fix bug when pretty printing function applications where the head is a meta-variable.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 17:51:56 -07:00
Leonardo de Moura
51422fe654
Modify the parser for accepting expressions such as: 'fun a b, f a b', 'forall a, f a > 0', etc. This is just syntax sugar for 'fun (a : _) (b : _), f a b' and 'forall a : _, f a > 0'
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 17:24:05 -07:00
Leonardo de Moura
6f3fa63ccb
Add missing test
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 14:51:34 -07:00
Leonardo de Moura
a154f4e439
Modify Set command in the default lean frontend. Now, the lean prefix (for lean default frontend specific options) is optional when we are in the lean front-end.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 11:07:28 -07:00
Leonardo de Moura
a341643335
Fix unit tests for Windows
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 10:44:51 -07:00
Leonardo de Moura
2d97bc3861
Make pp::unicode false by default in Windows
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 10:26:12 -07:00
Leonardo de Moura
544229e5d3
Create pp::unicode option. The idea is to be able to disable unicode characters, but still be able to use mixfix notation.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-03 10:11:45 -07:00
Leonardo de Moura
e031d7bc10
Improve error messages when overloads+coercions do not work
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 20:05:47 -07:00
Leonardo de Moura
fd44ec8d79
Improve application type mismatch error messages
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 18:28:12 -07:00
Leonardo de Moura
72188691de
Add hyperbolic functions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 17:28:43 -07:00
Leonardo de Moura
4eaba93591
Add trigonometric functions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 17:03:02 -07:00
Leonardo de Moura
395513258e
Define mod and unary minus
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 16:31:44 -07:00
Leonardo de Moura
b483d0dc45
Replace Int::sub and Real::sub with definitions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 16:31:30 -07:00
Leonardo de Moura
abc939382b
Add Real arithmetic. Fix elaborator for coercions. Now, two overloads are considered ambiguous if they need the same number of coercions. Improve pretty printer for nest infix operators with same precedence and associativity.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 13:20:00 -07:00
Leonardo de Moura
e218b92a9d
Modify verbose message for Set command
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 12:29:21 -07:00
Leonardo de Moura
0a67679afb
Add natural numbers. Fix how coercions and overloads interact (switch to approach used in C++). Add notation for natural and integer arithmetic. Rename m and u universe variables to M and U.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 12:24:29 -07:00
Leonardo de Moura
7acf438bf4
Metavariables will not be part of the kernel
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 09:36:04 -07:00
Leonardo de Moura
990f428a81
Remove virtual method kind from value class and subclasses. We can use dynamic_cast to achieve the same goal
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 09:35:10 -07:00
Leonardo de Moura
81d0203ee0
Replace macros TypeM, TypeU, Int, Bool, True and False with constant global expressions. The macros were producing counterintuitive behavior. For example, we had an enumeration type with an element called Int.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 09:11:53 -07:00
Leonardo de Moura
db88920f81
Rename normalize and type_check to normalizer and type_checker (using a consistent naming convention)
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-02 08:43:38 -07:00
Leonardo de Moura
c97e669f0c
Add coercion support in the elaborator and pretty printer
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-01 19:09:07 -07:00
Leonardo de Moura
e8c09015ad
Move elaborator to lean default frontend. It is getting too specific
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-01 18:22:24 -07:00
Leonardo de Moura
42be7a4989
Add coercion declarations
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-01 18:11:28 -07:00
Leonardo de Moura
75f4ec5092
Add functions for 'updating expressions'. The new functions are used to simplify the elaborator.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-01 15:37:30 -07:00
Leonardo de Moura
61a8fd16db
Remove unnecessary files
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-01 14:57:08 -07:00
Leonardo de Moura
d27680d7fc
Add support for overloads in the elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-01 14:54:02 -07:00
Leonardo de Moura
598daa40bc
Refactor elaborator for supporting overloads
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-01 10:24:10 -07:00
Leonardo de Moura
b2924bba99
Fix typos
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-01 10:03:15 -07:00
Leonardo de Moura
e54338f4a8
Add a real example. Fix bug in the parser
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 19:32:08 -07:00
Leonardo de Moura
51640ecff8
Move files in examples directory to tests directory. They are not real examples
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 19:16:30 -07:00
Leonardo de Moura
389f23f356
Add test script
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 18:31:39 -07:00
Leonardo de Moura
9d9f9797e4
Improve elaborator interface. Now, the metavariables are created inside the elaborator. The elaborator-user only needs to create placeholders. Motivaton: the placeholders are meaningful independently of the elaborator. On the other hand, the metavariables depend on the elaborator state.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 17:11:06 -07:00
Leonardo de Moura
71b8b6408e
Handle (and pretty print) elaborator error messages in the lean default frontend
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 16:46:41 -07:00
Leonardo de Moura
03a5b5dbd0
Add more tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 14:25:27 -07:00
Leonardo de Moura
64788320f2
Fix elaborator for let-expressions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 14:24:07 -07:00
Leonardo de Moura
4a28a64685
Fix type checker for let expressions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 14:19:24 -07:00
Leonardo de Moura
793468072b
Fix nontermination problem
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-31 12:32:16 -07:00
Leonardo de Moura
4c27530930
Fix missing case in the elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 17:07:45 -07:00
Leonardo de Moura
4b7d4cf0d1
Add latest example to regression suite
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 16:39:31 -07:00
Leonardo de Moura
dadbf15e70
Change how the (auxiliary) explicit definitions are encoded in the system. The previous encoding was confusing the pretty printer, and the definition looked recursive.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 16:37:21 -07:00
Leonardo de Moura
1b6d51b0aa
Mark implicit arguments of builtin symbols
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 15:56:04 -07:00
Leonardo de Moura
4ef4655183
Add homogeneous equality
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 14:26:12 -07:00
Leonardo de Moura
1e370023b1
Attach elaborator the lean default parser
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 13:25:30 -07:00
Leonardo de Moura
45d89ace65
Fix name clash problem when pretty printing
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 13:25:12 -07:00
Leonardo de Moura
6efb6c6e83
Fix clang++ compilation problem.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 09:04:11 -07:00
Leonardo de Moura
2aac94f2e6
Refactor elaborator using new metavar library.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 01:25:06 -07:00
Leonardo de Moura
682df7699d
Fix is_convertible propositions => type
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-30 01:24:06 -07:00
Leonardo de Moura
1f6943e3a4
Add head_reduce_mmv (reduction function modulo metavariables)
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-29 14:15:17 -07:00
Leonardo de Moura
2cf9ca9345
Add metavariable utilities. They will be used to refactor the elaborator.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-29 13:49:22 -07:00
Leonardo de Moura
01e4b4b7fe
Add postprocessor functional object to the replace_fn template. Add unit-test that demonstrates how to build a replacer that builds a trace. The trace associates new expressions with the old ones that were used to create it.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-28 10:47:19 -07:00
Leonardo de Moura
cdab19b88c
Simplify the elaborator
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-27 20:39:38 -07:00
Leonardo de Moura
8dacd97801
Remove obsolete commands.
2013-08-27 16:03:45 -07:00
Leonardo de Moura
a9c6088d11
Uniform notation declarations.
2013-08-27 15:59:13 -07:00
Leonardo de Moura
5aae838e1c
Add missing mixfix notation
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-27 10:09:46 -07:00
Leonardo de Moura
85daaea8ce
Rename get_exs in oper to get_deno
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-27 09:49:48 -07:00
Leonardo de Moura
206c7fa203
Implement support for notation + implicit arguments. Cleanup pretty printer code for handling implicit arguments.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-27 09:45:00 -07:00
Leonardo de Moura
76c968a5b8
Add basic support for hiding implicit arguments when pretty printing.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-26 20:35:10 -07:00
Leonardo de Moura
fc6cc17925
Improve lean pretty printer support for implicit argument annotations
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-26 19:19:56 -07:00
Leonardo de Moura
7bca3705ca
Add implicit argument declarations to lean parser.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-26 10:16:29 -07:00
Leonardo de Moura
7003f85213
Add implicit argument management to lean frontend.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-26 10:16:29 -07:00
Leonardo de Moura
0a34959716
Fix a bug. Add another test.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-25 20:43:50 -07:00
Leonardo de Moura
3721577700
Fix bugs in elaborator. Cleanup tests.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-25 18:46:33 -07:00
Leonardo de Moura
8f4a844598
Fix unit tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-25 11:42:36 -07:00
Leonardo de Moura
7e130ac47f
Propagate interrupt to normalizer in the lean frontend
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-25 11:34:46 -07:00
Leonardo de Moura
b42e04297d
Add support for creating meta-variables in the parser.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-25 11:18:19 -07:00
Leonardo de Moura
25e47a8a2f
Add check_interrupted 'macro'
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-25 11:03:09 -07:00
Leonardo de Moura
ece6e6ca6a
Add interrupt to parser. Add elaborator to parser. Add placeholder support in the scanner.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-25 11:02:34 -07:00
Leonardo de Moura
02b72acc2f
Add implicit arguments unit tests
2013-08-24 18:23:39 -07:00
Leonardo de Moura
ac1267bef3
Add expression elaborator to library
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-24 18:14:09 -07:00
Leonardo de Moura
68e1a1a24a
Add metavar_env to library
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-24 17:51:53 -07:00
Leonardo de Moura
dc91a7adb8
Add Ctrl-C support for interrupting Lean shell.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-24 16:11:35 -07:00
Leonardo de Moura
f0edf2b4a3
Pretty print kernel exceptions. Improve default lean frontend error messages.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-24 13:16:43 -07:00
Leonardo de Moura
0b112b6637
Add sstream to simplify the generation of exception messages.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-24 11:55:17 -07:00
Leonardo de Moura
48ba655bd5
Store position at parser_error. It produces better error messages.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-24 11:30:54 -07:00
Leonardo de Moura
55eaef1a44
Save position information when parsing expression in the lean default fronted.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-24 09:56:07 -07:00
Leonardo de Moura
bf608a38aa
Add head_reduce
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 19:35:33 -07:00
Leonardo de Moura
be1ea2ddc7
Add name_set typedef
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 19:34:10 -07:00
Leonardo de Moura
e95a0c2559
Modify basic printer for contexts
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 12:11:16 -07:00
Leonardo de Moura
18a195029b
Refactor expression equality
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 09:42:49 -07:00
Leonardo de Moura
f08c06d582
Add head_beta tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 09:42:49 -07:00
Leonardo de Moura
e7487a1fec
Add head_beta function
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 09:42:49 -07:00
Leonardo de Moura
670dc5ad55
Add option to control maximum recursion depth in the expression normalizer
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
Conflicts:
src/tests/kernel/normalize.cpp
2013-08-23 09:42:49 -07:00
Leonardo de Moura
198fd46fc2
Track recursion depth at normalizer. Add fluid let template.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 09:42:49 -07:00
Leonardo de Moura
d30c6b2c9d
Fix spaces
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 09:42:49 -07:00
Leonardo de Moura
42a7094ca2
Fix bug in display_decimal. Add more mpq tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 09:42:49 -07:00
Leonardo de Moura
218b6ac8b7
Fix typo
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-23 09:42:49 -07:00
Soonho Kong
ca779265e5
Update src/CMakeLists.txt to increase stack size for windows build
...
[skip ci]
2013-08-22 21:16:57 -07:00
Leonardo de Moura
f1462dc51e
Change lean frontend specific options. Now, frontend specific options must begin with the frontend name.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-22 10:55:55 -07:00
Leonardo de Moura
0f6a7e4a95
Rename exprlib to library. Name was misleading, it is more than a library for manipulating expressions.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-22 10:26:52 -07:00
Leonardo de Moura
60fdcf0011
Add option_declaration tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-22 08:59:39 -07:00
Leonardo de Moura
5d813c30d0
Add missing option test
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-22 08:51:33 -07:00
Leonardo de Moura
fbd25cac9f
Add hierarchical names tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-22 08:48:52 -07:00
Leonardo de Moura
1b5fcb80ee
Add sexpr tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-22 08:30:52 -07:00
Leonardo de Moura
6272408f12
Add format tests
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-22 08:20:42 -07:00
Leonardo de Moura
3c5f993191
Fix bugs in options module. Add more tests.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-22 08:08:55 -07:00
Leonardo de Moura
eb4315baab
Add small trick to improve pretty printer performance. Now, deep.lean takes 0.140secs to be processed.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 22:54:58 -07:00
Leonardo de Moura
56d2d2a112
Improve pretty printer performance for deep formulas and formats with long lines. Add example that demonstrates performance problem (before: 13 secs, after: 1 sec).
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 22:45:48 -07:00
Leonardo de Moura
aceae7a1b2
Change policy for adding input to readline history.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 19:43:47 -07:00
Leonardo de Moura
bd3b422158
Add support for READLINE. Remark: it is not enabled by default. Rename tcmalloc option to TCMALLOC (using consistent name convention for cmake parameters).
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 19:08:44 -07:00
Leonardo de Moura
59e63c0421
Add prompt when in interactive mode. Fix Show Environment [num]
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 18:24:26 -07:00
Leonardo de Moura
0ffa76aa5e
Fix unused variable warnings
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 17:02:09 -07:00
Leonardo de Moura
31460aa5b8
Add option declarations. Add Help.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 17:02:09 -07:00
Leonardo de Moura
65898f6d5b
Add Import command
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 17:02:09 -07:00
Leonardo de Moura
90678566b4
Improve lambda/pi formatting
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 17:02:09 -07:00
Soonho Kong
5f1c12feb8
Fix interval<T>::mul to suppress clang warnings
2013-08-21 14:35:46 -07:00
Soonho Kong
c9b6be829e
Doxygen: exclude src/tests directory
2013-08-21 14:35:46 -07:00
Soonho Kong
3f40953efc
Add comments for unicode symbols, fix a typo
2013-08-21 14:35:45 -07:00
Leonardo de Moura
ce470f57db
Add set options to lean_parser. Add support for disabling unicode output. Use channels in lean_parser.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 12:42:55 -07:00
Leonardo de Moura
6534142fb9
Fix annoying problem when an integer occurs in the end of a command. Example 'Show 1.' was being parsed as 'Show 1.0'.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 11:57:22 -07:00
Leonardo de Moura
d750469667
Move frontend to frontends/lean
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-21 09:04:49 -07:00
Leonardo de Moura
6f36611010
Fix clang++ error
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-20 20:16:02 -07:00
Leonardo de Moura
7778ae0ade
Fix cyclic reference: frontend -> state -> pp_formatter -> frontend. Now pp_formatter is only valid while frontend is still alive. This should not be problem in practice.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-20 20:16:02 -07:00
Leonardo de Moura
3f5a2a83cc
Add methods for setting options. Add string output channel.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-20 20:16:02 -07:00
Leonardo de Moura
4fa2468a85
Add output_channel and state abstractions
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-20 20:16:02 -07:00
Leonardo de Moura
73262e9786
Add Echo command. Allow '\' 'n' escape sequence in strings.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-20 20:16:02 -07:00
Leonardo de Moura
57b9a4f2b3
Allow square brackets to be used in operator names
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-20 20:16:02 -07:00
Leonardo de Moura
fbb021386c
Add minor improvement to pretty printer
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-20 20:16:02 -07:00
Leonardo de Moura
d82c60a314
Add test normalizer interrupt
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-20 20:16:02 -07:00
Soonho Kong
fce26a824e
Implement dependencies on interval arithmetic functions (+,-,*,/,inv,power), fix problems on trigonometric functions
2013-08-20 19:49:50 -07:00
Soonho Kong
176b1fccf7
Implement dependencies on interval functions (exp, log, and trigonometric functions)
2013-08-20 02:03:24 -07:00
Leonardo de Moura
b2ba0618c9
Use normalizer object in type checker. The idea is to make sure the interruption is propagated to normalizer.
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-19 20:05:56 -07:00
Leonardo de Moura
88cc3dc20d
Add interrupt to normalizer. Fix tests (they were not using the basic printer).
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-08-19 20:05:56 -07:00