Závislostní typ

ikona
Tento článek není dostatečně ozdrojován, a může tedy obsahovat informace, které je třeba ověřit.
Jste-li s popisovaným předmětem seznámeni, pomozte doložit uvedená tvrzení doplněním referencí na věrohodné zdroje.

Závislostní typ je v teorii typů typ závisející na konkrétní hodnotě. Obecně se rozlišuje mezi závislostními typy součinovými a součtovými.

Je-li A U {\displaystyle A\in {\mathcal {U}}} nějaký typ z univerza typů, pak ( a : A ) B ( a ) {\displaystyle \prod _{(a:A)}B(a)} je součinový závislostní typ, přičemž B {\displaystyle B} je typ závisející na hodnotě a : A {\displaystyle a:A} . Naopak ( a : A ) B ( a ) {\displaystyle \sum _{(a:A)}B(a)} je součtový závislostní typ. Na B {\displaystyle B} lze nahlížet jako na funkci přiřazující hodnotám (typu A {\displaystyle A} ) typy (z U {\displaystyle {\mathcal {U}}} ). Je-li B {\displaystyle B} konstantní, odpovídají součinové typy funkčním typům ( ( a : A ) B A B {\displaystyle \prod _{(a:A)}B\equiv A\rightarrow B} ) a součtové typy kartézskému součinu ( ( a : A ) B A × B {\displaystyle \sum _{(a:A)}B\equiv A\times B} ).

Závislostní typy byly zavedeny do teorie typů za účelem rozšíření Curry-Howardova isomorfismu z logiky výrokové na predikátovou, odpovídají totiž kvantifikátorům logiky prvního řádu. Používají se v některých programovacích jazycích pro silnou typovou kontrolu, zejména v kritických aplikacích, kde je kladen velký důraz na bezpečnost a korektnost programu.

V jazycích se závislostními typy je možné používat funkce v signaturách funkcí, například v jazyce Idris:[1]

getType : Bool -> Type
getType True = String
getType False = Nat

getValue : (b : Bool) -> getType b
getValue True = "abcd"
getValue False = 1234

Rovnostní typy a negace

Rovnost dvou objektů lze vyjádřit typem a = A b {\displaystyle a=_{A}b} . Tento typ má nejvýše jeden konstruktor (právě jeden, pokud a = b {\displaystyle a=b} ), který se značí Refl.

Negace typu je operátor Not ( T ) T {\displaystyle \operatorname {Not} (T)\equiv T\supset \bot } . Dokazatelnost se v teorii typů řídí intuicionistickou logikou, proto zde neplatí zákon o vyloučení třetího.

Reference

  1. https://dev.to/betelgeuse/prolegomena-k-uvodu-do-zakladu-zavislostnich-typu-4380