Sri*_*aic 7 theorem-proving lean
在精益中,我有时想将一种rw策略应用于多个相同术语中的一个。例如我有一个目标
\xe2\x8a\xa2 0 = 0\nRun Code Online (Sandbox Code Playgroud)\n我想要rw它
\xe2\x8a\xa2 a * 0 = 0\nRun Code Online (Sandbox Code Playgroud)\n我也有
\nmul_zero (a : mynat) :\n a * 0 = 0\nRun Code Online (Sandbox Code Playgroud)\n现在我应该能够重写0to a * 0。然而尝试
rw \xe2\x86\x90 zero_mul a,\nRun Code Online (Sandbox Code Playgroud)\n给我
\n\xe2\x8a\xa2 a * 0 = a * 0\nRun Code Online (Sandbox Code Playgroud)\n这不是我想要的!
\n精益这样做有什么原因吗?是否有某种方法可以将重写仅应用于一个术语?
\n小智 6
rw同时重写所有相同的术语。\n有一种不同的策略nth_rewrite只重写特定出现的术语。您需要 mathlib nth_rewrite,并且我不确定它是否在自然数游戏中可用。
import tactic\nexample : 0 = 0 :=\nbegin\n nth_rewrite 0 [\xe2\x86\x90 nat.mul_zero 2],\n -- \xe2\x8a\xa2 2 * 0 = 0\nend\nRun Code Online (Sandbox Code Playgroud)\n
小智 3
您可以为此使用转换策略
\nlemma a : 0 = 0 :=\nbegin\n conv {\n to_lhs, \n rw \xe2\x86\x90 nat.mul_zero 2,\n },\nend\nRun Code Online (Sandbox Code Playgroud)\n请参阅: https: //leanprover-community.github.io/extras/conv.html
\n