`∃! х, ∃! y, P (x, y)` означают `∃! xy, P (fst xy) (snd xy)`?

Сравнительно легко доказать следующее (Coq):

Goal forall A (P : A -> A -> Prop), (exists! xy, P (fst xy) (snd xy)) -> (exists! x, exists! y, P x y).

Вопрос, которым я озадачен: верно ли обратное? Формулировка exists x, exists y, ... позволяет выбирать y на основе того, что x было выбрано на шаг назад, поэтому считается, что y зависит от x. Мне кажется (по крайней мере, я не могу себя убедить в обратном), что exists xy, ... - существование пары (x, y) иное: оно не позволяет выбирать y на основе x.

Забавный факт заключается в том, что я пытался доказать как Goal forall A (P : A -> A -> Prop), (exists! x, exists! y, P x y) -> ~ (exists! xy, P (fst xy) (snd xy))., так и его отрицание, и оба раза застрял с невозможностью построить требуемый объект или вывести False.

Пожалуйста, помогите мне.

Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
1
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратное неверно. Вот контрпример:

Definition P (x y : bool) : Prop :=
  x = true -> y = true.

Lemma l1 : exists! x, exists! y, P x y.
Proof.
exists true.
split.
- exists true. split; [easy|].
  now intros y ->.
- intros x' (y & Py & unique_y).
  destruct x'; trivial.
  assert (contra : P false (negb y)).
  { intros; easy. }
  specialize (unique_y (negb y) contra).
  now destruct y.
Qed.

Lemma l2 : ~ (exists! xy, P (fst xy) (snd xy)).
Proof.
intros ([x y] & Pxy & unique_xy); simpl in *.
assert (contra : P (negb x) true).
{ intros ?. reflexivity. }
specialize (unique_xy (negb x, true) contra).
injection unique_xy as contra' _.
now destruct x.
Qed.

Хорошо, но вы доказываете это для вполне определенного P использования сопоставимости bool широко AFAICS. Есть ли способ доказать то же самое forall P?

Zazaeil 13.02.2023 23:51

@Zazaeil Вы не можете опровергнуть результат для всех предикатов P. Например, P x y может быть x = true /\ y = true, и в этом случае верно обратное.

Arthur Azevedo De Amorim 14.02.2023 15:10

Спасибо. P.S. Довольно изящная тактика манипулирования. Я узнал несколько новых вещей.

Zazaeil 14.02.2023 17:29

Другие вопросы по теме