如何证明COQ中的逻辑等效性



如何使用COQ证明以下内容?

(q v p)∧(¬p-> q)< ->(p v q)。

我的尝试

Lemma work: (forall p q: Prop, (q / p)/(~p -> q) <-> (p / q)).
Proof.
intros p q.
split.
intros q_or_p_and_not_p_implies_q.
intros p_or_q.
split.

这是一个非常相似的陈述的证明。为了匹配您给出的语句,将第一个p / q交换为q / p需要更多工作。

Theorem work : (forall p q : Prop, (p / q) / (~p -> q) <-> (p / q)).
Proof.
  intros p q.
  split.
  (* Prove the "->" direction *)
  intros given.
  destruct given as [p_or_q _].
  exact p_or_q.
  (* Prove the "<-" direction *)
  intros p_or_q.
  refine (conj p_or_q _).
  case p_or_q.
    (* We're given that p is true, so ~p implies anything *)
    intros p_true p_false.
    case (p_false p_true).
    (* We're given that q is true *)
    intros q_true p_false.
    exact q_true.
Qed.

相关内容

  • 没有找到相关文章

最新更新