Skip to main content

Module simplify

Module simplify 

Source
Expand description

表达式化简。

化简分两步:

  1. 代数化简:按当前语义可用的规则做结构重写(常量折叠、去重、 吸收、单位元、De Morgan、交换律规范化等)。
  2. 语义常量检测:若化简后的表达式在全部赋值下取同一个值, 直接替换为该常量。

⚠️ 规则的适用性依赖语义:

  • Kleene / Łukasiewicz 的 X 是链的中点,构成分配格, 因此吸收律、分配律、a ∧ ¬a = 0 之外的格性质成立。
  • Bochvar 的 X 是毒值(吸收元),分配律、吸收律都不成立 (例:0 ∧ (0 ∨ 1) = 0,但 0 ∧ 0 ∨ 0 ∧ 1 = X)。
  • 矛盾律 a ∧ ¬a = 0 在三种语义下都不成立 (取 a = X 时 X ∧ X = X),因此化简器不使用该规则。

Structs§

SimplifyOptions
化简选项。

Functions§

constant_value
判断表达式是否语义常量;是则返回该值。
semantic_fingerprint
计算两个表达式的语义指纹(真值表摘要),用于快速判定等价。
semantically_equal
判断两个表达式在给定语义下语义等价(基于真值表指纹)。
simplify
按当前语义化简表达式。
simplify_with
带选项的化简。