本文整理汇总了C++中prop_convt::set_to_true方法的典型用法代码示例。如果您正苦于以下问题:C++ prop_convt::set_to_true方法的具体用法?C++ prop_convt::set_to_true怎么用?C++ prop_convt::set_to_true使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类prop_convt
的用法示例。
在下文中一共展示了prop_convt::set_to_true方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: convert_assertions
void symex_target_equationt::convert_assertions(
prop_convt &prop_conv)
{
// we find out if there is only _one_ assertion,
// which allows for a simpler formula
unsigned number_of_assertions=count_assertions();
if(number_of_assertions==0)
return;
if(number_of_assertions==1)
{
for(SSA_stepst::iterator it=SSA_steps.begin();
it!=SSA_steps.end(); it++)
if(it->is_assert())
{
prop_conv.set_to_false(it->cond_expr);
it->cond_literal=const_literal(false);
return; // prevent further assumptions!
}
else if(it->is_assume())
prop_conv.set_to_true(it->cond_expr);
assert(false); // unreachable
}
bvt bv;
bv.reserve(number_of_assertions);
literalt assumption_literal=const_literal(true);
for(SSA_stepst::iterator it=SSA_steps.begin();
it!=SSA_steps.end(); it++)
if(it->is_assert())
{
// do the expression
literalt tmp_literal=prop_conv.convert(it->cond_expr);
it->cond_literal=prop_conv.prop.limplies(assumption_literal, tmp_literal);
bv.push_back(prop_conv.prop.lnot(it->cond_literal));
}
else if(it->is_assume())
assumption_literal=
prop_conv.prop.land(assumption_literal, it->cond_literal);
if(!bv.empty())
prop_conv.prop.lcnf(bv);
}