Expand description
表达式化简。
化简分两步:
- 代数化简:按当前语义可用的规则做结构重写(常量折叠、去重、 吸收、单位元、De Morgan、交换律规范化等)。
- 语义常量检测:若化简后的表达式在全部赋值下取同一个值, 直接替换为该常量。
⚠️ 规则的适用性依赖语义:
- Kleene / Łukasiewicz 的
X是链的中点,构成分配格, 因此吸收律、分配律、a ∧ ¬a = 0之外的格性质成立。 - Bochvar 的
X是毒值:分配律仍成立,但吸收律不成立 (例:a ∨ (a ∧ b)取a=0,b=X时左边为X、右边为0)。 - 矛盾律
a ∧ ¬a = 0在三种语义下都不成立 (取a = X时X ∧ X = X),因此化简器不使用该规则。
Structs§
- Simplify
Options - 化简选项。
Functions§
- constant_
value - 判断表达式是否语义常量;是则返回该值。
- semantic_
fingerprint - 计算表达式的语义指纹(真值表摘要),仅用于缓存/预筛选。
- semantically_
equal - 判断两个表达式在给定语义下语义等价(
3^n穷举,变量取并集)。 - simplify
- 按当前语义化简表达式。
- simplify_
with - 带选项的化简。