Tôi đã làm theo bằng chứng dở dang của một bổ đề:
Goal forall (P : Type -> Prop) (Q : Prop),
((forall x, (P x)) -> Q) -> (exists x, P x -> Q).
Proof.
intros.
eapply ex_intro. intros. apply H. intros. eapply H0.
Vấn đề là eapply
thất bại cuối cùng , với tin nhắn
Error:
In environment
P : Type -> Prop
Q : Prop
H : (forall x : Type, P x) -> Q
H0 : P ?x
x : Type
Unable to unify "?x" with "x" (cannot instantiate "?x" because "x" is not in
its scope: available
arguments are "P" "Q" "H").
Các bước chứng minh bản thân trông rất lừa đảo. Bằng chứng xây dựng một biến số tồn tại để thay thế cho trong nửa thứ hai và sau đó cố gắng khởi tạo nó bằng cách sử dụng thu được làm tiền đề sau khi áp dụng giả thuyết . Các bước chứng minh trông bằng chứng tuần hoàn với tôi.(forall x, (P x)) -> Q
Nói chung, thông điệp này ngụ ý gì? Những loại lỗi logic nào thông báo này chỉ ra ở đây?
Có một vấn đề github gần đây từ Coq thực sự chỉ ra rằng việc bắt chước các evar bên ngoài phạm vi CÓ THỂ chứng minh sự giả dối, ngoại trừ việc nó bị chặn bởi QED.
(P : Type -> Prop)
? Còn không (A : Type) (P : A -> Prop)
? Nếu bạn có nghĩa là cái sau, thì bạn có thể chứng minh sự phủ định của bổ đề của bạn .