Genereerimine tõlkija Optimeeringud alates tõendid

Original: http://www.cs.cornell.edu/~ross/publications/proofgen/
Genereerimine tõlkija Optimeeringud
alates tõendid

POPL 2010: [PDF] [bibtexi] [pptx] [mp4]

Autorid: Ross Tate, Michael Stepp, Sorin Lerner

Tehniline aruanne: [PDF] [bibtexi]
Abstraktne

Tutvustame automatiseeritud võtet kompilaatori optimeerimine on näited konkreetsete programmidega enne ja pärast paranemist on tehtud neid. Põhiline tehniline ülevaate meie tehnikat, et tõend võrdväärsust originaali ja muutnud konkreetsete programmide teatab meile, mis seotud aspekte on oluline ja mis võib ära visata. Meie tehnikat seepärast kasutab neid tõendeid, mida on võimalik toota tõlke kinnitamise või tõestamise kes koostaja, nagu juhend üldistada originaali ja ümber programmid laialt rakendatav optimeerimise reeglid.

Tutvustame kategooria teoreetilise vormistamine meie tõend üldistus tehnikat. See võtmiseks muudab meie tehnikat kohaldatav loogika peale meie endi. Eelkõige tahame näidata, kuidas meie tehnikat saab kasutada ka õppida päringu optimeerimist relatsioonandmebaasides või abi programmeerijad silumine tüübile vigu.

Lõpuks näitame katseliselt, et meie meetod võimaldab programmeerijad koolitada kompilaator taotluse konkreetse optimeerimine, andes konkreetseid näiteid omasaated ja soovitud ümber programmid. Samuti näitavad, kuidas see võimaldab koostaja õppida tõhus-to-run optimeerimine on kallis-to-run super-optimoijien.

Tõend üldistus

Oluline osa selles raamatus on meie raamistik tõend üldistus. Samamoodi abstraktse tõlgenduse saab rakendada erinevate veevõtu toota iteratiivne analüüsib programm, meie raamistikku saab kasutada erinevates loogika toota algoritmid üldistades. Näiteks, kasutades meie raamistiku E-ide korral, saame algoritmi üldistades tõestus võrdväärsust konkreetsete programmide laialt rakendatav programm optimeerimisest. Meil on juba rakendatud meie raames andmebaasidele, Hindley-Milner tüübist järeldada, lepingute ja type kontrollides ehitada algoritmid kaasaaitamine andmebaasipäring optimeerimise tüüpi silumine Hindley-Milner põhinev tüübist järeldada, lepingu silumine ja kirjuta üldistus. Me soovime, et see raamistik peab olema kergesti kättesaadav, ja me oleks huvitatud kuulda täiendavaid rakendusi. Meil oleks hea meel, et aidata teadlastel ületada tõkked, mis kodeerivad loogika kategooriliselt või ehitamise pushout lõppe, et nad saaksid kasutada meie raames lahendada oma probleeme. Palun võtke meiega nõu.

