void definition_cache::add(environment const & env, name const & n, expr const & pre_type, expr const & pre_value, level_param_names const & ls, expr const & type, expr const & value, bool is_trusted) { dependencies deps; collect_dependencies(env, type, deps); collect_dependencies(env, value, deps); uint64 fingerprint = get_fingerprint(env); lock_guard<mutex> lc(m_mutex); add_core(n, pre_type, pre_value, ls, type, value, deps, fingerprint, is_trusted); }
static simp_rule_sets add_core(type_checker & tc, simp_rule_sets const & s, name const & cname) { declaration const & d = tc.env().get(cname); buffer<level> us; unsigned num_univs = d.get_num_univ_params(); for (unsigned i = 0; i < num_univs; i++) { us.push_back(mk_meta_univ(name(*g_prefix, i))); } levels ls = to_list(us); expr e = instantiate_type_univ_params(d, ls); expr h = mk_constant(cname, ls); return add_core(tc, s, cname, ls, e, h); }
void add_simp(environment const & env, name const & cname) { type_checker tc(env); m_sets = add_core(tc, m_sets, cname); m_simp_names.insert(cname); }
simp_rule_sets add(type_checker & tc, simp_rule_sets const & s, name const & id, expr const & e, expr const & h) { return add_core(tc, s, id, list<level>(), e, h); }
parse_table parse_table::add(unsigned num, transition const * ts, expr const & a, unsigned priority, bool overload) const { buffer<action> postponed; expr new_a = annotate_macro_subterms(a); validate_transitions(is_nud(), num, ts, new_a); return add_core(num, ts, new_a, priority, overload, postponed); }