- •FLIDE
- •Московский институт радиотехники, электроники и автоматики (МИРЭА ТУ)
- •Направленные отношения.
- •Свойства НО и представимые семантические объекты.
- •Сетевое представление НО
- •Сетевое представление семантических объектов
- •Программа
- •Вычисление
- •Подстановка
- •Редукция сетей
- •Вычисление в базисе конструкторов
- •Вычисление с разметкой
- •Вычисление с разметкой
- •Стратегии вычисления
- •Маски вычислимости
- •Маски вычислимости (продолжение)
- •Логический вывод
- •Реализация
- •Внутреннее представление КССГ
- •Внутреннее представление сети
- •Внутреннее представление сети (продолжение)
- •Оптимизация вычислений
- •Редукция «по фронту»
- •Редукция «по фронту» (продолжение)
- •Кольцевая подстановка
- •Кольцевая подстановка (докопирование контекста)
- •Системные типы данных и системные НО
- •Отладка программ
- •Импорт программ языка Пролог
- •Схема вычисления запроса в СФЛП
- •Интерфейсные
- •Технология графического построения программ (ТГПП)
- •Формирование сетей
- •Вид окна графического редактора
- •Автоматическая расстановка сетей
- •Автоматическая расстановка сетей
- •Основные результаты работы
- •Спасибо за внимание!
FLIDE
FLOGOL Integrated
Development Environment
Система
функционально-логического программирования
на языке S-FLOGOL
Московский институт радиотехники, электроники и автоматики (МИРЭА ТУ)
Бебчик Антон Михайлович
Разработка и исследование подсистемы исполнения запросов и графического редактора системы функционально-логического программирования
Специальность 05.13.11 – Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
Цель работы:
создание системы функционально-логического программирования (СФЛП), основанной на формализме направленных отношений (НО) и обладающей развитыми интерфейсными средствами построения и отладки программ.
Основные задачи:
разработка и исследование моделей вычислений НО,
разработка технологии графического построения программ,
программная реализация подсистемы исполнения запросов,
программная реализация графического редактора СФЛП.
Направленные отношения.
Направленным отношением (НО) R арности (n', n'') на носителе D
называется множество упорядоченных пар кортежей элементов D длины n' и n'', соответственно.
Пример графика НО сложения: |
x |
x |
y |
|
|
0 |
0 |
0 |
|
Add(2,1) {(x x , y) | y x x } |
0 |
1 |
1 |
|
1 |
1 |
2 |
||
|
||||
|
1 |
2 |
3 |
|
|
… |
… |
… |
|
Пример графика НО факториала: |
x |
y |
|
|
|
0 |
1 |
|
|
Fact(1,1) {(x, y) | y x!} |
1 |
1 |
|
|
2 |
2 |
|
||
|
|
|||
|
3 |
6 |
|
|
|
… |
… |
|
Свойства НО и представимые семантические объекты.
1.НО R называется функциональным ( F(R)), если
(( , ) R & ( , ) R )
2.НО R называется тотальным (T(R)), если
(( , ) R)
3. НО R 1 называется обратным для R, если
(( , ) R ( , ) R 1 )
Пример представления некоторых семантических объектов логического и функционального программирования:
НО |
Арность |
F(R) |
T(R) |
F(R 1 ) |
T(R 1 ) |
Утверждение |
(0,0) |
+ |
|
+ |
|
Константа |
(0,1) |
+ |
+ |
+ |
|
Функция (тотальная) |
(n,1) |
+ |
+ |
|
|
Частичная функция |
(n,1) |
+ |
|
|
|
Предикат |
(n,0) |
+ |
|
|
|
Сетевое представление НО
Базисом сети B называется тройка ( X , , ), где X - множество сортов элементов, а , : X 0.. задают арность элементов каждого сорта.
Размеченной сетью |
S арности (n , n ), n , n 0 , в базисе элементов B |
называется шестерка |
P, I,O, E,U , 0 , где |
Pмножество точек сети;
I,O входной и выходной кортежи,
| I | = n , |O| = n ;
Eмножество элементов сети;
Uграф семантического различия;
0 |
начальная разметка сети. |
Интерпретация сети S есть
Графическая нотация СПНО:
N P
S
F
S {( , ) | ( : P D)(( p dom( 0 ))( ( p) 0 ( p)) & (I ) & (O) &
( {p , p } U )( ( p ) ( p )) & ( e x, Ie ,Oe E)( (Ie ), (Oe ) x )},
где x - НО арности (x), (x) на носителе D .
Сетевое представление семантических объектов
Семантические примитивы
Константа |
K |
Конструктор |
C |
|
Функция |
F |
Предикат |
P |
|
НО общего типа |
R |
|
Составные объекты
Список
Cn
Nil
пустой список голова
хвост
Дерево
вершина
Tr
Nil
пустое
дерево левое правое
поддерево поддерево
Программа
Программа задается контекстно-свободной сетевой грамматикой
(КССГ), определяемой как четверка B |
, B , , R , где |
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
т |
|
|
н |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Bт |
терминальный базис; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Bн |
нетерминальный базис |
(Bт Bн ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
Bн |
аксиома; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
R |
множество правил вида |
b S, где |
b Bн, |
|
S сеть в базисе |
(Bт Bн ). |
||||||||||||||||||||||
Пример: НО сложения Add. |
Add |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
S1 |
|
|
|
|
|
|
|
|
|
|||||||||
Bт {Null |
(0,1) |
, Succ |
(1,1) |
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
Null |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
B {Add (2,1)}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
н |
|
|
|
|
|
Add |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Add, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S2 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R {Add S1, Add S2}. |
|
|
|
|
|
|
Succ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Add |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Succ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вычисление
1. Вычисление программы производится путем порождения сетевого языка по заданной КССГ.
|
R |
2. Сетевой язык определяется как LG {S | a S & ( (x, Ie ,Oe ) E(x Bн ))}, |
|
где R S обозначает выводимость сети |
S из аксиомы : |
R S ( S) R S1 ( R S1 & ( r R)(S1 r S))
3. Шаг вывода (применение правила КССГ к сети) производится путем
выполнения подстановки сети |
|
S правила |
b S вместо элемента e |
|
сорта b сети |
S (обозначается |
[S / b]S ). |
|
|
S |
S |
|
|
[S / e]S |
|
M |
b |
|
M |
M |
|
M |
||
|
|
|||
|
e |
|
= |
|
|
|
|
e |
|
тело правила исходная сеть |
замещаемый элемент |
||
|
|
|
|
4. Интерпретация программы |
|
|
S . |
S
Подстановка
Succ
Add
Succ
e
Null |
Succ |
Add |
|
|
Succ =
Null Succ
e
Null |
Succ |
|
|
Succ |
|
|
Add |
Succ |
|
Succ |
|
Null |
Succ |
|
Редукция сетей
Редукция предназначена для трансформации сетей на основе знаний о свойствах интерпретации их элементов.
Редукция по структуре
функциональность деструкторов
С
С
С
тотальность |
ортогональность |
|
конструкторов |
конструкторов |
|
|
С' |
|
С |
|
|
|
С" |
|
|
|
Редукция по разметке
прямое распространение
1 |
С |
1 |
C( 1 |
,..., n ) |
n |
|
|||
|
|
|||
|
n |
|
|
обратное распространение
C( 1,..., n )
С
1
C( 1,..., n )
n