/* 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_offset_map = typename std::unordered_map; template using expr_cell_map = typename std::unordered_map; template using expr_cell_offset_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; };