Как определяется "меньше чем" для действительных чисел в Coq?

Мне просто интересно, как отношения "меньше чем" определены для действительных чисел.

Я так понимаю для натуральных чисел (nat), < может быть определен рекурсивно с точки зрения одного числа, являющегося (1+) преемник S другого номера. Я слышал, что многие вещи о реальных числах в Coq аксиоматичны и не вычисляются.

Но мне интересно, существует ли минимальный набор аксиом для действительных чисел в Coq, на основе которого могут быть получены другие свойства / отношения. (например, Coq.Reals.RIneq имеет это, что Rplus_0_r : forall r, r + 0 = r. это аксиома, между прочим)

В частности меня интересует, есть ли такие отношения как < или же <= может быть определена поверх отношения равенства. Например, я могу представить, что в обычной математике, учитывая два числа r1 r2:

r1 < r2 <=> exists s, s > 0 /\ r1 + s = r2.

Но верно ли это в конструктивной логике Coq? И могу ли я использовать это, чтобы хотя бы рассуждать о неравенствах (вместо того, чтобы постоянно переписывать аксиомы)?

2 ответа

Решение

Coq.Reals.RIneq имеет это, что Rplus_0_r: forall r, r + 0 = r. это аксиома, среди прочего

придираться: Rplus_0_r это не аксиома, а Rplus_0_l является. Вы можете получить их список в модуле Coq.Reals.Raxioms и список параметров, используемых в Coq.Reals.Rdefinitions.

Как вы можете видеть, "больше чем (или равно)" и "меньше или равно" все определены в терминах "меньше чем", что постулируется, а не вводится с использованием предложенного вами предложения.

Это выглядит как Rlt действительно может быть определено так, как вы предлагаете: эти два утверждения доказуемо эквивалентны, как показано ниже.

Require Import Reals.
Require Import Psatz.
Open Scope R_scope.

Goal forall (r1 r2 : R), r1 < r2 <-> exists s, s > 0 /\ r1 + s = r2.
Proof.
intros r1 r2; split.
 - intros H; exists (r2 - r1); split; [lra | ring].
 - intros [s [s_pos eq]]; lra.
Qed.

Однако вам все равно нужно определить, что значит быть "строго позитивным" для s > 0 Это имеет смысл, и совсем не ясно, что в итоге у вас будет меньше аксиом (например, понятие строгости положительного следует закрыть при сложении, умножении и т. д.).

Действительно, библиотека Coq.Real немного слаба в том смысле, что она полностью указана как аксиомы, и в некоторых (кратких) моментах в прошлом она была даже противоречивой.

Таким образом, определение le немного "ad hoc" в том смысле, что с точки зрения системы оно имеет нулевой вычислительный смысл, являясь лишь константой и несколькими аксиомами. Вы могли бы легко добавить аксиому "x

Стоит указать на некоторые альтернативные конструкции Reals for Coq:

Моя любимая классическая конструкция - это те, которые сделаны в теореме о четырех цветах Жоржем Гонтье и Б. Вернером: http://research.microsoft.com/en-us/downloads/5464e7b1-bd58-4f7c-bfe1-5d3b32d42e6d/

Он использует только исключенную среднюю аксиому (в основном для сравнения действительных чисел), поэтому уверенность в ее согласованности очень высока.

Самая известная характеристика аксиом без аксиом - это проект C-CORN, http://corn.cs.ru.nl/ но мы знаем, что конструктивный анализ значительно отличается от обычного.

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