void toNormalizedNEXUS(ifstream & inf, ostream *os) { NxsTaxaBlock taxa; NxsTreesBlock trees(&taxa); NxsAssumptionsBlock assumptions(&taxa); NxsCharactersBlock character(&taxa, &assumptions); NxsDataBlock data(&taxa, &assumptions); NxsDistancesBlock distances(&taxa); NxsUnalignedBlock unaligned(&taxa, &assumptions); NormalizingReader nexus(os); nexus.Add(&taxa); nexus.Add(&trees); nexus.Add(&assumptions); nexus.Add(&character); nexus.Add(&data); nexus.Add(&distances); nexus.Add(&unaligned); if (os) { *os << "#NEXUS\n"; } NormalizingToken token(inf, os); nexus.Execute(token); }
z3::check_result Z3AssumptionSolverImpl::check(const Query &query) { std::list<ConditionNodeRef> cur_constraints; for (ConditionNodeRef node = query.constraints.head(), root = query.constraints.root(); node != root; node = node->parent()) { cur_constraints.push_front(node); } z3::expr_vector assumptions(context_); for (std::list<ConditionNodeRef>::iterator it = cur_constraints.begin(), ie = cur_constraints.end(); it != ie; ++it) { assumptions.push_back(getAssumption((*it)->expr())); } assumptions.push_back(getAssumption(Expr::createIsZero(query.expr))); return solver_.check(assumptions); }