1 / 35

Системы представления знаний Knowledge Representation Systems

Системы представления знаний Knowledge Representation Systems. Автоматический синтез программ Automatic Program Synthesis Ф.А. Новиков fedornovikov@rambler.ru. Тема 6 . Автоматический синтез программ. 6.1. Задача автоматического синтеза 6. 2 . Дедуктивный синтез программ

rumor
Télécharger la présentation

Системы представления знаний Knowledge Representation Systems

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. Системы представления знанийKnowledge Representation Systems Автоматический синтез программ Automatic Program Synthesis Ф.А. Новиков fedornovikov@rambler.ru

  2. Тема 6. Автоматический синтез программ • 6.1. Задача автоматического синтеза • 6.2. Дедуктивный синтез программ • 6.3. Синтез программ на основе метода резолюций • 6.4. Структурный синтез программ • 6.5. Индуктивный синтез программ Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  3. Синтез 6.1. Задача автоматического синтеза программ • Идеал: • Автоматический синтез программы – по спецификации задачи • Подходы: • Дедуктивный синтез = логический вывод • Индуктивный синтез = по примерам • Трансформационный синтез = трансляция • Утилитарный синтез = все остальное Задача Программа Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  4. История развития 1 • 60-е годы XX века: начало • АДТ, LISP, Метод резолюций  АСП • Логическая верификация ~ дедуктивный синтез • 70-е годы XX века: первая волна • Дедуктивный синтез алгоритмически неразрешим Сэр Чарльз Энтони Ричард Хоар, род. 1934 • «быстрая сортировка» • язык Z спецификаций • параллельная модель взаимодействия последовательных процессов (CSP, Communicating Sequential Process) • аксиоматика Хоара Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  5. История развития 2 Дана Стюарт Скотт, род. 1932 • исследования теории моделей, теории автоматов, конструктивной математики • деривационная семантика языков программирования • 80-е годы: спад Непейвода Николай Николаевич, род. 1949 • теория неформализуемых понятий и теории логического синтеза программ на базе конструктивных логик • методика логического подхода • интуиционистское доказательство теоремы существования = программа Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  6. История развития 3 • 90-е годы XX века:застой • ООП не способствует синтезу • XXI век:вторая волна • Генеративное программирование • Исполнимые визуальные спецификации • Модельно-центрированная разработка (Model Driven Architecture – MDA) • UML • ...СКИФ 4 Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  7. Задача: заданы два предиката: предусловие P(x) постусловиеQ(x, y) Теорема: x (P(x)  y Q(x,y)) x (P(x)  Q(x,f(x))) –сколемизация Схемадоказательства: нотация Хоара (наука программирования) P(x) {y: = f(x)} Q(x, y) 6.2. Дедуктивный синтез программ Задача  Теорема  Доказательство  Программа Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  8. Тотальная корректность proc f(x); y:=x; whileQ(x,y) doy:=random(y)endwhile return y endproc Эффективность Алгоритма синтеза Синтезированной программы Реализуемость proc f1(x); y:=f(x); IifQ(x,y) thenreturn y elsereturnfail endif endproc Q(x, y, z) = n>2 x, y, z(xn+yn=zn) 6.2. Дедуктивный синтез программ • Из любого конструктивного доказательства теоремы существования может быть извлечена императивная программа Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  9. 6.3. Дедуктивный синтез на основе метода резолюций Одноадресная машина с тремя ячейками и сумматором Задача:c:=a+b Команды:load, add, store 1. P(u,x,y,z,s1) P(x,x,y,z,load(a,s1)) 2. P(u,x,y,z,s2) P(u+y,x,y,z,add(b,s2)) 3. P(u,x,y,z,s3) P(u,x,y,u,store(c,s3)) 4. P(e1,e2,e3,e4,d) 5. P(u,x,y,x+y,s)  ANS(s) 6. P(x+y,x,y,z,s1)  ANS(store(c,s)) 5,3 7. P(x,x,y,z,s2)  ANS(store(c,add(b,s))) 6,2 8. P(u,x,y,z,s3)  ANS(store(c,add(b,load(a,s)))) 7,1 9. ANS(store(c,add(b,load(a,d)))) 8,4 Программа в функциональной форме Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  10. Алгоритм извлечения программы из доказательства • Вход: дерево вывода T0 (в узлах - предложения) • Выход: схема программы T (дерево решений) • Шаг 1: на дуги отрицание литерала с унификатором (T1) • Шаг 2: удаление всех узлов (и ребер), где нет ANS (T2) • Шаг 3: переворот дерева и удаление предложений (T3) • Шаг 4: удаление литералов на дугах, выходящих из узлов с одним выходом (T) Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  11. Пример: синтез программыy := if x>0 then 1 else –1 end if 1. P(x)  Q(x,1) P(x)  Q(x, 1) 2. P(x)  Q(x,-1)  P(x)  Q(x, –1) 3. Q(x,y)  ANS(y) 4. P(x)  ANS(1) 1,3 5. P(x)  ANS(–1) 2,3 6. ANS(1)  ANS(–1) 4,5 Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  12. Ø Ú Ø Ú Ú - Ø Ú P ( x ) Q ( x , 1 ) Q ( x , y ) ANS ( y ) P ( x ) Q ( x , 1 ) Q ( x , y ) ANS ( y ) Q(x,-1) Q(x,-1)y:=-1 Q(x,1)y:=1 Q(x,1) Ú - Ø Ú P ( x ) ANS ( 1 ) P ( x ) ANS ( 1 ) Ø P(x) P(x) P ( x )  P(x) Ú - ANS ( 1 ) ANS ( 1 ) y:=–1 y:=1 Преобразование дерева вывода Дерево доказательства Синтезированная блок-схема Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  13. Синтез невыполнимой программы • Аксиомы: • P(x)  Q(x, 1) • P(x)  Q(x, –1) • Цель: • Q(x, y)  ANS(y) • Вывод: • Q(x, 1)  Q(x, –1) 1,2 • Q(x, –1)  ANS(1) 3,4 • ANS(1)  ANS(–1) 3,5 Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  14. Ø Ú Ú - P ( x ) Q ( x , 1 ) P ( x ) Q ( x , 1 ) Ø P ( x ) P ( x ) Ø - Ú Ø Ú Q ( x , 1 ) ANS ( 1 ) Q ( x , y ) ANS ( y ) Q ( x , 1 ) Ø Q ( x , 1 ) = y : 1 Ø Ú Q ( x , y ) ANS ( y ) Ø - Ú Q ( x , 1 ) ANS ( 1 ) - Q ( x , 1 ) Ø - Q ( x , 1 ) - Q ( x , 1 ) Ø - Q ( x , 1 ) = - y : 1 = - y : 1 Ú - ANS ( 1 ) ANS ( 1 ) = y : 1 Синтез невыполнимой программы Дерево доказательства Невыполнимаяблок-схема Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  15. Примитивная резолюция (1) • Примитивные символы исходной спецификации (константы, функциональные символы, предикаты) – те, которым разрешается появляться в синтезированной программе • P, 1, – 1 примитивные • Q не примитивный • Жизненное предложение– содержит предикат ANS • Жизненная переменная– входит в жизненное предложение • P(x)  Q(x, 1) не жизненное • Q(x, –1)  ANS(1) жизненное Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  16. Примитивная резолюция (2) • C1 L1 C2  L2  C, где =Н.О.У.(L1,L2) • C является примитивной резольвентой, если • С1 и С2 - НЕ жизненные или • С1 - жизненное, С2 - не жизненное и все константы и функции, подставляемые вместо жизненных переменных в  являются примитивными • С1 и С2 - жизненные и все константы функции, подставляемые вместо жизненных переменных в  являются примитивными и предикатыL1и L2являютсяпримитивными • Примитивная резолюция полна Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  17. Ø Ú Ø Ú Ú - Ø Ú Ø Ú Ú - P ( x ) Q ( x , 1 ) Q ( x , y ) ANS ( y ) P ( x ) Q ( x , 1 ) Q ( x , y ) ANS ( y ) P ( x ) Q ( x , 1 ) P ( x ) Q ( x , 1 ) Ø - Ú Ø Ú Q ( x , 1 ) ANS ( 1 ) Q ( x , y ) ANS ( y ) Ú - Ø Ú P ( x ) ANS ( 1 ) P ( x ) ANS ( 1 ) Ø Ú Q ( x , y ) ANS ( y ) Ø - Ú Q ( x , 1 ) ANS ( 1 ) Ú - ANS ( 1 ) ANS ( 1 ) Ú - ANS ( 1 ) ANS ( 1 ) Пример: y := if x>0 then 1 else –1 end if Не жизненная! Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  18. y1:=0 A y1=x y1x y1:=y1+1 y:=y2 B Синтез циклических программ (1) 1. R(0,1) R(x,y):= y=f(x) f(0)=1 2. R(x,y)R(x+1,(x+1)*y) f(x+1)=(x+1)*f(x) (y R(0,y)x (y1R(x,y1)y2 R(x+1,y2))) x y R(x,y) 3. R(0, y2)  ANS(y2) 4. R(y1,y2) 5. R(y1+1, y2)ANS(y2) Специальная схема для частного случая Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  19. y1:=0 y2:=1 y1=x y1x y1:=y1+1 y:=y2 y2:=(y1+1)*y2 Синтез циклических программ (2) В общем случае невозможно автоматически догадаться, какую схему нужно применить • Синтез программы А: • 6. ANS(1) из 1,3 т.е. A = y2:=1 • Синтез программы B: • 7. R(y1+1,(y1+1)*y2)ANS(y2) из 2,3 • 8. ANS((y1+1)*y2) из 5,7 • т.е. A = y2:=(y1+1)*y2 Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  20. 6.3. Структурный синтез программ • Синтез программ из операторов: не стоят трудов • Примитивы: не операторы, а БОЛЬШИЕ компоненты (библиотека программ) • Правильность программы определяется правильностью компонент (не доказывается) • Синтезируется только управляющая структура (все вычисления заданы заранее в компонентах) • Ограничение: нет времени ( x := f(… , x, …) ) Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  21. 70-е годы XX века: Таллинн Тыугу Энн Харальдович, род. 1935 идея структурного синтеза программ система ПРИЗ – Программа Решения Инженерных Задач - реализация 80-е: Ленинград под руководством С.С. Лаврова идея была значительно развита несколько десятков реализаций Настоящее время: В.Б.Новосельцев programming in constraints, СКИФ 4 История развития Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  22. Синтез программ в концептуальных базах знаний • База знаний: понятия (величины, атрибуты) и система отношений (связей) = модель предметной областиM • Этапы: • Синтезируется «абстрактная» программа решения исходной задачи в концептуальной компоненте базы знаний M (здесь же проводится анализ разрешимости задачи) • Конкретизация зависимостей → конкретная программа • Вычислительная задача → Дерево анализа задачи → Программа решения задачи Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  23. Модель предметной области(Семантическая вычислительная сеть) Направленный двудольный граф x Множество функций F Множество переменных V M f g y Модель предметной области: M = {( X  f  Y)} fF, XV, YV Задача: на Mнайти Wпо U Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  24. Алгоритм прямой волны Трудоемкость O(|M|2) Proc Wave (U, W, M) : P S:=U;P:= L: if WS thenreturnOKendif g:=nil forfFdo if X(f)S & Y(f)S then g:=f endif endfor ifg=nilthenreturnfail else S:=SY(g); F:=F\{g}; P:=P+g; goto L endif endproc Обратная волна - чистка программы Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  25. Предварительная обработка МПО Каждый узел входит в 2 двухсвязных списках Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  26. Proc S(u) for xX(u) do del(x) if f(x).l=nilthen G:=G+f /* применима */ endif endfor for yY(u) do del(y) if f(y).r=nilthen G:=G\{f} /* бесполезна*/ endif endfor endproc Proc DU(U,W,M) P:=nil; G:=nil foruUdo W:=W\{u}; S(u) endfor L: if W= thenreturn P endif ifG=nilthenreturnfailendif g:=car(G); G:=cdr(G); P:=P+g foryY(g) do S(y); W:=W\{y} endfor goto L endproc Алгоритм Диковского-Ульмана Линейный по длине модели P - синтезируемая программа G - список применимых функций f(u) - функциональный узел для узла u Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  27. Расширения и границы применимости • Условные предложения вычислимости • определяется условие, при котором можно использовать некоторое уравнение • синтезируются линейно-ветвящиеся программы • R-предложения вычислимости • отношения, а не функции; граф неориентированный  • процедуры • Рекуррентные предложения вычислимости • составляются по уравнениям типа F[n] = F[n–1]+F[n–2] • циклические программы определенного вида • Предложения вычислимости с функционалами • процедуры с процедурными параметрами • Рекурсивные предложения вычислимости • рекурсивные программы ограниченного вида Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  28. 6.5. Индуктивный синтез программ • Очень любопытный подход, но не очень популярный • Синтез программ по примерам (протоколам выполнения) • Синтез общих утверждений по частным • Синтез доказательства для общего случая по доказательствам для частных случаев • Т.е. усмотрение общих закономерностей: повторений, прогрессий, … Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  29. Многоточечные термы • Алфавит A: N – числа, W – буквы, U – разделители ( ) [ ] { }, T – специальные < > … • Символьная разность: xy:= 0, если x=y; x-y, если x,yN; не определено в остальных случаях • …-терм: выражение D=<a1 a2 an … b1 b2bn> где ai,biAи qZi 1≤i≤n bi=aibiai=qqназывается фактором …-терма • Значение …-термаV(D):=d10…dn0 d11…dn1… … d1|q|…dn|q| где di0 = ai, di|q| =biи dijdij–1 = 0, если bi=ai; dijdij–1 = +1, если biai>0; dijdij–1 = –1, если biai>0 Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  30. Многоточечные слова и выражения • Если XNили XW,то X …-слово • Если X …-слово, то (X) {X} [X] …-слова • Если X и Y …-слова, то XY …-слово • Если X и Y …-слова, то <X…Y> …-слово если выполнены условия …-терма • Значение …-слова: рекурсивно по термамПример: E = <<1…3>…<1…1>> <(4)(3)…(2)(1)>V(E) = <1…3> <1…2> <1…1> (4)(3)(3)(2)(2)(1)= 1 2 3 1 2 1 (4)(3)(3)(2)(2)(1) • …-выражение это …-слово с параметром k<<1…k>…<1…1>> <(k+1)(k)…(2)(1)> Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  31. Формальные примеры • Пример использования языка …-выражений<<if A(1)>A(2) then A(1)A(2);… if A(k-1)>A(k) then A(k-1)A(k);> …<if A(1)>A(2) then A(1)A(2);… if A(1)>A(2) then A(1)A(2);>> • Формальный пример – значение …-выражения для заданного значения k • Значение предыдущего …-выражения для k=3if A(1)>A(2) then A(1)A(2); if A(2)>A(3) then A(2)A(3); if A(1)>A(2) then A(1)A(2); • …-выражения – форма записи циклических программ Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  32. Правила вывода • Подслово Y слова X называется (s,t) регулярным, если оно является значением …-терма D = <x11 xs1…x1txst> • M(X) max входящее из N, m(X) – min • f – некоторая целочисленная функция • Правило Af: ищем самое левое максимальное (s,t)-регулярное подслово, такое что t>f(M(X)) и заменяем его на …-терм • Правило B: числа х > (M(X)+m(X))/2 заменяем выражением k-c, где с = M(X)-x • Правило В применимо только если не применимо Af Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  33. Вывод ...-выражения из формального примера • Пусть слово: X = A(1) A(2) A(3) A(4) A(1) A(2) A(3) A(1) A(2) A(1) • Ограничение: f – целая часть квадратного корня, f(M(X))=2 ВыводA(1) A(2) A(3) A(4) A(1) A(2) A(3) A(1) A(2) A(1)<A(1)…A(4)> A(1) A(2) A(3) A(1) A(2) A(1)<A(1)…A(4)> <A(1)…A(3)> A(1) A(2) A(1)<A(1)…A(4)> <A(1)…A(3)> <A(1)…A(2)> A(1)<A(1)…A(4)> <A(1)…A(3)> <A(1)…A(2)><A(1)…A(1)><A(1)…A(k)><A(1)…A(k-1)><A(1)…A(2)><A(1)…A(1)>< <A(1)…A(k)>… <A(1)…A(1)>> Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  34. Основной результат • Два …-выражения называются почти эквивалентными, если их значения совпадают почти для всех значений k • X c k>c (SAf,B(V(X,k)X) • Для любого …-выражения существует такая константа, что для любого формального примера этого выражения, более длинного, чем заданная константа, результат индуктивного синтеза по данному примеру почти эквивалентен исходному …-выражению Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

  35. Вот и все, что было... Ф. Новиков. SPZ. Тема 6. Автоматический синтез программ

More Related