320 likes | 500 Views
Специализация функциональных программ методами суперкомпиляции (по материалам диссертации) Андрей Петрович Немытых Институт Программных Систем РАН. Реализация функционального языка. Задача специализации. Исторические замечания. 70-е годы XX века А.П. Ершов (смешанные вычисления).
E N D
Специализация функциональных программ методами суперкомпиляции(по материалам диссертации)АндрейПетровичНемытыхИнститутПрограммных Систем РАН.
Исторические замечания • 70-е годы XX века • А.П. Ершов (смешанные вычисления). • В.Ф. Турчин (суперкомпиляция). • Ё. Футамура (generalized partial computation). • 80-е годы XX века • Н.Д. Джонс (частичные вычисления)
Суперкомпиляция и частичные вычисления • Частичные вычисления: • разделение алгоритмически разрешимой части подзадач и алгоритмически неразрешимой (аппроксимирующей) части подзадач; • сохранение определения частичной функции определяемой специализированной программы. • Суперкомпиляция: • трудности в неразделённости алгоритмически разрешимых и неразрешимых частей; они же дают потенциально существенно более сильные методы специализации.
Блок схема алгоритма суперкомпиляции
Прогонка • Мета-аналог одного шага РЕФАЛ машины 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
Глобальный анализ по ходу дела (online) специализации • компоненты факторизации с пустой областью определения; • построение выходных форматов; • частично рекурсивные константы; • частично рекурсивные проекции; • частично рекурсивные тождественные функции; • частично рекурсивные мономы конкатенации;
Специализация компонент факторизации по глобальным свойствам (использование результатов глобального анализа) $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)>; }
Пример вычисления выходного формата • $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
Частично рекурсивные тождественные функции • Определение. Назовём Refal1 программу синтаксически тождественной, если после формальной замены в ней каждого функционального вызова<function-name arg>его аргументом arg левая часть каждого предложения будет графически совпадать с правой частью этого предложения.
Достоточное условие тождественности
Частично рекурсивные мономы приписывания
Пример программы на языке 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; }
Пример формального повышения арности
Синтаксические мономы приписывания
Достаточное условие мономиальности
Пример синтаксического монома * <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; }
Стратегия выбора гипотезы мономиальности • На основании пассивных правых частей: они являются базисными случаями выхода из рекурсии. • Пассивные правые части не меняются при определённых ранее преобразованиях. • В Double (пример на пред. слайде) существует бесконечно много гипотез вида: e.xke.y e.xm
Достаточное условие конечности числа гипотез
Применение • Динамическая типизация данных. • Задачи самоприменения: • холостые проходы функции подстановки и т.п. • пример (поиск вызова функции):
Математическая индукцияисвойства обобщения конфигураций • Выбор конфигураций для обобщения: • вариант упрощающего предпорядка Higman-Kruskal-а; • монотонность пофункциям-конструкторам: • F1(t1,t2) = t1 t2, F2(t1) = (t1) , Ff(t1) = <f t1> • t1F1(t1,t2), t2F1(t1,t2) ,t1F2(t1) , t1Ff(t1) • согласованность сфункциями-конструкторами: • t1t2 F2(t1) F2(t2), Ff(t1) Ff(t2) • t1t2F1(t, t1) F1(t, t2), F1(t1, t) F1(t2, t) • отделение базисных случаевиндукции от регулярных: • () (SYMBOL), () (s.variable) • Основное свойство: • Для любой бесконечной последовательности термов t1 , t2 , … существует пара ti, tk, такая что i< k иti tk .
Приложение • Удачные экспериментыпо верификациипротоколов когерентности кэш-памяти (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. • Ряд успешных экспериментов по верификации по постусловию модельных протоколов описанных в формализме сетей Петри.
Основные результаты • Разработаны и реализованы аппроксимирующие алгоритмы распознавания частично рекурсивных константных функций, частично рекурсивных функций проекции. Показано, что на некоторых примерах эти алгоритмы способны понижать временную сложность программы. • На основе полуавтоматических процедур обобщения параметризованных конфигураций, представленных в работах В.Ф. Турчина, разработаны и реализованы алгоритмы обобщения параметризованных конфигураций. Улучшены качественные характеристики этих алгоритмов с точки зрения построения более эффективных остаточных программ.
Основные результаты-II • Разработан и реализован алгоритм построения выходных форматов компоненты факторизации F метадерева возможных вычислений в режиме online (по ходу дела суперкомпиляции); что позволяет сразу использовать построенный формат для специализации по нему как других компонент-функций, вызывающих функцию F, так и самой функции F. Показано, что на некоторых примерах этот алгоритм способен понижать временную сложность программы. • Предложено понятие частично рекурсивного монома конкатенации. Доказана теорема о достаточном условии частично рекурсивного монома конкатенации. Разработана стратегия выбора гипотезы мономиальности. На основании этих теоремы и стратегии разработан и реализован алгоритм, распознающий частично рекурсивные синтаксические мономы конкатенации. Показано, что на некоторых примерах этот алгоритм способен понижать временную сложность программы с экспоненциальной до константной O(1). Показано, что этот алгоритм может быть использован в решении задачи самоприменения для понижения порядка временной сложности результата самоприменения.
Основные результаты-III • Разработан и реализован экспериментальный автоматический суперкомпилятор SCP4, предметной областью которого является функциональный язык программирования РЕФАЛ-5. Демонстрация суперкомпилятора доступна на Web-странице в режиме on-line. • Исследованы характеристики суперкомпилятора SCP4.
Характеристики суперкомпилятора SCP4.
Литература [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.
Литература-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.
Литература-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.