如何在Coq证明中处理比赛

时间:2020-05-09 15:12:27

标签: coq

我想知道怎样处理证明比赛。例如,我有以下形式的东西:

s/[^0-9]+/ /g;

感觉应该有很多方法来解决这个问题……我想也许有可能在上游重构某些东西来避免,但是感觉下面的事情应该是正确的

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'

那你很好。

这可能吗?还是我需要重构我的功能?

1 个答案:

答案 0 :(得分:2)

这没有经过您的中间步骤,但是您只需通过以下方式即可实现两个目标

destruct (something m').

如果该术语太大而无法写,我想您可以像这样拉出它:

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

甚至

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