mirror of
https://github.com/Z3Prover/z3
synced 2026-05-05 18:05:15 +00:00
small simplification
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
3719b449e8
commit
2847dd8bb3
1 changed files with 14 additions and 35 deletions
|
|
@ -2459,42 +2459,21 @@ namespace seq {
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// char vs var: branch 1: var -> ε, branch 2: var -> char·var
|
// char vs var: branch 1: var -> ε, branch 2: var -> char·var
|
||||||
if (lhead->is_char() && rhead->is_var()) {
|
euf::snode* char_head = lhead->is_unit() ? lhead : (rhead->is_unit() ? rhead : nullptr);
|
||||||
{
|
euf::snode* var_head = lhead->is_var() ? lhead : (rhead->is_var() ? rhead : nullptr);
|
||||||
nielsen_node* child = mk_child(node);
|
if (char_head && var_head) {
|
||||||
nielsen_edge* e = mk_edge(node, child, true);
|
nielsen_node* child = mk_child(node);
|
||||||
nielsen_subst s(rhead, m_sg.mk_empty_seq(rhead->get_sort()), eq.m_dep);
|
nielsen_edge* e = mk_edge(node, child, true);
|
||||||
e->add_subst(s);
|
nielsen_subst s1(var_head, m_sg.mk_empty_seq(var_head->get_sort()), eq.m_dep);
|
||||||
child->apply_subst(m_sg, s);
|
e->add_subst(s1);
|
||||||
}
|
child->apply_subst(m_sg, s1);
|
||||||
{
|
|
||||||
euf::snode* replacement = dir_concat(m_sg, lhead, rhead, fwd);
|
|
||||||
nielsen_node* child = mk_child(node);
|
|
||||||
nielsen_edge* e = mk_edge(node, child, false);
|
|
||||||
nielsen_subst s(rhead, replacement, eq.m_dep);
|
|
||||||
e->add_subst(s);
|
|
||||||
child->apply_subst(m_sg, s);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// var vs char: branch 1: var -> ε, branch 2: var -> char·var
|
euf::snode* replacement = dir_concat(m_sg, char_head, var_head, fwd);
|
||||||
if (rhead->is_char() && lhead->is_var()) {
|
child = mk_child(node);
|
||||||
{
|
e = mk_edge(node, child, false);
|
||||||
nielsen_node* child = mk_child(node);
|
nielsen_subst s2(var_head, replacement, eq.m_dep);
|
||||||
nielsen_edge* e = mk_edge(node, child, true);
|
e->add_subst(s2);
|
||||||
nielsen_subst s(lhead, m_sg.mk_empty_seq(lhead->get_sort()), eq.m_dep);
|
child->apply_subst(m_sg, s2);
|
||||||
e->add_subst(s);
|
|
||||||
child->apply_subst(m_sg, s);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
euf::snode* replacement = dir_concat(m_sg, rhead, lhead, fwd);
|
|
||||||
nielsen_node* child = mk_child(node);
|
|
||||||
nielsen_edge* e = mk_edge(node, child, false);
|
|
||||||
nielsen_subst s(lhead, replacement, eq.m_dep);
|
|
||||||
e->add_subst(s);
|
|
||||||
child->apply_subst(m_sg, s);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue