Kázeň typu křižovatka - Intersection type discipline

v matematická logika, disciplína typu křižovatka je pobočkou teorie typů zahrnující systémy typu které používají konstruktor typu křižovatky přiřadit více typů jednomu termínu.[1]Zejména pokud je termín lze přiřadit oba typ a typ , pak lze přiřadit typ křižovatky (a naopak). Proto lze konstruktor typu křižovatky použít k vyjádření konečných heterogenních ad hoc polymorfismus (naproti tomu parametrický polymorfismus ). Například λ-termín lze přiřadit typ ve většině systémů typu křižovatka, za předpokladu pro termín proměnná oba typ funkce a odpovídající typ argumentu .

Mezi významné systémy typu křižovatky patří systém přiřazení typů Coppo – Dezani,[2] systém přiřazování typů Barendregt-Coppo – Dezani,[3] a základní systém přiřazování typů křižovatek.[4]Nejpozoruhodnější je, že systémy typu křižovatky úzce souvisí s (a často přesně charakterizují) normalizační vlastnosti λ-podmínky pod β-redukce.

V programovacích jazycích, jako je TypeScript[5] a Scala,[6] typy křižovatek se používají k vyjádření ad hoc polymorfismus.

Dějiny

Průkopníkem disciplíny typu křižovatky byl Mario Coppo, Mariangiola Dezani-Ciancaglini, Patrick Sallé a Garrel Pottinger.[2][7][8]Základní motivací bylo studium sémantických vlastností (např normalizace ) z λ-kalkul pomocí teorie typů.[9]Zatímco počáteční práce Coppa a Dezaniho zavedla typovou teoretickou charakterizaci silné normalizace pro λI-kalkul,[2] Pottinger rozšířil tuto charakterizaci na λK-kalkul.[7]Kromě toho Sallé přispěl k pojmu univerzálního typu které lze přiřadit libovolnému λ-členu, což odpovídá prázdné křižovatce.[8]Použití univerzálního typu umožnil jemnozrnnou analýzu normalizace hlavy, normalizace a silné normalizace.[10]Ve spolupráci s Henk Barendregt, byl dán filtr λ-model pro systém typů křižovatek, vázající typy křižovatek stále více na sémantiku λ-kalkulu.

Kvůli korespondenci s normalizací typovatelnost v prominentních systémech typu křižovatky (kromě univerzálního typu) je nerozhodnutelný.Dodatečně, nerozhodnutelnost dvojího problému obydlí typu v prominentních systémech typu křižovatky prokázal Paweł Urzyczyn.[11]Později byl tento výsledek vylepšen úplnost exponenciálního prostoru obydlí křižovatky 2. stupně a nerozhodnutelnost obydlení křižovatkového typu 3. úrovně.[12]Pozoruhodně, ředitel školy bydlení typu je rozhodnutelné v polynomiální čas.[13]

Systém přiřazování typů Coppo – Dezani

The Systém přiřazování typů Coppo – Dezani rozšiřuje jednoduše zadejte λ-kalkul povolením převzetí více typů pro termínovou proměnnou.[2]

Termínový jazyk

Termín jazyk darováno λ-podmínky (nebo, výrazy lambda ):

Zadejte jazyk

Jazyk typu je indukčně definována následující gramatikou:

Konstruktor typu křižovatky () se bere modulo asociativita, komutativita a idempotence.

Zadejte pravidla

The pravidla typu , , , a z jsou:

Vlastnosti

Typičnost a normalizace spolu úzce souvisí podle následujících vlastností:[2]

  • Redukce subjektu: Pokud a , pak .
  • Normalizace: Pokud , pak β-normální forma.
  • Typizovatelnost silně normalizující λ-podmínky: Pokud je silně normalizující, pak pro některé a .
  • Charakterizace λI-normalizace: má normální tvar v λI-kalkulu, právě když pro některé a .

Pokud je jazyk typu rozšířen tak, aby obsahoval prázdnou křižovatku, tj. , pak je uzavřen pod β-rovností a je solidní a úplný pro sémantiku odvození.[14]

Systém přiřazování typů Barendregt – Coppo – Dezani

The Systém přiřazování typů Barendregt – Coppo – Dezani rozšiřuje systém přiřazování typů Coppo – Dezani o následující tři aspekty:[3]

  • zavádí konstanta univerzálního typu (blízký prázdné křižovatce), které lze přiřadit libovolnému λ-členu.
  • umožňuje konstruktor typu křižovatky se zobrazí na pravé straně konstruktoru typu šipky .
  • zavádí podtypování typu křižovatky částečné pořadí na typech společně s odpovídajícím pravidlem psaní.

Termínový jazyk

Termín jazyk darováno λ-podmínky (nebo, výrazy lambda ):

Zadejte jazyk

Jazyk typu je indukčně definována následující gramatikou:

Podtypování typu křižovatky

Podtypování typu křižovatky je definován jako nejmenší předobjednávka (reflexní a tranzitivní relace) přes typy křižovatek splňující následující vlastnosti:

Podtypování typu křižovatky je rozhodnutelné v kvadratickém čase.[15]

Zadejte pravidla

