1 / 32

Реализация функционального языка

Специализация функциональных программ методами суперкомпиляции (по материалам диссертации) Андрей Петрович Немытых Институт Программных Систем РАН. Реализация функционального языка. Задача специализации. Исторические замечания. 70-е годы XX века А.П. Ершов (смешанные вычисления).

minty
Download Presentation

Реализация функционального языка

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Специализация функциональных программ методами суперкомпиляции(по материалам диссертации)АндрейПетровичНемытыхИнститутПрограммных Систем РАН.

  2. Реализация функционального языка

  3. Задача специализации

  4. Исторические замечания • 70-е годы XX века • А.П. Ершов (смешанные вычисления). • В.Ф. Турчин (суперкомпиляция). • Ё. Футамура (generalized partial computation). • 80-е годы XX века • Н.Д. Джонс (частичные вычисления)

  5. Суперкомпиляция и частичные вычисления • Частичные вычисления: • разделение алгоритмически разрешимой части подзадач и алгоритмически неразрешимой (аппроксимирующей) части подзадач; • сохранение определения частичной функции определяемой специализированной программы. • Суперкомпиляция: • трудности в неразделённости алгоритмически разрешимых и неразрешимых частей; они же дают потенциально существенно более сильные методы специализации.

  6. Блок схема алгоритма суперкомпиляции

  7. Прогонка • Мета-аналог одного шага РЕФАЛ машины a x + b = 0 b =? 0 any x ℝ b = 0 a =? 0 a x + b = 0 driving b ? 0 Ø a ? 0 x = -b/a; a  0

  8. Глобальный анализ по ходу дела (online) специализации • компоненты факторизации с пустой областью определения; • построение выходных форматов; • частично рекурсивные константы; • частично рекурсивные проекции; • частично рекурсивные тождественные функции; • частично рекурсивные мономы конкатенации;

  9. Специализация компонент факторизации по глобальным свойствам (использование результатов глобального анализа) $ENTRY Go { e.n = <Fact1 (e.n)>; } Fact1 { () = (I); (e.n) = (<Times (e.n) <Fact1 (<Minus (e.n) (I) >)>>); } Times { (e.u) ( ) = ; (e.u) (I e.v) = <Plus (<Times (e.u) (e.v)>) (e.u)>; }

  10. Пример вычисления выходного формата • $ENTRY Go { e.n = <UnarySum (I I I) (e.n)>; } • UnarySum { • (e.n) (I e.m) = I <UnarySum (e.n) (e.m)>; • (e.n) ( ) = e.n; • } • * <UnarySum (e.n) (e.m)> I e.k

  11. Частично рекурсивные тождественные функции • Определение. Назовём Refal1 программу синтаксически тождественной, если после формальной замены в ней каждого функционального вызова<function-name arg>его аргументом arg левая часть каждого предложения будет графически совпадать с правой частью этого предложения.

  12. Достоточное условие тождественности

  13. Частично рекурсивные мономы приписывания

  14. Пример программы на языке Refaln * Частичный моном приписывания. * <Copy e.x> = e.x e.x $ENTRY Copy { e.x = <Double e.x , >; } Double { s.1 e.x , e.y = s.1 <Double e.x, e.y s.1>; , e.y = e.y; }

  15. Формальный повышатель арности

  16. Пример формального повышения арности

  17. Синтаксические мономы приписывания

  18. Достаточное условие мономиальности

  19. Пример синтаксического монома * <Double e.x, e.y> = e.x e.y e.x $ENTRY Double { s.1 e.x , e.y = s.1 <Double e.x, e.y s.1>; , e.y = e.y; }

  20. Стратегия выбора гипотезы мономиальности • На основании пассивных правых частей: они являются базисными случаями выхода из рекурсии. • Пассивные правые части не меняются при определённых ранее преобразованиях. • В Double (пример на пред. слайде) существует бесконечно много гипотез вида: e.xke.y e.xm

  21. Достаточное условие конечности числа гипотез

  22. Применение • Динамическая типизация данных. • Задачи самоприменения: • холостые проходы функции подстановки и т.п. • пример (поиск вызова функции):

  23. Математическая индукцияисвойства обобщения конфигураций • Выбор конфигураций для обобщения: • вариант упрощающего предпорядка Higman-Kruskal-а; • монотонность пофункциям-конструкторам: • F1(t1,t2) = t1 t2, F2(t1) = (t1) , Ff(t1) = <f t1> • t1F1(t1,t2), t2F1(t1,t2) ,t1F2(t1) , t1Ff(t1) • согласованность сфункциями-конструкторами: • t1t2 F2(t1) F2(t2), Ff(t1) Ff(t2) • t1t2F1(t, t1)  F1(t, t2), F1(t1, t)  F1(t2, t) • отделение базисных случаевиндукции от регулярных: • () (SYMBOL), ()  (s.variable) • Основное свойство: • Для любой бесконечной последовательности термов t1 , t2 , … существует пара ti, tk, такая что i< k иti tk .

  24. Приложение • Удачные экспериментыпо верификациипротоколов когерентности кэш-памяти (cache coherence) с глобальными свойствами: • IEEE Futurebus+, MOESI, MESI, MSI, “The University of Illinois”, DEC Firefly, “Berkeley”, Xerox PARC Dragon. • А также параметризованных протоколов: • Java Meta-Locking Algorithm, Reader-Writer protocol, Steve German's directory-based consistencyprotocol. • Ряд успешных экспериментов по верификации по постусловию модельных протоколов описанных в формализме сетей Петри.

  25. Основные результаты • Разработаны и реализованы аппроксимирующие алгоритмы распознавания частично рекурсивных константных функций, частично рекурсивных функций проекции. Показано, что на некоторых примерах эти алгоритмы способны понижать временную сложность программы. • На основе полуавтоматических процедур обобщения параметризованных конфигураций, представленных в работах В.Ф. Турчина, разработаны и реализованы алгоритмы обобщения параметризованных конфигураций. Улучшены качественные характеристики этих алгоритмов с точки зрения построения более эффективных остаточных программ.

  26. Основные результаты-II • Разработан и реализован алгоритм построения выходных форматов компоненты факторизации F метадерева возможных вычислений в режиме online (по ходу дела суперкомпиляции); что позволяет сразу использовать построенный формат для специализации по нему как других компонент-функций, вызывающих функцию F, так и самой функции F. Показано, что на некоторых примерах этот алгоритм способен понижать временную сложность программы. • Предложено понятие частично рекурсивного монома конкатенации. Доказана теорема о достаточном условии частично рекурсивного монома конкатенации. Разработана стратегия выбора гипотезы мономиальности. На основании этих теоремы и стратегии разработан и реализован алгоритм, распознающий частично рекурсивные синтаксические мономы конкатенации. Показано, что на некоторых примерах этот алгоритм способен понижать временную сложность программы с экспоненциальной до константной O(1). Показано, что этот алгоритм может быть использован в решении задачи самоприменения для понижения порядка временной сложности результата самоприменения.

  27. Основные результаты-III • Разработан и реализован экспериментальный автоматический суперкомпилятор SCP4, предметной областью которого является функциональный язык программирования РЕФАЛ-5. Демонстрация суперкомпилятора доступна на Web-странице в режиме on-line. • Исследованы характеристики суперкомпилятора SCP4.

  28. Характеристики суперкомпилятора SCP4.

  29. Литература [1] Лисица А.П. иНемытыхА.П., Работа над ошибками, “Программные системы: теория и приложения”, Физматлит, Том 1, стр. 195-232, 2006. [2] Лисица А.П. иНемытыхА.П., Верификация как параметризованное тестирование (Эксперименты с суперкомпилятором SCP4). Журнал “Программирование”, №1, 2007. [3] НемытыхА.П., Суперкомпилятор SCP4: Общая структура. Монография. Издательство УРСС, 2007. 152 стр. [4] Korlyukov A.V. and Nemytykh A.P., Supercompilation ofDouble Interpretation. (HowOneHourof the Machine’s Time Can Be Turned to One Second). Вестник национального технического университета “Харьковского политехнического института”, Том 1, стр. 123-150, 2004. [5] Lisitsa A. P., and Nemytykh A.P., Verification of parameterized systems using supercompilation. In Proc. of the APPSEM05, Fraunchiemsee, Germany, 12-15 September 2005.

  30. Литература-II [6] Lisitsa A.P. and Nemytykh A.P., Towards verification via supercompilation. In Proc. of the COMPSAC’2005, 2005. [7] Lisitsa A.P. and Nemytykh A.P., Reachability Analysis inVerification via Supercompilation, The Proc. ofthe Satellite Workshopsof DTL 2007 / TUCS GeneralPublication,No. 45, Part 2, pp.53-67. Turku, Finland. 2007. [8] Lisitsa A.P., and Nemytykh A.P., A Note onSpecialization ofInterpreters, LNCS,Vol. 4649, pp.237-248, The Proc. of CSR’07. 2007. [9] Nemytykh A.P., Supercompiler SCP4: Useof quasi-distributivelawsinprogram transformation, Wuhan University Journalof NaturalSciences,Vol. 95(1-2), pp. 375--382, 2001. [10] Nemytykh A.P., A Note onElimination of Simplest Recursions, The Proc. of Asia-PEPM’02, pp.138-146. ACM Press. Aizu, Japan. 2002.

  31. Литература-III [11] Nemytykh A.P., The Supercompiler SCP4: General Structure (extended abstract), LNCS,Vol. 2890, pp.162-170, The Proc. of the Perspectives of System Informatics. 2003. [12] Nemytykh A.P., Playing on REFAL / The Proc. of the International Workshop on Program Understanding, pp.29-39. Novosibirsk - Altai Mountains, 2003. [13] Nemytykh A.P., The Supercompiler SCP4: General Structure, “Программные системы: теория и приложения”, Физматлит, Том 1, стр. 448-485, 2004. [14] Nemytykh A.P. and Turchin V.F., The Supercompiler SCP4: sources, on-linedemonstration, http://www.botik.ru/pub/local/scp/refal5/ , 2000. [15] Turchin V.F. and Nemytykh A.P., Metavariables: Their implementationand usein Program Transformation // Technical Report CSc. TR 95-012, CityCollegeof theCity Universityof New York, 1995.

  32. Спасибо!

More Related