От топологии к непрерывности
Что построили предыдущие главы
Часть V строит анализ процессов слой за слоем. Глава 5.1 дала расстояние: метрику на рациональных числах, открытые шары, расстояние как процесс. Глава 5.2 дала топологию: открытые и замкнутые множества, отделимость, компактность, равномерные покрытия. Накоплено всё, что нужно для следующего шага, — и шаг этот называется непрерывность.
Непрерывная функция — это функция, уважающая близость. Если два аргумента близки, близки и значения; малое возмущение входа даёт малое возмущение выхода. Метрика дала смысл слову <<близки>>; топология дала окрестности; теперь можно спросить, какие функции переводят близкое в близкое.
И — сразу же — две главные теоремы, которые непрерывность делает возможными. Теорема о промежуточном значении: непрерывная функция, меняющая знак, где-то обращается в нуль. Теорема об экстремуме: непрерывная функция на отрезке достигает максимума. Это две опоры классического анализа, и обе — предмет настоящей главы.
Два лица непрерывности
С непрерывностью над нужно с самого начала условиться о различии, без которого вся глава звучала бы неточно. Непрерывность бывает двух видов, и над рациональными числами они не совпадают.
Поточечная непрерывность смотрит на каждую точку по отдельности. Функция непрерывна в точке , если для всякой требуемой точности найдётся своя окрестность , в которой значения не отходят от дальше . Размер может зависеть от точки : в одних местах функция может быть полога, в других крута.
Равномерная непрерывность требует большего. Она требует, чтобы можно было выбрать одну на весь отрезок — общую для всех точек сразу. Не <<у каждой точки своя окрестность>>, а <<есть единый масштаб, на котором функция всюду ведёт себя смирно>>.
{ Над действительными числами есть классическая теорема — теорема Кантора–Гейне, — которая говорит: на отрезке (на компакте) эти два вида непрерывности совпадают. Поточечно непрерывная функция на автоматически равномерно непрерывна. Над это не так. И причина та же, что рушила Гейне–Бореля в § 2.5, — неполнота . Рациональный отрезок дыряв, и поточечной непрерывности не хватает, чтобы стянуть все локальные в одну глобальную. }
Из этого следует ключевой факт о строении главы. Обе главные теоремы — о промежуточном значении и об экстремуме — формализованы с гипотезой равномерной непрерывности, не поточечной. Не потому, что формализация слаба, а потому, что над равномерность — это именно то, что нужно, и его приходится требовать явно, раз Кантора–Гейне не действует.
О статусе аксиом: техническое и онтологическое
Как и в Главе 5.2, условимся о словах заранее — иначе теоремы этой главы прозвучат тревожнее, чем следует.
Доказательства теоремы о промежуточном значении и теоремы об
экстремуме используют аксиому classic — объект из
файла ToS_Axioms.v. Но classic — не чужеродный
костыль и не уступка нестрогости. Это техническая
Rocq-аксиома, реализующая онтологический закон логики ToS: закон
исключённого третьего, , в той форме, в какой его принимает
Rocq.
Различие принципиально. В чисто конструктивной математике появление
classic было бы признанием слабости. В ToS это не так:
— закон логики ToS, принятый на уровне самой системы
(Часть I). Когда доказательство <<использует classic>>, оно
не отступает от строгости — оно явно учитывает, что
опирается на закон логики ToS. Поэтому всякий раз, когда глава
отмечает обращение к , это честный учёт уровня, а не
сигнал тревоги. Далее по главе — сквозная отсылка <<по уговору
§ 3.1>>.
Замысел главы
Глава идёт от понятия к теоремам. Сначала — непрерывность как таковая: её топологическое лицо (§ 3.2) и центральный для главы разговор о равномерной непрерывности и границе (§ 3.3). Затем — первая большая теорема: о промежуточном значении, через бисекцию (§ 3.4), и на трёх уровнях типизации (§ 3.5). Затем — вторая: об экстремуме, через измельчение сетки (§ 3.6), в двух версиях формализации (§ 3.7). И наконец — равномерный предел непрерывных функций и итог главы (§ 3.8).
Опорных файлов девять, все сверены с репозиторием дословно. Топологический слой непрерывности — без аксиом; теоремы о промежуточном значении и об экстремуме — с явно учтённым .
Непрерывность: топологическое лицо
Определение через {delta}-{epsilon}
Начнём с простейшего лица непрерывности — поточечного. Непрерывность
функции в точке ToS определяет так: функция непрерывна в точке
, если всякую требуемую точность значения можно обеспечить
достаточной точностью аргумента. Формально — для любого
найдётся радиус такой, что всякий аргумент
ближе к даёт значение ближе к
. Функция непрерывна, если непрерывна в каждой точке.
Это классическое - определение, перенесённое на
рациональный уровень: аргумент, точка, радиусы — рациональные. В
Rocq оно записано в файле Topology.v, с которым глава
познакомилась ещё в § 2.2:
Definition continuous_at (f : Q -> Q) (x : Q) : Prop :=
forall eps, eps > 0 -> exists delta, delta > 0 /\
forall y, Qabs (y - x) < delta -> Qabs (f y - f x) < eps.
Definition continuous (f : Q -> Q) : Prop :=
forall x, continuous_at f x.Для работы с приращением удобна вторая, родственная форма того же
понятия — непрерывность на интервале. Она спрашивает о
поведении на отрезке и измеряет изменение через
приращение : малое даёт малое изменение . В
репозитории эта форма записана в UniformConvergence.v:
Definition continuous_on (f : Q -> Q) (a b : Q) : Prop :=
forall x : Q, a <= x -> x <= b ->
forall eps : Q, 0 < eps ->
exists delta : Q, 0 < delta /\
forall h : Q, Qabs h < delta ->
a <= x + h -> x + h <= b ->
Qabs (f (x + h) - f x) < eps.continuous_on f a b — та же поточечная непрерывность,
ограниченная отрезком и записанная через приращение. Это — главная
интервальная форма определения непрерывности среди опорных файлов
главы; именно она удобна для теорем о равномерных пределах, к которым
глава придёт в § 3.8.
Алгебра непрерывных функций
Непрерывность — свойство устойчивое: оно переживает основные
операции над функциями, и потому из немногих простейших непрерывных
функций можно построить богатый класс. Проследим это построение;
каждый его шаг подтверждён доказанной леммой Topology.v.
{
Простейшие функции непрерывны. Тождество
непрерывно — малое изменение аргумента есть в точности малое
изменение значения (лемма identity_continuous). Постоянная
функция непрерывна тривиально — значение не меняется вовсе
(constant_continuous). Сдвиг непрерывен
(add_const_continuous). Это отправные кирпичи.
}
{
Операции сохраняют непрерывность. Сумма двух непрерывных в
точке функций непрерывна в этой точке (continuous_at_sum);
отрицание непрерывной непрерывно (continuous_at_neg);
композиция непрерывных непрерывна (continuous_at_comp).
Каждая из этих лемм Topology.v замыкает класс непрерывных
функций относительно ещё одной операции.
}
Сложив отправные кирпичи с этими операциями, получаем сразу многое:
сложением, отрицанием, сдвигом и композицией из тождества и
постоянных строится богатый класс непрерывных функций. Полное
утверждение — что непрерывны все многочлены — требует ещё
одного звена: леммы о сохранении непрерывности при умножении. Среди
лемм Topology.v, на которые глава здесь опирается
(continuous_at_sum, continuous_at_neg,
continuous_at_comp и отправные identity_ continuous, constant_continuous), такого звена нет;
замыкание относительно умножения — стандартное расширение алгебры
непрерывных функций, и глава оставляет его именно расширением, не
приписывая Topology.v большего, чем там доказано. Важно
другое: фундамент — устойчивый, замкнутый относительно основных
операций класс непрерывных функций — заложен, и на него можно
опираться.
Прообраз открытого открыт
У непрерывности есть и второе лицо — чисто топологическое, без и , на одних открытых множествах. И его ToS не постулирует отдельно, а выводит из - определения — показывая, что два описания непрерывности суть одно.
Рассуждение таково. Пусть непрерывна и — открытое множество. Возьмём точку , чей образ лежит в . Раз открыто, вокруг есть запас свободного пространства — шар радиуса , целиком лежащий в . Раз непрерывна в , этому отвечает : всякий аргумент ближе к даёт значение ближе к , — то есть значение, всё ещё попадающее в . Значит, весь -шар вокруг переходит под в : у точки есть запас свободного пространства в прообразе. А это и значит, что прообраз открыт. Так из - непрерывности выводится топологическая:
Theorem continuous_preserves_open_preimage : forall f S,
continuous f -> is_open S ->
is_open (fun x => S (f x)).Это утверждение — доказанная в Topology.v теорема,
подтверждающая проведённый вывод: прообраз открытого множества под
непрерывной функцией открыт. В классической топологии им часто
определяют непрерывность: непрерывная функция — та, что не
разрывает открытость при взятии прообраза. ToS получает это
определение не как постулат, а как следствие -
определения — два лица непрерывности оказываются согласованы.
Здесь видна и прямая связь с Главой 5.2. Открытое множество, бывшее там центральным понятием топологии, становится теперь пробным камнем непрерывности: непрерывная функция — ровно та, что уважает топологическую структуру, построенную предыдущей главой.
И заметим, на чём всё это стоит. Топологическое лицо непрерывности —
- определение, алгебра непрерывных функций,
вывод теоремы о прообразе — получено конструктивно, без
обращения к законам логики; Topology.v, как отмечалось ещё в
§ 2.2, не использует ни одной аксиомы. Аксиомы понадобятся
дальше — когда глава перейдёт к двум большим теоремам анализа.
Разбор E/R/R: непрерывность как система
Непрерывность — система, и к ней приложима методология E/R/R
(Часть I). Разбор разворачивает разметку, уже стоящую в заголовке
опорного файла, где непрерывность названа прямо: правило —
непрерывность есть конституция: прообраз открытого открыт.1 Ведём разбор в онтологическом
порядке Rules Roles Elements. Оговорка о статусе — та же,
что в Главах 5.1–5.2: непрерывность здесь — свойство функций
, не отображений фактор-классов; <<система>> —
содержательная онтологическая интерпретация, не объект
System .
Rules — правила (закон ). Сама непрерывность есть конституция — в двух равносильных формах: локальной (-) и топологической (<<прообраз открытого открыт>>); § 3.2.3 показал, что это одно правило, записанное дважды. К нему примыкает конкретный слой — замыкание класса непрерывных функций относительно суммы, отрицания, сдвига и композиции (§ 3.2.2); всё это конструктивно, без аксиом. Но над у правил непрерывности есть вынужденное усиление: поточечной формы недостаточно для теорем анализа, ибо Кантора–Гейне над неверна (§ 3.3.2). Поэтому в правила входит требование равномерности, а конструктивным мостом к ней служит липшицевость (§ 3.3.3). Это — Rule-уровневое следствие неполноты , объясняющее, почему обе большие теоремы несут равномерную непрерывность в гипотезе. Наконец, у каждой теоремы — своё правило-конструкция: бисекция (знак в середине выбор половины) и измельчение сетки.
Roles — значимость позиций (закон ). Функция играет роль отображения — перевода входа в выход; непрерывность наделяет её одной из качественных позиций: непрерывна в точке, равномерно непрерывна, липшицева — режимы, в которых функция уважает близость с разной силой. В двух больших теоремах роль иная: искомый объект — корень или максимизатор — играет роль Cauchy-процесса в , сходящегося к перемене знака или к супремуму.2 Здесь же — тонкое ролевое различение § 3.6.3: у максимума роль значения (процесс супремума, Коши) первична, а роль позиции (argmax) производна и хрупка.
Elements — носители (закон и принцип ). Элементы — сами функции и точки , на которых они определены. В процессах двух теорем носители конечны на каждом шаге: середины вложенных отрезков (бисекция) и узлы сетки (экстремум) — всякий кадр обозрим, в духе ; завершённый <<корень>> или <<точка максимума>> могут быть иррациональны и как готовый элемент не существуют — актуальны лишь конечные приближения.
Сведём разбор в таблицу.
| Компонент | Что фиксирует | E/R/R |
|---|---|---|
| функции , точки | носители | Element |
| отображение; режимы: непрерывна / равномерно / липшицева | роли-позиции | Role |
| непрерывность (- прообраз открытого открыт) | конституция | Rule (конструкт.) |
| замыкание по сумме, композиции, сдвигу | алгебра | Rule (конструкт.) |
| равномерность как требование (Кантор–Гейне над неверна) | усиление правила | Rule (неполнота, ) |
| бисекция, измельчение сетки | конструкции теорем | Rule |
| законы – | универсальный слой | Rule (универс.) |
Хорошая сформированность. Разметка однозначна: функции суть элементы, режимы непрерывности — роли, критерий непрерывности — правило. Самореференции нет: критерий квантифицирует по аргументам и стоит над значениями функции — по операция выше операндов. Непрерывность хорошо сформирована.
Разбор проясняет две тонкости, к которым глава придёт дальше. Три уровня теоремы о промежуточном значении (§ 3.5) — это, по , три интенсионально различных представления одного корня: три ответа на вопрос <<что есть корень>>, согласованных по содержанию, но разных по типу. А argmax теоремы об экстремуме (§ 3.7) — это -выделенная роль-позиция: порядок делает выбор максимизатора однозначным там, где значений-претендентов несколько. И тот же разбор задаёт образец Части V: каждое аналитическое понятие читается как система со своей E/R/R-структурой.
Равномерная непрерывность и граница {Равномерная непрерывность и граница Q}
Определение равномерной непрерывности
§ 3.2 дало поточечную непрерывность. Теперь нужно её усиление — понятие, на котором будет стоять вся вторая половина главы.
Поточечная непрерывность позволяет зависеть от точки: у каждого — своя окрестность. Для двух больших теорем анализа этого мало; им нужен единый масштаб — одна , годная сразу для всего отрезка. Это требование и выделяет равномерную непрерывность: функция равномерно непрерывна на , если для всякой требуемой точности можно указать одну такую, что любая пара аргументов отрезка, отстоящих меньше чем на , даёт значения, отстоящие меньше чем на . В Rocq это записано так:
Definition uniformly_continuous_on (f : Q -> Q) (a b : Q) : Prop :=
forall eps : Q, eps > 0 -> exists delta : Q, delta > 0 /\
forall x y : Q, a <= x <= b -> a <= y <= b ->
Qabs (x - y) < delta -> Qabs (f x - f y) < eps.Всё различие с поточечной непрерывностью § 3.2 — в порядке кванторов. Там стояла внутри квантора по точке: <<для каждой точки — своя >>. Здесь вынесена наружу, перед квантором по и : одна на весь отрезок. Перестановка двух кванторов — и получается принципиально иное, более сильное свойство: единый масштаб, на котором функция ведёт себя смирно всюду на сразу.
{
Об этом понятии нужно сказать одно честное слово — о его
статусе в нашем построении. Канонический головной файл теории
непрерывности теперь есть — analysis/Continuity.v: в нём
сведены воедино определения continuous_on,
uniformly_continuous_on и Lipschitz_on (для
на отрезке ), доказан мост
lipschitz_uniform (липшицевость влечёт равномерную
непрерывность) и переход uniformly_continuous_pointwise, а
с ними элементарная алгебра (константа, тождество, сумма) — всё без
аксиом. Честная оговорка, однако, двоякая. Во-первых, миграция:
существующие большие теоремы — IVT_ERR.v,
EVT_ERR.v, EVT_idx.v,
HeineBorelComplete.v — пока не переведены на этот
головной файл: каждая по-прежнему несёт своё локальное, дословно
повторяющееся определение uniformly_continuous_on, и
сведение их к канону отложено (чтобы не вызывать каскад правок в уже
доказанном). Во-вторых, обратного перехода — от поточечной
непрерывности к равномерной — в каноне нет, и это не упущение: над
он неверен (теорема Кантора–Гейне, к которой глава переходит
ниже). Так что головной файл задаёт канон и Липшицев путь к
равномерности, но единой теорией, на которую опираются все
теоремы главы, он станет лишь после миграции.
}
Кантора–Гейне над Q неверна
Теперь — центральный для главы факт. И подать его надо так же прямо, как в § 2.5 был подан провал Гейне–Бореля.
Над поточечная непрерывность на отрезке не влечёт равномерную. Классическая теорема Кантора–Гейне над неверна.
Классическая теорема Кантора–Гейне утверждает: функция, поточечно непрерывная на замкнутом ограниченном отрезке, на нём автоматически равномерно непрерывна. Над действительными числами это так. Над рациональными — нет.
Корень — тот же, что и у провала Гейне–Бореля в § 2.5: неполнота . Классическое доказательство Кантора–Гейне опирается на компактность отрезка в полном смысле: из любого покрытия локальными -окрестностями извлекается конечное подпокрытие, и минимум конечного набора даёт искомую глобальную . Над этот ход не проходит. Рациональный отрезок не компактен в классическом смысле (§ 2.5): покрытие может <<утекать>> в иррациональный зазор, и локальные , мельчая к зазору, не дают положительного минимума. Поточечная непрерывность остаётся — а стянуть её в равномерную нечем.
Это не дефект формализации. Это математический факт о , прямое продолжение того, что Глава 5.2 установила о компактности. Рациональная прямая дырява, и дыры мешают равномерности так же, как мешали конечному подпокрытию.
У этого факта есть простое, вполне осязаемое лицо — конкретный пример. Возьмём функцию
на рациональном отрезке . Для всякого рационального знаменатель отличен от нуля — иррационально, рациональный квадрат двойке не равен, — поэтому функция определена и поточечно непрерывна в каждой точке отрезка. Но равномерно непрерывной она не является. Рациональные точки могут подходить к иррациональному разрезу сколь угодно близко, и у самого разреза значения растут неограниченно. Никакой единой , годной на всём рациональном отрезке сразу, для такой функции нет: чем ближе к , тем мельче приходится брать окрестность. Это и есть конкретное лицо неполноты — локальная непрерывность есть в каждой точке, а глобальной равномерности нет, потому что отрезок дыряв и функция пользуется дырой.3
Конструктивная замена: липшицевость
Если мост <<непрерывность равномерность>> над обрушен, нужен другой путь к равномерной непрерывности — такой, который над держит, не опираясь на полноту. Такой путь ToS и прокладывает, и ведёт он через липшицевость.
Функция липшицева с константой , если расстояние между
значениями не превосходит , помноженного на расстояние между
аргументами: . Из этого свойства
равномерная непрерывность следует прямым счётом. В самом деле: задано
; возьмём (при ); тогда
для всякой пары аргументов ближе имеем
.
Одна , годная сразу для всего отрезка, не подобрана наугад, а
вычислена по и . Вырожденный случай —
постоянная функция — ещё проще: годится любая . Этот вывод
формализован в HeineBorelComplete.v (с этим файлом глава
встречалась в § 2.6) теоремой:
Theorem lipschitz_uniform_cont : forall f a b L,
Lipschitz_on f a b L ->
uniformly_continuous_on f a b.Вот в чём смысл этой замены. Над путь к равномерной непрерывности шёл так: непрерывность (по Кантору–Гейне) равномерность. Над первая стрелка сломана. Но есть обходной путь: липшицевость равномерность, — и этот путь конструктивен, он не зависит от полноты. Там, где классика пользуется недоказуемой над импликацией, ToS пользуется доказуемой: липшицевость — проверяемое, вычислимое свойство, и из него равномерная непрерывность следует прямым счётом.
{
И вокруг этого моста — та же алгебра, что в § 3.2 окружала
поточечную непрерывность. Сумма, масштабирование и композиция
равномерно непрерывных функций снова равномерно непрерывны, тождество
и постоянная равномерно непрерывны: класс равномерно непрерывных
функций так же замкнут и богат, как класс непрерывных. Эти замыкания
подтверждены в HeineBorelComplete.v леммами
uniform_cont_sum, uniform_cont_scale,
uniform_cont_composition.
}
Почему теоремы анализа требуют равномерной непрерывности
Теперь видно, почему обе главные теоремы главы — о промежуточном значении (§ 3.4) и об экстремуме (§ 3.6) — формализованы с гипотезой именно равномерной непрерывности.
Это прямое следствие § 3.3.2. Над можно было бы записать эти теоремы с гипотезой поточечной непрерывности — а равномерность получить попутно, из Кантора–Гейне. Над так нельзя: Кантора–Гейне не действует. Значит, равномерность, которая в доказательствах реально нужна (нужен единый , чтобы оценки работали по всему отрезку сразу), приходится требовать явно — внести в гипотезу теоремы. В терминах разбора § 3.2.4 это усиление правила: над конституция непрерывности требует равномерной формы.
И это, по логике всей Части V, — не слабость, а точность. Теорема,
честно записанная над , обязана нести в условии ровно то, на чём
стоит её доказательство. Гипотеза uniformly_continuous_on
в формулировках IVT и EVT — не лишняя предосторожность, а точное
указание уровня: вот при каком условии теорема над верна. Когда
в § 3.4 и § 3.6 глава будет читать сигнатуры главных теорем, эта
гипотеза будет стоять там не случайно — она поставлена туда
неполнотой .
Теорема о промежуточном значении: бисекция
Замысел теоремы
Первая большая теорема главы — теорема о промежуточном значении. Классическая формулировка проста и наглядна: если непрерывная функция на концах отрезка имеет значения разных знаков — и , — то где-то между и она обращается в нуль. Непрерывная функция не может перескочить через нуль, не коснувшись его.
Классика говорит: существует точка с . ToS, по
, говорит иначе. Завершённой точки может и не быть —
корень способен оказаться иррациональным, а иррационального числа в
нет. Поэтому ToS строит не точку, а процесс: алгоритм,
который шаг за шагом всё точнее локализует, где функция переходит
через нуль. Корень — это сам процесс, не его недостижимый предел.
Как именно мы строим этот процесс — предмет следующего
подраздела; построенная конструкция целиком формализована в файле
IVT_ERR.v (424 строки, двадцать три доказанные теоремы, ни
одного незакрытого места).
Алгоритм бисекции
Процесс, локализующий корень, мы строим бисекцией — делением пополам. Идея проста. Перемена знака заперта внутри отрезка ; поделим отрезок надвое и посмотрим, в какой половине заперта она теперь. Знак функции в середине отрезка — решает: если в середине отрицательна, перемена знака ушла в правую половину, если неотрицательна — в левую. Берём ту половину, где перемена знака осталась, и повторяем. Отрезок ужимается вдвое за шаг, а перемена знака на его концах не теряется.
Чтобы это формализовать, опишем состояние процесса — пару концов текущего отрезка — и шаг, переводящий состояние в состояние:
Record BisectionState := mkBisection { bis_left : Q; bis_right : Q }.
Definition bisection_step (f : ContinuousFunction) (s : BisectionState)
: BisectionState :=
let mid := (bis_left s + bis_right s) / 2 in
if Qlt_le_dec (f mid) 0
then mkBisection mid (bis_right s)
else mkBisection (bis_left s) mid.Так IVT_ERR.v записывает один шаг бисекции. mid —
середина; Qlt_le_dec проверяет знак в ней; в
зависимости от знака новым состоянием становится правая половина
или левая
— ровно та половина, где перемена знака
сохранилась.
Существенно здесь одно — Qlt_le_dec. Это решающая
процедура: для рациональных чисел вопрос << или
?>> решается вычислением, за конечное
время, без всякого обращения к закону исключённого третьего. Выбор
половины здесь конструктивен — и этим бисекция IVT отличается от
бисекции Больцано–Вейерштрасса (§ 2.7), где выбор населённой
половины не вычислялся и требовал .
Шаг бисекции построен; теперь надо повторять его и собирать
результат в процесс. Применив шаг раз к начальному отрезку
и взяв середину получившегося отрезка, мы получаем -е
приближение корня. Последовательность этих середин и есть искомый
процесс — локализатор корня. В IVT_ERR.v итерация шага и
сам процесс записаны так (bisection_iter применяет шаг
раз, bisection_process выдаёт середину):
Definition bisection_process (f : ContinuousFunction) (a b : Q)
: RealProcess :=
fun n => let s := bisection_iter f (mkBisection a b) n in
(bis_left s + bis_right s) / 2.На шаге процесс выдаёт середину -го вложенного отрезка — рациональное приближение корня тем точнее, чем больше .
Ширина и свойство Коши
Чтобы последовательность середин была осмысленным приближением корня, вложенные отрезки должны стягиваться к точке — иначе <<приближение>> ни к чему не приближается. Убедимся, что они стягиваются, и установим, что процесс середин — процесс Коши.
Каждый шаг бисекции делит отрезок ровно пополам; значит, после
шагов ширина отрезка есть в точности . Это устанавливает
лемма bisection_width. Дальше работает архимедовость :
величина становится меньше любой наперёд заданной за
конечное число шагов. А раз отрезки вложены и ширина их стремится к
нулю, середины сближаются: для всякой точности найдётся шаг, после
которого все середины лежат теснее требуемого, — то есть процесс
середин есть процесс Коши. Этот вывод подтверждён в IVT_ERR.v
леммами bisection_shrinks и bisection_is_Cauchy.
Процесс бисекции — полноценный Cauchy-процесс в смысле Главы 5.1;
темп его сходимости — за шаг.
Слабый инвариант знака
Чтобы бисекция работала, на концах каждого вложенного отрезка должна сохраняться перемена знака. Спросим точно: какой инвариант мы можем здесь доказать?
Естественно было бы ждать строгого инварианта: на концах каждого отрезка и . Но строгий инвариант над недоказуем — и вот почему. Середина отрезка — рациональное число; — функция . Вполне может случиться, что окажется точно равно нулю: для рациональной функции это не исключение, а возможный случай. Если такое произошло, на новом конце отрезка обращается в нуль ровно — и строгое неравенство там нарушено.
{
Значит, доказуемый инвариант — слабый:
и , с нестрогими неравенствами. И этого вполне
достаточно. Если в какой-то середине обратилась точно в нуль —
тем лучше, корень найден буквально; а если нет — слабый инвариант
продолжает зажимать перемену знака между концами. Именно слабый
инвариант — то, что нужно теории, и именно его IVT_ERR.v
и доказывает, под именем bisection_preserves_signs_weak;
слово weak в имени стоит не случайно. Слабая формулировка —
не небрежность, а точный учёт того, что над функция может
попасть в нуль ровно.
}
Главная теорема
Все части собраны: бисекция строит вложенные отрезки, ширина их
стремится к нулю, процесс середин есть Коши, слабый инвариант
удерживает перемену знака. Собрав их, получаем теорему о промежуточном
значении — в IVT_ERR.v она записана так:
Theorem IVT_process : forall (f : ContinuousFunction) (a b : Q),
a < b -> uniformly_continuous_on f a b ->
f a < 0 -> f b > 0 ->
exists c : RealProcess, is_Cauchy c /\ in_interval a b c /\
equiv (apply_to_process f c) (fun _ => 0).Прочтём её внимательно — здесь сразу две точки точности.
Первое — гипотеза. В условии стоит
uniformly_continuous_on, равномерная непрерывность, не
поточечная. Это ровно то, о чём говорил § 3.3.4: над
Кантора–Гейне не действует, и равномерность — то, что реально
нужно доказательству (единый , чтобы оценка
работала на любом шаге), — внесена
в гипотезу явно.
Второе — заключение. Теорема даёт не <<точку с
>>, а процесс — Cauchy-процесс, лежащий в , —
для которого equiv (apply_to_process f c) (fun _ => 0).
Это значит: процесс значений эквивалентен нулевому
процессу. Не << равно нулю буквально>>, а <<процесс
сколь угодно близок к нулю>>. Разница принципиальна и снова идёт от
: буквальный корень над может не существовать (он
иррационален), но процесс, чьи значения под неотличимо
приближаются к нулю, существует и построен — это сама
бисекция.
И — по уговору § 3.1 — об основании. Доказательство опирается на
архимедовость и через неё — на classic, аксиому,
приходящую в файл из Archimedean_ERR. По уговору:
classic — техническая Rocq-реализация .
Обращение к ней — явный учёт уровня. Сам выбор половины, отметим,
конструктивен (Qlt_le_dec); нужен не для выбора, а
в архимедовой части рассуждения.
IVT на трёх уровнях
Один факт, три высоты типизации
Теорема о промежуточном значении формализована в ToS трижды —
не из повторения, а потому, что один и тот же математический факт
можно записать на разной высоте типизации. Три файла —
IVT_ERR.v, ProcessIVT.v, IVT_CauchyReal.v —
дают три уровня. § 3.4 разобрал нижний; теперь — два верхних.
Уровень процесса
На первом уровне корень был RealProcess — функцией
, голой последовательностью рациональных чисел, к которой
свойство Коши приложено отдельной леммой. Поднять результат на
уровень процессов в смысле ProcessCore — того
аппарата, на котором стоит вся Часть V, — значит переписать теорему
в его языке. Это и делает второй уровень.
{
Основная работа здесь — навести мосты совместимости. Загвоздка
техническая: свойство Коши определяется двумя чуть разными способами.
Archimedean_ERR, откуда пришла бисекция, формулирует его
через условие ; ProcessCore формулирует через
. Условия равносильны — с точностью до сдвига на
единицу, — но формально это разные предикаты, и прежде чем
переносить теорему, надо их равносильность доказать. Доказав её, мы и
получаем мосты: cauchy_compat (свойства Коши совпадают),
interval_compat (совпадают определения <<лежать в
>>), equiv_compat (совпадают определения
эквивалентности процессов). По этим мостам теорема о промежуточном
значении переписывается в типах ProcessCore как
process_IVT, а ivt_convergence_rate фиксирует
темп — . Всё это — содержание файла ProcessIVT.v
(175 строк).
}
Новых математических трудностей на этом уровне нет: бисекция и её
сходимость уже доказаны, здесь — лишь аккуратная стыковка теоремы с
языком процессов ToS. И своих аксиом этот уровень не вносит:
classic он наследует от IVT_ERR, ничего к нему не
добавляя.
Уровень типа: корень как CauchySeq
Третий уровень — IVT_CauchyReal.v (382 строки) —
делает шаг тоньше. На первых двух уровнях корень был
последовательностью, а свойство Коши — отдельным утверждением о ней.
Здесь корень предъявляется как объект типа CauchySeq —
типа, в который Коши-свойство встроено. Носить с собой
доказательство свойства Коши отдельно больше не нужно: оно стало
частью самого объекта.
Theorem ivt_cauchy_real :
forall (f : ContinuousFunction) (a b : Q),
a < b -> uniformly_continuous_on f a b ->
f a < 0 -> f b > 0 ->
exists c : CauchySeq,
(forall n : nat, a <= cs_seq c n /\ cs_seq c n <= b) /\
(forall eps : Q, 0 < eps ->
exists N : nat, forall n : nat,
(N <= n)%nat -> Qabs (f (cs_seq c n)) < eps).Корень — c : CauchySeq: не <<последовательность, про которую
доказано, что она Коши>>, а объект, чья типовая принадлежность
уже несёт доказательство свойства Коши.
Существенная для этого уровня лемма —
continuous_compose_cauchy. Она утверждает: если
равномерно непрерывна, а — Cauchy-последовательность в ,
то и композиция — снова Cauchy. Равномерная
непрерывность сохраняет свойство Коши. И здесь опять видно, зачем
нужна именно равномерная непрерывность, а не поточечная: общий
позволяет из близости членов заключить близость членов
единообразно, не подбирая заново под каждую точку.
Главная теорема ivt_cauchy_real и её следствие
ivt_cauchy_real_equiv (которое выражает результат через
cauchy_equiv с постоянным нулём) стоят на этой лемме.
Зачем три уровня
Стоит сказать, зачем один факт записан трижды. Дело не в избыточности, а в интенсиональной точности — в принципе .
{
Три уровня — это три ответа на вопрос <<что есть корень>>. На уровне
IVT_ERR — голая последовательность плюс отдельная справка
о её свойстве Коши. На уровне ProcessIVT — процесс в смысле
ProcessCore, встроенный в общий аппарат Части V. На уровне
IVT_CauchyReal — объект, в типе которого
свойство Коши уже записано. Математическое содержание — бисекция,
сходящаяся к перемене знака — одно. Но как объект задан,
что он есть интенсионально — меняется от уровня к уровню. По
это и значит, что перед нами три разных, хотя и согласованных,
представления одного факта. ToS строит лестницу типизации, и теорема о
промежуточном значении прописана на каждой её ступени. В терминах
разбора § 3.2.4 это три роли-представления одного корня — разные по
типу, согласованные по содержанию ().
}
Теорема об экстремуме: сетка
Замысел теоремы
Вторая большая теорема главы — теорема об экстремуме. Классическая формулировка: непрерывная функция на замкнутом отрезке достигает на нём своего максимума — есть точка , в которой не меньше всех остальных значений.
И снова ToS читает <<достигает>> по . Завершённой точки максимума может не быть — способна оказаться иррациональной. Поэтому максимум строится как процесс: последовательность всё более подробных приближений. Но здесь, в отличие от теоремы о промежуточном значении, процессов оказывается два, и они ведут себя по-разному. Это — узловая точность раздела, и к ней § 3.6.3 вернётся отдельно.
Опорные файлы EVT — три: EVT_ERR.v как историческая
argmax-версия, EVT_idx.v как текущая рекомендуемая
index-версия, и process-обёртка ProcessEVT.v. В § 3.6 мы
объясним общую конструкцию — сетку и процесс значений; в § 3.7
разберём, почему текущей основной версией является именно
EVT_idx.v.
Сетка
Инструмент теоремы об экстремуме — не бисекция, а сетка. Бисекция годилась для корня: знак функции в середине указывал, какую половину взять. Для максимума такого указателя нет — максимум может прятаться где угодно на отрезке. Поэтому максимум мы ищем иначе: расставляем на отрезке конечный равномерный набор пробных точек, вычисляем во всех узлах, берём наибольшее — и затем измельчаем сетку, добавляя узлы. Чем гуще сетка, тем точнее наибольшее значение по узлам приближает истинный максимум.
Узел сетки строится прямой формулой: -й из равноотстоящих узлов отрезка есть . В Rocq это записано так:
Definition grid_point (a b : Q) (n k : nat) : Q :=
a + (inject_Z (Z.of_nat k)) * (b - a) / (inject_Z (Z.of_nat n)).При это , при — , между — равномерные узлы;
grid_list собирает их в конечный список. Измельчение —
это рост : на шаге сетка тем гуще, чем больше.
И здесь стоит отметить в работе. Процесс поиска максимума разворачивается бесконечно — но всякий его кадр — конечный, обозримый список узлов, на котором вычисляется конечным числом операций. Никакой завершённой бесконечности; на каждом шаге — актуально конечная сетка.
Значение против позиции
Теперь — узловая точность всего раздела. На сетке у максимума два аспекта, и над они ведут себя по-разному.
Значение максимума — max_on_grid, наибольшее из
значений по узлам сетки. Позиция максимума —
argmax, тот узел, на котором это наибольшее значение
достигается. С измельчением сетки оба, казалось бы, должны сходиться.
Но это не так.
{
Процесс значений — sup_process — сходится. Файл
доказывает sup_process_is_Cauchy: последовательность
наибольших значений по всё более густым сеткам есть процесс Коши.
}
Процесс позиций — argmax_process — сходиться
не обязан. И EVT_ERR.v прямо это оговаривает в
комментарии. Представим постоянную функцию: всюду. Тогда
наибольшее значение достигается в каждом узле сетки. Без
фиксированного правила выбора <<позиция максимума>> здесь вообще не
определена однозначно: при разных допустимых выборах она может
скакать от узла к узлу при каждом измельчении. Процесс значений при
этом безупречно сходится — он попросту постоянен и равен единице.
Index-версия (§ 3.7) как раз вводит такое правило — -порядок
позиций, — чтобы сделать позицию на каждом шаге детерминированной.
Но и детерминированности мало: даже с однозначно выбираемой позицией
процесс argmax_process над Cauchy быть не обязан.
Максимум может приближаться к иррациональной точке, и тогда процесс
рациональных приближений позиции к Cauchy-процессу не сводится; или
позиция может перескакивать с одной стороны на другую при измельчении
сетки. Процесс значений от всех этих бед свободен.
Вывод, который глава должна сформулировать прямо: теорема об экстремуме над доказывает сходимость процесса значений, не процесса позиций. По это и есть верное прочтение <<максимума>>: фундаментален процесс значения супремума; позиция — производное, более хрупкое понятие, требующее дополнительной структуры (изоляции максимума), которой в общем случае нет. В терминах разбора § 3.2.4 перед нами расщепление роли: значение и позиция — две роли максимума, и над Коши-устойчива лишь первая.
Главная теорема
Собрав сетку, процесс наибольших значений и его свойства, мы получаем
теорему об экстремуме. В EVT_ERR.v она записана так:
Theorem EVT_complete : forall f a b,
a < b -> uniformly_continuous_on f a b ->
exists (M : RealProcess) (c : RealProcess),
is_Cauchy M /\
(forall n, a <= c n <= b) /\
(forall n, apply_f f c n == M n) /\
(forall x, a <= x <= b -> process_le (fun _ => f x) M).Теорема даёт два процесса: — процесс значений супремума, и
— процесс приближённых максимизаторов. Утверждается: есть
процесс Коши; лежит в ; на каждом шаге совпадает с
; и мажорирует — значение в любой точке
отрезка не превосходит (с точностью до процессного ).
Гипотеза — снова uniformly_continuous_on, равномерная
непрерывность, по причине из § 3.3.4.
{
И здесь честность требует отметить, чего в этой формулировке
нет — по сравнению с тем, что хотелось бы доказать. Глядя на
§ 3.6.3, естественно ждать в заключении и Коши-свойства для процесса
позиций . Его там нет, и в такой общей формулировке оно стоять не
должно: задача максимизации сама по себе Коши-свойства процесса
позиций не гарантирует. При плато или нескольких равноценных
максимумах выбор позиции требует дополнительного правила; без него
позиционный процесс может оказаться скачущим. Поэтому формулировку
пришлось ослабить — оставить Коши-свойство только за
процессом значений . Именно это — сходимость и его
мажорирующее свойство — и есть честное содержание теоремы об
экстремуме над ; и именно так EVT_complete в
репозитории и сформулирована (комментарий файла отмечает это
ослабление прямо). Глава не выдаёт EVT_complete за полную
классическую теорему: это её отремонтированная, ослабленная — и
потому верная — форма.
}
EVT: argmax-версия, index-версия, обёртка
Две версии главного файла
Теорема об экстремуме формализована в репозитории дважды, и об этих двух формализациях нужно сказать прямо — потому что одна из них наткнулась на затруднение, а другая его обошла.
{
Первая формализация — EVT_ERR.v, argmax-версия. Сегодня
это историческая версия: в её шапке стоит пометка
<<DEPRECATED: Use EVT_idx.v instead>>, и к использованию
рекомендована не она. След того затруднения, ради которого версию
сменили, виден и внутри файла: одна лемма —
max_list_attained — обрывается командой Abort;
доказать её в задуманном виде не удалось, и в дело пошёл обходной
вариант max_list_attained_classical. Мы не прячем этот
Abort — он и есть свидетельство того, что argmax-версия
упёрлась в стену.
}
Вторая формализация — EVT_idx.v — эту стену обходит, и
она же сегодня рекомендуемая, основная. Чтобы понять, почему
понадобилась смена версии, разберём, в чём состояло затруднение и в
чём — его решение.
Index-based решение
Затруднение argmax-версии — тонкое, но показательное. Оно в
различии двух равенств рациональных чисел. Есть равенство
по значению, Qeq: числа и равны как
рациональные. И есть равенство буквальное, лейбницево:
и — разные выражения, разные представления. Узел
сетки grid_point a b n 0 равен по значению
(Qeq), но не буквально — это разные термы. Argmax-версия,
выбирая максимум по значениям, всё время спотыкалась об этот разрыв:
доказательства о том, что максимум достигается, вязли в
согласовании Qeq с лейбницевым равенством.
EVT_idx.v обходит это затруднение переключением внимания —
и приём стоит того, чтобы назвать его прямо: вместо значения наилучшего
узла argmax возвращает его номер, индекс в списке. Не <<какое
значение наибольшее>>, а <<на каком месте оно стоит>>. В Rocq это
записано так:
Definition argmax_idx (f : Q -> Q) (l : list Q) (default : Q) : nat :=
match l with
| [] => O
| x :: xs => find_max_idx_acc f xs 1%nat O (f x)
end.find_max_idx_acc — аккумуляторный обход списка,
возвращающий индекс наилучшего узла; max_on_grid
определяется тогда как от узла, стоящего на этом индексе. Выигрыш
немедленный. Лемма <<максимум на сетке достигается>> —
max_on_grid_attained — в index-версии становится
тривиальной: она доказывается одним словом reflexivity.
Достижение максимума здесь определительно — максимум по
построению есть от узла на найденном индексе, — и согласовывать
Qeq с лейбницевым равенством больше негде. Индексы —
натуральные числа, с равенством у них никаких тонкостей нет. Так
переключение с значения на позицию снимает затруднение, в которое
упёрлась argmax-версия.
L5 и статус argmax
С переходом к индексам проясняется и более глубокий вопрос — что
вообще такое <<позиция максимума>>, когда максимум достигается не в
одной точке. Разберём его; ответ опирается на закон логики ToS, и
тот же ответ зафиксирован в комментарии EVT_idx.v.
Представим плато: на сетке несколько узлов дают одно и то же
наибольшее значение, . Какой из них —
<
Уточним, что значит <<выделенная>> — и при чтении кода здесь стоит
быть внимательным. В аккумуляторе find_max_idx_acc
сравнение узлов идёт через Qle_bool, и обновление
наилучшего индекса происходит при равенстве значений. Если
сетка перечисляется слева направо, выделенной окажется одна позиция;
если список реализует обратный порядок или иначе обновляет при
равенстве — другая. Важно поэтому не <<левая первой>> само по
себе — важно отсутствие произвольного внешнего выбора:
<
Итог секции EVT_STRONG файла — теорема
EVT_strong_process: процесс значений супремума есть Коши,
процесс позиций лежит в , и на каждом шаге значение супремума
совпадает с от позиции. То же честное содержание, что и в
EVT_complete (§ 3.6.4): сходимость доказана для процесса
значений; о процессе позиций комментарий EVT_idx.v
прямо повторяет — над он Коши быть не обязан, его предел может
оказаться иррациональным.
Process-обёртка
{
Третий файл — ProcessEVT.v (133 строки) — играет ту же
роль, что ProcessIVT.v для теоремы о промежуточном значении:
тонкая обёртка, переносящая результат на язык процессов
ProcessCore. Мосты Cauchy-совместимости (evt_cauchy_ compat), sup_process_cauchy, process_EVT;
evt_convergence_rate фиксирует темп — .
}
Здесь важна одна оговорка о согласованности. ProcessEVT.v
оборачивает именно слой EVT_ERR.v — он импортирует
историческую argmax-версию, а не новую index-версию
EVT_idx.v. Поэтому ProcessEVT.v следует читать как
process-адаптацию исторической формулировки теоремы об экстремуме. А
для вопроса о достижении максимума на сетке и для разрешения
затруднения <<Qeq против лейбницева равенства>> главным
файлом остаётся EVT_idx.v.
И — последняя для раздела точность, по уговору § 3.1. Файл
EVT_idx.v устроен в отношении аксиом с особенностью: он
импортирует ToS_Axioms и при этом ещё раз
объявляет Axiom classic локально, внутри самого файла.
Содержательно это тот же — закон исключённого третьего:
по замыслу обе classic — одна и та же техническая
Rocq-реализация закона логики ToS. Но технически файл
объявляет отдельной локальной аксиомой — и при
чтении Print Assumptions эту зависимость следует учитывать
именно как локальное объявление, а не автоматически как тот же самый
объект из ToS_Axioms.v. Глава отмечает это как особенность
файла; на статус доказательства это не влияет — по уговору § 3.1
обращение к есть явный учёт уровня.
Равномерный предел, связь и итог главы
Равномерный предел непрерывных функций
Остаётся последний сюжет главы — и он отвечает на естественный вопрос: сохраняется ли непрерывность при предельном переходе? Если последовательность непрерывных функций к чему-то сходится, будет ли предел непрерывен?
Ответ зависит от вида сходимости — и здесь придётся, как уже было с непрерывностью в § 3.3, различить поточечное и равномерное. Сходимость последовательности функций к функции бывает поточечной: в каждой точке по отдельности значения сходятся к . И бывает равномерной: номер , после которого уже неотличимо близка к , един для всего отрезка сразу. Равномерную сходимость на записывают так:
Definition uniform_converges (fn : fun_seq) (f : Q -> Q) (a b : Q)
: Prop :=
forall eps : Q, 0 < eps ->
exists N : nat, forall n : nat,
(N <= n)%nat -> forall x : Q, a <= x -> x <= b ->
Qabs (fn n x - f x) < eps.И здесь — та же перестановка кванторов, что отличала равномерную непрерывность от поточечной (§ 3.3). При равномерной сходимости номер вынесен наружу, перед квантором по точке: после шага все функции отстоят от ближе сразу во всех точках. Этого — и только этого — хватает, чтобы непрерывность пережила предельный переход:
Theorem uniform_limit_continuous_on :
forall (fn : fun_seq) (f : Q -> Q) (a b : Q),
uniform_converges fn f a b ->
(forall n : nat, continuous_on (fn n) a b) ->
continuous_on f a b.Равномерный предел непрерывных функций непрерывен. Если все непрерывны на и сходятся к равномерно, то и непрерывна. Доказательство — классический приём <<>>: расстояние разбивается на три части — от к близкому , от к по непрерывности , и обратно от к , — и каждая делается меньше . Это полноценная содержательная теорема о непрерывности, и она завершает понятийную линию главы: непрерывность не только определена и снабжена двумя большими теоремами, но и устойчива относительно равномерного предельного перехода.
Одна честная оговорка о границах. Файл
UniformConvergence.v — шире этой одной теоремы: в нём есть
и обмен предела с интегралом, и обмен с производной, и теорема Дини.
Но эти сюжеты опираются на интегрирование и дифференцирование — на
аппарат, который Часть V строит позже. Глава 5.3 берёт из
UniformConvergence.v только то, что относится собственно к
непрерывности, — определение continuous_on и теорему о
равномерном пределе. Обмен предела с интегралом и производной —
материал одной из последующих глав Части V.
{
И — по уговору § 3.1 — слово об аксиомном статусе. Шапка файла
UniformConvergence.v объявляет, что файл в целом
импортирует классический слой — classic приходит в него
через смежные результаты о монотонной сходимости и дифференцировании.
Само доказательство uniform_limit_continuous_on имеет
стандартный -вид. Однако без отдельной проверки
Print Assumptions именно этой теоремы глава не утверждает
её аксиомной чистоты — по правилу аудита, заведённому ещё в
Главе 4.6: аксиомный статус устанавливается по Print Assumptions конкретной теоремы, а не приписывается ей от
заголовка файла. Поэтому глава использует
uniform_limit_continuous_on как рабочий результат о
равномерных пределах, а суждение о его аксиомной чистоте оставляет
этой проверке.
}
Смежная заготовка: отображения процессов
{
Стоит, чтобы карта была полной, упомянуть ещё один файл —
ProcessContinuity.v. Имя обещает теорию непрерывности, но
содержание иное, и честнее сказать это прямо. Файл маленький (36
строк) и говорит не о непрерывности функций , а об
отображениях процессов — отображениях
. Он вводит
process_map_lipschitz (липшицевость такого отображения) и
process_contraction (сжатие) — понятия, относящиеся к
будущей линии неподвижных точек, а не к настоящей главе. Его теорема с
громким именем continuity_foundation — как и одноимённые
<ProcessContinuity.v прямого отношения не имеет; глава
называет это прямо.
}
Что построено и что готовится
Итог главы — тремя списками, по дисциплине honest-режима Части V.
Построено и проверено.
- { Топологическое лицо непрерывности над — - определение (
continuous_at,continuous,continuous_on), алгебра непрерывных функций, прообраз открытого открыт; конструктивно, без аксиом (Topology.v).} - Равномерная непрерывность и конструктивный мост к ней —
lipschitz_uniform_cont(липшицевость влечёт равномерную непрерывность), с алгеброй равномерно непрерывных функций. - Теорема о промежуточном значении на трёх уровнях — -версия (
IVT_process), процессная обёртка (process_IVT), типовой апгрейд доCauchySeq(ivt_cauchy_real); корень — бисекционный Cauchy-процесс. - Теорема об экстремуме в двух версиях: историческая argmax-версия
EVT_completeсохранена, но помечена как deprecated; текущая рекомендуемая index-based версия —EVT_strong_process. В обеих процесс значений супремума — Коши. - Равномерный предел непрерывных функций непрерывен (
uniform_limit_continuous_on).
На чём это стоит.
- Топологическое лицо непрерывности — на чистой конструкции, без аксиом (
Topology.v). - Теоремы о промежуточном значении и об экстремуме — на :
classicприходит вIVT_ERRчерез архимедовость, вEVT_ERRиEVT_idx— напрямую. Это не изъян, а явный учёт уровня:classic— техническая Rocq-реализация закона исключённого третьего ToS.
Не построено в этой главе.
- { Теорема Кантора–Гейне над — поточечная непрерывность на отрезке не влечёт равномерную; это математический факт, а не пробел, и причина — неполнота .}
- Сходимость процесса позиций максимума: над
argmax_processне обязан быть Коши — доказана сходимость лишь процесса значений. - { Миграция теорем на головной файл: канонический головной файл теории непрерывности построен (
analysis/Continuity.v: канонcontinuous_on,uniformly_continuous_on,Lipschitz_onи Липшицев мост), но существующие теоремы (IVT, EVT, HeineBorelComplete) на него ещё не переведены — каждая несёт своё локальное определение.} - Непрерывность функций на фактор-классах
RealPoint— материал главы живёт на уровне функций .
{
Готовит дальше. Равномерная непрерывность и липшицевость —
рабочий аппарат для следующей главы Части V, о производной; теоремы о
промежуточном значении и об экстремуме — инструменты, на которые
обопрётся дифференциальное исчисление; обмен равномерного предела с
интегралом и производной (остальная часть Uniform\- Convergence.v) — материал одной из последующих глав.
}
Итог главы
Глава 5.3 прошла непрерывность от - определения до двух больших теорем анализа. Её главный урок — о двух лицах непрерывности. Над поточечная и равномерная непрерывность не совпадают: теорема Кантора–Гейне, склеивающая их над , над неверна — та же неполнота, что рушила Гейне–Бореля. Поэтому обе главные теоремы — о промежуточном значении и об экстремуме — честно несут в гипотезе именно равномерную непрерывность, и обе строят не классическую <<точку>>, а процесс: бисекцию, сходящуюся к перемене знака, и измельчающуюся сетку, чьи значения супремума образуют процесс Коши.
{Итог главы — в трёх частях. Первое: что построено.
Топологическое лицо непрерывности над — определение,
алгебра непрерывных функций, теорема о прообразе — построено
конструктивно, без аксиом, в рамках файла Topology.v.
Равномерная непрерывность снабжена
конструктивным мостом — липшицевость влечёт равномерную
непрерывность — взамен недоказуемой над теоремы Кантора–Гейне.
Теорема о промежуточном значении доказана на трёх уровнях типизации,
теорема об экстремуме — в двух версиях; равномерный предел
непрерывных функций непрерывен.}
{Второе: на чём это стоит. Топологическое лицо
непрерывности — на чистой конструкции. Теоремы о промежуточном
значении и об экстремуме — на , законе исключённого
третьего ToS. Техническая Rocq-аксиома classic — это
реализация ; обращение к ней есть явный учёт уровня
доказательства, а не отступление от строгости.}
{Третье: что остаётся открытым. Теорема Кантора–Гейне
над неверна — это математический факт. Процесс позиций
максимума над не обязан быть Коши — доказана сходимость лишь
процесса значений. Канонический головной файл теории непрерывности
построен (analysis/Continuity.v), но миграция на него
существующих теорем (IVT, EVT) пока отложена. Глава дала непрерывность
и две её теоремы; производная, что встанет на этом основании, —
предмет следующей главы Части V.}
Часть: Часть V. Топология и анализ процессов · Том: «Математика»
Понятия: Логика · Формализация
Навигация: ← Глава 2. Топология и компактность · Глава 4. Производная →
Footnotes
-
E/R/R-разметка в шапке файла
Topology.v; здесь разворачивается по образцу Части I. ↩ -
Эта ролевая разметка — из шапок
ProcessIVT.vиProcessEVT.v. ↩ -
Этот пример теперь и формально проверен. Для на машинно установлены обе стороны границы: поточечная непрерывность во всякой точке отрезка (
cantor_heine_continuous) и отсутствие равномерной непрерывности (cantor_heine_not_uniform), — вместе они и означают, что теорема Кантора–Гейне над неверна (cantor_heine_fails_Q). Подходящие к точки — это рациональные приближения по рекуррентности Пелля с точной ошибкой , на которых . Машинно проверено, 11 Qed, 0 аксиом. ↩