Аналіз I, Розділ 4.2: Раціональні числа #
Цей файл є перекладом розділу 4.2 книги Analysis I на Lean 4. Уся нумерація відповідає оригінальному тексту.
Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.
Основні побудови та результати цього розділу:
Визначення раціональних чисел «Розділу 4.2»
Section_4_2.Ratяк формальних частокa // bцілих чиселa b : ℤ, з точністю до еквівалентності. (Це фактортип допоміжного типуSection_4_2.PreRat, який складається з формальних часток без накладеної еквівалентності.)Операції поля та порядок на цих раціональних числах, а також вкладення ℕ і ℤ.
Еквівалентність із раціональними числами Mathlib
_root_.Rat(абоℚ), які ми надалі використовуватимемо.
Примітка: тут (і надалі) ми використовуємо натуральні числа ℕ та цілі числа ℤ із Mathlib, а не натуральні числа розділу 2 та цілі числа розділу 4.1.
Підказки від попередніх користувачів #
Користувачі супровідного матеріалу, які виконали вправи в цьому розділі, можуть надсилати свої поради майбутнім користувачам цього розділу як PRи.
- (Додайте підказку тут)
Instances For
Вправа 4.2.1
Equations
- Section_4_2.PreRat.instSetoid = { r := fun (a b : Section_4_2.PreRat) => a.numerator * b.denominator = b.numerator * a.denominator, iseqv := Section_4_2.PreRat.instSetoid._proof_1 }
Instances For
Ми надаємо діленню «сміттєве» значення 0//1, якщо знаменник дорівнює нулю
Equations
Instances For
Equations
- Section_4_2.«term_//_» = Lean.ParserDescr.trailingNode `Section_4_2.«term_//_» 100 101 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " // ") (Lean.ParserDescr.cat `term 101))
Instances For
Розв’язність рівності. Підказка: змініть доведення DecidableEq Int із попереднього
розділу. Однак, оскільки формальне ділення окремо обробляє випадок нульового знаменника,
може бути зручніше уникати цієї операції та працювати безпосередньо з API Quotient.
Equations
- Section_4_2.Rat.decidableEq = sorry
Лема 4.2.3 (Додавання коректно визначене)
Equations
- One or more equations did not get rendered due to their size.
Лема 4.2.3 (Множення коректно визначене)
Equations
- One or more equations did not get rendered due to their size.
Лема 4.2.3 (Протилежний елемент коректно визначени)
Equations
- One or more equations did not get rendered due to their size.
Вкладення цілих чисел у раціональні числа
Equations
- Section_4_2.Rat.instOfNat = { ofNat := ↑n // 1 }
У той час як у книзі обернене число для 0 залишається невизначеним, у Lean зручніше призначити цьому оберненому числу «сміттєве» значення; ми довільно обираємо це сміттєве значення рівним 0.
Equations
- One or more equations did not get rendered due to their size.
Твердження 4.2.4 (закони алгебри) / Вправа 4.2.3
Твердження 4.2.4 (закони алгебри) / Вправа 4.2.3
Equations
- Section_4_2.Rat.instAddCommGroup = { toAddGroup := Section_4_2.Rat.addGroup_inst, add_comm := Section_4_2.Rat.instAddCommGroup._proof_1 }
Твердження 4.2.4 (закони алгебри) / Вправа 4.2.3
Equations
- One or more equations did not get rendered due to their size.
Твердження 4.2.4 (закони алгебри) / Вправа 4.2.3
Equations
- One or more equations did not get rendered due to their size.
Default definition of division
Equations
- One or more equations did not get rendered due to their size.
Твердження 4.2.4 (закони алгебри) / Вправа 4.2.3
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Визначення 4.2.8 (Порядок раціональних чисел)
Equations
- Section_4_2.Rat.instLT = { lt := fun (x y : Section_4_2.Rat) => (x - y).isNeg }
Визначення 4.2.8 (Порядок раціональних чисел)
Equations
- Section_4_2.Rat.instLE = { le := fun (x y : Section_4_2.Rat) => x < y ∨ x = y }
(Не в підручнику) Встановіть розв’язність цього порядку.
Equations
- One or more equations did not get rendered due to their size.
(Не в підручнику) Раціональні числа мають структуру лінійного порядку.
Equations
- One or more equations did not get rendered due to their size.
(Не в підручнику) Раціональні числа мають структуру строго впорядкованого кільця.
Не в підручнику: еквівалентність зберігає порядок
Equations
- Section_4_2.Rat.equivRat_order = { toEquiv := Section_4_2.Rat.equivRat, map_rel_iff' := @Section_4_2.Rat.equivRat_order._proof_1 }
Instances For
Не в підручнику: еквівалентність зберігає операції кільця
Equations
- Section_4_2.Rat.equivRat_ring = { toEquiv := Section_4_2.Rat.equivRat, map_mul' := Section_4_2.Rat.equivRat_ring._proof_1, map_add' := Section_4_2.Rat.equivRat_ring._proof_2 }
Instances For
(Не в підручнику) Раціональні числа з підручника ізоморфні (як поле) до раціональних чисел Mathlib.