Z3 的简化策略究竟做了什么?

What does Z3's simplify tactic do exactly?

我想知道Z3的战术simplify到底有什么作用? 在Z3's official document中表示:

The command (simplify t) displays a possibly simpler expression equivalent to t.

由于这种策略的功能通常可以通过一些语法重写规则来概括,例如Not(A or B) --> Not(A) and Not (B),谁能告诉我Z3的simplify重写是做什么的?谢谢。

没有文档可以解释重写规则,也没有语法规则列表,无论是在代码还是文档中。要找出究竟执行了什么,您必须查看代码。简化策略只运行 th_rewriter (here) which applies a number of cross-theory simplifications (all over th_rewriter.cpp) and it then calls out to the theory-specific rewriters (here). For example, for bit-vector terms it will call out to bv_rewriter::reduce_app_core.