F rendszer - System F

Az F rendszer , más néven ( Girard – Reynolds ) polimorf lambda-számítás vagy másodrendű lambda-számítás , egy gépelt lambda-számítás, amely a típusok közötti univerzális számszerűsítési mechanizmus bevezetésével különbözik az egyszerűen begépelt lambda-számítástól . Az F rendszer tehát a programozási nyelvekben formalizálja a parametrikus polimorfizmus fogalmát , és elméleti alapot képez az olyan nyelvekhez, mint a Haskell és az ML . Az F rendszert önállóan Jean-Yves Girard (1972) logikus és John C. Reynolds (1974) informatikus fedezte fel .

Míg az egyszerűen begépelt lambda calculus változók változnak a kifejezéseken és kötőanyagokon keresztül, addig az F rendszer emellett típusonként változó változókkal és kötőanyagokkal rendelkezik. Például azt a tényt, hogy az identitásfüggvény bármilyen típusú A → A alakú lehet, az F rendszerben formalizálják ítéletként.

ahol egy típusváltozó található . A nagybetűket hagyományosan a típusszintű függvények jelölésére használják, szemben a kisbetűvel, amelyet az értékszintű funkciókhoz használnak. (A felülírott azt jelenti, hogy a kötött x típus ; a kettőspont utáni kifejezés az előtte lévő lambda kifejezés típusa.)

Mint kifejezés átíró rendszer , az F rendszer erősen normalizálódik . A típuskövetkeztetés azonban az F rendszerben (explicit típusjegyzetek nélkül) nem eldönthető. A Curry – Howard izomorfizmus szerint az F rendszer a másodrendű intuíciós logika azon töredékének felel meg , amely csak egyetemes számszerűsítést alkalmaz. Az F rendszer a lambda -kocka részének tekinthető, még kifejezőbb típusú lambda -kalkulákkal együtt, beleértve a függő típusokat is .

Girard szerint az F rendszer "F" -ét véletlenül választották ki.

Gépelési szabályok

Az F rendszer gépelési szabályai az egyszerűen begépelt lambda -számítás szabályai, a következőkkel kiegészítve:

(1) (2)

ahol a típusok, egy típusváltozó, és a kontextusban azt jelzi, hogy kötött. Az első szabály az alkalmazás, a második az absztrakció szabálya.

Logika és predikátumok

A típus meghatározása:, ahol egy típusváltozó . Ez azt jelenti: minden olyan függvény típusa, amely bemenetként egy α típust és két α típusú kifejezést vesz fel, és kimenetként egy α típusú kifejezést állít elő (vegye figyelembe , hogy jobb asszociatívnak tekintjük .)

A következő két meghatározásokat logikai értékeket és használják, kiterjesztve a meghatározása Church logikai értékek :

(Vegye figyelembe, hogy a fenti két függvény három - nem kettő - argumentumot igényel . Az utóbbi kettőnek lambda kifejezésnek kell lennie, de az elsőnek típusnak. Ezt a tényt tükrözi az a tény is, hogy ezeknek a kifejezéseknek a típusa ; az univerzális mennyiségi mutató kötődését az α megfelel a Λ kötődését az alfa a lambda expressziós magát. Fontos megjegyezni, hogy egy kényelmes rövidítése , de ez nem egy szimbólum a F-rendszer, hanem inkább egy „meta-szimbólum”. Hasonlóképpen, és vannak az F rendszer "szerelvényeinek" "meta-szimbólumai", kényelmes gyorsírása ( Bourbaki-értelemben ); máskülönben, ha az ilyen funkciókat meg lehetne nevezni (az F rendszeren belül), akkor nem lenne szükség a lambda-kifejező készülékre a függvények névtelen meghatározásához és a rögzített pont kombinátorhoz , amely e korlátozás körül jár.)

Ezután ezekkel a két feltételekkel definiálhatunk néhány logikai operátort (amelyek típusai ):

Ne feledje, hogy a fenti definíciókban egy típus argumentum , amely megadja, hogy a megadott másik két paraméter típus . Az egyházi kódolásokhoz hasonlóan nincs szükség IFTHENELSE függvényre, mivel csak nyers típusú kifejezéseket lehet használni döntési függvényként. Ha azonban egyet kérnek:

megteszi. A predikátum olyan függvény, amely egy -típusú értéket ad vissza . A legalapvetőbb predikátum az ISZERO, amely akkor és csak akkor tér vissza, ha az argumentuma a 0 egyházi szám :

F rendszer struktúrái

Az F rendszer lehetővé teszi a rekurzív konstrukciók természetes módon történő beágyazását, ami Martin-Löf típuselméletéhez kapcsolódik . Az absztrakt struktúrákat (S) konstruktorok segítségével hozzák létre . Ezek a következőképpen beírt funkciók:

