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 má β-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
- ^ Henk Barendregt; Wil Dekkers; Richard Statman (20. června 2013). Lambda kalkul s typy. Cambridge University Press. str. 1–. ISBN 978-0-521-76614-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.
- ^ 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.
- ^ 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.
- ^ "Typy křižovatek v TypeScript". Citováno 2019-08-01.
- ^ "Složené typy ve Scale". Citováno 2019-08-01.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.