[英]How to complete this proof of commutativity with `replace`?
在本文档中,提到了如何使用replace
来完成证明,但最终使用rewrite
,这似乎是为您编写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
为replace {P = \\x => S x = S (plus k 0)} {x = k} {y = plus k 0} rec
,我们现在需要S k = S (plus k 0)
的证明S k = S (plus k 0)
,这就是我们想证明的开始。 简而言之,我不确定P
应该是什么。
嗯,回想起来很明显。 如果我们让:
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
来进行另一种方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.