在Coq中自动专门化假设

时间:2018-08-16 18:18:53

标签: coq dependent-type theorem-proving coq-tactic ltac

作为证明,如果我对不是最终定理的论点进行归纳,那么我会得到普遍量化的归纳假设。我发现自己反复写这样的战术:

match goal with
        | [H : forall (esub : expr) (x : exprvar) (tsub t : T) (Gamma_ : Gamma),
             (internalType Gamma_ ?Theta_ ?d esub tsub) ->
                        (internalType (gamma_evar x tsub :: ?Gamma_) ?Theta_ ?d ?e t)->
                        internalType Gamma_ ?Theta_ ?d (esubst_expr esub x ?e) t,
             esub : expr,
             xvar : exprvar,
             tsub : T,
             t : T,
             Gamma_ : Gamma,
             H1 : internalType ?Gamma_ ?Theta ?d ?esub ?xsub,
             H2 : internalType (gamma_evar ?xvar ?tsub :: ?Gamma_) ?Theta ?d ?e ?t
             |- _]

也就是说,我搜索归纳假设,并寻找与之统一的论点以使其专门化。然后,我做specialize (Hypothesis Arg1 Arg2...)

感觉就像样板,但是我仍然需要为使用它的每个引理编写一个不同的版本。有没有办法:

  1. 自动执行此操作吗?
  2. 是否仅针对归纳假设自动执行此操作? (这样我们就不会陷入将每个参数应用于每个函数的无限循环中了)

0 个答案:

没有答案