lean2/src/frontends/lean
Leonardo de Moura 691893258d feat(kernel/expr): add hash code based on allocation time
The new hash code has the property that given expr_cell * c1 and expr_cell * c2,
if c1 != c2 then there is a high propbability that c1->hash_alloc() != c2->hash_alloc().

The structural hash code hash() does not have this property because we may have
c1 != c2, but c1 and c2 are structurally equal.

The new hash code is only compatible with pointer equality.
By compatible we mean, if c1 == c2, then c1->hash_alloc() == c2->hash_alloc().
This property is obvious because hash_alloc() does not have side-effects.

The test tests/lua/big.lua exposes the problem fixed by this commit.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-11-14 02:43:11 -08:00
..
CMakeLists.txt refactor(frontends/lean/elaborator): delete old_elaborator, and create frontend_elaborator class that will be based on library/elaborator/elaborator 2013-10-24 10:45:59 -07:00
coercion.h Rename lean frontend files. The prefix lean_ is not necessary anymore. 2013-09-12 20:09:35 -07:00
frontend.cpp feat(frontends/lean): return the operator associated with constant expressions that are names of builtin values 2013-11-13 16:08:21 -08:00
frontend.h feat(*): simplify interrupt propagation 2013-11-12 21:45:48 -08:00
frontend_elaborator.cpp feat(*): simplify interrupt propagation 2013-11-12 21:45:48 -08:00
frontend_elaborator.h feat(*): simplify interrupt propagation 2013-11-12 21:45:48 -08:00
notation.cpp feat(frontends/lean): make the 'expression template' argument in Subst implicit because higher-order matching can infer it. 2013-10-30 10:45:43 -07:00
notation.h Rename lean frontend files. The prefix lean_ is not necessary anymore. 2013-09-12 20:09:35 -07:00
operator_info.cpp chore(*): add LCOV_EXCL_LINE to lean_unreachable statements 2013-11-11 09:19:38 -08:00
operator_info.h Use fullpath in #include directives, add missing STL headers 2013-09-13 03:35:29 -07:00
parser.cpp feat(*): simplify interrupt propagation 2013-11-12 21:45:48 -08:00
parser.h feat(*): simplify interrupt propagation 2013-11-12 21:45:48 -08:00
pp.cpp feat(kernel/expr): add hash code based on allocation time 2013-11-14 02:43:11 -08:00
pp.h refactor(kernel): move printer and formatter objects to the kernel 2013-10-22 08:15:36 -07:00
scanner.cpp feat(lua): use (** ... **) instead of {{ ... }} for nested Lua scripts 2013-11-12 16:05:49 -08:00
scanner.h feat(lua): add lua_exception for wrapping lua errors, and improve Lua error messages in the Lean frontend 2013-11-07 15:19:26 -08:00