Кіріспе

Мәніне байланысты анықтамасы бар тип. Компьютерлік ғылым мен логикада тәуелді тип – мәніне байланысты анықталатын тип. Бұл типтік теория мен типтік жүйелердің өзара байланысты ерекшелігі. Интуиционистік типтік теорияда тәуелді типтер логиканың "барлығы үшін" және "бірде-бір" сияқты кванторларын кодтау үшін қолданылады. Agda, ATS, Coq, F*, Epigram, Idris және Lean сияқты функционалдық бағдарламалау тілдерінде тәуелді типтер бағдарламашыға мүмкін болатын іске асырулар жиынтығын одан әрі шектейтін типтерді тағайындауға мүмкіндік беру арқылы қателерді азайтуға көмектеседі. Тәуелді типтердің екі көп қолданылатын мысалы – тәуелді функциялар және тәуелді жұптар. Тәуелді функцияның қайтарым типі оның аргументтерінің бірінің мәніне (тек типіне ғана емес) байланысты болуы мүмкін. Мысалы, оң бүтін санды қабылдайтын функция, массивтің типі массивінің ұзындығы болатын массивті қайтара алады. (Бұл полиморфизм мен жалпылама бағдарламалаудан өзгеше, олардың екеуі де типті аргумент ретінде қолданады.) Тәуелді жұптың екінші мәні болуы мүмкін, оның типі бірінші мәнге байланысты. Массив мысалын алсақ, тәуелді жұп массиві мен оның ұзындығын типтік қауіпсіздікпен жұптастыру үшін қолданылуы мүмкін. Тәуелді типтер типтік жүйеге күрделілік қосады. Бағдарламада тәуелді типтердің теңдігін анықтау үшін есептеулер қажет болуы мүмкін. Егер тәуелді типтерде кез келген мәндерге рұқсат берілсе, типтік теңдікті шешу екі кез келген бағдарламаның бірдей нәтиже беретінін анықтауды қамтиды; сондықтан типті тексерудің шешілуі берілген типтік теорияның теңдік семантикасына, яғни типтік теорияның интенционалды немесе экстенсионалды екеніне байланысты болуы мүмкін.

Тарих

1934 жылы Хаскелл Кэрри типтелген ламбда-есептеуде және оның комбинаторлық логикалық баламасында қолданылатын типтердің үкімдік логикадағы аксиомалармен ұқсас үлгіні ұстанғанын байқады. Одан әрі, логикадағы әрбір дәлелге бағдарламалау тілінде сәйкес келетін функция (термин) бар еді. Кэрридің мысалдарының бірі – қарапайым типтелген ламбда-есептеу мен интуиционистік логика арасындағы сәйкестік. Предикаттық логика – бұл кванторлар қосылу арқылы үкімдік логиканың кеңейтілген түрі. Говард пен де Брюйн осы күшті логикаға сәйкес келу үшін ламбда-есептеуді кеңейтті, "барлығы үшін" дегенге сәйкес келетін тәуелді функциялардың типтерін және "бар" дегенге сәйкес келетін тәуелді жұптарды жасады. (Осы және Говардтың басқа жұмыстарының нәтижесінде, типтер ретіндегі ұсыныстар Кэрри-Говард сәйкестігі деп белгілі.)

Ресми анықтама

Жалпы айтқанда, тәуелді типтер индекстелген жиындар отбасының типіне ұқсас. Нақтырақ айтқанда, типтер әлеміндегі тип берілгенде, әрбір терминге тип тағайындайтын типтер отбасы болуы мүмкін. Біз типтің a-ға байланысты өзгеретінін айтамыз.

П түрі

Қайтару мәнінің түрі аргументіне байланысты өзгеріп отыратын функция (яғни, тұрақты кодоменасы жоқ) тәуелді функция деп аталады, ал мұндай функцияның түрі тәуелді өнім түрі, пи түрі (Π түрі) немесе тәуелді функция түрі деп аталады. Мысалы, A-ны 0-ден 255-ке дейінгі таңбасыз бүтін сандар түрі деп алсақ, және одан әрі 256 кездейсоқ мән үшін де солай болса, онда ол сомаға дейін тобырлайды.

Ламбда текшелерінің жүйелері

Хенк Барендрегт типтік жүйелерді үш ось бойынша жіктеу үшін ламбда кубын жасады. Нәтижесінде пайда болған куб пішіндес диаграмманың сегіз бұрышы әрқайсысы бір типтік жүйені көрсетеді, ең аз экспрессивті бұрышта қарапайым типтелген ламбда-есептеуі, ал ең экспрессивтісі – конструкциялар калькуляторы орналасқан. Кубтың үш осі қарапайым типтелген ламбда-есептеуіне үш түрлі кеңейтім енгізуге сәйкес келеді: тәуелді типтерді қосу, полиморфизмді қосу және жоғары ретті типтік конструкторларды қосу (мысалы, типтерден типтерге функциялар). Ламбда кубы таза типтік жүйелер арқылы одан әрі жалпыланады.

Бірінші реттік тәуелді тип теориясы

Ламбда-калькулының қарапайым теңшелі функция кеңістігі типін тәуелді өнім түріне жалпылау арқылы, логикалық LF-ке сәйкес келетін бірінші реттік тәуелді типтер жүйесі алынады.

Екінші реттік тәуелді тип теориясы

Екінші реттік тәуелді типтер жүйесі типтік конструкторлар бойынша квантификацияға рұқсат ету арқылы алынады. Бұл теорияда тәуелді өнім операторы қарапайым типтелген лямбда-калькулустың операторын және F жүйесінің байланыстырушысын қамтиды.

Жоғары дәрежелі тәуелді типті полиморфты ламбдалық есептеу

Жоғары ретті жүйе Ламбда кубындағы абстракцияның барлық төрт түріне қатысты: терминдерден терминдерге, типтерден типтерге, терминдерден типтерге және типтерден терминдерге функциялар. Бұл жүйе құрылымдық есептеуге сәйкес келеді, ал оның туындысы – индуктивтік құрылымдық есептеу Coq дәлелдеу құралының негізгі жүйесі болып табылады.

Бір мезгілде бағдарламалау тілі мен логикасы

Кьюри-Ховард сәйкестігі математикалық қасиеттерді кез келген күрделілікте білдіретін типтерді құруға мүмкіндік береді. Егер пайдаланушы типтің толықтырылғанын (яғни, осы типтің мәнінің бар екенін) конструктивті түрде дәлелдей алса, компилятор осы дәлелді тексеріп, оны орындалатын компьютерлік кодқа айналдыра алады, бұл код құрастыруды орындау арқылы мәнді есептейді. Дәлелді тексеру мүмкіндігі тәуелді типтелген тілдерді дәлелдеуге көмектесетін жүйелермен тығыз байланысты етеді. Кодты жасау мүмкіндігі формалды бағдарламаны тексеруге және дәлелмен бірге кодты ұсынуға қуатты тәсіл ұсынады, себебі код механикалық түрде тексерілген математикалық дәлелден тікелей туындайды.