/*++
  Copyright (c) 2011 Microsoft Corporation

  Module Name:

  iz3checker.h

  Abstract:

  check correctness of an interpolant

  Author:

  Ken McMillan (kenmcmil)

  Revision History:

  --*/

#ifndef IZ3_CHECKER_H
#define IZ3_CHECKER_H

#include "interp/iz3mgr.h"
#include "solver/solver.h"

bool iz3check(ast_manager &_m_manager,
              solver *s,
              std::ostream &err,
              const ptr_vector<ast> &cnsts,
              const ::vector<int> &parents,
              const ptr_vector<ast> &interps,
              const ptr_vector<ast> &theory);

bool iz3check(ast_manager &_m_manager,
              solver *s,
              std::ostream &err,
              const ptr_vector<ast> &cnsts,
              ast *tree,
              const ptr_vector<ast> &interps);

bool iz3check(iz3mgr &mgr,
              solver *s,
              std::ostream &err,
              const std::vector<iz3mgr::ast> &cnsts,
              const std::vector<int> &parents,
              const std::vector<iz3mgr::ast> &interps,
              const ptr_vector<iz3mgr::ast> &theory);

#endif
