本文整理汇总了C++中literalt::var_no方法的典型用法代码示例。如果您正苦于以下问题:C++ literalt::var_no方法的具体用法?C++ literalt::var_no怎么用?C++ literalt::var_no使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类literalt
的用法示例。
在下文中一共展示了literalt::var_no方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: l_get
tvt cvc_convt::l_get(literalt l) const
{
if(l.is_true()) return tvt(true);
if(l.is_false()) return tvt(false);
assert(l.var_no()<boolean_assignment.size());
return tvt(boolean_assignment[l.var_no()]^l.sign());
}
示例2: tvt
tvt satcheck_minisat2_baset<T>::l_get(literalt a) const
{
if(a.is_true())
return tvt(true);
else if(a.is_false())
return tvt(false);
tvt result;
if(a.var_no()>=(unsigned)solver->model.size())
return tvt(tvt::TV_UNKNOWN);
using Minisat::lbool;
if(solver->model[a.var_no()]==l_True)
result=tvt(true);
else if(solver->model[a.var_no()]==l_False)
result=tvt(false);
else
return tvt(tvt::TV_UNKNOWN);
if(a.sign()) result=!result;
return result;
}
示例3: f_get
const exprt qbf_squolem_coret::f_get(literalt l)
{
if(squolem->isUniversal(l.var_no()))
{
assert(l.var_no()!=0);
variable_mapt::const_iterator it=variable_map.find(l.var_no());
if(it==variable_map.end())
throw "Variable map error";
const exprt &sym=it->second.first;
unsigned index=it->second.second;
exprt extract_expr(ID_extractbit, typet(ID_bool));
extract_expr.copy_to_operands(sym);
typet uint_type(ID_unsignedbv);
uint_type.set(ID_width, 32);
extract_expr.copy_to_operands(from_integer(index, uint_type));
if(l.sign()) extract_expr.negate();
return extract_expr;
}
function_cachet::const_iterator it=function_cache.find(l.var_no());
if(it!=function_cache.end())
{
#if 0
std::cout << "CACHE HIT for " << l.dimacs() << std::endl;
#endif
if(l.sign())
return not_exprt(it->second);
else
return it->second;
}
else
{
WitnessStack *wsp = squolem->getModelFunction(Literal(l.dimacs()));
exprt res;
if(wsp==NULL || wsp->empty())
{
// res=exprt(ID_nondet_bool, typet(ID_bool));
res=false_exprt(); // just set it to zero
}
else if(wsp->pSize<=wsp->nSize)
res=f_get_cnf(wsp);
else
res=f_get_dnf(wsp);
function_cache[l.var_no()] = res;
if(l.sign())
return not_exprt(res);
else
return res;
}
}
示例4: m_get
qbf_squolem_coret::modeltypet qbf_squolem_coret::m_get(literalt a) const
{
if(squolem->modelIsTrue(a.var_no()))
return M_TRUE;
else if(squolem->modelIsFalse(a.var_no()))
return M_FALSE;
else if(squolem->modelIsComplex(a.var_no()))
return M_COMPLEX;
else
return M_DONTCARE;
}
示例5: cvc_literal
std::string cvc_propt::cvc_literal(literalt l)
{
if(l==const_literal(false))
return "FALSE";
else if(l==const_literal(true))
return "TRUE";
if(l.sign())
return "(NOT l"+i2string(l.var_no())+")";
return "l"+i2string(l.var_no());
}
示例6: dplib_literal
std::string dplib_propt::dplib_literal(literalt l)
{
if(l==const_literal(false))
return "FALSE";
else if(l==const_literal(true))
return "TRUE";
if(l.sign())
return "(NOT l"+std::to_string(l.var_no())+")";
return "l"+std::to_string(l.var_no());
}
示例7: l_get
tvt qbf_squolem_coret::l_get(literalt a) const
{
if(a.is_true())
return tvt(tvt::TV_TRUE);
else if(a.is_false())
return tvt(tvt::TV_FALSE);
else if(squolem->modelIsTrue(a.var_no()))
return tvt(tvt::TV_TRUE);
else if(squolem->modelIsFalse(a.var_no()) ||
squolem->modelIsDontCare(a.var_no()))
return tvt(tvt::TV_FALSE);
else
return tvt(tvt::TV_UNKNOWN);
}
示例8: tvt
tvt z3_propt::l_get(literalt a) const
{
tvt result=tvt(false);
std::string literal;
Z3_ast z3_literal;
size_t found;
if(a.is_true())
return tvt(true);
else if(a.is_false())
return tvt(false);
literal = "l"+i2string(a.var_no());
map_prop_varst::const_iterator cache_result=map_prop_vars.find(literal.c_str());
if(cache_result!=map_prop_vars.end())
{
//std::cout << "Cache hit on " << cache_result->first << "\n";
z3_literal = cache_result->second;
Z3_app app = Z3_to_app(z3_ctx, z3_literal);
Z3_func_decl d = Z3_get_app_decl(z3_ctx, app);
literal = Z3_func_decl_to_string(z3_ctx, d);
found=literal.find("true");
if (found!=std::string::npos)
result=tvt(true);
else
result=tvt(false);
}
if (a.sign()) result=!result;
return result;
}
示例9: lor
literalt qbf_bdd_coret::lor(literalt a, literalt b)
{
literalt nl = new_variable();
std::cout << "LOR2" << std::endl;
BDD abdd(*bdd_variable_map[a.var_no()]);
BDD bbdd(*bdd_variable_map[b.var_no()]);
if(a.sign()) abdd = ~abdd;
if(b.sign()) bbdd = ~bbdd;
*bdd_variable_map[nl.var_no()] |= abdd | bbdd;
return nl;
}
示例10: l_get
tvt boolector_propt::l_get(literalt a) const
{
tvt result=tvt(false);
std::string literal;
BtorExp *boolector_literal;
size_t found;
if(a.is_true())
return tvt(true);
else if(a.is_false())
return tvt(false);
literal_cachet::const_iterator cache_result=literal_cache.find(a.var_no());
if(cache_result!=literal_cache.end())
boolector_literal = cache_result->second;
else
return tvt(tvt::TV_UNKNOWN);
literal = boolector_bv_assignment(boolector_ctx, boolector_literal);
found=literal.find("1");
if (found!=std::string::npos)
result=tvt(true);
else
result=tvt(false);
if (a.sign()) result=!result;
return result;
}
示例11: l_get
tvt satcheck_booleforce_baset::l_get(literalt a) const
{
assert(status==SAT);
if(a.is_true())
return tvt(true);
else if(a.is_false())
return tvt(false);
tvt result;
unsigned v=a.var_no();
assert(v<no_variables());
int r=booleforce_deref(v);
if(r>0)
result=tvt(true);
else if(r<0)
result=tvt(false);
else
result=tvt(tvt::tv_enumt::TV_UNKNOWN);
if(a.sign())
result=!result;
return result;
}
示例12: set_quantifier
void qbf_squolem_coret::set_quantifier(
const quantifiert::typet type,
const literalt l)
{
qdimacs_cnft::set_quantifier(type, l);
squolem->requantifyVariable(l.var_no(), type==quantifiert::UNIVERSAL);
}
示例13:
void satcheck_minisat1_baset::set_assignment(literalt a, bool value)
{
unsigned v=a.var_no();
bool sign=a.sign();
solver->model.growTo(v+1);
value^=sign;
solver->model[v]=lbool(value);
}
示例14: set_frozen
void satcheck_glucose_simplifiert::set_frozen(literalt a)
{
if(!a.is_constant())
{
add_variables();
solver->setFrozen(a.var_no(), true);
}
}
示例15: assert
void smt1_propt::set_assignment(literalt literal, bool value)
{
if(literal.is_true() || literal.is_false()) return;
unsigned v=literal.var_no();
assert(v<assignment.size());
assignment[v]=tvt(value);
}