16.11. 可约性
grind 会及早展开项中的可约定义。
这使定义相等性比较和索引更高效。
可约性与同余闭包
E-匹配模式也会展开可约定义。
为涉及缩写的定理生成的模式会用展开后的缩写来表示。
缩写通常不应递归;特别是在使用 grind 时,递归缩写可能导致索引性能不佳以及模式不可预测。
E-匹配与展开缩写
为定理添加 grind 标注时,会根据定理陈述生成 E-匹配模式。
这些模式决定何时实例化该定理。
定理 one_eq_1 提到了半可约定义 one,生成的模式也同样是 one:
def one := 1
@[grind? =]
theorem one_eq_1 : one = 1 := ⊢ one = 1 All goals completed! 🐙
将相同标注应用于涉及可约缩写 two 的定理,会得到一个展开了 two 的模式:
abbrev two := 2
@[grind? =]
theorem two_eq_2: two = 2 := ⊢ two = 2 All goals completed! 🐙