2014-10-31 05:22:04 +00:00
|
|
|
/*
|
|
|
|
Copyright (c) 2014 Microsoft Corporation. All rights reserved.
|
|
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
|
|
|
|
Author: Leonardo de Moura
|
|
|
|
*/
|
|
|
|
#pragma once
|
2014-10-31 16:39:20 +00:00
|
|
|
#include <functional>
|
2014-10-31 05:22:04 +00:00
|
|
|
#include "library/unifier.h"
|
2014-12-10 20:43:32 +00:00
|
|
|
#include "library/local_context.h"
|
2014-10-31 05:22:04 +00:00
|
|
|
#include "frontends/lean/info_manager.h"
|
|
|
|
|
|
|
|
namespace lean {
|
2014-10-31 16:39:20 +00:00
|
|
|
typedef std::function<void(expr const &)> update_type_info_fn;
|
|
|
|
|
2014-10-31 05:22:04 +00:00
|
|
|
/** \brief Create a "choice" constraint that postpones the resolution of a calc proof step.
|
|
|
|
|
|
|
|
By delaying it, we can perform quick fixes such as:
|
|
|
|
- adding symmetry
|
|
|
|
- adding !
|
|
|
|
- adding subst
|
|
|
|
*/
|
2014-10-31 16:01:19 +00:00
|
|
|
constraint mk_calc_proof_cnstr(environment const & env, options const & opts,
|
|
|
|
local_context const & ctx, expr const & m, expr const & e,
|
2014-10-31 05:22:04 +00:00
|
|
|
constraint_seq const & cs, unifier_config const & cfg,
|
2014-10-31 16:39:20 +00:00
|
|
|
info_manager * im, bool relax, update_type_info_fn const & fn);
|
2014-10-31 16:01:19 +00:00
|
|
|
|
|
|
|
void initialize_calc_proof_elaborator();
|
|
|
|
void finalize_calc_proof_elaborator();
|
2014-10-31 05:22:04 +00:00
|
|
|
}
|