Формализм Бёрда – Меертенса
Формализм Бёрда -Меертенса ( BMF ) представляет собой расчет для получения программ на основе спецификаций программ (в условиях функционального программирования ) посредством процесса эквациональных рассуждений. Он был разработан Ричардом Бёрдом и Ламбертом Меертенсом в рамках их работы в рамках Рабочей группы 2.1 ИФИП .
В публикациях его иногда называют BMF, как отсылку к форме Бэкуса-Наура . В шутку его также называют Squiggol , как дань уважения ALGOL , который также входил в компетенцию WG 2.1, а также из-за используемых в нем «волнистых» символов. Менее используемый вариант имени, но фактически предложенный первым — SQUIGOL .Мартин и Нипкоу предоставили автоматизированную поддержку для проверки разработки Squiggol, используя Larch Prover . [1]
Основные примеры и обозначения
[ редактировать ]Map — это хорошо известная функция второго порядка, которая применяет заданную функцию к каждому элементу списка; в БМФ написано :
Аналогично, сокращение — это функция, которая сворачивает список в одно значение путем многократного применения бинарного оператора . Написано/в BMF.принимая в качестве подходящего бинарного оператора с нейтральным элементом e мы имеем
Используя эти два оператора и примитивы (как обычное дополнение) и (для объединения списков) мы можем легко выразить сумму всех элементов списка и функцию выравнивания как и , в бесточечный стиль . У нас есть:
Примеры используемых законов |
---|
Аналогично, написав функционального состава и для конъюнкции легко написать функцию, проверяющую, что все элементы списка удовлетворяют предикату p , просто как :
Берд (1989) преобразует неэффективные, простые для понимания выражения («спецификации») в эффективные сложные выражения («программы») посредством алгебраических манипуляций. Например, спецификация " «является почти дословным переводом задачи о максимальной сумме сегментов , [6] но запуск этой функциональной программы в списке размера потребуется время в общем. Исходя из этого, Берд вычисляет эквивалентную функциональную программу, работающую во времени. , и по сути является функциональной версией алгоритма Кадане .
Вывод показан на рисунке, с вычислительными сложностями [7] выделены синим цветом, а юридические применения обозначены красным.Примеры законов можно открыть, нажав на [показать] ; они используют списки целых чисел, сложение, минус и умножение. Обозначения в статье Берда отличаются от использованных выше: , , и соответствуют , и обобщенная версия выше, соответственно, в то время как и вычислить список всех префиксов и суффиксов своих аргументов соответственно. Как и выше, композиция функций обозначается « ", который имеет наименьший приоритет привязки . В примерах списки раскрашиваются в зависимости от глубины вложенности; в некоторых случаях новые операции определяются ad hoc (серые прямоугольники).
Лемма о гомоморфизме и ее приложения к параллельным реализациям.
[ редактировать ]Функция h в списках называется гомоморфизмом списка , если существует ассоциативный бинарный оператор и нейтральный элемент такой, что имеет место следующее:
Лемма о гомоморфизме утверждает, что h является гомоморфизмом тогда и только тогда, когда существует оператор и функция f такая, что .
Большой интерес для этой леммы представляет ее применение к выводу высокопараллельных реализаций вычислений. Действительно, тривиально увидеть, что имеет высокопараллельную реализацию, как и — наиболее очевидно, как двоичное дерево. Таким образом, для любого гомоморфизма списка h существует параллельная реализация. Эта реализация разбивает список на фрагменты, которые назначаются разным компьютерам; каждый вычисляет результат на своем собственном фрагменте. Именно эти результаты проходят по сети и окончательно объединяются в один. В любом приложении, где список огромен, а результатом является очень простой тип (скажем, целое число), преимущества распараллеливания значительны. Это основа подхода уменьшения карты .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Урсула Мартин ; Тобиас Нипков (апрель 1990 г.). «Автоматизация Сквиггола» . В Манфреде Брое ; Клифф Б. Джонс (ред.). Учеб. IFIP WG 2.2/2.3 Рабочая конференция по концепциям и методам программирования . Северная Голландия. стр. 233–247.
- ^ Берд 1989 , раздел 8, стр.126р.
- ^ Jump up to: а б Берд 1989 , разд.2, стр.123л.
- ^ Берд 1989 , разд.7, лем.1, стр.125л.
- ^ Jump up to: а б Берд 1989 , разд.5, стр.124р.
- ^ Где , , и возвращает наибольшее значение, сумму и список всех сегментов (т.е. подсписков) данного списка соответственно.
- ^ Каждое выражение в строке обозначает исполняемую функциональную программу для вычисления максимальной суммы сегмента.
- Меертенс, Ламберт (1986). «Алгоритмика: На пути к программированию как математической деятельности» . Ин де Баккер, JW; Хазевинкель, М.; Ленстра, Дж. К. (ред.). Математика и информатика . Монографии КРИ. Том. 1. Северная Голландия. стр. 289–334.
- Меертенс, Ламберт ; Берд, Ричард (1987). «Два упражнения из книги по алгоритмике» (PDF) . Северная Голландия.
- Бэкхаус, Роланд (1988). Исследование формализма Берда-Меертенса (PDF) (Технический отчет).
- Берд, Ричард С. (1989). «Алгебраические тождества для вычислений в программах» (PDF) . Компьютерный журнал . 32 (2): 122–126. дои : 10.1093/comjnl/32.2.122 .
- Коул, Мюррей (1993). «Параллельное программирование, гомоморфизмы списков и проблема максимальной суммы сегментов» . Параллельные вычисления: тенденции и приложения, PARCO 1993, Гренобль, Франция . стр. 489–492.
- Бэкхаус, Роланд ; Хугендейк, Пол (1993). Элементы реляционной теории типов данных (PDF) . стр. 7–42. дои : 10.1007/3-540-57499-9_15 . ISBN 978-3-540-57499-6 .
- Банкенбург, Александр (1994). О'Доннелл, Джон Т.; Хаммонд, Кевин (ред.). Иерархия бума (PDF) . Функциональное программирование, Глазго, 1993: Материалы семинара по функциональному программированию в Глазго 1993 года, Эр, Шотландия, 5–7 июля 1993 года . Лондон: Спрингер. стр. 1–8. дои : 10.1007/978-1-4471-3236-3_1 . ISBN 978-1-4471-3236-3 .
- Бёрд, Ричард ; де Мур, Оге (1997). Алгебра программирования . Международная серия по информатике. Том. 100. Прентис Холл. ISBN 0-13-507245-Х .
- Гиббонс, Джереми (2020). Трой Астарта (ред.). Школа Сквиггола: История формализма Берда-Меертенса (PDF) . Формальные методы (Практикум по истории формальных методов) . ЛНКС. Том. 12233. Спрингер. дои : 10.1007/978-3-030-54997-8_2 .