The pravidla typu , , , , , a z jsou:

Vlastnosti

  • Sémantika: je zvuk a kompletní wrt. filtr λ-model, ve kterém se interpretace λ-termínu shoduje s množinou typů, které mu lze přiřadit.[3]
  • Redukce subjektu: Pokud a , pak .[3]
  • Rozšíření předmětu: Pokud a , pak .[3]
  • Charakterizace silná normalizace: silně normalizuje wrt. β-redukce, právě když je odvoditelné bez pravidla pro některé a .[16]
  • Hlavní páry: Pokud se silně normalizuje, pak existuje pár principů tak, že pro jakékoli psaní dvojice lze získat od hlavního páru pomocí rozšíření typu, zvedání a nahrazování.[17]

Reference

  1. ^ Henk Barendregt; Wil Dekkers; Richard Statman (20. června 2013). Lambda kalkul s typy. Cambridge University Press. str. 1–. ISBN  978-0-521-76614-2.
  2. ^ A b C d E Coppo, Mario; Dezani-Ciancaglini, Mariangiola (1980). "Rozšíření základní teorie funkčnosti pro λ-kalkul". Deník Notre Dame formální logiky. 21 (4): 685–693. doi:10.1305 / ndjfl / 1093883253.
  3. ^ A b C d E Barendregt, Henk; Coppo, Mario; Dezani-Ciancaglini, Mariangiola (1983). Msgstr "Model filtru lambda a úplnost přiřazení typu". Journal of Symbolic Logic. 48 (4): 931–940. doi:10.2307/2273659. JSTOR  2273659.
  4. ^ van Bakel, Steffen (2011). "Přísné typy průsečíků pro lambda kalkul". ACM Computing Surveys. 43 (3): 20:1–20:49. doi:10.1145/1922649.1922657.
  5. ^ "Typy křižovatek v TypeScript". Citováno 2019-08-01.
  6. ^ "Složené typy ve Scale". Citováno 2019-08-01.
  7. ^ A b Pottinger, G. (1980). Přiřazení typu pro silně normalizovatelné termíny λ. K HB Curry: eseje o kombinatorické logice, lambda kalkulu a formalismu, 561-577.
  8. ^ A b Coppo, Mario; Dezani-Ciancaglini, Mariangiola; Sallé, Patrick (1979). "Funkční charakterizace některých sémantických rovností uvnitř lambda-kalkulu". V Hermann A. Maurer (ed.). Automata, Languages ​​and Programming, 6th Colloquium, Graz, Austria, 16. – 20. Července 1979, Proceedings. 71. Springer. str. 133–146. doi:10.1007/3-540-09510-1_11. ISBN  3-540-09510-1.
  9. ^ Coppo, Mario; Dezani-Ciancaglini, Mariangiola (1978). Msgstr "Nové přiřazení typu pro termíny λ". Archiv matematické logiky a Grundlagenforschung. 19 (1): 139–156. doi:10.1007 / BF02011875.
  10. ^ Coppo, Mario; Dezani-Ciancaglini, Mariangiola; Venneri, Betti (1981). Msgstr "Funkční znaky řešitelných výrazů". Matematická logika čtvrtletně. 27 (2–6): 45–58. doi:10.1002 / malq.19810270205.
  11. ^ Urzyczyn, Paweł (1999). "Problém prázdnoty pro typy křižovatek". Journal of Symbolic Logic. 64 (3): 1195–1215. doi:10.2307/2586625. JSTOR  2586625.
  12. ^ Urzyczyn, Paweł (2009). "Obydlení typů křižovatek nízkého stupně". Mezinárodní konference o zadaných lambda kalkulech a aplikacích. TLCA 2009. 5608. Springer. str. 356–370. doi:10.1007/978-3-642-02273-9_26. ISBN  978-3-642-02272-2.
  13. ^ Dudenhefner, Andrej; Rehof, Jakob (2019). Msgstr "Knížectví a aproximace pod dimenzionální hranicí". Sborník ACM o programovacích jazycích. POPL 2019. 3. ACM. str. 8: 1–8: 29. doi:10.1145/3290321. ISSN  2475-1421.
  14. ^ Van Bakel, Steffen (1992). "Úplná omezení disciplíny typu křižovatka". Teoretická informatika. 102 (1): 135–163. doi:10.1016 / 0304-3975 (92) 90297-S.
  15. ^ Dudenhefner, Andrej; Martens, Moritz; Rehof, Jakob (2017). Msgstr "Problém sjednocení typu algebraické křižovatky". Logické metody v informatice. 13 (3). doi:10.23638 / LMCS-13 (3: 9) 2017.
  16. ^ Ghilezan, Silvia (1996). "Silná normalizace a typovatelnost s typy křižovatek". Deník Notre Dame formální logiky. 37 (1): 44–52. doi:10.1305 / ndjfl / 1040067315.
  17. ^ Ronchi Della Rocca, Simona; Venneri, Betti (1983). "Základní typová schémata pro rozšířenou teorii typů". Teoretická informatika. 28 ((1-2)): 151–169. doi:10.1016/0304-3975(83)90069-5.