rw 表达式 IN 表达式

rw expression IN expression

说,我需要:

rw ← nat.mul_one (d+d),

但是整个目标有多个(d+d)。我可以做类似的事情吗:

rw ← nat.mul_one (d+d) in (5+(d+d)),

使得(d+d)只在括号中的完整表达式为5+(d+d)匹配的地方被重写?

您可以了解 conv 模式 here, which enable you to do targetted rewriting, or you can use the nth_rewrite tactic documented here 的乐趣,您可以精确选择要更改的 d+d 模式。

您可以尝试 mathlibnth_rewriterw 的可选 occs 参数。例如:

如果 ⊢ (d + d) + 5 * (d + d) + 2 * (d + d) = 8 * (d + d),那么 nth_rewrite ←nat.mul_one (d + d) 1 应该工作,rw ←nat.mul_one (d + d) { occs := occurrences.pos [2]} 也应该工作(注意 nth_rewrite 是零索引而 rw 是 1 索引).

你也可以把 conv 搞得一团糟,但我不建议这样做; conv 适用于上述示例的是 conv { congr, congr, congr, skip, rw ←nat.mul_one (d + d) }.