Доказательство случаями на булевом выражении в Coq - PullRequest
2 голосов
/ 02 апреля 2020

У меня есть функция содержит:

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.

, которая проверяет, есть ли строка в списке строк. Я хотел бы доказать теорему, выполнив анализ случая того, действительно ли contains (vars e) y Однако, когда я уничтожаю это логическое значение, я не получаю никакой дополнительной гипотезы для разных подслучаев.

Как я могу решить эту проблему?

1 Ответ

2 голосов
/ 02 апреля 2020

Если вы хотите получить соответствующие предположения, используйте «eqn», чтобы дать им имя. то есть: destruct (contains (vars e) y) eqn:name.

...