Normalizációs tulajdonság (absztrakt átírás) - Normalization property (abstract rewriting)

A matematikai logikában és az elméleti informatikában az átírási rendszer rendelkezik az ( erős ) normalizálási tulajdonsággal, vagy megszűnik, ha minden tag erősen normalizálódik ; vagyis ha az újraírások minden sorozata végül egy redukálhatatlan , normál formának is nevezett kifejezéssel fejeződik be . Az átírási rendszernek a gyenge normalizálási tulajdonsága is lehet , ami azt jelenti, hogy minden kifejezés esetében létezik legalább egy meghatározott átírási sorozat, amely végül normál formát, azaz redukálhatatlan kifejezést eredményez.

Lambda számítás

Gépelés nélküli lambda számítás

A tiszta, tipizálatlan lambda -számítás nem elégíti ki az erős normalizálási tulajdonságot, és még a gyenge normalizálási tulajdonságot sem. Vegye figyelembe a kifejezést . A következő átírási szabályt tartalmazza: Bármilyen kifejezésre ,

De fontolja meg, mi történik, ha önmagára alkalmazunk :

Ezért a kifejezés sem erősen, sem gyengén nem normalizálódik.

Gépelt lambda számítás

Különböző rendszerek gépelt lambda kalkulus beleértve az egyszerűen begépelt lambda-kalkulus , Jean-Yves Girard „s F-rendszer , és Thierry Coquand ” s kalkulus konstrukciók erősen normalizálódik.

A normalizálási tulajdonsággal rendelkező lambda -számítási rendszer programozási nyelvnek tekinthető azzal a tulajdonsággal, hogy minden program leáll . Bár ez egy nagyon hasznos tulajdonság, van egy hátránya: a normalizáló tulajdonsággal rendelkező programozási nyelv nem lehet Turing teljes , ellenkező esetben a leállási problémát úgy lehetne megoldani, ha megnézzük, hogy a program típus-ellenőrzi-e. Ez azt jelenti, hogy vannak számítható függvények, amelyeket nem lehet definiálni az egyszerűen begépelt lambda -számításban (és hasonlóképpen vannak olyan számítható függvények, amelyeket nem lehet kiszámítani a konstrukciók számításában vagy az F rendszerben ).

Önértelmezés a begépelt lambda-számításban

Példaként lehetetlen önmagyarázót definiálni a fent hivatkozott számítások egyikében sem.

Itt "önértelmező" alatt olyan programot értünk, amely valamilyen egyszerű formátumú forráskifejezést (például karaktersorozatot) vesz fel, és a megfelelő normalizált kifejezés reprezentációját adja vissza. Ez a lehetetlen eredmény nem vonatkozik az "önértelmező" más definícióira. Például egyes szerzők a típusfunkciókat önértelmezőként emlegették , ahol a típusú kifejezések reprezentációi vannak . A félreértések elkerülése érdekében ezeket a funkciókat önfelismerőként fogjuk használni . Brown és Palsberg azt mutatták, hogy az önálló felismerők lehetne meghatározni, több erősen normalizáló nyelven, köztük F-rendszer és a System F ω . Ez lehetségesnek bizonyult, mert a kódolt kifejezések típusai, amelyek tükröződnek az ábrázolásuk típusaiban, megakadályozzák az átlós argumentum létrehozását . Brown és Palsberg cikkükben cáfolják azt a "hagyományos bölcsességet", amely szerint az önértelmezés lehetetlen (és éppen erre a Wikipédia-oldalra hivatkoznak a hagyományos bölcsesség példájaként), de valójában cáfolják az önképtelenséget felismerők, teljesen más fogalom. Követő munkájuk során áttértek az általunk használt specifikusabb "önfelismerő" terminológiára, nevezetesen megkülönböztetve ezeket az "önértékelőktől" . Felismerik azt is, hogy az önértékelés végrehajtása nehezebbnek tűnik, mint az önismeret, és az előbbi végrehajtását erősen normalizáló nyelven nyitott problémaként hagyják.

Lásd még

Megjegyzések

Hivatkozások