Зачем Части V нужна метрика
Что осталось позади и что впереди
Часть IV построила процессную математику действительного числа. Бесконечность стала процессом, число — процессом приближений, точка — классом эквивалентных процессов; была доказана несчётность, очерчен процессный континуум, и весь корпус был честно измерен на силу вывода. К концу Части IV в руках оказался материал: рациональные процессы, отношение эквивалентности, аппарат Коши.
Часть V берёт этот материал и принимается за анализ. Её задача — развернуть на процессной основе то, что в классической математике составляет здание математического анализа: топологию, метрику, непрерывность, производную, интеграл. Семь глав Части V пройдут этот путь по порядку — от локального к глобальному, от одной точки к интегрированию по области.
И первый шаг на этом пути — расстояние. Без понятия расстояния не построить ничего дальнейшего: ни топологии (что значит <<близкие>> процессы?), ни сходимости (что значит, что процесс <<приближается>> к чему-то?), ни непрерывности (что значит, что малое смещение аргумента даёт малое смещение значения?). Метрика — фундамент, и потому Часть V открывается главой о ней.
Как читать эту часть: три оговорки
Прежде чем строить, нужно условиться, как Часть V говорит о сделанном, — потому что тут есть опасность, и честнее назвать её сразу.
Соблазн, разворачивая анализ, был бы такой: объявить, что <<классический анализ полностью восстановлен на процессной основе>>. Этот соблазн Часть V отклоняет. Точнее будет сказать иначе: Rocq-репозиторий ToS содержит сеточно-процессную инфраструктуру анализа — рабочий каркас из рациональных метрик, интервальных методов, конечных сумм, модульных оценок и Коши-представителей. Часть V показывает, как этот каркас постепенно восстанавливает классический анализ; и для каждого результата она честно помечает его статус. Отсюда три сквозные оговорки.
Первая — о том, что значит <<процессный анализ>>. Это не готовое здание, а инфраструктура: набор конструкций, в которых аналитические понятия получают процессную форму. Иные результаты в ней уже доказаны как полные теоремы; иные существуют пока как -версии, сеточные приближения или конструкции, работающие до конечного горизонта; иные намечены как направление. Часть V эти статусы различает и не выдаёт один за другой.
Вторая — о словах <<без аксиомы выбора>>. Они будут встречаться, и значат они точную вещь: без внешней теоретико-множественной аксиомы выбора и без выбора из завершённых бесконечных семейств. Они не значат, что каждый файл репозитория полностью конструктивен: часть результатов опирается на законы логики ToS — , локально . Статус каждого результата по этой части указывается на месте. (Для настоящей главы, впрочем, оговорка работает в сильную сторону: все её опорные файлы — без единой аксиомы; об этом — ниже.)
Третья — о локальной пометке статуса. Всякий раз, когда глава говорит <<доказано>>, она уточняет, что именно доказано: полная теорема, или -приближение, или понятие, введённое определением, или направление дальнейшей работы. Это та же дисциплина честности, что и в Главе 4.6, перенесённая теперь на каждый шаг анализа.
Третий слой изложения
И ещё одно о жанре. Части I–IV держались двух слоёв: формальное построение и онтологическая интерпретация. Часть V добавляет третий — вычислительный. Там, где это уместно, глава будет приводить конкретные примеры вычисления: таблицы, прогоны, числа. Цель проста: читатель должен видеть, что процессный анализ — не отвлечённая абстракция, а работающая практика. В настоящей главе третий слой появится в § 1.7, где архимедовость из философского мотива превратится в конкретную таблицу: сколько шагов довольно, чтобы достичь заданной точности.
Замысел главы
Глава движется от простого к составному. Сначала — расстояние между
рациональными числами, простейший случай (§ 1.2). Затем —
абстрактное метрическое пространство как общая рамка (§ 1.3). Затем —
центральный поворот: поточечное расстояние между процессами
естественно само является процессом — процессом рациональных
расхождений; и здесь придётся аккуратно отделить его от другой
конструкции репозитория — конечногоризонтной дистанции
process_dist, измеряющей расхождение до выбранного
горизонта (§ 1.4). Далее — общая схема процессов и мосты между их
типами (§ 1.5). Отдельный, самый осторожный раздел — о
полноте: почему она здесь понятие, а не доказанная
теорема (§ 1.6). Затем — архимедовость как <<топливо>>
-рассуждений, с вычислительным примером (§ 1.7). И
наконец — итог: что построено, что нет, что готовится дальше
(§ 1.8).
Опорных файлов семь, и все они сверены с репозиторием дословно. Заметим сразу важное: все семь по своим заголовкам и проверенным ключевым теоремам имеют статус <<0 axioms>> — ни одной аксиомы. Для первой главы Части V это удачное начало: фундамент анализа закладывается на полностью конструктивном основании. (Раздел § 1.7 привлечёт дополнительно ещё один файл — об архимедовости; о его статусе там будет сказано отдельно.)
Расстояние между рациональными числами
Простейший случай
Начать стоит с самого простого расстояния, какое только есть в ToS, —
расстояния между двумя рациональными числами. Каждое
рациональное число конечно как запись: дробь задаётся
конечными целыми данными — парой целых (Часть III), и в ней нет ни
процесса, ни приближения, ни бесконечности. (Тип как таковой,
конечно, бесконечен — но речь о каждом отдельном его объекте.)
Расстояние между двумя такими числами мы определяем так же просто и
завершённо — как модуль их разности: расстояние между
рациональными и есть . Никакой бесконечности здесь не
задействовано — вычитание рациональных и взятие модуля суть
конечные операции, и результат снова рационален. В Rocq это записано
в файле MetricSpace.v:
Definition Q_dist (x y : Q) : Q := Qabs (x - y).{
Заметим сразу одну особенность репозитория: то же самое определение
встречается в нём под несколькими именами. В ProcessTopMetric.v
оно названо qdist, в ProcessGeneral.v —
Qdist. Все три — Q_dist, qdist,
Qdist — суть одна конструкция: для рациональных
. Это не три разных понятия, а одно понятие в трёх файлах.
Дальше глава будет пользоваться рабочим именем qdist;
читателю достаточно помнить, что за всеми тремя именами стоит один и
тот же модуль разности.
}
| Имя | Файл | Роль |
|---|---|---|
Q_dist | MetricSpace.v | метрика в stdlib-рамке |
qdist | ProcessTopMetric.v | процессно-топологическая метрика |
Qdist | ProcessGeneral.v | расстояние в общей схеме процессов |
Все три определены одинаково — Qabs (x - y), — и
различаются только тем, в каком файле и для какой цели введены.
Четыре аксиомы метрики
Чтобы заслуживало имени расстояния, оно должно
удовлетворять четырём свойствам, которые со времён Фреше составляют
определение метрики. И эти четыре свойства мы для рационального
расстояния не постулируем, а доказываем — каждое
прямой рациональной арифметикой. В MetricSpace.v им отвечают
четыре леммы.
Неотрицательность: для любых —
расстояние не бывает отрицательным (лемма Q_dist_nonneg).
Нуль на диагонали: — расстояние от числа до
самого себя есть нуль (Q_dist_zero).
Симметрия: — расстояние от до и от
до одно и то же (Q_dist_sym).
Неравенство треугольника: — путь
напрямую не длиннее пути через промежуточную точку
(Q_dist_triangle).
Доказательства просты: все четыре опираются на свойства модуля
рационального числа (Qabs) — модуль неотрицателен, модуль
нуля есть нуль, модуль не зависит от знака, модуль суммы не
превосходит суммы модулей. Все четыре свойства получены чисто
рациональной арифметикой, без всякого обращения к бесконечным
объектам.
Заметим, чего в этом списке нет. Свойство нуля на диагонали —
диагональное: оно говорит лишь . Строгая
разделимость — , нулевое расстояние
только между совпадающими числами — среди этих четырёх свойств
отдельной леммой не стоит. Для рациональной метрики она, конечно,
верна; и доказана — но отдельно: лемма
qdist_zero_iff в ProcessTopMetric.v устанавливает
тогда и только тогда, когда . К этому различению —
между нулём на диагонали и строгой разделимостью — глава вернётся в
§ 1.3, где оно окажется существенным для абстрактной рамки.
Расстояние позитивно по своей природе
Стоит задержаться на первом из четырёх свойств — неотрицательности. В ToS это не случайная техническая деталь, а проявление сквозного мотива всего тома: расстояние позитивно структурно. Модуль рационального числа неотрицателен не потому, что так удобно постулировать, — а потому, что модуль есть операция, которая по построению отбрасывает знак. <<Отрицательного расстояния>> не бывает не в силу запрета, а в силу того, как расстояние устроено: оно с самого начала есть величина без знака.
Это согласуется с общей позитивной онтологией ToS. Расстояния, нормы, длины, объёмы — все меры разделённости и протяжённости — неотрицательны не по соглашению, а структурно. Глава встретит этот мотив ещё не раз: он вернётся, когда речь пойдёт об интеграле от неотрицательной функции. Метрика — первый его пример в Части V; в E/R/R-разборе (§ 1.3.2) неотрицательность окажется одним из правил (Rules), удерживающих расстояние.
Уровень рациональных чисел
И последнее замечание этого раздела — важное, потому что оно задаёт
тон всей главе. Всё, что построено в § 1.2, — qdist и его
четыре свойства — работает на уровне рациональных чисел. Это
расстояние между двумя -числами, не между процессами и не между
классами процессов.
Различать уровни придётся постоянно, и глава с самого начала проводит границу. Расстояние на — завершённое, рациональное, простое — это фундамент. Но интересный для анализа объект — не рациональное число, а процесс; и расстояние между процессами устроено сложнее, чем . К нему глава перейдёт в § 1.4, построив сначала общую рамку — абстрактное метрическое пространство.
Абстрактное метрическое пространство
Метрическое пространство как система
Расстояние на — частный случай. Чтобы говорить о расстоянии вообще — между процессами, между векторами, между чем угодно, — нужна общая рамка: понятие метрического пространства как такового.
Сразу одна оговорка о точности. Абстрактная рамка, которую мы сейчас построим, фиксирует метрическую структуру без общей аксиомы разделимости (); строго говоря, её честнее называть metric-like, или псевдометрической. Для рациональной метрики разделимость верна и доказывается отдельно (§ 1.3.4); рамка же берёт ровно те гипотезы, которые нужны для общих рассуждений. Глава пользуется привычным словом <<метрическое пространство>> — так названа и сама Rocq-секция, — но строгий читатель пусть держит эту оговорку в виду с самого начала.
В терминах ToS метрическое пространство — это система с характерным набором ролей и правил. Элементы — точки пространства. Роль — расстояние, мера разделённости двух точек. Правила — те самые четыре аксиомы: неотрицательность, нуль на диагонали, симметрия, неравенство треугольника; из них треугольник играет роль конституции, скрепляющей пространство в целое.
Эту рамку мы формализуем параметрически — так, чтобы всё
доказанное в ней годилось сразу для всякого конкретного метрического
пространства. Средство — Rocq-механизм Section: внутри
секции фиксируются носитель (произвольный тип), функция
расстояния и четыре гипотезы о ней, а всё, что доказано
внутри, автоматически верно для любого носителя и любой функции,
этим гипотезам удовлетворяющей. В MetricSpace.v это записано
так:
Section MetricSpaces.
Variable X : Type.
Variable d : X -> X -> Q.
Hypothesis d_nonneg : forall x y, 0 <= d x y.
Hypothesis d_zero : forall x, d x x == 0.
Hypothesis d_sym : forall x y, d x y == d y x.
Hypothesis d_triangle : forall x y z, d x z <= d x y + d y z. — произвольный носитель, — функция расстояния, четыре
Hypothesis — те свойства, которым обязано
удовлетворять. Всё, что доказывается внутри секции, доказывается
для любого такого и . Это и есть общая теория: одна
рамка, годная для всякого конкретного метрического пространства.
Заметим методологический выбор. Rocq позволил бы оформить эту рамку
и через классы типов; ToS-формализация сознательно берёт
Section с явными параметрами. Причина в том, что явная
параметричность делает зависимости видимыми: глядя на лемму из
секции, сразу видно, от каких именно гипотез о она зависит, —
ничто не спрятано в неявный вывод класса.
Разбор E/R/R: метрика как система
Раз метрическое пространство есть система, к нему приложима методология E/R/R, развёрнутая в Части I: всякая система разбираема на три аспекта — Elements, Roles, Rules. Проведём этот разбор. Он ничего не навязывает пространству извне — он разворачивает ту же разметку, что уже стоит в заголовке опорного файла: элементы — точки; роль — расстояние как мера разделённости; правила — неравенство треугольника (как конституция), симметрия, позитивность.1 Вести разбор будем в онтологическом порядке — Rules Roles Elements, — хотя познавательно мы прошли обратным путём: сначала увидели точки, затем расстояние между ними, и лишь потом — аксиомы, которым оно подчинено.
Оговорка о статусе — та же, что при разборе записи Distinction
в Части I. Называя метрическое пространство системой, мы ведём
содержательную онтологическую интерпретацию; в коде это
параметрическая Section с носителем и четырьмя гипотезами, а не
объект типа System с приписанным уровнем иерархии. Разбор
читает структуру, а не приписывает файлу нового формального
содержания.
Rules — правила, удерживающие пространство (закон
: правила стоят над тем, что организуют). Здесь работают два
слоя. Универсальный — законы –, общие для
всякой системы. Конкретный — четыре аксиомы метрики,
специфичные для расстояния: неотрицательность, нуль на диагонали,
симметрия и — главное — неравенство треугольника, играющее роль
конституции, скрепляющей пространство в связное целое (без него
отдельные расстояния не складывались бы в единую меру). Здесь же
проходит честная граница, отмеченная в § 1.3.4: строгой разделимости
абстрактная Section как общую гипотезу не берёт и потому
фиксирует структуру чуть слабее полной метрики. По устройству правил
видно и то, как заполняются позиции: носитель дан как параметр,
точки не подбираются алгоритмом — Section задаёт
потенциал (носитель, расстояние, гипотезы), а конкретные
пространства — с qdist или векторы QVec с
-расстоянием — его актуализируют.
Roles — значимость позиций (закон : каждая роль структурно обоснована). Роль в этой системе одна и центральная: расстояние — мера разделённости двух точек, то, зачем точки значимы друг для друга. Эта роль не произвольна: по её достаточным основанием служат сами четыре аксиомы, благодаря которым есть именно расстояние, а не любая функция двух аргументов. Из роли расстояния разворачиваются качественные позиции, на которых держится весь дальнейший анализ: <<близко>> () и <<далеко>> (), а когда расстояние прикладывается вдоль процесса — <<сходится>> и <<расходится>>.2
Elements — носители (закон и принцип
). Элементы — точки пространства. В рациональной метрике это
сами числа , конечные как запись; в процессной метрике (§ 1.4)
носителями станут процессы, конечные на каждой стадии. По
каждая точка тождественна себе — без этого её нельзя было бы
устойчиво опознавать в разных сравнениях. А принцип объясняет
уже отмеченную особенность типа d : X -> X -> Q: значение
расстояния на каждом сравнении есть конечное рациональное
число, не элемент завершённого <<>>. Актуализация здесь конечна по
самому устройству; <<действительное>> расстояние, если оно понадобится,
само окажется процессом (§ 1.4), а не готовым элементом.
Сведём разбор в таблицу.
| Компонент | Что фиксирует | E/R/R |
|---|---|---|
| носитель (точки) | что есть в пространстве | Element |
| мера разделённости | Role | |
| <<близко>>/<<далеко>>, <<сходится>>/<<расходится>> | ролевые позиции | Role |
| неотрицательность, нуль, симметрия | удерживают как расстояние | Rule (конкр.) |
| неравенство треугольника | конституция | Rule (конкр.) |
| законы – | универсальный слой | Rule (универс.) |
Хорошая сформированность. Разметка однозначна: точки суть элементы, расстояние — роль, аксиомы — правила, и ни один компонент не претендует на две категории сразу. Самореференции нет: расстояние работает над точками — по операция стоит уровнем выше своих операндов, — а не применяется к самому себе. По критерию хорошей сформированности, введённому в Части I, метрическое пространство хорошо сформировано.
Разбор не самоцель — он объясняет уже сделанные в главе выборы. Почему расстояние рационально-значно (§ 1.3.3) — потому что элементы актуализуются конечно (). Почему разделимость вынесена за пределы аксиом абстрактной рамки (§ 1.3.4) — потому что она принадлежит конкретному слою правил отдельных пространств, не универсальному. Почему именно треугольник назван конституцией — потому что среди правил он один скрепляет разрозненные расстояния в связное целое. И тот же разбор задаёт образец для всей Части V: топологию, непрерывность, производную, интеграл мы будем читать как системы, каждую со своей E/R/R-структурой, разворачивая её из заголовка соответствующего файла.
Расстояние со значением в рациональных
Одна деталь определения существенна и заслуживает отдельного слова.
Функция расстояния имеет тип d : X -> X -> Q: расстояние
принимает значения в рациональных числах, не в каких-либо
<<действительных>>.
На этом уровне формализации ToS выбирает рационально-значную метрику: каждый конечный тест расстояния даёт значение в . У выбора есть резон. Завершённого множества действительных чисел под нет; <<действительное>> в ToS само есть процесс. Если бы расстояние принимало значения в <<>>, оно было бы уже не простой мерой, выдающей готовое число, а процессом — со своими представителями, эквивалентностью и доказательством независимости от выбора представителя. Метрики со значениями в процессных действительных вводить можно — это не противоречит , коль скоро такое расстояние само читается процессно, — но они требуют отдельного, более позднего слоя. Абстрактная рамка § 1.3 этот слой не строит: она берёт расстояние рациональным — на каждом сравнении двух точек выдаёт конкретное рациональное число. А когда расстояние нужно рассмотреть как процесс — это, как будет видно в § 1.4, делается не заменой на <<>> в типе , а тем, что само применяется вдоль процесса и порождает последовательность рациональных значений.
Метрика или псевдометрика: точная оговорка
Здесь нужна аккуратность, иначе абстрактная рамка прозвучит сильнее,
чем она есть. Среди четырёх гипотез секции есть d_zero —
но посмотрим на её форму внимательно. d_zero утверждает
только: — расстояние от точки до неё самой есть
нуль. Это нуль на диагонали.
{
Классическое определение метрики требует большего — строгой
разделимости: , то есть нулевое
расстояние возможно только между совпадающими точками. И вот этой,
более сильной гипотезы в абстрактной секции MetricSpace.v
нет — она не входит в четвёрку Hypothesis.
}
Что это значит? Что абстрактная секция, строго говоря, фиксирует не
полную метрику, а структуру чуть более слабую — если держаться
строгой терминологии, ближе к псевдометрике. Это не упущение:
для многих рассуждений (сходимость, Коши, сжатие) строгая
разделимость и не нужна, и секция честно берёт ровно те гипотезы,
которые работают. А там, где разделимость требуется, она
доказывается отдельно для конкретного пространства. Для
рационального расстояния она есть — в ProcessTopMetric.v
лемма qdist_zero_iff устанавливает: тогда и
только тогда, когда . То есть рациональная метрика разделимость
имеет; абстрактная же рамка её как общую гипотезу не предполагает.
Глава отмечает это разведение, чтобы читатель, строго различающий
метрику и псевдометрику, не принял абстрактную секцию за большее, чем
она утверждает.
Что доказано в общей рамке
{
Внутри этой рамки мы вводим ключевые понятия анализа — те, что
дальше понадобятся всей Части V, — и доказываем несколько общих
лемм. Понятия три: Коши-последовательность в метрическом
пространстве (значения сколь угодно сближаются после некоторого
рубежа), предел последовательности и сжимающее
отображение. В MetricSpace.v им отвечают
is_cauchy_metric, is_limit_metric и
is_contraction_metric.
}
{
Леммы — общие факты, верные во всяком метрическом
пространстве. Неотрицательность с переставленными аргументами
(d_nonneg_alt). Если последовательность сходится к двум
пределам, расстояние между этими пределами сколь угодно мало
(limit_dist_zero) — зародыш единственности предела.
Всякая сходящаяся последовательность есть Коши
(cauchy_of_limit) — одна из двух классических импликаций
между сходимостью и свойством Коши. И несколько лемм о сжимающих
отображениях: множитель сжатия неотрицателен, строго меньше единицы,
сжатие не увеличивает расстояний.
}
Всё это — общая теория, доказанная раз и для всякого метрического
пространства. MetricSpace.v несёт восемнадцать проверенных
лемм и не использует ни одной аксиомы; из них к абстрактной секции
относятся семь, а остальные принадлежат метрике на и
-метрике на QVec, о которых речь ниже. На эту
общую рамку и обопрутся дальнейшие построения — начиная со
следующего раздела, где расстояние впервые станет процессом.
Два процессных расстояния: поточечное и конечногоризонтное{Два процессных расстояния}
Расстояние перестаёт быть числом
Вот онтологический центр главы. В классической математике расстояние между двумя действительными числами и — это одно число, , готовое и завершённое. Под завершённого нет, а сами <<действительные>> суть процессы. Что тогда есть расстояние между двумя процессами?
Ответ предсказуем по всей логике Части IV: расстояние между процессами само есть процесс. Не завершённое число, а разворачивающаяся по уровням уточнения величина. Это согласуется с общей онтологией: всё, что в классике было <<действительным числом>>, в ToS есть процесс, — и расстояние не исключение. В терминах E/R/R-разбора (§ 1.3.2) это значит, что носителями-Elements теперь выступают процессы — конечные на каждой стадии по , — тогда как роль расстояния сохраняется.
Но здесь нужна осторожность, и в ней — всё содержание раздела. В репозитории есть две разные процессные конструкции расстояния, и смешивать их нельзя. Одна — поточечная; другая — усечённая, конечногоризонтная. Разберём обе.
Поточечное расстояние и метрическое Коши
Первая конструкция самая прямая. Даны два процесса и — каждый есть функция из номера шага в рациональное приближение. На каждом шаге у них есть рациональные значения и , и между этими рациональными значениями есть расстояние — то самое . Собрав эти расстояния по всем шагам, получаем процесс:
Это поточечное расстояние — процесс, дающий на каждом уровне рациональное расхождение приближений. Сам объект — процесс, а не его <<предельное значение>>.
Оговорим точно статус этого определения в коде. Готового имени
rp_dist для функции в опорных файлах
главы нет — глава вводит это поточечное расстояние как
понятие. Зато в ProcessTopMetric.v есть тесно связанная и
для анализа более важная конструкция — метрическое условие
Коши:
Definition metric_cauchy (a : RealProcess) : Prop :=
forall eps, 0 < eps ->
exists N, forall m n, (N <= m)%nat -> (N <= n)%nat ->
qdist (a m) (a n) < eps.{
Процесс удовлетворяет metric_cauchy, если его значения,
измеряемые рациональным расстоянием qdist, сколь угодно
сближаются после некоторого рубежа. И ProcessTopMetric.v
доказывает, что это в точности обычное процессное условие Коши:
}
Theorem metric_cauchy_equiv : forall a,
is_Cauchy a <-> metric_cauchy a.metric_cauchy_equiv — мост между двумя формулировками:
<<быть Коши>> в смысле Главы 4.2 и <<быть Коши>> в метрических
терминах через qdist — одно и то же. Это лучший якорь для
тезиса <<метрика как процесс>>: рациональное расстояние qdist
прикладывается вдоль процесса, и метрический язык в точности ложится
на уже построенный аппарат Коши.
И ещё одна оговорка — по поводу естественного ожидания. Хочется сказать: если и — оба процессы Коши, то и поточечный процесс расстояний есть Коши. Содержательно это верно, и доказывается коротко — неравенством треугольника для рационального модуля:
так что если правые части малы (а они малы, раз и — Коши),
мало и левое расхождение. Лемма именно такого вида — <<процесс
расстояний двух Коши-процессов есть Коши>> — теперь доказана: это
cauchy_abs_is_cauchy из файла RealPointMetric.v.
В семи опорных файлах этой главы её не было, но в репозитории она
есть; так что приводимое здесь — уже не только доказательный набросок:
оценка закреплена отдельной теоремой, и § 1.8.2 покажет, что вместе с
согласованностью она и даёт метрику на классах.
Конечногоризонтная наблюдаемая дистанция
Вторая конструкция — иная, и путать её с первой нельзя. Она задана в
ProcessSpace.v и называется process_dist:
Fixpoint process_dist_aux (f g : RealProcess) (n : nat) : Q :=
match n with
| O => Qabs (f 0%nat - g 0%nat)
| S n' => process_dist_aux f g n' + Qpow (1#2) n * Qabs (f n - g n)
end.
Definition process_dist (f g : RealProcess) (N : nat) : Q :=
process_dist_aux f g N.Прочтём внимательно. process_dist при фиксированном
— это конечная взвешенная сумма: по всем шагам от до
берутся расхождения , каждое с весом , и
складываются. У результата есть аргумент — горизонт, — и от
него сумма зависит.
Назовём эту конструкцию точно: process_dist — это
конечногоризонтная наблюдаемая дистанция. Расстояние между
двумя процессами, увиденное до уровня — до конечного
горизонта наблюдения. Чем дальше отодвинут горизонт , тем больше
шагов учтено; но при всяком фиксированном это конечная
рациональная величина.
Существенно, чем process_dist не является. Это
не поточечный процесс расстояний из
предыдущего пункта — там на каждом шаге одно расхождение, здесь до
каждого горизонта накопленная взвешенная сумма всех расхождений.
(Если же и зафиксировать, а пустить пробегать номера
шагов, то само отображение
есть процесс — процесс накопленных конечногоризонтных
расстояний; это иной процесс, чем поточечный ,
и путать их нельзя.) И process_dist — не предельное
расстояние между классами процессов: никакого перехода к пределу в
определении нет, есть конечный горизонт. process_dist —
удобная мера того, насколько два процесса разошлись в пределах
обозримого; весовой множитель гарантирует, что дальние шаги
вносят всё меньший вклад.
Сведём три конструкции расстояния на процессах в таблицу — она закрепляет различение, на котором держится весь раздел:
| Конструкция | Тип | Что измеряет |
|---|---|---|
| $n \mapsto | P(n)-Q(n) | $ |
process_dist | , при фиксированном | взвешенная сумма расхождений до горизонта |
| процесс над | накопленные конечногоризонтные расстояния |
{
Первая строка — поточечное расстояние § 1.4.2; вторая — сама
process_dist из ProcessSpace.v, рациональное число
при заданном горизонте; третья — та же process_dist,
прочитанная как процесс по горизонту. Все три законны; смешивать их
нельзя.
}
ProcessSpace.v как инфраструктурный слой
{
Вокруг process_dist естественно построить небольшой
топологический аппарат — и он построен: cylinder
(совпадение процессов на первых координатах в пределах радиуса),
process_ball (шар по конечногоризонтной дистанции),
process_bounded (ограниченность процесса). Доказаны
базовые факты — расстояние процесса до самого себя есть нуль, центр
лежит в своём шаре, постоянный процесс ограничен. Всё это собрано в
файле ProcessSpace.v.
}
Здесь важно точно очертить, что этот слой есть, а что — нет.
ProcessSpace.v — слой инфраструктурный: он
закладывает заготовки топологии на пространстве процессов, но полной
метрики на типе классов RealPoint не строит. Есть в нём
теорема с громким именем — process_space_complete, — и
тут глава обязана назвать вещи своими именами. Вопреки имени,
process_space_complete не есть теорема о полноте
пространства процессов. Если вчитаться в её доказательство, она
оказывается простой конъюнкцией двух уже доказанных тривиальных
лемм: <<расстояние процесса до себя есть нуль>> и <<центр лежит в
своём шаре>>. Это полезная сводка двух элементарных фактов — но не
утверждение о том, что всякая Коши-последовательность процессов
сходится. Имя обещает больше, чем теорема даёт; и наш аудит это
прямо отмечает. О настоящей полноте — и о том, почему она здесь
понятие, а не доказанная теорема, — речь пойдёт в § 1.6.
Метрика над процессами и общая схема
Универсальный тип процесса
До сих пор процессы были процессами Коши над — функциями из
номера шага в рациональное приближение. Но понятие процесса шире, и
его стоит формализовать в самом общем виде: процесс над произвольным
типом — это просто функция из номеров шагов в , пошагово
индексированное вычисление, выдающее на каждом шаге значение типа
. В ProcessGeneral.v это записано так:
Definition GenProcess (A : Type) := nat -> A.Процесс Коши — частный случай, . Бинарный процесс из
Главы 4.5 — частный случай, .
GenProcess — общая форма их всех.
Над этим общим типом мы строим и общий аппарат: observe
(прочесть значение на шаге ), prefix (собрать первые
значений в список — конечное наблюдение, в духе ),
process_map (применить функцию к каждому шагу),
const_process (постоянный процесс). Всё это — содержание
ProcessGeneral.v.
Обобщённое условие Коши
Главное, что даёт общая схема, — обобщённое условие Коши. Над любым типом , снабжённым функцией расстояния , можно спросить, стабилизируется ли процесс:
Definition is_cauchy_gen {A : Type} (dist : A -> A -> Q)
(p : GenProcess A) : Prop :=
forall eps : Q, 0 < eps ->
exists N : nat, forall m n : nat,
(N <= m)%nat -> (N <= n)%nat -> dist (p m) (p n) < eps.Заметим: расстояние здесь снова со значением в
— та же логика, что и в абстрактной метрической рамке § 1.3.
is_cauchy_gen обобщает условие Коши из Главы 4.2 на любой
тип с рациональным расстоянием. И стоит убедиться, что обобщение не
разошлось с исходным понятием: для с расстоянием
обобщённое условие в точности совпадает с обычным Коши. Это
совпадение и подтверждает лемма cauchy_Q_equiv из
ProcessGeneral.v — is_cauchy и
is_cauchy_gen Qdist эквивалентны. По
разбору § 1.3.2 это та же роль — расстояние как мера разделённости, —
обобщённая на произвольный тип-носитель : меняются Elements, сама
роль расстояния остаётся.
{
Полезная лемма этого слоя — process_map_cauchy:
отображение, не увеличивающее расстояний, переводит
Коши-процесс в Коши-процесс. И родственная ей, уже в
ProcessTopMetric.v, — cauchy_map_lipschitz:
Липшицево отображение сохраняет свойство Коши. Эти леммы — задел для
непрерывности: они говорят, что <<хорошие>> отображения уважают
сходимость. К непрерывности глава вернётся в § 5.3 тома.
}
Имя process_equiv в разных файлах
Здесь нужна оговорка об именах — маленькая, но важная, потому что
без неё легко запутаться. Имя process_equiv встречается в
репозитории не в одном смысле.
В ProcessGeneral.v process_equiv — это
обобщённое поточечное отношение: два процесса эквивалентны,
если согласованы на каждом шаге относительно заданного отношения
на . В ProcessCore.v имя
process_equiv носит другое отношение —
одинакового предела для рациональных процессов: два процесса
Коши эквивалентны, если сходятся к одному числу (это отношение Главы
4.3, по которому строилась точка как класс). А в CauchyReal.v
родственное отношение одинакового предела названо
cauchy_equiv.
Это разные отношения, и совпадение имён — лишь совпадение имён.
Глава пользуется каждым в его локальном смысле и, упоминая
process_equiv, всякий раз имеет в виду то отношение, которое
определено в обсуждаемом файле. Поточечное согласие
(ProcessGeneral.v) и одинаковый предел (ProcessCore.v) —
не одно и то же, и эту границу глава держит.
Мост между типами процессов
Часть V постоянно ходит между двумя типами: CauchySeq из
CauchyReal.v — запись, объединяющая последовательность с
доказательством её Коши-свойства, — и RealProcess из
ProcessCore.v — голый процесс nat -> Q. Один тип
удобен, когда Коши-свойство нужно нести при себе; другой — когда
процесс рассматривается как чистое вычисление.
Чтобы две линии не оставались несообщающимися ветвями, между этими
типами нужно навести мост — переходы туда и обратно, при
которых сохраняются Коши-свойство и эквивалентность. Этот мост и
построен в файле ProcessBridge.v: связка техническая, но
необходимая — без неё линия CauchyReal и линия
ProcessCore развивались бы порознь. Ещё один пролёт к тому
же мосту добавляет ProcessGeneral.v — лемма
cauchy_seq_is_gen_process: всякая CauchySeq
есть, в частности, GenProcess над , удовлетворяющий
обобщённому условию Коши. Так три уровня — CauchySeq,
RealProcess, общий GenProcess — оказываются сшиты
в одну согласованную картину, по которой дальнейшие главы Части V
будут свободно перемещаться.
Полнота: понятие и граница
Жирная черта
Этот раздел — самый осторожный в главе, и начать его надо с прямого тезиса, набранного без обиняков.
Полнота в этой главе вводится как понятие, а не доказывается как свойство конкретного пространства.
Сказать это нужно сразу, потому что здесь проходит та граница, за которой осторожный план Части V отделяется от соблазнительного, но неверного заявления <<процессный анализ полон>>. Глава 5.1 строит определение полноты и честно показывает, где оно пока остаётся определением, не превращённым в теорему.
Определение полноты
Начнём с того, что значит для метрического пространства быть
полным. Свойство это — <<без дыр>>: процесс, чьи значения
сближаются, непременно к чему-то сходится, и это <<что-то>> есть
точка самого пространства. Иначе говоря, пространство полно, если
всякая Коши-последовательность его точек имеет предел. В абстрактной
секции MetricSpace.v мы записываем это так:
Definition is_complete_metric : Prop :=
forall f : nat -> X, is_cauchy_metric f -> exists l : X, is_limit_metric f l.И здесь ключевое слово — Definition.
is_complete_metric — это определение, предикат:
формулировка свойства <<быть полным>>. Само по себе оно ничего
не утверждает о каком-либо конкретном пространстве. Оно говорит,
что значит быть полным, — но не говорит, что хоть одно
пространство этим свойством обладает.
Чего в опорных файлах нет
Теперь — честная инвентаризация. В семи опорных файлах Главы 5.1
нет теоремы, которая доказывала бы полноту. Нет утверждения
<< полно>> (и быть не может — как раз неполно: процесс
рациональных приближений к иррациональному числу есть Коши, но
рационального предела не имеет). Нет утверждения <<CauchyReal
полно>>. Нет утверждения <<пространство процессов полно>>. Понятие
is_complete_metric введено — но ни к одному пространству
как доказанная теорема не применено.
Это не пробел и не недоработка. Это честная граница: полнота конкретного процессного пространства — содержательная задача формализации, и Глава 5.1 её не закрывает. Она вводит понятие, а доказательство полноты для того или иного пространства оставляет как направление дальнейшей работы.
Стоит уточнить, что именно про CauchyReal доказано.
Файл CauchyReal.v содержит лемму cauchy_complete_ self и родственные ей — свойства самих Коши-представителей:
скажем, что процесс рациональных приближений согласуется сам с собой
в подходящем смысле. Это полезные базовые факты. Но это не
полная метрическая полнота фактор-пространства классов: лемма о
свойстве представителя и теорема о том, что всякая
Коши-последовательность классов имеет предел, — утверждения
разного масштаба, и второго в опорных файлах нет.
И — по уже сказанному в § 1.4 — process_space_complete
из ProcessSpace.v, вопреки громкому имени, полноты не
доказывает: это конъюнкция двух тривиальных лемм. Имя содержит слово
<
Доказательство Коши и вычислимый модуль
Есть соблазнительный довод, который здесь надо разобрать аккуратно, потому что в нём есть и верное зерно, и опасное преувеличение. Довод такой: классическое доказательство полноты метрического пространства обыкновенно опирается на аксиому зависимого выбора — надо для каждого уровня точности выбрать подходящий номер; а в ToS, мол, выбор не нужен, потому что процесс Коши <<уже несёт>> модуль сходимости.
Зерно истины тут есть. Тип CauchySeq объединяет
последовательность с доказательством её Коши-свойства; и в
конструктивном чтении доказательство Коши действительно указывает
на правило — на способ по точности назвать рубеж.
Но преувеличение тоже рядом, и его надо назвать. CauchySeq
хранит доказательство Коши-свойства в Prop — в мире логических
утверждений. Этого достаточно для логической формализации
свойства Коши. Но из этого автоматически не следует, что из
такого доказательства можно вычислительно извлечь модуль
сходимости как данные — как функцию <<по дать
>>, которую можно запустить и получить число. Извлечение модуля как
вычислимого объекта требует информативного варианта
свойства — например, регулярного Коши-условия (is_Regular_ Cauchy из ProcessCore.v) или явно приложенного модуля. ToS
не случайно различает is_Cauchy и is_Regular_ Cauchy: это различие как раз и отделяет логическое свойство от
несущего вычислимые данные.
Поэтому глава формулирует осторожно. Не <<доказательство Коши уже есть алгоритм>> — а так: в ToS-чтении доказательство Коши указывает на правило нахождения рубежа; а для вычислимой реализации этого правила полезен явный модуль или регулярный вариант Коши-свойства. Онтологический тезис о том, что в ToS существование и построимость сближаются, остаётся в силе как сквозной процессный мотив ToS и как интерпретация — но он не есть автоматическое свойство всякого Prop-доказательства, и глава не выдаёт его за таковое.
Что остаётся
{
Подведём черту под разделом. Полнота в Главе 5.1 — понятие:
определение is_complete_metric, чистое и проверяемое.
Применение этого понятия к конкретному процессному пространству —
доказательство, что то или иное пространство классов полно, — в
опорных файлах главы не проведено и честно оставлено
направлением. Это и есть <<режим инфраструктуры>>, о котором
предупреждал § 1.1: понятие построено, граница названа, и одно от
другого не выдаётся.
}
Архимедовость как топливо
Зачем метрике архимедовость
Метрика построена — но чтобы она работала в анализе, нужно ещё одно свойство, без которого -рассуждения повисли бы в воздухе. Это архимедовость.
Почти всякое аналитическое рассуждение имеет вид: <<задайте точность — и найдётся уровень , начиная с которого расхождение меньше >>. Чтобы такой ход был осмыслен, нужно, чтобы для всякого, сколь угодно малого этот существовал. Иначе говоря, нужно, чтобы дробление точности рано или поздно пробивало любой заданный порог. Это и есть архимедовость — свойство, унаследованное процессной метрикой от рациональных чисел (Глава 3.4 тома).
Конкретно для метрики важна такая её форма: для любого существует натуральное , при котором . Половинное дробление — — рано или поздно опускается ниже всякого порога.
Архимедовость делает алгоритмы конечными
У этого свойства есть не только онтологический смысл — <<точность достижима>>, — но и прямой вычислительный. Архимедовость делает аналитические алгоритмы конечными.
Рассмотрим типичный -алгоритм: половинное деление интервала. На каждом шаге ширина текущего интервала уменьшается вдвое; работа идёт, пока ширина не станет меньше требуемого . Вопрос: остановится ли этот цикл? Ответ даёт архимедовость: раз найдётся с , то после шагов ширина заведомо мала, и цикл завершится не более чем за итераций. Архимедовость поставляет циклу верхнюю границу числа шагов — и для конкретного рационального это находится явным перебором степеней двойки. Стоит, впрочем, держать различие: формальная теорема существования такого и исполняемая процедура его поиска — близкие, но технически разные слои; если нужен именно запускаемый алгоритм, его задают отдельно.
В этом — связь онтологии с вычислением. То, что онтологически конечно (процесс, у которого точность достижима), оказывается и алгоритмически конечно (вычисление, которое завершается за обозримое число шагов). Архимедовость — мост между двумя конечностями.
Вычислительный пример: сколько шагов довольно
Здесь — обещанный третий слой изложения. Сделаем архимедовость осязаемой: посчитаем, сколько шагов половинного дробления довольно для нескольких конкретных уровней точности.
Задача: для данного найти наименьшее , при котором . Это вычислимо — его прямо находят перебором степеней двойки. Вот результат для трёх типичных порогов:
| Требуемая точность | Достаточное | Проверка |
|---|---|---|
Прочтём таблицу. Чтобы расхождение упало ниже одной десятой, довольно четырёх шагов дробления: уже меньше . Ниже одной сотой — семи шагов: . Ниже одной тысячной — десяти: . Числа в среднем столбце не угаданы — они вычислены, и каждую строку можно проверить прямым сравнением дробей, что и сделано в правом столбце.
Это и есть архимедовость в работе. Не философский тезис <<точность когда-нибудь достигнется>>, а конкретная таблица: вот сколько шагов довольно. Читатель видит, что достигается за конечное, заранее вычислимое число шагов — и видит, что с уменьшением в десять раз нужное растёт всего на три-четыре шага. -рассуждения процессного анализа стоят на этой вычислимой почве.
Оговорка о статусе аксиом
И — честная оговорка, в духе всей главы. Семь основных
опорных файлов Главы 5.1 в своих шапках заявляют статус
<<0 axioms>> — ни одной аксиомы; об этом сказано в § 1.1. Для
строгого аудита конкретной теоремы статус всё равно проверяется
командой Print Assumptions — заявление в шапке файла его
не заменяет.
{
Настоящий раздел, однако, опирается дополнительно на отдельный файл —
Archimedean_ERR.v, где архимедовость и формализована.
Поэтому глава не делает огульного заявления <<вся глава стоит на нуле
аксиом>>. Точная формулировка такая: семь основных файлов — без
аксиом; раздел об архимедовости привлекает Archimedean_ERR.v
дополнительно, и его зависимость от аксиом, если она есть, следует
устанавливать отдельно — командой Print Assumptions для
соответствующей теоремы. Это та же дисциплина, что и в Главе 4.6:
статус аксиом проверяется по конкретной теореме, а не приписывается
файлу или главе оптом.
}
Что построено и что готовится. Итог главы
Итог в трёх столбцах
Глава открывала Часть V, и честнее всего подвести её итог так, как требует <<режим инфраструктуры>>: тремя списками — что построено, что не построено, что готовится дальше. Без смешения одного с другим.
Построено и проверено.
- Рациональная метрика на : расстояние и четыре аксиомы метрики, все доказанные (одна конструкция под тремя именами —
Q_dist,qdist,Qdist). - Абстрактная метрическая рамка: метрическое пространство как параметрическая
Section, с понятиями Коши, предела, сжатия и общими леммами — без аксиом (в файле зафиксировано восемнадцать проверенных результатов, включая слои иQVec). - Процессное условие Коши через рациональное расстояние —
metric_cauchy, доказанно эквивалентное обычномуis_Cauchy(теоремаmetric_cauchy_equiv). - Конечногоризонтная наблюдаемая дистанция на пространстве процессов —
process_dist, взвешенная сумма расхождений до уровня . - Мосты между типами процессов:
CauchySeq,RealProcessи общийGenProcessсшиты в одну согласованную картину (ProcessBridge.v,cauchy_seq_is_gen_process).
Не построено в этой главе.
- Фактор-тип
RealPointкак Rocq-объект здесь не строится — глава работала с процессами и рациональными расстояниями. - Метрика на классах
RealPointкак отдельная Rocq-структура в этой главе не вводится — но в репозитории она построена (файлRealPointMetric.v:rp_distс аксиомами метрики иrp_dist_Proper— независимостью от выбора представителя); см. § 1.8.2. - Полная метрическая полнота пространства этих классов — не доказана; полнота введена как понятие (§ 1.6), не как теорема о конкретном пространстве.
Готовит дальше.
- Открытые шары и понятие <<близких процессов>> — материал § 5.2, топологии.
- Непрерывность как сохранение близости — материал § 5.3; заделом служат леммы
cauchy_map_lipschitzиprocess_map_cauchyэтой главы.
Метрика на классах: построена
{
Список <<не построено>> относится к этой главе и её семи опорным
файлам. Сама же метрика на классах RealPoint в репозитории
построена — отдельным файлом RealPointMetric.v; стоит
назвать конкретно, чем именно, чтобы граница главы была очерчена точно.
Во-первых, поточечное расстояние как именованная конструкция — причём сразу со значениями в вещественных, а не рациональных: расстояние двух точек само есть точка (процесс),
то есть как процесс. Во-вторых — те самые две леммы. Первая:
процесс расстояний есть Коши (cauchy_abs_is_cauchy — та
оценка-набросок из § 1.4.2, ставшая теоремой). Вторая: rp_dist
согласовано с эквивалентностью — замена представителей на
эквивалентные не меняет расстояния (rp_dist_compat и инстанс
rp_dist_Proper). Именно вторая лемма спускает
расстояние с процессов на классы и превращает RealPoint в
метрическое пространство. Сверх того, доказаны и четыре аксиомы
метрики — неотрицательность (rp_dist_nonneg), нуль на
диагонали (rp_dist_self_zero), симметрия
(rp_dist_sym), треугольник (rp_dist_triangle) —
и сверх них разделимость (rp_dist_eq_zero_iff). Так что от
метрики на классах главу отделяет уже не пробел: она построена, хотя и
не в семи файлах этой главы, а в RealPointMetric.v.
Открытым остаётся лишь следующий слой — метрическая полнота
пространства классов (§ 1.6).
}
Мост к многомерному анализу
Одно замечание на будущее. Файл MetricSpace.v содержит не
только расстояние на , но и -метрику на
рациональных векторах QVec — расстояние, равное
наибольшему из покоординатных расхождений (list_max_dist),
с доказанными для него четырьмя свойствами метрики. В настоящей главе
этот материал не разворачивается — глава осталась в одномерном
расстоянии. Но стоит отметить его как мост: процессная метрика
не привязана к одному измерению, и когда том дойдёт до многомерного
анализа и оптимизации, -расстояние на QVec окажется
готовой отправной точкой.
Итог главы
Глава 5.1 заложила первый аналитический слой Части V — расстояние.
Она прошла путь от простейшего рационального через абстрактную
метрическую рамку к процессным расстояниям — и на каждом шаге
держала границу между тем, что доказано, и тем, что лишь намечено.
Главный поворот — поточечное расстояние между процессами
само есть процесс, не завершённое число (а наряду с ним
process_dist даёт конечногоризонтную дистанцию — иной
слой); главная осторожность — полнота есть пока понятие, не
теорема. На этом фундаменте Часть V будет строить топологию,
непрерывность и весь дальнейший анализ.
{Итог главы — в трёх частях. Первое: что построено.
Расстояние между рациональными числами — с четырьмя
доказанными аксиомами метрики; абстрактная метрическая рамка как
параметрическая Section; расстояние как процесс —
metric_cauchy над RealProcess, эквивалентное
обычному условию Коши; конечногоризонтная наблюдаемая дистанция
process_dist; мосты между CauchySeq,
RealProcess и GenProcess. Все семь опорных файлов —
без аксиом.}
{Второе: на чём это стоит. Расстояние принимает значения в рациональных числах — завершённого <<>> процессная метрика не требует. Абстрактная секция фиксирует базовую структуру — неотрицательность, нуль на диагонали, симметрию, треугольник; строгая разделимость в неё как общая гипотеза не входит, для рациональной метрики она доказана отдельно. -рассуждения опираются на архимедовость , которая делает дробление точности вычислимо конечным.}
{Третье: что остаётся открытым. Метрика на классах
RealPoint уже построена — вне семи файлов этой главы, в
RealPointMetric.v (rp_dist с аксиомами и
rp_dist_Proper; § 1.8.2). Открытыми остаются полная
метрическая полнота пространства этих классов (полнота введена как
понятие, не как доказанная теорема) и реифицированный фактор-тип
отдельным объектом — последний ToS не строит сознательно, по
(Глава 4.3). Глава дала фундамент — расстояние; топология и
непрерывность, что встанут на нём, — предмет следующих глав
Части V.}
Часть: Часть V. Топология и анализ процессов · Том: «Математика»
Понятия: Логика · Формализация
Навигация: ← Глава 6. P4 как фильтр — Часть IV · Глава 2. Топология и компактность →