coq:从教程中证明定理negb_is_not

时间:2018-03-27 12:31:55

标签: coq

证明有一点

Theorem negb_is_not : (forall a, Is_true (negb a) <-> (~(Is_true a))).

来自Coq的tutorial,我被卡住了。当False被证明为&#34; False无法证明&#34;时就是这种情况。我该如何应对?

Theorem negb_is_not : (forall a, Is_true (negb a) <-> (~(Is_true a))).
Proof.
  intros A.
  unfold iff.
  refine (conj _ _).
  case A.
  simpl.
  intros H.
  destruct H. 
  intros H.
  simpl in H.
  simpl.
  unfold not.
  intros.
  exact H0.
  unfold not.
  intros H.
  case A.
  simpl.
  destruct H.
  case A.
  simpl.
  exact I.
  simpl.
  Focus 2.
  simpl.
  exact I.

我想我在教程中错过了一些重要的事情。

1 个答案:

答案 0 :(得分:0)

好的,经过一些重写,我能够写下这个证据:

Theorem negb_is_not : (forall a, Is_true (negb a) <-> (~(Is_true a))).
Proof.
  intros A.
  unfold iff.
  refine (conj _ _).
    case A.
      simpl.
      intros H.
      case H.

      simpl.
      intros.
      unfold not.
      intros.
      exact H0.

    case A.
      simpl.
      unfold not.
      intros.
      refine (H _).
      exact I.

      simpl.
      unfold not.
      intros.
      exact I.
Qed.