“Enim” General Proof: Paljud küsimused saime pärast esitlust olid selle kohta, kuidas tõend võib olla “kõige” üldiselt. Seal on palju parameetreid selle atribuudi. Esiteks tõend on võti. Konkreetne optimeerimine ei pruugi olla kõige üldisemal kujul, kuid iga tõend teeb. Kuid kõige üldine vorm mõned tõendid võib olla laiem kui kõige üldine vorm mõnes teises tõestus. Sageli võib see olla täielik õnnetus; Teinekord üks tõend võib olla veidi parem variant järjekordne kinnitus. Näiteks tahes järjestikune vormis traditsiooniline puu-struktureeritud proof tegelikult toota paremat üldistus kui tõend puu. Ettekandes näitame mitmeid tehnikaid parandamiseks tõestus, et see on parem üldistus. Teiseks üldistus protsessi kõik leiab aset loogika. Mõned loogika on laiem kui teised, nii üldisema loogika hakkab tootma üldisem tõestus. Eriti vahet aksioomid ja aksioom skeeme muutub väga oluline tõend üldistus. Näiteks programmi väljendus graafikud on loop toiminguid nagu `pass”, mis tegutsevad kumbki mõned loop indeks. Üks loogika võib tajuda seda komplekti operaatorid: edasi-1, edasi-2, ja nii edasi. Teine loogika võib tajuda seda kui üks operaator koos loop indeks parameetrit: edasi-i. Esimesel loogika, üldistatud optimeerimine on veel silmus indeks konstandid, samas kui teisel loogika üldistatud optimeerimisest ka üldistada loop indeks. Meie rakendamist, mida me kasutame viimane loogika, kuid paberi arutleme veelgi üldine loogika me oleks võinud kasutada. Kolmandaks, aksioom komplekt on oluline mõju üldistus. Mõned aksioomid ei üldistada ka. Võtame näiteks meie esitlus, kus me asendada 8 + 8-8 koos 8. Meie esitlus, me kasutame aksioomidega x-x = 0 ja x + 0 = x. Me oleks võinud ka lihtsalt kasutatavad pideva kokkuklapitavad. Kuid pidev kokkuklapitavad toodab halb üldistusi. Seega, meie rakendamise väldime pidev kokkuklapitavad nii palju kui võimalik, vaid ka see meie aksioom komplekt viimase abinõuna. Seal on rohkem tegureid, mis mõjutavad üldistus protsess, kuid need kolm on kõige olulisemad. Meie kogemus, see oli lihtne kujundada hea loogika ja hea aksioom komplekt ning automaatselt genereeritud tõendid olid kõik, mida me loota. Loodame, et see tõend üldistus tehnikat ja selle rakendused avada uusi huvitavaid uurimis- suunad tõend teooria.

Kategooria teooria

Mõned on küsinud, miks me ammutatud meie tõend üldistus tehnikat üldse, ja miks me kasutasime kategooria teooria meie võtmiseks. Kuid me tegelikult mõeldud abstraktne algoritm esimene, kasutades kategooria teooria ja seejärel kasutada, et välja mõelda, kuidas lahendada meie konkreetsele probleemile. Me takerdunud koos konkreetsele probleemile, rabatud üksikasjad ja muutujad, ja mingit lahendust võiksime mõelda tundus meelevaldne. Et kajastada ja lihtsustada, otsustasime fraas meie küsimusele kategooriliselt. See viis skeem allikad ja valamud, nii me lihtsalt kasutada pushouts ja tagasit~ombajad liimi asju koos. Suurim väljakutse oli tulemas pushout lõppe, selle asemel et kasutada mõnda olemasolevat standard kontseptsioon. Kategooriline sõnastus oli lihtne määratleda ja põhjus kohta. Hiljem me tiseerida abstraktne protsessid, nagu pushouts koos konkreetsete algoritmide nagu ühendamise, et toota meie lõplik rakendamine tugeva üldisuse garantiid.

Me oleme tegelikult leidsin selle protsessi refereerimine kategooria teooria kui me jänni üsna viljakas. Mitte ainult see lõpuks lahendada meie betooni probleem, kuid me lõpuks koos parema arusaamise oma probleem samuti abstraktne lahendus, mis saab kergesti kohandada teistele rakendustele. Seega, meie kogemus näitab, et kategooria teooria võib olla kasulik ehitamise tegelik algoritme, lisaks on kasulik raamistik vormistamine. Meil oleks huvitav teada teiste sarnaseid kogemusi, kas positiivne või negatiivne.

Küsimused, kommentaarid ja soovitused

Kui teil on küsimusi, kommentaare või ettepanekuid, siis palun e-mail meile. Meil oleks hea meel teada kõigist arvamused inimesed on või mis tahes selgitusi peaksime.

Leave a Reply