Programmering af beregningsfunktioner - Programming Computable Functions

Inden for datalogi er Programming Computable Functions (PCF) et maskinskrevet funktionssprog, der blev introduceret af Gordon Plotkin i 1977, baseret på tidligere upubliceret materiale af Dana Scott . Det kan betragtes som en udvidet version af den typede lambda -beregning eller en forenklet version af moderne typede funktionssprog som ML eller Haskell .

En fuldstændig abstrakt model for PCF blev først givet af Milner (1977). Men da Milners model i det væsentlige var baseret på PCF -syntaksen, blev den betragtet som mindre end tilfredsstillende (Ong, 1995). De to første fuldt abstrakte modeller, der ikke anvender syntaks, blev formuleret i løbet af 1990'erne. Disse modeller er baseret på spil semantik (Hyland og Ong, 2000; Abramsky, Jagadeesan og Malacaria, 2000) og Kripke logiske relationer (O'Hearn og Riecke, 1995). For en tid føltes det, at ingen af ​​disse modeller var helt tilfredsstillende, da de ikke var effektivt præsentable. Imidlertid demonstrerede Ralph Loader , at der ikke kunne eksistere en effektivt præsentabel fuldstændig abstrakt model, da spørgsmålet om programækvivalens i det endelige fragment af PCF ikke kan afgøres.

Syntaks

De typer af PCF er induktivt defineret som

  • nat er en type
  • For typerne σ og τ er der en type στ

En kontekst er en liste over par x: σ , hvor x er et variabelnavn og σ er en type, således at intet variabelnavn duplikeres. Man definerer derefter at skrive bedømmelser af udtryk-i-kontekst på den sædvanlige måde for følgende syntaktiske konstruktioner:

  • Variabler (hvis x: σ er en del af en kontekst Γ , så Γx  : σ )
  • Anvendelse (af et udtryk af typen στ til et udtryk af typen σ )
  • λ-abstraktion
  • The Y faste punkt combinator (gør udtryk af typen o ud af udtryk af typen crcr )
  • Efterfølgeren ( succ ) og forgængeren ( forud ) operationer på nat og den konstante 0
  • Den betingede hvis med typebestemmelsen:
( nat s vil blive fortolket som booleanske her med en konvention som nul angiver sandhed og ethvert andet tal, der angiver falskhed)

Semantik

Denotationssemantik

En relativt ligetil semantik for sproget er Scott -modellen . I denne model,

  • Typer tolkes som bestemte domæner .
    • (de naturlige tal med et bundelement ved siden af, med den flade rækkefølge)
    • fortolkes som domænet for Scott-kontinuerlige funktioner fra til , med den punktvise rækkefølge.
  • En kontekst fortolkes som produktet
  • Termer i kontekst fortolkes som kontinuerlige funktioner
    • Variable udtryk tolkes som fremskrivninger
    • Lambda -abstraktion og anvendelse fortolkes ved at gøre brug af den kartesiske lukkede struktur i kategorien domæner og kontinuerlige funktioner
    • Y fortolkes ved at tage det mindst faste punkt i argumentet

Denne model er ikke fuldstændig abstrakt for PCF; men det er fuldstændigt abstrakt for sproget opnået ved at tilføje en parallel eller operator til PCF (s. 293 i Hyland og Ong 2000 -referencen nedenfor).

Noter

  1. ^ "PCF er et programmeringssprog til beregningsfunktioner, baseret på LCF, Scotts logik med beregningsfunktioner" ( Plotkin 1977 ). Programmering af beregningsfunktioner bruges af ( Mitchell 1996 ). Det kaldes også Programmering med beregningsfunktioner eller Programmeringssprog til beregningsfunktioner .

Referencer

eksterne links