@@ -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
}
@@ -726,32 +726,28 @@ literalt smt2_convt::convert(const exprt &expr)
726
726
727
727
out << " ; convert\n " ;
728
728
out << " (define-fun " ;
729
- convert_literal (l);
729
+ print ( convert_literal (l), out );
730
730
out << " () Bool " ;
731
731
convert_expr (expr);
732
732
out << " )" << " \n " ;
733
733
734
734
return l;
735
735
}
736
736
737
- void smt2_convt::convert_literal (const literalt l)
737
+ std::shared_ptr<smt2_astt> smt2_convt::convert_literal (const literalt l)
738
738
{
739
739
if (l==const_literal (false ))
740
- out << " false" ;
741
- else if (l==const_literal (true ))
742
- out << " true" ;
743
- else
744
- {
745
- if (l.sign ())
746
- out << " (not " ;
740
+ return smt2_ast_symbol_leaf (" false" );
741
+ if (l==const_literal (true ))
742
+ return smt2_ast_symbol_leaf (" true" );
747
743
748
- out << " |B" << l.var_no () << " |" ;
744
+ std::string literal_name = " B" +std::to_string (l.var_no ());
745
+ smt2_identifiers.insert (literal_name);
746
+ auto literal_without_sign = smt2_ast_symbol_leaf (" |" +literal_name+" |" );
749
747
750
- if (l.sign ())
751
- out << " )" ;
752
-
753
- smt2_identifiers.insert (" B" +std::to_string (l.var_no ()));
754
- }
748
+ if (!l.sign ())
749
+ return literal_without_sign;
750
+ return smt2_not (literal_without_sign);
755
751
}
756
752
757
753
std::string smt2_convt::convert_identifier (const irep_idt &identifier)
@@ -1755,7 +1751,7 @@ void smt2_convt::convert_expr(const exprt &expr)
1755
1751
}
1756
1752
else if (expr.id ()==ID_literal)
1757
1753
{
1758
- convert_literal (to_literal_expr (expr).get_literal ());
1754
+ print ( convert_literal (to_literal_expr (expr).get_literal ()), out );
1759
1755
}
1760
1756
else if (expr.id ()==ID_forall ||
1761
1757
expr.id ()==ID_exists)
0 commit comments