Щоденні програми теорії типів


10

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


2
Чому щось має мати додатки поза тим, що було винайдено?
Рафаель

3
Основи математики? Люди також використовували теорію типів для формалізації таких речей, як синтетична теорія домен, топологія тощо. Існує також робота Кріса Мартенса над використанням теоретичних інструментів типу для моделювання розповідної розповіді. Посилання на дисертацію
Даніель Гратцер

1
Чи могли б вам уточнити рахунки як додаток?
Джейк

4
Я не переконаний у ваших передумов. Припустимо, хтось сказав: "Я хочу розібратися в автомобільній техніці, але я повинен спершу знати, для чого я можу використовувати автомобіль. Чи можуть бути більше не очевидних застосувань автомобілів, крім транспорту?" Вони отримують відповіді про те, що деякі люди сплять у своїх автомобілях, а Ансель Адамс використовував його як платформу для фотографування . Ну це чудово, але це нікому не допомагає зрозуміти техніку і, ймовірно, призведе нашого гіпотетичного студента проектувати автомобілі з супер-відкинутими сидіннями і дуже жорсткою підвіскою.
Девід Річербі,

3
Справа в тому, що багато теоретичних інформатик (включаючи речі, над якими я працюю) практично марні, хоча й математично красиві. На жаль, ви повинні вибрати сторону.
Yuval Filmus

Відповіді:


10

Ви можете бути зацікавлені в роботі над Ceptre , в результаті дослідження доктора філософії з Кріса Martens , який використовує теорію типу для інтерактивного розповіді. Нижче цитується конспект тези :

Інтерактивне оповідання поєднує в собі глибокі обчислювальні ідеї з багатою історією історії та гри людства, забезпечуючи важливий контекст для створення інструментів та мов. У той же час, офіційні мови специфікацій пропонують палітру методів подання та висновку, як правило, зарезервованих для аналізу мов програмування та складних дедуктивних систем. Ця теза пов'язує проблеми в домені інтерактивного розповіді з рішеннями в формальній специфікації.

Зокрема, ми розглядаємо розповідь зі структурної точки зору і спостерігаємо, що альтернативні розповідні шляхи відіграють доповнюючу роль одночасно взаємодіючих часових рамках. Лінійна логіка забезпечує представницькі інструменти, необхідні для дослідження цієї структури, і, розширивши відповідність доказів та конструкцій доказів, ми знаходимо набір можливостей обчислення. Ми представляємо три зусилля, спрямовані на реалізацію цих можливостей: (1) використання лінійного логічного програмування для генерації наративів; (2) нова мова програмування для створення інтерактивних розповідей, ігор та моделювання; та (3) методики визначення та доведення властивостей програми на рівні дизайну.

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

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


1
Це звучить як використання лінійної логіки, а не теорії типів як такої .
Девід Річербі,

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

9

Існує цікаве використання теорії типів у лінгвістиці. Дивіться, наприклад, лінгвістичні твори Чунг-Ше Шаня або Крістіана Реторе .

Цитується нижче опис Rétoré в книзі про категоріальних граматик:

Ця книга є сучасним і всебічним вступом до категоріальних граматик в логічній традиції, ініційованій творчістю Ламбека. Він орієнтує студентів та дослідників на фундаментальні результати в цій галузі, надаючи сучасні докази багатьох класичних теорем, а також оригінальні останні досягнення. Численні приклади та вправи ілюструють мотивацію та застосування цих результатів з мовної, обчислювальної та логічної точки зору. Обчислення Ламбека та його варіанти та відповідні граматики лежать в основі цих конспектів лекцій. Глава присвячена ключовій особливості цих категоріальних граматик: їх дуже елегантний синтаксично-семантичний інтерфейс. Крім того, ми адаптуємо лінійні логічні доказові мережі до цих обчислень, оскільки вони забезпечують ефективні алгоритми розбору, як показано в аналізі Grail.

Наступна цитата - у вступі з книги про лінгвістичні побічні ефекти Шаня :

Ця стаття пов'язує випадки очевидної некомпозиційності в природних мовах та мов програмування. Він має форму пісочного годинника: я починаю з §1 з підходу до синтаксично-семантичного інтерфейсу, який допомагає нам будувати композиційні смислові теорії. Цей підхід полягає в проведенні аналогії між обчислювальними побічними ефектами в мовах програмування та тими, які я називаю, за аналогією лінгвістичних побічних ефектів у природних мовах.

Цей зв'язок може принести користь комп’ютерним спеціалістам, а також лінгвістам, але я зосереджуюсь на останньому напрямку передачі технологій. Продовження було корисним для лікування обчислювальних побічних ефектів. У §2 я ввожу нову метамову для продовження семантики.

Метаязик, який я ввожу, корисний для аналізу як мов програмування, так і природних мов. Для інтуїції я досліджую перше вживання в §3, потім вказую на чесноти цього поводження в §4.

