在this文档中,提到了replace
如何用于完成证明,但它最终使用rewrite
,这似乎是写{{}的语法糖。 1}}给你。我对了解如何明确使用它感兴趣。
如果我理解正确,可以使用它replace
作为S k = S (plus k 0)
重写,给出S (plus k 0) = S (plus k 0)
的证明,然后可以通过反身性证明。但如果我们将其作为k = plus k 0
实例化,我们现在需要replace {P = \x => S x = S (plus k 0)} {x = k} {y = plus k 0} rec
的证明,这是我们想要开始证明的。简而言之,我不确定S k = S (plus k 0)
到底应该是什么。
答案 0 :(得分:0)
P = \x => S x = S (plus k 0)
然后,我们可以证明x = (plus k 0)
(通过反身性)。现在,如果我们让y = k
,那么,使用replace
,我们会获得S k = S (plus k 0)
的证明,这就是我们所需要的。或者,换句话说:
plusCommZ : (m : Nat) -> m = plus m 0
plusCommZ Z = Refl
plusCommZ (S k) = replace
{P = \x => S x = S (plus k 0)}
{x = plus k 0}
{y = k}
(sym (plusCommZ k))
Refl
完成证明。我们可以使用P = \x => S x = S k
来反过来。