Coq中一个布尔表达式的实例证明

Coq中一个布尔表达式的实例证明,coq,Coq,我有一个包含函数: Fixpoint contains (l: list string) (x: string): bool := match l with | [] => false | h :: tl => (if (string_dec h x) then true else (contains tl x)) end. 检查字符串是否在字符串列表中。我想通过对是否包含(vars e)y进行案例分析来证明一个定理。然而,当我在这个布尔值上进行析构函数时,对于不同

我有一个包含函数:

Fixpoint contains (l: list string) (x: string): bool :=
  match l with
  | [] => false
  | h :: tl => (if (string_dec h x) then true else (contains tl x))
  end.
检查字符串是否在字符串列表中。我想通过对
是否包含(vars e)y
进行案例分析来证明一个定理。然而,当我在这个布尔值上进行析构函数时,对于不同的子类,我没有得到任何额外的假设


如何解决这个问题?

如果您想得到相应的假设,请使用“eqn”为它们命名。即:
destruct(contains(vars e)y)eqn:name.

引理不通过vars e的归纳。通过案例分析。但是,案例分析的分支没有收到相应的假设,即contains(vars e)y=true或contains(vars e)y=false如果要获得相应的假设,请使用“eqn”为其命名。那就是:destruct(contains(vars e)y)eqn:name。事实上,这就是问题所在亲爱的@xiajie,你能编辑答案来添加你在评论中包含的信息吗?我认为关于
:eqn
的信息是关键。