.

A rekurzivitás akkor nyilvánul meg, ha maga megjelenik az egyik típuson belül . Ha rendelkezik ilyen konstruktorokkal, akkor megadhatja a típusát :

Például a természetes számok induktív adattípusként definiálhatók a konstruktorokkal

Az ennek a struktúrának megfelelő System F típus az . Az ilyen típusú kifejezések az egyházi számok gépelt változatát tartalmazzák , amelyek közül az első néhány:

{{{1}}}
{{{1}}}
{{{1}}}
{{{1}}}

Ha fordított sorrendben a currys érvek ( pl ), akkor az egyház számértékek egy olyan funkció, hogy vesz egy függvény f paraméterként, és visszatér a th ereje f . Ez azt jelenti, hogy az egyházi szám magasabb rendű függvény- egy f argumentumú függvényt vesz fel , és egy másik egyetlen argumentum függvényt ad vissza.

Használja programozási nyelveken

Az F rendszer ebben a cikkben használt változata kifejezetten gépelt vagy egyházi stílusú számítás. A λ-kifejezésekben található gépelési információk egyszerűvé teszik a típusellenőrzést . Joe Wells (1994) megoldotta a "kínos nyitott problémát" azzal, hogy bebizonyította, hogy a típusellenőrzés eldönthetetlen az F rendszer Curry-stílusú változatánál, vagyis olyannál, amely nem tartalmaz kifejezett gépelési megjegyzéseket.

Wells eredmény arra utal, hogy típusú következtető System F lehetetlen. Az F rendszer „ Hindley – Milner ”, vagy egyszerűen „HM” néven ismert korlátozása egyszerű típusú következtetési algoritmussal rendelkezik, és sok statikusan beírt funkcionális programozási nyelvhez, például a Haskell 98 -hoz és az ML családhoz használatos. Az idő múlásával, ahogy nyilvánvalóvá váltak a HM-típusú rendszerek korlátozásai, a nyelvek folyamatosan a kifejezőbb logika felé fordultak a típusrendszereikhez. A GHC Haskell fordító, túlmutat a HM-en (2008-tól), és nem szintaktikai típusú egyenlőséggel bővített F rendszert használ; az OCaml típusú rendszer nem HM szolgáltatásai közé tartozik a GADT .

A Girard-Reynolds izomorfizmus

A másodrendű intuíciós logika szerint a másodrendű polimorf lambda-számítást (F2) Girard (1972) és függetlenül Reynolds (1974) fedezte fel. Girard bebizonyította az ábrázolási tételt : hogy a másodrendű intuíciós predikátumlogikában (P2) a természetes számoktól kezdve a teljesnek bizonyítható természetes számok függvényei vetületet képeznek a P2-ből az F2-be. Reynolds bebizonyította az absztrakciós tételt : az F2 minden tagja kielégít egy logikai relációt, amely beágyazható a P2 logikai összefüggésekbe. Reynolds bebizonyította, hogy egy Girard-vetület, majd egy Reynolds-beágyazás képezi az identitást, azaz a Girard-Reynolds-izomorfizmust .

F rendszer ω

Míg F-rendszer megfelel az első tengelyére Barendregt a lambda kocka , F-rendszer ω vagy a magasabb rendű polimorf lambda kalkulus ötvözi az első tengely (polimorfizmus) a második tengely ( típus szereplők ); ez egy más, összetettebb rendszer.

F-rendszer ω lehet meghatározni induktív egy család rendszerek, ahol a pályára alapul féle megengedett az egyes rendszerekben:

  • engedély típusok:
    • (a típusok) és
    • hol és (a függvények típusa típusról típusra, ahol az argumentum típusa alacsonyabb rendű)

A limit, tudjuk meg a rendszer , hogy

Azaz F ω az a rendszer, amely lehetővé teszi a függvényeket típusoktól típusokig, ahol az argumentum (és az eredmény) bármilyen sorrendű lehet.

Vegye figyelembe, hogy bár az F ω nem korlátozza az argumentumok sorrendjét ezekben a leképezésekben, korlátozza az ezekhez tartozó leképezésekhez tartozó érvek univerzumát : ezeknek inkább típusoknak kell lenniük, mint értékeknek. Az F ω rendszer nem engedélyezi az értékek típusok ( függő típusok ) leképezését, de lehetővé teszi az értékekről az értékekre való leképezést ( absztrakció), a leképezést a típusokról az értékekre ( absztrakció) és a leképezéseket típusokról típusokra ( absztrakció típusok szintjén) )

Lásd még

Megjegyzések

Hivatkozások

További irodalom

Külső linkek