如何在Coq证明中处理匹配

如何在Coq证明中处理匹配,coq,Coq,我想知道什么是策略来处理证据中的匹配。例如,我有以下形式的东西: F match something m' with | true => Y m' | false => Z m' end=Otherside m' 我觉得应该有很多方法来解决这个问题……我想也许可以重构上游的东西来避免这种情况,但我也觉得下面应该是正确的 match something m' with | true => F (Y m') | false => F (Z m') end=Oth

我想知道什么是策略来处理证据中的匹配。例如,我有以下形式的东西:

F match something m' with
  | true => Y m'
  | false => Z m'
  end=Otherside m'
我觉得应该有很多方法来解决这个问题……我想也许可以重构上游的东西来避免这种情况,但我也觉得下面应该是正确的

match something m' with
| true => F (Y m')
| false => F (Z m')
end=Otherside m'
然后你应该能够做一些事情,比如把它分成两个子目标,如果

F (Y m')=Otherside m'
F (Z m')=Otherside m'
那你就可以走了


这可能吗?或者我需要重构我的函数吗?

这不需要经过中间步骤,但只需通过

destruct (something m').
如果这个词太大而写不出来,我想你可以这样把它拔出来:

match goal with |- _ match ?S with _ => _ end = _ => destruct S end.
甚至

match goal with |- context[match ?S with _ => _ end] => destruct S end.