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
- Egzisztenciális típusok - az univerzális típusok egzisztenciálisan számszerűsített megfelelői
- F rendszer <: - kiterjeszti az F rendszert altípusokkal
- U rendszer
Megjegyzések
Hivatkozások
- Girard, Jean-Yves (1971). "Une Extension de l'Interpretation de Gödel à l'Analyse, et son Application à l'Élimination des Coupures dans l'Analyse et la Théorie des Types". A második skandináv logikai szimpózium folyóirata . Amszterdam. 63–92. doi : 10.1016/S0049-237X (08) 70843-7 .
- Girard, Jean-Yves (1972), Interprétation fonctionnelle et élimination des coupures de l'arithmétique d'ordre supérieur (Ph.D. értekezés) (franciául), Université Paris 7.
- Reynolds, John (1974). A típusstruktúra elmélete felé .
- Girard, Jean-Yves; Lafont, Yves; Taylor, Paul (1989). Bizonyítékok és típusok . Cambridge University Press. ISBN 978-0-521-37181-0.
- Wells, JB (1994). "A tipizálhatóság és a típusellenőrzés a másodrendű lambda-számításban egyenértékű és eldönthetetlen." Az IEEE 9. éves szimpóziuma a számítógépes logika logikájáról (LICS) . 176–185. doi : 10.1109/LICS.1994.316068 . ISBN 0-8186-6310-3. Utólagos változat
További irodalom
- Pierce, Benjamin (2002). "V polimorfizmus 23. fejezet. Univerzális típusok, 25. fejezet. Az F rendszer ML megvalósítása" . Típusok és programozási nyelvek . MIT Nyomja meg. 339–362., 381–388. ISBN 0-262-16209-1.
Külső linkek
- Franck Binard F rendszer összefoglalója .
- F-rendszer co : igásló modern fordítóprogramok által Greg Morrisett