/* Copyright (c) 2013 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Author: Leonardo de Moura */ #pragma once #include #include #include "kernel/expr.h" namespace lean { // Maps based on pointer equality. That is, two keys are equal iff they are pointer equal template using expr_map = typename std::unordered_map; template using expr_cell_map = typename std::unordered_map; // Maps based on structural equality. That is, two keys are equal iff they are structurally equal template using expr_struct_map = typename std::unordered_map>; // The following map also takes into account binder information template using expr_bi_struct_map = typename std::unordered_map; template class expr_cond_bi_struct_map : public std::unordered_map { public: expr_cond_bi_struct_map(bool use_bi = false): std::unordered_map(10, expr_hash(), is_cond_bi_equal_proc(use_bi)) {} }; };