Чому натурали замість цілих чисел?


28

Мене цікавить, чому природні числа так улюблені авторами книг з теорії мов програмування та теорії типів (наприклад, Дж. Мітчелл, Основи мов програмування та Б. Пірс, Типи та мови програмування). Опис просто набраного лямбда-числення і, зокрема, мови програмування PCF, зазвичай базуються на Наті та Булі. Для людей, які використовують та навчають індустріальних PL загального призначення, набагато природніше лікувати цілі числа, а не натуральні. Чи можете ви відзначити кілька вагомих причин, чому теоретик ФЛ віддає перевагу нату? Крім того, це трохи менш складно. Чи є якісь фундаментальні причини чи це просто честь традиції?

UPD Для всіх цих коментарів щодо "фундаментальності" природних матеріалів: Я цілком знаю про всі ці цікаві речі, але я вважаю за краще, щоб побачити приклад, коли ці властивості мають ці властивості в теорії типів теорії ФЛ. Наприклад, широко згадувана індукція. Коли у нас є будь-яка логіка (яка просто набрана LC), як і основна логіка першого порядку, ми дійсно використовуємо індукцію - але індукцію на дереві деривації (яку ми також маємо в лямбда).

В основному моє запитання стосується людей з галузі, які хочуть здобути якусь фундаментальну теорію мов програмування. Раніше вони мали цілі числа у своїх програмах і без конкретних аргументів та застосувань до теорії, що вивчається (в нашому випадку теорія типу), чому вивчати мови лише з натуральними, вони відчувають себе дуже розчарованими.


Я думаю, це не питання рівня дослідження, хоча цікаве.
Рафаель

4
Це не так, але це якесь велике питання, яке ми приймаємо.
Суреш Венкат

1
Мені цікаво, чи якимось чином набір невід’ємних цілих чисел може бути навіть більш фундаментальним, ніж натуральні числа, завдяки унікальним властивостям 0-значення, яке не існує в останньому. Я б також припустив, що це більш справедливо, оскільки вибір основного числового типу для цифрових комп'ютерів враховує значення 0.
Річард Кук

Я не розумію вашого UPD . Натурали є більш фундаментальними, ніж цілі числа, і відповіді дають приклади, чому це так.
Раду ГРИГо

Re: UPD. Я не надто впевнений, чому "люди з галузі" будуть "розчаровані". (Я сам провів свою кар'єру в галузі.) Чому хтось повинен сподіватися, що ця теорія має бути очевидним продовженням того, що вони вже знайомі? Досить поширеним є те, що певні речі, поширені в галузі, подібно до цілих змінних, існують більше з "історичних причин", ніж з глибоких теоретичних.
Марк Хаманн

Відповіді:


24

Коротка відповідь: натурали - це перші обмеження порядку. Отже, вони відіграють центральну роль в теорії аксіоматичних множин (наприклад, аксіома нескінченності є твердженням, що вони існують) і логіці, і теоретики Ф.Л. схильні ділитися фундаментальними захопленнями з логіками. Ми хочемо мати доступ до принципу спонукання, щоб довести повну правильність, припинення та подібні властивості, а натурали - це (ер) природний вибір доброго порядку.

Я не хочу мати на увазі, що двійкові цілі з кінцевою шириною є менш класними об'єктами. Вони є репрезентаціями p-адиків і дозволяють використовувати методи ряду потужностей в теорії чисел і комбінаторики. Це означає, що їх значення стає більш помітним в алгоритмі, ніж PL, оскільки саме тоді ми починаємо дбати більше про складність, а не про закінчення.


20

Натурали - це набагато більш фундаментальне поняття, ніж цілі числа.

Індукція відбувається над натуралами, а цілі числа можуть бути отримані від натуралів за допомогою простого додавання одинарного зворотного оператора.

Я фактично хотів би задати зворотне запитання: чому дизайнери ранньої мови програмування (і реєструють машину) проектувальники закріплювали цілі числа як основний тип даних, коли вони настільки вторинні і так легко виводяться з натуралів?

Я підозрюю, що це просто тому, що було кілька класних двійкових кодувань, які могли елегантно обробляти цілі числа. ;-)

Подумайте, як часто ви хочете ігнорувати негативний діапазон програмного цілого числа, і розгляньте імпульс, щоб мати непідписаний цілочисельний тип, щоб відновити загублений біт.


5
Ще одна причина: якщо ви хочете щось подібне до церковних цифр, негативне ціле число повинно було б позначати інверсію функції. Тож у цьому контексті цілі числа були б більш природними для обчислення обчислено біективних функцій.
Per Vognsen