Звертаючись до природної мови в §5, я докладно описую, як ця перспектива допомогла Крісу Баркеру, і я вивчаю прив’язку та кросовер, а також питання, які мають перевагу та перевагу. Я також використовував продовження для вивчення кількісних показників і невизначеного обсягу, особливо в китайській мові, але тут є лише місце для накреслення цих подальших розробок, в §6.


9

Через листування Кері-Говарда типи можна інтерпретувати як пропозиції, а пропозиції як типи.

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

Наприклад, деякі автоматизовані інструменти перевірки доказів працюють за цим принципом: вони перевіряють дійсність доказів, перевіряючи тип певного терміна в певній системі типів. На такому підході, як і HOL Light, ґрунтується перевірка НЧ . В якості прикладу програми, перевірочний код використовував LF для перевірки доказів безпеки пам’яті ненадійного коду. Перевага використання цього виду перевірки перевірок полягає в тому, що реалізація може бути дуже простою, і, таким чином, ми можемо отримати високу впевненість у правильності впровадження. Дивіться, наприклад, наступний документ:

Основні перевіряючі перевірки з малими свідками . Дінгао Ву, Ендрю В. Апель, Аарон Штумп. PPDP 2003.


Це може допомогти: math.ucr.edu/home/baez/rosetta.pdf
Псевдонім

Я не думаю, що це відповідає на питання. Що з фактичними додатками?
Yuval Filmus

@YuvalFilmus Визначте "фактичне"?
Девід Річербі,

1
Чи знаєте ви, чи хтось використовував теорію типів, щоб довести щось нове щодо верифікації ланцюга, реального аналізу, символічної логіки чи геометрії? Або ми просто говоримо про випадки, коли хтось використовує 20 сторінок теорії типів, щоб довести щось, що займає три рядки в елементарному підручнику?
Девід Річербі,

@David Що ця відповідь полягає в тому, що в принципі ви можете використовувати теорію типів для доказування матеріалів. Крім того, в принципі ми можемо використовувати стільникові автомати для доказування матеріалів, оскільки правило 110 є Тюрінгом. Я думаю, що перше твердження так само безглуздо, як і останнє.
Yuval Filmus

7

Цікава стаття, в якій пояснюються програми залежних типів, - це The Power of Pi , яка показує, як Agda можна використовувати для вирішення цікавих проблем.

Ще один хороший приклад - використання залежних типів для управління ресурсами. Хороший прикладом є управління API файлів ефектів від Ідріса . Наприклад, функція для зчитування рядка з файлу має такий тип

readLine  : { [FILE_IO (OpenFile Read)] } Eff String

що вказує, що ця функція застосована лише у тому випадку, якщо відкрито файл. Список у дужках вказує, які ефекти доступні. У цьому випадку ми маємо, що ця функція вимагає ефекту відкриття файлу для читання.

Більше інформації про бібліотеку ефектів можна знайти тут .

Ще однією програмою є використання залежних типів для одночасності, про що повідомляє автор Idris у наступній статті .


1
Додано більше прикладів.
Родріго Рібейро

3

як згадується у відповіді jmite, теорія логіки / типу вищого порядку в верифікації ланцюга / апаратури / електроніки існує вже десятиліттями і зараз настільки рутинна, що її навіть не помітили / розглядали настільки як "додаток" після очевидно великих зусиль з передачі ~ 1990-х років, хоча це все ще є активною сферою досліджень. є також багато застосувань Coq та його логіки типу, зокрема, для верифікації ланцюгів / апаратних засобів та електроніки, аж до логіки затвора низького рівня до набагато більш високих рівнів / структур / підсистем порядку. Ось кілька ключових записів


1
Для справедливості, проте, більшість фактичних перевірок обладнання в промислових масштабах проводилося за допомогою перевірки моделі - технології верифікації, яка, як правило, не пов'язана з теорією типів (хоча мости були зроблені останнім часом). Теорія типів використовується для побудови мов опису апаратних засобів (не надуманих мов програмування), і більшість мов, які ви надаєте, належать до цієї категорії, а деякі допоміжні помічники призначені для перевірки апаратних засобів (зокрема, оригінальний HOL, але не найбільш використовувані ПВС) - це Крірі-Говард, що транспортує теорію типів.
газче

якщо у вас є більш глибокий досвід в апаратній перевірці, було б цікаво почути більше деталей у програмі Computer Science Chat, але подумати / підозрювати, що вузькі / чіткі лінії / узагальнення в цій галузі провести непросто, наприклад, між перевіркою моделі та теорією типів. може знадобитися дуже тонкий історичний аналіз, щоб всебічно розкрити / розв'язати зв'язки між двома різними полями з різними цілями, а іноді навіть поза можливостями експертів у будь-якій галузі окремо ... загальна інформація показує сильні зв’язки, які можна було б проаналізувати далі. ..
vzn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.