@@ -106,7 +106,7 @@ void smt2_convt::write_footer(std::ostream &os)
106
106
forall_literals (it, assumptions)
107
107
{
108
108
os << " (assert " ;
109
- convert_literal (*it);
109
+ print ( convert_literal (*it), out );
110
110
os << " )"
111
111
<< " \n " ;
112
112
}
@@ -655,32 +655,28 @@ literalt smt2_convt::convert(const exprt &expr)
655
655
656
656
out << " ; convert\n " ;
657
657
out << " (define-fun " ;
658
- convert_literal (l);
658
+ print ( convert_literal (l), out );
659
659
out << " () Bool " ;
660
660
convert_expr (expr);
661
661
out << " )" << " \n " ;
662
662
663
663
return l;
664
664
}
665
665
666
- void smt2_convt::convert_literal (const literalt l)
666
+ smt2_astt smt2_convt::convert_literal (const literalt l)
667
667
{
668
668
if (l==const_literal (false ))
669
- out << " false" ;
670
- else if (l==const_literal (true ))
671
- out << " true" ;
672
- else
673
- {
674
- if (l.sign ())
675
- out << " (not " ;
669
+ return smt2_astt (" false" );
670
+ if (l == const_literal (true ))
671
+ return smt2_astt (" true" );
676
672
677
- out << " |B" << l.var_no () << " |" ;
673
+ std::string literal_name = " B" + std::to_string (l.var_no ());
674
+ smt2_identifiers.insert (literal_name);
675
+ auto literal_without_sign = smt2_astt (" |" + literal_name + " |" );
678
676
679
- if (l.sign ())
680
- out << " )" ;
681
-
682
- smt2_identifiers.insert (" B" +std::to_string (l.var_no ()));
683
- }
677
+ if (!l.sign ())
678
+ return literal_without_sign;
679
+ return smt2_not (std::move (literal_without_sign));
684
680
}
685
681
686
682
std::string smt2_convt::convert_identifier (const irep_idt &identifier)
@@ -1697,7 +1693,7 @@ void smt2_convt::convert_expr(const exprt &expr)
1697
1693
}
1698
1694
else if (expr.id ()==ID_literal)
1699
1695
{
1700
- convert_literal (to_literal_expr (expr).get_literal ());
1696
+ print ( convert_literal (to_literal_expr (expr).get_literal ()), out );
1701
1697
}
1702
1698
else if (expr.id ()==ID_forall ||
1703
1699
expr.id ()==ID_exists)
0 commit comments