Аналіз I, Розділ 2.3: Множення #
Цей файл є перекладом Глави 2.3 Аналізу I до Lean 4. Вся нумерація посилається на оригінальний текст.
Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.
Основні конструкції та результати цього розділу:
- Визначення множення та піднесення до степеня для натуральних чисел з "Розділу 2".
Chapter2.Nat.
Примітка: наприкінці цього розділу клас Chapter2.Nat буде замінено на користь стандартного
класу Mathlib _root_.Nat, або ℕ. Однак, ми пропрацюємо властивості
Chapter2.Nat "вручну" в наступних кількох розділах для педагогічних цілей.
Підказки від попередніх користувачів #
Користувачі супровідного матеріалу, які виконали вправи в цьому розділі, можуть надсилати свої поради майбутнім користувачам цього розділу як PRи.
- (Додайте підказку тут)
Визначення 2.3.1 (Множення натуральних чисел)
Equations
- n.mul m = Chapter2.Nat.recurse (fun (x prod : Chapter2.Nat) => prod + m) 0 n
Instances For
Цей інстанс дозволяє використовувати позначення * для множення натуральних чисел.
Equations
- Chapter2.Nat.instMul = { mul := Chapter2.Nat.mul }
Визначення 2.3.1 (Множення натуральних чисел)
Порівняйте із Mathlib-івської Nat.zero_mul
Визначення 2.3.1 (Множення натуральних чисел)
Порівняйте із Mathlib-івської Nat.succ_mul
Ця лема буде корисною для доведення Леми 2.3.2.
Порівняйте із Mathlib-івської Nat.mul_zero
Ця лема буде корисною для доведення Леми 2.3.2.
Порівняйте із Mathlib-івської Nat.mul_succ
Лема 2.3.2 (Множення комутативне) / Вправа 2.3.1
Порівняйте із Mathlib-івської Nat.mul_comm
Ця лема буде корисною для доведення Леми 2.3.3.
Порівняйте із Mathlib-овським Nat.mul_pos
Лема 2.3.3 (Додатні натуральні числа не мають нульових дільників.) / Вправа 2.3.2.
Порівняйте із Mathlib-овським Nat.mul_eq_zero.
Твердження 2.3.4 (Дістрібутивність)
Порівняйте із Mathlib-івської Nat.mul_add
Твердження 2.3.4 (Дістрібутивність)
Порівняйте із Mathlib-івської Nat.add_mul
Твердження 2.3.5 (Множення асоціативне) / Вправа 2.3.3
Порівняйте із Mathlib-івської Nat.mul_assoc
(Не в підручнику) Nat є комутативним півкільцем.
Це дозволяє застосовувати такі тактики, як ring, до натуральних чисел Розділу 2.
Equations
- One or more equations did not get rendered due to their size.
Твердження 2.3.6 (Множення зберігає порядок)
Порівняйте із Mathlib-івським Nat.mul_lt_mul_of_pos_right
Твердження 2.3.6 (Множення зберігає порядок)
Порівняйте із Mathlib-івським Nat.mul_lt_mul_of_pos_left
Наслідок 2.3.7 (Властивість скорочення)
Порівняйте із Mathlib-овським Nat.mul_right_cancel
(Не в підручнику) Nat є впорядкованим півкільцем.
Це дозволяє застосовувати такі тактики, як gcongr, до натуральних чисел Розділу 2.
Визначення 2.3.11 (Піднесення до степеня для натуральних чисел)
Equations
- m.pow n = Chapter2.Nat.recurse (fun (x prod : Chapter2.Nat) => prod * m) 1 n
Instances For
Equations
- Chapter2.Nat.instPow = { pow := Chapter2.Nat.pow }
Визначення 2.3.11 (Піднесення до степеня для натуральних чисел)
Порівняйте із Mathlib-івським Nat.pow_zero
Визначення 2.3.11 (Піднесення до степеня для натуральних чисел)
Визначення 2.3.11 (Піднесення до степеня для натуральних чисел)
Порівняйте із Mathlib-івським Nat.pow_succ
Порівняйте із Mathlib-івським Nat.pow_one