read_only = true
help = "perform string preprocessing lazily"
-[[option]]
- name = "stringLenGeqZ"
- category = "regular"
- long = "strings-len-geqz"
- type = "bool"
- default = "false"
- read_only = true
- help = "strings length greater than zero lemmas"
-
[[option]]
name = "stringLenNorm"
category = "regular"
LengthStatus s,
std::map<Node, bool>& reqPhase)
{
+ if (n.isConst())
+ {
+ // No need to send length for constant terms. This case may be triggered
+ // for cases where the skolem cache automatically replaces a skolem by
+ // a constant.
+ return Node::null();
+ }
Assert(n.getType().isStringLike());
NodeManager* nm = NodeManager::currentNM();
Node n_len = nm->mkNode(kind::STRING_LENGTH, n);
Assert(false);
}
- // additionally add len( x ) >= 0 ?
- if (options::stringLenGeqZ())
- {
- Node n_len_geq = nm->mkNode(kind::GEQ, n_len, d_zero);
- n_len_geq = Rewriter::rewrite(n_len_geq);
- lems.push_back(n_len_geq);
- }
-
if (lems.empty())
{
return Node::null();