Programmering av beräkningsbara funktioner - Programming Computable Functions

Inom datavetenskap är Programming Computable Functions (PCF) ett maskinskrivet funktionellt språk som introducerades av Gordon Plotkin 1977, baserat på tidigare opublicerat material av Dana Scott . Det kan anses vara en utökad version av den typade lambda -kalkylen eller en förenklad version av moderna maskinskrivna funktionella språk som ML eller Haskell .

En helt abstrakt modell för PCF gavs först av Milner (1977). Eftersom Milners modell i huvudsak baserades på syntaxen för PCF ansågs den dock vara mindre än tillfredsställande (Ong, 1995). De två första helt abstrakta modellerna som inte använder syntax formulerades under 1990 -talet. Dessa modeller är baserade på spelsemantik (Hyland och Ong, 2000; Abramsky, Jagadeesan och Malacaria, 2000) och Kripkes logiska relationer (O'Hearn och Riecke, 1995). För en tid ansågs det att ingen av dessa modeller var helt tillfredsställande, eftersom de inte var effektivt presenterbara. Men Ralph Loader visade att ingen effektivt presentabel helt abstrakt modell skulle kunna existera, eftersom frågan om program likvärdighet i finitary fragment av PCF inte avgörbara.

Syntax

De typer av PCF är induktivt definieras som

  • nat är en typ
  • För typerna σ och τ finns det en typ στ

Ett sammanhang är en lista med par x: σ , där x är ett variabelnamn och σ är en typ, så att inget variabelnamn dupliceras. Man definierar sedan att skriva bedömningar av termer-i-sammanhang på vanligt sätt för följande syntaktiska konstruktioner:

  • Variabler (om x: σ är en del av ett sammanhang Γ , då Γx  : σ )
  • Tillämpning (av en term av typen στ på en term av typen σ )
  • λ-abstraktion
  • Den Y fasta punkten Combinator (gör termer av typen o ur termer av typen oo )
  • Efterträdaren ( succ ) och föregångaren ( pred ) operationer på nat och konstant 0
  • Villkoren om med skrivregeln:
( nat kommer att tolkas som booleaner här med en konvention som noll som anger sanning och alla andra siffror som anger falskhet)

Semantik

Denotationssemantik

En relativt enkel semantik för språket är Scott -modellen . I denna modell,

  • Typer tolkas som vissa domäner .
    • (de naturliga siffrorna med ett bottenelement intill, med den platta ordningen)
    • tolkas som domänen för Scott-kontinuerliga funktioner från till , med den punktvisa ordningen.
  • Ett sammanhang tolkas som produkten
  • Termer i sammanhang tolkas som kontinuerliga funktioner
    • Variabla termer tolkas som prognoser
    • Lambda -abstraktion och tillämpning tolkas genom att använda den kartesiska slutna strukturen för kategorin domäner och kontinuerliga funktioner
    • Y tolkas genom att ta den minst fasta punkten i argumentet

Denna modell är inte helt abstrakt för PCF; men det är helt abstrakt för språket som erhålls genom att lägga till en parallell eller operator till PCF (s. 293 i Hyland och Ong 2000 -referensen nedan).

Anteckningar

  1. ^ "PCF är ett programmeringsspråk för beräkningsbara funktioner, baserat på LCF, Scotts logik för beräkningsbara funktioner" ( Plotkin 1977 ). Programmering av beräkningsbara funktioner används av ( Mitchell 1996 ). Det kallas också programmering med beräkningsbara funktioner eller programmeringsspråk för beräkningsbara funktioner .

Referenser

externa länkar