Programování výpočetních funkcí - Programming Computable Functions

Ve vědě o počítačích , programování vyčíslitelných funkcí (PCF) je napsaný funkcionální jazyk představil Gordon Plotkin v roce 1977, na základě předchozí nepublikovaného materiálu Dana Scotta . Lze jej považovat za rozšířenou verzi typovaného lambda kalkulu nebo za zjednodušenou verzi moderních typovaných funkčních jazyků, jako je ML nebo Haskell .

Zcela abstraktní model pro PCF byl nejprve dán Milner (1977). Protože však Milnerův model byl v podstatě založen na syntaxi PCF, byl považován za méně než uspokojivý (Ong, 1995). První dva plně abstraktní modely nevyužívající syntaxi byly formulovány v průběhu 90. let minulého století. Tyto modely jsou založeny na herní sémantice (Hyland a Ong, 2000; Abramsky, Jagadeesan a Malacaria, 2000) a Kripkeho logických vztazích (O'Hearn a Riecke, 1995). Nějakou dobu se zdálo, že ani jeden z těchto modelů nebyl zcela uspokojivý, protože nebyly účinně prezentovatelné. Nicméně, Ralph nakladač prokázaly, že žádný účinně reprezentativní zcela abstraktní model by mohl existovat, protože otázka programu ekvivalence v finitary fragmentu PCF není rozhodnutelný.

Syntax

Tyto typy PCF jsou definovány jako indukčně

  • nat je typ
  • Pro typy σ a τ existuje typ στ

Kontext je seznam dvojic X: å , kde x je název variabilní a σ je typ, takže žádný název proměnné duplikovány. Poté definujeme typizační úsudky termínů v kontextu obvyklým způsobem pro následující syntaktické konstrukce:

  • Proměnné (pokud x: σ je součástí kontextu Γ , pak Γx  : σ )
  • Aplikace (výrazu typu στ na výraz typu σ )
  • λ-abstrakce
  • Y pevný bod kombinátor (což z hlediska typu å z hlediska typu åå )
  • Operace následník ( succ ) a předchůdce ( pred ) na nat a konstanta 0
  • Podmíněné, pokud s pravidlem psaní:
( nat s zde budou interpretovány jako booleány s konvencí jako nula označující pravdu a jakékoli jiné číslo označující nepravdu)

Sémantika

Denotační sémantika

Poměrně přímočarou sémantikou jazyka je Scottův model . V tomto modelu

  • Typy jsou interpretovány jako určité domény .
    • (přirozená čísla se spodním prvkem sousedí, s plochým uspořádáním)
    • je interpretován jako doména Scott-spojitých funkcí od do s bodovým uspořádáním.
  • Kontext je interpretován jako produkt
  • Termíny v kontextu jsou interpretovány jako spojité funkce
    • Variabilní termíny jsou interpretovány jako projekce
    • Abstrakce a aplikace lambda jsou interpretovány s využitím karteziánské uzavřené struktury kategorie domén a spojitých funkcí
    • Y se interpretuje tak, že se vezme nejméně pevný bod argumentu

Tento model není pro PCF plně abstraktní; ale je zcela abstraktní pro jazyk získaný přidáním paralely nebo operátoru do PCF (str. 293 v odkazu Hyland a Ong 2000 níže).

Poznámky

  1. ^ „PCF je programovací jazyk pro vyčíslitelné funkce, založený na LCF, Scottově logice vypočítatelných funkcí“ ( Plotkin 1977 ). Programming Computable Functions is used by ( Mitchell 1996 ). Označuje se také jako Programování s výpočetními funkcemi nebo Programovací jazyk pro výpočetní funkce .

Reference

externí odkazy