Coq 如何证明所有函数P,Q从典型类型到'Prop',';对于所有a、b、P(a)或Q(b)持有;iff";对于全部a,P(a),或对于全部b,Q(b),持有“;? 引理forall\u P\u Q\u a\u b\u notPa\u或\u notPb\u iff\u forall\u notPa\u或\u forall\u b\u notPb:forall(T:Type)(pq:T->Prop), (全部a b,P a\/Q b)((全部a,P a)\/(全部b,Q b)) . 证明。 介绍。分裂介绍。 -承认。 -破坏H;自动的。 承认。

Coq 如何证明所有函数P,Q从典型类型到'Prop',';对于所有a、b、P(a)或Q(b)持有;iff";对于全部a,P(a),或对于全部b,Q(b),持有“;? 引理forall\u P\u Q\u a\u b\u notPa\u或\u notPb\u iff\u forall\u notPa\u或\u forall\u b\u notPb:forall(T:Type)(pq:T->Prop), (全部a b,P a\/Q b)((全部a,P a)\/(全部b,Q b)) . 证明。 介绍。分裂介绍。 -承认。 -破坏H;自动的。 承认。,coq,Coq,我很容易证明了一方,但找不到证明另一方的方法。 edestruct由于范围问题,对我不起作用。 我应该如何证明这个定理?我认为这需要经典逻辑: Lemma forall_P_Q_a_b_notPa_or_notPb_iff_forall_a_notPa_or_forall_b_notPb : forall (T : Type) (P Q : T->Prop), (forall a b, P a \/ Q b) <-> ((forall a, P a) \/ (forall

我很容易证明了一方,但找不到证明另一方的方法。
edestruct
由于范围问题,对我不起作用。
我应该如何证明这个定理?

我认为这需要经典逻辑:

Lemma forall_P_Q_a_b_notPa_or_notPb_iff_forall_a_notPa_or_forall_b_notPb : forall (T : Type) (P Q : T->Prop),
  (forall a b, P a \/ Q b) <-> ((forall a, P a) \/ (forall b, Q b))
.
Proof.
  intros. split; intros.
  - admit.
  - destruct H; auto.
Admitted.
需要导入Coq.Logic.classic。
引理forall_P_Q_a_b_notPa_或\u notPb_iff_forall_a_notPa_或\u forall_b_notPb:forall(T:Type)(pq:T->Prop),
(全部a b,P a\/Q b)((全部a,P a)\/(全部b,Q b))
.
证明。
简介T P Q.分裂;介绍H。
-析构函数(经典(对于所有a,PA))为[HP | HP];自动的。(*经典推理*)
作为[Ha]进行销毁(非全部)。(*此处也有*)
正确的;介绍b。
专门化(H a b)。陶托。
-破坏H;自动的。
Qed。

我认为这需要经典逻辑:

Lemma forall_P_Q_a_b_notPa_or_notPb_iff_forall_a_notPa_or_forall_b_notPb : forall (T : Type) (P Q : T->Prop),
  (forall a b, P a \/ Q b) <-> ((forall a, P a) \/ (forall b, Q b))
.
Proof.
  intros. split; intros.
  - admit.
  - destruct H; auto.
Admitted.
需要导入Coq.Logic.classic。
引理forall_P_Q_a_b_notPa_或\u notPb_iff_forall_a_notPa_或\u forall_b_notPb:forall(T:Type)(pq:T->Prop),
(全部a b,P a\/Q b)((全部a,P a)\/(全部b,Q b))
.
证明。
简介T P Q.分裂;介绍H。
-析构函数(经典(对于所有a,PA))为[HP | HP];自动的。(*经典推理*)
作为[Ha]进行销毁(非全部)。(*此处也有*)
正确的;介绍b。
专门化(H a b)。陶托。
-破坏H;自动的。
Qed。