Аналіз I, Розділ 3.3: Функції #
Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.
Основні конструкції та результати цього розділу:
- Поняття функції
Function X Yміж двома множинамиX,Yв теорії множин із глави 3.1 - Різні співвідношення з поняттям функції
X → Yу Mathlib між двома типамиX,Y. (Примітка із глави 3.1, що кожнаSetXтакож може бути розглянути як підтип{x : Object // x ∈ X }Object.) - Основні властивості та операції над функціями, такі як композиція, ін'єктивні функції, сур'єктивні функції, та обернені функції.
У решті книги ми відмовимося від версії функції із Розділу 3 та працюватимемо з поняттям
функції із Mathlib. Навіть у цьому розділі ми перейдемо до формалізму Mathlib для деяких прикладів,
що стосуються систем числення, таких як ℤ або ℝ, які не були реалізовані у фреймворку Розділу 3.
Тут ми працюватимемо з версією Nat натуральних чисел, що є внутрішньою для теорії множин з
Розділу 3, хоча зазвичай ми використовуватимемо перетворення, щоб одразу ж перетворити їх на
натуральні числа ℕ з Mathlib.
Підказки від попередніх користувачів #
Користувачі супровідного матеріалу, які виконали вправи в цьому розділі, можуть надсилати свої поради майбутнім користувачам цього розділу як PRи.
- (Додайте підказку тут)
Перетворення функції f: Function X Y із Розділу 3 на функцію Mathlib f: X → Y.
Визначення функції із Розділу 3 було неконструктивним, тому тут нам доведеться
використати аксіому вибору.
Instances For
Equations
- Chapter3.Function.inst_coefn X Y = { coe := Chapter3.Function.to_fn }
Приклад 3.3.3.
Equations
Instances For
Equations
- Chapter3.SetTheory.Set.f_3_3_3a = { P := Chapter3.P_3_3_3a, unique := ⋯ }
Instances For
Equations
Instances For
Equations
- Chapter3.SetTheory.Set.f_3_3_3c = { P := Chapter3.SetTheory.Set.P_3_3_3c, unique := ⋯ }
Instances For
Equations
- Chapter3.SetTheory.Set.f_3_3_5 = { P := Chapter3.SetTheory.Set.P_3_3_5, unique := ⋯ }
Instances For
Приклад 3.3.10 (спрощений). Другу частину прикладу складно відтворити в цьому формалізмі, тому натомість цього пропонується замінник із Mathlib.
Equations
Instances For
Equations
- Chapter3.SetTheory.Set.f_3_3_10b = Chapter3.Function.mk_fn fun (x : Chapter3.Nat.toSubtype) => ↑((Chapter3.SetTheory.Set.nat_equiv.symm x + 1) ^ 2)
Instances For
Equations
- Chapter3.«term_○_» = Lean.ParserDescr.trailingNode `Chapter3.«term_○_» 90 91 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "○") (Lean.ParserDescr.cat `term 91))
Instances For
Приклад 3.3.14
Equations
Instances For
Equations
Instances For
Сумісність із Mathlib-івським Function.Injective. Можливо, ви захочете скористатися тактикою unfold,
щоб зрозуміти такі концепції Mathlib, як Function.Injective.
Приклад 3.3.18. Одна половина прикладу вимагає цілих чисел, тому виражається за допомогою функцій Mathlib замість функцій із Розділу 3.
Сумісність із Mathlib-івським Function.Surjective
Сумісність із Mathlib-івським Function.Bijective
Приклад 3.3.24 (використовуючи Mathlib)
Equations
Instances For
Equations
Instances For
Equations
Instances For
Ми не можемо використовувати позначення f⁻¹ для оберненої функції, оскільки в класі Inv Mathlib-у
обернена функція f повинна бути точно такого ж типу, як f, а Function Y X
має інший тип, ніж Function X Y.
Equations
Instances For
Вправа 3.3.1. Хоча доведення, що безпосередньо оперує функціями, було б коротшим,
суть вправи полягає в тому, щоб показати це, використовуючи визначення Function.eq_iff.
Вправа 3.3.2
Вправа 3.3.3 - заповніть sorry у твердженнях розумним чином.
Вправа 3.3.5.
Equations
Instances For
Вправа 3.3.8
Equations
- Chapter3.Function.inclusion h = Chapter3.Function.mk_fn fun (x : X.toSubtype) => ⟨↑x, ⋯⟩
Instances For
Equations
- Chapter3.Function.id X = Chapter3.Function.mk_fn fun (x : X.toSubtype) => x