Documentation

Analysis.Section_4_2

Аналіз I, Розділ 4.2: Раціональні числа #

Цей файл є перекладом розділу 4.2 книги Analysis I на Lean 4. Уся нумерація відповідає оригінальному тексту.

Я (пр.перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним рішенням Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підбуцнути", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.

Основні побудови та результати цього розділу:

Примітка: тут (і надалі) ми використовуємо натуральні числа та цілі числа із Mathlib, а не натуральні числа розділу 2 та цілі числа розділу 4.1.

Підказки від попередніх користувачів #

Користувачі супровідного матеріалу, які виконали вправи в цьому розділі, можуть надсилати свої поради майбутнім користувачам цього розділу як PRи.

Instances For
    @[simp]
    theorem Section_4_2.PreRat.eq (a b c d : ) (hb : b 0) (hd : d 0) :
    { numerator := a, denominator := b, nonzero := hb } { numerator := c, denominator := d, nonzero := hd } a * d = c * b
    @[reducible, inline]
    Equations
    Instances For
      @[reducible, inline]

      Ми надаємо діленню «сміттєве» значення 0//1, якщо знаменник дорівнює нулю

      Equations
      Instances For
        theorem Section_4_2.Rat.eq (a c : ) {b d : } (hb : b 0) (hd : d 0) :
        a // b = c // d a * d = c * b

        Визначення 4.2.1 (Раціональні числа)

        theorem Section_4_2.Rat.eq_diff (n : Rat) :
        ∃ (a : ) (b : ), b 0 n = a // b

        Визначення 4.2.1 (Раціональні числа)

        Розв’язність рівності. Підказка: змініть доведення DecidableEq Int із попереднього розділу. Однак, оскільки формальне ділення окремо обробляє випадок нульового знаменника, може бути зручніше уникати цієї операції та працювати безпосередньо з API Quotient.

        Equations

        Лема 4.2.3 (Додавання коректно визначене)

        Equations
        • One or more equations did not get rendered due to their size.
        theorem Section_4_2.Rat.add_eq (a c : ) {b d : } (hb : b 0) (hd : d 0) :
        a // b + c // d = (a * d + b * c) // (b * d)

        Визначення 4.2.2 (Додавання раціональних чисел)

        Лема 4.2.3 (Множення коректно визначене)

        Equations
        • One or more equations did not get rendered due to their size.
        theorem Section_4_2.Rat.mul_eq (a c : ) {b d : } (hb : b 0) (hd : d 0) :
        a // b * c // d = (a * c) // (b * d)

        Визначення 4.2.2 (Множення раціональних чисел)

        Лема 4.2.3 (Протилежний елемент коректно визначени)

        Equations
        • One or more equations did not get rendered due to their size.
        theorem Section_4_2.Rat.neg_eq (a : ) {b : } (hb : b 0) :
        -a // b = (-a) // b

        Визначення 4.2.2 (Протилежний елемент раціональних чисел)

        Вкладення цілих чисел у раціональні числа

        Equations
        Equations
        Equations
        theorem Section_4_2.Rat.coe_Int_eq (a : ) :
        a = a // 1
        theorem Section_4_2.Rat.coe_Nat_eq (n : ) :
        n = n // 1
        theorem Section_4_2.Rat.natCast_succ (n : ) :
        ↑(n + 1) = n + 1

        natCast розподіляється на наступника

        theorem Section_4_2.Rat.intCast_add (a b : ) :
        a + b = ↑(a + b)

        intCast розподіляється на додавання

        theorem Section_4_2.Rat.intCast_mul (a b : ) :
        a * b = ↑(a * b)

        intCast розподіляється на множення

        theorem Section_4_2.Rat.intCast_neg (a : ) :
        -a = ↑(-a)

        intCast комутує з взяттям протилежного елемента

        У той час як у книзі обернене число для 0 залишається невизначеним, у Lean зручніше призначити цьому оберненому числу «сміттєве» значення; ми довільно обираємо це сміттєве значення рівним 0.

        Equations
        • One or more equations did not get rendered due to their size.
        theorem Section_4_2.Rat.inv_eq (a : ) {b : } (hb : b 0) :
        (a // b)⁻¹ = b // a

        Твердження 4.2.4 (закони алгебри) / Вправа 4.2.3

        Equations

        Твердження 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.
        Equations
        theorem Section_4_2.Rat.coe_Rat_eq (a : ) {b : } (hb : b 0) :
        ↑(a / b) = a // b

        Default definition of division

        Equations
        • One or more equations did not get rendered due to their size.
        theorem Section_4_2.Rat.div_eq (q r : Rat) :
        q / r = q * r⁻¹

        Твердження 4.2.4 (закони алгебри) / Вправа 4.2.3

        Equations
        • One or more equations did not get rendered due to their size.
        theorem Section_4_2.Rat.sub_eq (a b : Rat) :
        a - b = a + -b

        Визначення віднімання

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Визначення 4.2.6 (позитивність)

          Equations
          Instances For

            Визначення 4.2.6 (негативність)

            Equations
            Instances For

              Лема 4.2.7 (трихотомія раціональних чисел) / Вправа 4.2.4

              Лема 4.2.7 (трихотомія раціональних чисел) / Вправа 4.2.4

              Лема 4.2.7 (трихотомія раціональних чисел) / Вправа 4.2.4

              Лема 4.2.7 (трихотомія раціональних чисел) / Вправа 4.2.4

              Визначення 4.2.8 (Порядок раціональних чисел)

              Equations

              Визначення 4.2.8 (Порядок раціональних чисел)

              Equations
              theorem Section_4_2.Rat.lt_iff (x y : Rat) :
              x < y (x - y).isNeg
              theorem Section_4_2.Rat.le_iff (x y : Rat) :
              x y x < y x = y
              theorem Section_4_2.Rat.gt_iff (x y : Rat) :
              x > y (x - y).isPos
              theorem Section_4_2.Rat.ge_iff (x y : Rat) :
              x y x > y x = y
              theorem Section_4_2.Rat.trichotomous' (x y : Rat) :
              x > y x < y x = y

              Твердження 4.2.9(a) (трихотомія порядку) / Вправа 4.2.5

              theorem Section_4_2.Rat.not_gt_and_lt (x y : Rat) :
              ¬(x > y x < y)

              Твердження 4.2.9(a) (трихотомія порядку) / Вправа 4.2.5

              theorem Section_4_2.Rat.not_gt_and_eq (x y : Rat) :
              ¬(x > y x = y)

              Твердження 4.2.9(a) (трихотомія порядку) / Вправа 4.2.5

              theorem Section_4_2.Rat.not_lt_and_eq (x y : Rat) :
              ¬(x < y x = y)

              Твердження 4.2.9(a) (трихотомія порядку) / Вправа 4.2.5

              theorem Section_4_2.Rat.antisymm (x y : Rat) :
              x < y y > x

              Твердження 4.2.9(b) (порядок є антисиметричним) / Вправа 4.2.5

              theorem Section_4_2.Rat.lt_trans {x y z : Rat} (hxy : x < y) (hyz : y < z) :
              x < z

              Твердження 4.2.9(c) (порядок є транзитивним) / Вправа 4.2.5

              theorem Section_4_2.Rat.add_lt_add_right {x y : Rat} (z : Rat) (hxy : x < y) :
              x + z < y + z

              Твердження 4.2.9(d) (додавання зберігає порядок) / Вправа 4.2.5

              theorem Section_4_2.Rat.mul_lt_mul_right {x y z : Rat} (hxy : x < y) (hz : z.isPos) :
              x * z < y * z

              Твердження 4.2.9(e) (множення на додатне число зберігає порядок) / Вправа 4.2.5

              instance Section_4_2.Rat.decidableRel :
              DecidableRel fun (x1 x2 : Rat) => x1 x2

              (Не в підручнику) Встановіть розв’язність цього порядку.

              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.

              (Не в підручнику) Раціональні числа мають структуру строго впорядкованого кільця.

              theorem Section_4_2.Rat.mul_lt_mul_right_of_neg (x y z : Rat) (hxy : x < y) (hz : z.isNeg) :
              x * z > y * z

              Вправа 4.2.6

              @[reducible, inline]

              Не в підручнику: створіть еквівалентність між Rat та . Це вимагає певного знайомства з API для версії раціональних чисел у Mathlib.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[reducible, inline]

                Не в підручнику: еквівалентність зберігає порядок

                Equations
                Instances For
                  @[reducible, inline]

                  Не в підручнику: еквівалентність зберігає операції кільця

                  Equations
                  Instances For

                    (Не в підручнику) Раціональні числа з підручника ізоморфні (як поле) до раціональних чисел Mathlib.

                    Equations
                    Instances For