说,我需要:
rw ← nat.mul_one (d+d),
但是在整个目标中有多个(d+d)。我可以这样做吗:
rw ← nat.mul_one (d+d) in (5+(d+d)),
使得(d+d)只在括号中的完整表达式为5+(d+d)匹配的地方被重写?
您可以尝试mathlib
的nth_rewrite
或rw
的可选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) }
。
您可以在这里了解conv
模式的乐趣,它使您能够进行有针对性的重写,或者您可以使用这里记录的nth_rewrite
策略,它将让您精确地选择要更改的d+d
中的哪个。