Система функционально-логического программирования на языке S-FLOGOL

Содержание

Слайд 2

Разработка и исследование подсистемы исполнения запросов и графического редактора системы функционально-логического

Разработка и исследование подсистемы исполнения
запросов и графического редактора системы
функционально-логического программирования

Бебчик

Антон Михайлович

Специальность 05.13.11 – Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

Цель работы:
создание системы функционально-логического программирования (СФЛП), основанной на формализме направленных отношений (НО) и обладающей развитыми интерфейсными средствами построения и отладки программ.

Основные задачи:

∙ разработка и исследование моделей вычислений НО,

разработка технологии графического построения программ,

∙ программная реализация подсистемы исполнения запросов,

∙ программная реализация графического редактора СФЛП.

Московский институт радиотехники, электроники и автоматики (МИРЭА ТУ)

Слайд 3

Направленным отношением (НО) R арности (n', n'') на носителе D называется

Направленным отношением (НО) R арности (n', n'') на носителе D называется

множество упорядоченных пар кортежей элементов D длины n' и n'', соответственно.

Пример графика НО сложения:

Пример графика НО факториала:

Направленные отношения.

Слайд 4

2. НО называется тотальным ( ), если 1. НО называется функциональным

2. НО называется тотальным ( ), если

1. НО называется функциональным (

), если

Свойства НО и представимые семантические объекты.

3. НО называется обратным для , если

Пример представления некоторых семантических объектов логического и функционального программирования:

(0,0)

(0,1)

(n,1)

(n,1)

(n,0)

Слайд 5

где - НО арности на носителе . Размеченной сетью арности ,

где - НО арности на носителе .

Размеченной сетью арности , в

базисе элементов называется шестерка , где

Сетевое представление НО

Базисом сети называется тройка , где - множество сортов элементов, а задают арность элементов каждого сорта.

− множество точек сети;

− входной и выходной кортежи,

− множество элементов сети;

− граф семантического различия;

− начальная разметка сети.

Интерпретация сети есть





Графическая нотация СПНО:

P

N

S

F

| I | = n ′, |O| = n″;

Слайд 6

F Сетевое представление семантических объектов ∙ Константа ∙ Конструктор ∙ Функция

F

Сетевое представление семантических объектов

∙ Константа

∙ Конструктор

∙ Функция

∙ Предикат

∙ Список

K

C

P

Cn

Nil

∙ Дерево

Tr

Nil

∙ НО

общего типа

R

голова

хвост

пустой список

пустое дерево

левое поддерево

правое поддерево

вершина

Семантические примитивы

Составные объекты

Слайд 7

Программа Программа задается контекстно-свободной сетевой грамматикой (КССГ), определяемой как четверка ,

Программа

Программа задается контекстно-свободной сетевой грамматикой (КССГ), определяемой как четверка , где

Пример:

НО сложения Add.

− терминальный базис;

− нетерминальный базис ;

− аксиома;

− множество правил вида , где , − сеть в базисе

Null

Слайд 8

2. Сетевой язык определяется как , где обозначает выводимость сети из

2. Сетевой язык определяется как , где обозначает выводимость сети из

аксиомы :

Вычисление

1. Вычисление программы производится путем порождения сетевого языка по заданной КССГ.

3. Шаг вывода (применение правила КССГ к сети) производится путем выполнения подстановки сети правила вместо элемента сорта сети (обозначается ).

R

M

M′

b

M

=

M′

e

замещаемый элемент

исходная сеть

тело правила

e

4. Интерпретация программы .

Слайд 9

Подстановка e Succ Add Null Succ Null Succ e =

Подстановка

e

Succ

Add

Null

Succ

Null

Succ

e

=

Слайд 10

Редукция сетей Редукция предназначена для трансформации сетей на основе знаний о

Редукция сетей

Редукция предназначена для трансформации сетей на основе знаний о свойствах

интерпретации их элементов.

С

С

С

функциональность деструкторов

С

прямое распространение

С

Редукция по структуре

Редукция по разметке

обратное распространение

Слайд 11

A S Вычисление в базисе конструкторов N N N N A

A

S

Вычисление в базисе конструкторов

N

N

N

N

A

S

N

N

S

A

S

S



S

A

S

N

e

Слайд 12

Вычисление с разметкой Использование разметки позволяет: ∙ упростить структуру сети, ∙

Вычисление с разметкой

Использование разметки позволяет:

∙ упростить структуру сети,

∙ снизить требования к

объему доступной оперативной памяти,

∙ повысить читаемость результатов вычисления.

∙ упростить взаимодействие с внешними процедурами вычисления,

∙ реализовать Data - Flow подход,

Введенное понятие размеченной сети и предложенные правила редукции по разметке положены в основу режима вычисления с разметкой.

∙ использовать системные типы данных и системные НО,

Недостатки использования разметки:

∙ отсутствие поддержки неполных структур данных,

∙ необходимость использования смешанной редукции.

∙ повысить скорость вычисления за счет простой обработки разметки,

Слайд 13

A Вычисление с разметкой S ∅ A ∅ S A S e

A

Вычисление с разметкой

S


A


S

A

S

e

Слайд 14

Стратегии вычисления В СФЛП реализованы следующие стратегии: ∙ поиск в ширину,

Стратегии вычисления

В СФЛП реализованы следующие стратегии:

∙ поиск в ширину,

∙ поиск в

глубину,

∙ смешанная стратегия.

Реализация смешанной стратегии основана на использовании масок вычислимости.

+ гарантированное получение результата

- высокие требования к вычислительным ресурсам

+ высокая эффективность выполнения программ

- возможность «зацикливания»

+ сохранение преимуществ чистых стратегий и
ослабление их недостатков

- необходимость учета специфики задачи

Слайд 15

Маски вычислимости Cn App Cn Nil App L1 L2 Cn Nil

Маски вычислимости

Cn

App

Cn

Nil

App

L1

L2

Cn

Nil

A

Nil

?

Cn

App

Cn

L1

L2

Cn

Cn

L1

L2

Cn

App

Cn

Маски вычислимости позволяют задавать требования к наличию разметки точек входов

и выходов элементов для выполнения подстановки.

Пример: Вычисление без использования масок.

Слайд 16

Маски вычислимости (продолжение) Cn App Cn App L1 L2 ? Пример:

Маски вычислимости (продолжение)

Cn

App

Cn

App

L1

L2

?

Пример: Вычисление НО App с использованием масок.

Cn

App

Cn

L2

App

L2

?

App

Cn

L2

Cn

L2

Пусть для сорта

App заданы маски {(1,1,1), (1,0,0), (0,0,1)}, тогда элемент сорта App может быть выбран для подстановки в следующих случаях:

App

App

App

(1,1,1)

(1,0,0)

(0,0,1)

Слайд 17

Логический вывод мультиправило Y S V обычные правила Y S z

Логический вывод

мультиправило

Y

S

V

обычные правила

Y

S

z

z

Теория НО позволяет производить доказательство общезначимости формул логики

предикатов первого порядка.

∙ логические формулы представляются сетями арности (0, 0),

∙ используется двойственная форма сколемизации,

∙ проводится прямое доказательство общезначимости,

Особенности процедуры доказательства:

∙ используется сетевая резолюция (реализована через подстановку).

E

V

Y

z

E

V

Y

S

z

E

Для повышения удобства построения программ и увеличения эффективности вычисления введено понятие мультиправила.

Пример: зададим формулу

Слайд 18

Подсистема исполнения запросов (ПСИЗ) Реализация

Подсистема исполнения запросов (ПСИЗ)

Реализация

Слайд 19

Абстрактная машина вычисления НО Реализация ПСИЗ СФЛП основана на предложенной абстрактной

Абстрактная машина вычисления НО

Реализация ПСИЗ СФЛП основана на
предложенной абстрактной машине


вычисления НО (АМНО).

Реализация ПСИЗ СФЛП основана на
предложенной абстрактной машине
вычисления НО (АМНО).

параметры подстановки
FindNet − поиск исходной сети
FindElm − поиск замещаемого элем.
FindRule − поиск правила

подстановка
Subst − выполнение подстановки

редукция
Normalize − редукция сети

вспомогательные
DelNet − удаление сети
CopyNet − копирование сети
MoveNet − перемещение сети
IsResult − проверка на результат

Слайд 20

Внутреннее представление КССГ Структура внутреннего представления сети является избыточной, но позволяет

Внутреннее представление КССГ

Структура внутреннего представления сети является избыточной, но позволяет реализовать

эффективные алгоритмы выполнения основных вычислительных операций.
Слайд 21

Внутреннее представление сети Succ Add Succ ∙ Визуальное представление ∙ Внутреннее представление

Внутреннее представление сети

Succ

Add

Succ

∙ Визуальное представление

∙ Внутреннее представление

Слайд 22

Внутреннее представление сети (продолжение) Пример: удаление элемента сети. Требуется скорректировать ссылки

Внутреннее представление сети (продолжение)

Пример: удаление элемента сети. Требуется скорректировать ссылки точек

сети на удаляемый элемент.

Succ

Null

Простое ссылочное представление

Представление ПСИЗ СФЛП

Succ

Null

- Необходимо просматривать список связей точки с элементами сети.

+ Точно известно, какую связь необходимо скорректировать.

Слайд 23

Реализация подстановки A B A B A B e A B

Реализация подстановки

A

B

A

B

A

B

e

A

B

e

A

B

e

A

B

e

результат

=

A

R

Подстановка во внутреннем представлении:

e

e

Слайд 24

Реализованы следующие виды оптимизации: ∙ редукция «по фронту» ∙ кольцевая подстановка

Реализованы следующие виды оптимизации:

∙ редукция «по фронту»

∙ кольцевая подстановка

∙ оптимизация последнего

вызова

∙ оптимизация порядка применения правил

Оптимизация вычислений

(позволяет сократить область сети, анализируемую на применимость правил редукции − используется «ленивый» принцип анализа сети);

(позволяет уменьшить количество элементов сети при ее копировании для выполнения подстановки за счет реализации копирования «по необходимости»);

(уменьшает вычислительные затраты за счет отказа от копирования исходной сети в том случае, если для замещаемого элемента осталось применить только одно правило);

(позволяет повысить эффективность вычисления рекурсивных НО за счет применения сначала не рекурсивного, а затем рекурсивного правила, как правило, с оптимизацией последнего вызова);

Слайд 25

Редукция «по фронту» F G N C X H N S

Редукция «по фронту»

F

G

N

C

X

H

N

S

F

G

D

N

F

N

S

Слайд 26

H S N Редукция «по фронту» (продолжение) C H S G

H

S

N

Редукция «по фронту» (продолжение)

C

H

S

G

D

N

Т

C

H

S

D

N

Т

Т

Слайд 27

Кольцевая подстановка N N S S S S S S S

Кольцевая подстановка

N

N

S

S

S

S

S

S

S

N

S

N

N

S

S

S

N

S

S

S

N

N

Обычная подстановка:

Кольцевая подстановка:

Слайд 28

Кольцевая подстановка (докопирование контекста) N N S A S S S

Кольцевая подстановка (докопирование контекста)

N

N

S

A

S

S

S

A

S

S

N

S

A

S

S

N

S

S

N

S

A

S

S

S

N

S

N

S

N

S

Слайд 29

Системные типы данных и системные НО Для повышения производительности СФЛП и

Системные типы данных и системные НО

Для повышения производительности СФЛП и удобства

ее использования введены системные типы данных и системные НО* для их обработки.

Системные типы данных:

∙ натуральные числа,

∙ списки,

∙ строки,

∙ термы.

Системные НО:

Пример: [A,B,C]

Пример: 2

Пример: "TXT"

Пример: F(B,G(C,A))

*Системные НО поддерживаются только в режиме вычисления с разметкой.
Системные НО можно рассматривать как НО с внешней интерпретацией.

Слайд 30

Отладка программ Для отладки программ в СФЛП предусмотрены следующие средства: Дерево

Отладка программ

Для отладки программ в СФЛП предусмотрены следующие средства:

Дерево отладки

Системное НО $Write

Системное НО $Show

(отображает построение дерева вывода в процессе вычисления запроса),

(отображает разметку входных точек элемента сети сорта $Write в специализированном окне редактора),

(отображает сеть в момент начала вычисления элемента сети сорта $Show),

Окно статистики

(отображает основные параметры процесса вычисления).

Слайд 31

Импорт программ языка Пролог X is 5 + 10*15 X is

Импорт программ языка Пролог

X is 5 + 10*15

X is 5 +

10*15

Импорт программ, написанных на языке логического программирования Пролог повышает универсальность СФЛП и обеспечивает поддержку компиляции входного языка СФЛП S-FLOGOL.

Ограничения:

∙ отсутствие синтаксического анализа,

∙ отсутствие поддержки отсечения и отрицания,

∙ отсутствие поддержки полиморфизма предикатов,

из системных предикатов поддерживаются:
=\=, = =, >=, is, write, fail, [ | ], = и \=.

Пример преобразования предиката is:

Пример конструкции [ | ]:

P([a,b|c]).

Слайд 32

Схема вычисления запроса в СФЛП

Схема вычисления запроса в СФЛП

Слайд 33

Графический редактор Интерфейсные средства

Графический редактор

Интерфейсные средства

Слайд 34

Технология графического построения программ (ТГПП) ТГПП предназначена для обеспечения корректности формируемой

Технология графического построения программ (ТГПП)

ТГПП предназначена для обеспечения корректности формируемой программы

на каждом шаге ее построения.

Формирование КССГ:

Формирование сетей:

добавление элемента базиса

выделение запроса к системе

добавление правила грамматики

добавление элемента

отождествление точек

добавление ребра dif-графа

удаление элемента

«расщепление» точек

удаление ребра dif-графа

удаление элемента базиса

удаление правила грамматики

определение свойств элемента базиса

Для каждой технологической операции формально определено изменение сети после ее выполнения.

Слайд 35

Формирование сетей Пример добавления элемента сети и отождествления точек: Add Add

Формирование сетей

Пример добавления элемента сети и отождествления точек:

Add

Add

Add

Succ

Succ

Add

Succ

Succ

Add

Succ

Succ

Add

Succ

Пример разрушения связей («расщепления»)

точки сети:

Пример удаления элемента сети:

Слайд 36

Вид окна графического редактора

Вид окна графического редактора

Слайд 37

Графический редактор Интерфейс пользователя Подсистема передачи сообщений Ядро редактора Подсистема построения

Графический редактор

Интерфейс пользователя

Подсистема передачи сообщений

Ядро редактора

Подсистема
построения
грамматики

Подсистема
редактирования
сетей

Подсистема
управления
вычислением
и отладкой

Подсистема
формирования
и прорисовки
изображения

Подсистема
автоматической
расстановки
сетей

Файловая
подсистема
П
С
И
З
Ц
е
н
т
р
а
л
ь
н
ы
й
м
о
д
у
л
ь

Архитектура графического редактора

Слайд 38

Автоматическая расстановка сетей Этапы построения изображения: предварительная расстановка элементов Для отображения

Автоматическая расстановка сетей

Этапы построения изображения:

предварительная расстановка элементов

Для отображения результатов вычисления

в сетевом виде требуется по внутреннему представлению сетей строить их графическое отображение.

основная расстановка методом силовых воздействий

обработка полученного изображения

Особенности реализации основного этапа:

особое распределение сил отталкивания

использование метода оболочек для ускорения расстановки

обнаружение и гашение циклических колебаний

моделирование вязкости среды

учет геометрических размеров объектов сети

Слайд 39

Автоматическая расстановка сетей R P N S R Рамки, силы отталкивания и притяжения: Распределение сил отталкивания:

Автоматическая расстановка сетей

R

P

N

S

R

Рамки, силы отталкивания и притяжения:

Распределение сил отталкивания:

Слайд 40

Основные результаты работы 2. Предложена абстрактная машина вычисления НО. Разработаны алгоритмы

Основные результаты работы

2. Предложена абстрактная машина вычисления НО. Разработаны алгоритмы линейной

сложности для выполнения подстановки и редукции.

3. Предложены и реализованы методы повышения эффективности вычисления НО – редукция «по фронту», кольцевая подстановка, оптимизации последнего вызова, маски вычислимости и мультиправила.

5. Разработана технология графического построения программ (ТГПП), гарантирующая корректность формируемой программы.

1. Введено понятие размеченной сети. Предложены правила редукции для размеченных сетей.

4. На основе предложенных методов и алгоритмов выполнена программная реализация подсистемы исполнения запросов СФЛП. Реализован импорт программ на языке Пролог.

6. Предложены оптимизационные модификации и реализован силовой метод автоматического формирования изображения сетей.

7. Разработана архитектура и выполнена программная реализация графического редактора СФЛП, поддерживающего ТГПП.

8. Подсистема исполнения запросов и графический редактор интегрированы в реализованную совместно с Бебчиком Ал.М. СФЛП.