@Per Vognsen: не впевнений, в якому напрямку ти там сперечаєшся. Але я думаю, що можна впевнено сказати, що обчислювально біективні функції є менш фундаментальними, ніж довільні обчислювальні функції більшу частину часу. ;-)
Марк Хаманн

Немає сумніву, що складні числа, що знаходяться у верхній частині ієрархії чисел Природні числа -> Цілі числа -> Раціональні числа -> Реальні числа -> Складні числа є більш фундаментальними, ніж інші, оскільки вони мають «приємніші» алгебраїчні властивості. Вони є скрізь у науці, але помітно відсутні у "основах" математики. Тож відповідь на те, що є більш "основоположними" цілими чи натуральними значеннями, дійсно залежить від того, кого ви запитуєте: алгоритм чи алгебраїст.
Тегірі Ненаші

Оскільки це сайт TCS, я думаю, що ми в безпеці привілейовувати погляд на інформатику. ;-) Обчислено, що ієрархія прогресивна: кожен новий запис буквально будується на попередньому. Оскільки "фундаментальне" зазвичай посилається на щось в основі, я вважаю, що "природні" є правильним присвоювати цей титул.
Марк Хаман

17

Існує обчислювана біекція між і . Тому достатньо міркувати про обчислюваність тощо, використовуючи лише натуральні числа, увесь час знаючи, що ваші результати узагальнюються до цілих чисел (і раціональних чисел, і всіх інших рекурсивно перелічених множин).ZNZ

Міркувати лише про природне - це зручно, оскільки у вас є індукція, і - це добре обгрунтований набір із природним порядком . Останній є особливо важливим, оскільки його можна задіяти в документах про припинення. Хоча ви можете визначити обґрунтований порядок на , він менш зручний, оскільки він не відповідає звичайному порядку.ZNZ


11

Ще одна причина (пов’язана з уже даними, але ця відповідь додає нову інформацію) полягає в тому, що існує дуже проста побудова природних конструкцій, яка не містить фактичних факторів, яка поєднується з приємним принципом індукції [як уже було сказано] . Те, що не було розширено, - це наскільки складно придумати безкінцеву побудову цілих чисел.

Чим більше я програмую там, де мені хочеться підвищеної впевненості, тим більше мені потрібні натурали, і я вважаю, що у мене є лише цілі числа, заздалегідь визначені для мене справжнім болем.


Є мови, які мають основний тип природних, ви знаєте.
Рафаель

@Raphael: Я знаю. Але не ті, які мені інакше подобаються (а саме Haskell та OCaml). Я не зовсім готовий розпочати «програмування» в Агді чи Кок.
Жак Каретт

Що так погано в частках?
Девід Харріс

3
Коефіцієнти чудові в семантиці. З ними набагато, набагато складніше впоратися у фактичних обчисленнях і в конкретних уявленнях. Існує незліченна кількість статей про те, як поводитися з ними в Coq, Isabelle, Agda, (загалом теорія типів) і т. Д. Я просто припускав, що знання фольклору у всіх громадах є тим, що коефіцієнти - це просто біль боротися з "насправді".
Жак Каретт

2
Я відчуваю, що це найсильніша відповідь групи: натурали - це найпростіший нетривіальний індуктивний тип даних. Після того, як ви визначилися і довели прості властивості для натуральних чисел, ви проклали шлях до складніших індуктивних типів даних, таких як списки або дерева.
коді

7

Чи є якісь вагомі причини, чому теоретики PL віддають перевагу натуралам замість цілих чисел? Є деякі, але в підручнику з семантики мови програмування, я думаю, немає технічної причини, чому вони цього потребують. Я не можу думати про будь-яке місце, окрім систем залежного типу, де індукція даних є важливою в теорії ПЛ. Інші підручники Майка Гордона , Девіда Шмідта , Боба Теннента та Джона Рейнольдса не роблять цього. (І, мабуть, ці книги були б набагато придатнішими для навчання людей, які піклуються про загальновиробничі PL!)

Отже, там у вас є доказ того, що це не потрібно. Насправді я б стверджував, що хороша книга теорії ФЛ повинна бути параметричною у примітивних типах мови програмування, і вводити в оману пропонувати інше.


6

Природні природні чари та операції на них можуть бути закодовані в чистому обчисленні лямбда прямо, як так звані церковні цифри (і церковні боли, я думаю). Не ясно, як можна було б добре кодувати цілі числа, хоча це очевидно можна зробити.


Я мав на увазі передусім набрання лямбда. На цьому ґрунтується хід книг, про які я згадував у головному пості. Я думаю, що нетипізована лямбда не настільки важлива для теорії типів і теорії ФЛ в даний час (я можу помилятися, але це те, що я бачу в цих книгах.). Все одно дякую!
Артем Пеленицин
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.