Аналіз I, Розділ 3.5: Декартови добутки #
Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.
Основні конструкції та результати цього розділу:
- Впорядковані пари та кортежі.
- Декартові добутки та n-кратні добутки.
- Зліченний вибіру.
- Зв'язок із Mathlib аналогами такими як
Set.piтаSet.prod.
Підказки від попередніх користувачів #
Користувачі супровідного матеріалу, які виконали вправи в цьому розділі, можуть надсилати свої поради майбутнім користувачам цього розділу як PRи.
- (Додайте підказку тут)
Визначення 3.5.1 (Впорядкована пара). Тут також можна було використати Object × Object
для визначення OrderedPair.
Instances For
Вправа 3.5.1, перша частина
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Технічна операція перетворююча об'єкт x та множину Y на множину {x} × Y, необхідна для
визначення повного декартового добутку
Equations
- Chapter3.SetTheory.Set.slice x Y = Y.replace ⋯
Instances For
Визначення 3.5.4 (Декартовий добуток)
Equations
- X.cartesian Y = Chapter3.SetTheory.union (X.replace ⋯)
Instances For
Цей екземпляр дозволяє використовувати позначення ×ˢ для декартового добутку.
Equations
Equations
Instances For
Equations
Instances For
Це надає OrderedPair докази того, що x ∈ X та y ∈ Y.
Equations
- Chapter3.SetTheory.Set.mk_cartesian x y = ⟨Chapter3.OrderedPair.toObject { fst := ↑x, snd := ↑y }, ⋯⟩
Instances For
Зв’язки з добутком множин у Mathlib, який складається з пар Lean на кшталт (x, y),
озброєних доказом того, що x належить лівій множині, а y — правій.
Пари Lean на кшталт (x, y) подібні до нашого OrderedPair, але більш загальні.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Приклад 3.5.5 / Вправа 3.6.5. Існує бієкція між X ×ˢ Y та Y ×ˢ X.
Equations
- X.prod_commutator Y = { toFun := sorry, invFun := sorry, left_inv := ⋯, right_inv := ⋯ }
Instances For
Приклад 3.5.5. Функцію двох змінних можна розглядати як функцію від пари.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Визначення 3.5.6. Індексуюча множина I відіграє роль { i : 1 ≤ i ≤ n } у тексті.
Див. Вправу 3.5.10 нижче для деяких зв’язків між цим поняттям і попереднім поняттям декартового
добутку та впорядкованої пари.
Equations
- Chapter3.SetTheory.Set.tuple x = ↑fun (i : I.toSubtype) => ⟨↑(x i), ⋯⟩
Instances For
Визначення 3.5.6
Equations
Instances For
Приклад 3.5.8. Існує бієкція між (X ×ˢ Y) ×ˢ Z та X ×ˢ (Y ×ˢ Z).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Вправа 3.5.10. Я підозрюю, що більшість еквівалентностей вимагатиме класичного міркування і будуть визначені неконструктивно, але буду радий дізнатися про контрприклади.
Equations
- Chapter3.SetTheory.Set.singleton_iProd_equiv i X = { toFun := sorry, invFun := sorry, left_inv := ⋯, right_inv := ⋯ }
Instances For
Приклад 3.5.10
Equations
- I.iProd_of_const_equiv X = { toFun := sorry, invFun := sorry, left_inv := ⋯, right_inv := ⋯ }
Instances For
Тут ми створюємо аналог Mathlib-івських типів Fin n в рамках теорії множин з Розділу 3,
із рудиментарним API.
Equations
- Chapter3.SetTheory.Set.Fin n = Chapter3.nat.specify fun (m : Chapter3.nat.toSubtype) => Chapter3.SetTheory.Set.nat_equiv.symm m < n
Instances For
Equations
Зв'язки із Mathlib-овським Fin n
Equations
- One or more equations did not get rendered due to their size.
Instances For
Вправа 3.5.1, друга частина (вимагає аксіоми регулярності)
Equations
- Chapter3.OrderedPair.toObject' = { toFun := fun (p : Chapter3.OrderedPair) => Chapter3.SetTheory.set_to_object {p.fst, Chapter3.SetTheory.set_to_object {p.fst, p.snd}}, inj' := ⋯ }
Instances For
Користувацька лема екстенсіональності для Вправи 3.5.2.
Додавання @[ext] до структури створило б лему, що вимагала б доведення t.x = t'.x,
але ці функції мають різні типи, коли t.X ≠ t'.X. Ця лема обробляє цю частину.
Equations
- Chapter3.SetTheory.Set.iProd_equiv_tuples n X = { toFun := sorry, invFun := sorry, left_inv := ⋯, right_inv := ⋯ }
Instances For
Вправа 3.5.3. Дух завдання полягає в тому, щоб уникнути прямих переписувань (які роблять
усі ці твердження тривіальними), а натомість використовувати OrderedPair.eq або
SetTheory.Set.tuple_inj
Equations
- Chapter3.SetTheory.Set.graph f = (X ×ˢ Y).specify fun (p : (X ×ˢ Y).toSubtype) => f (Chapter3.SetTheory.Set.fst p) = Chapter3.SetTheory.Set.snd p
Instances For
Вправа 3.5.13