Объединение путем преобразования - PullRequest
2 голосов
/ 13 марта 2012

Я пишу алгоритм объединения на F # для использования с AST преобразованиями с использованием «Переписывание терминов и все такое» ( WoldCat ) Франца Баадера и Тобиаса Нипкова. Для раздела 4.6 «Объединение с помощью преобразования» было слишком много математической теории с примерами, и не так ясно, как мне бы хотелось.

Может ли кто-нибудь привести или указать более простые примеры, использующие преобразования:

Удалить, Разложить, Ориентировать, Устранить.

1 Ответ

3 голосов
/ 13 марта 2012

Удалить: t = t бессмысленно и может быть удалено из системы уравнений.

1 =? 1 -> nil

Ориент: Мы хотим, чтобы все уравнения были в форме x =? t, поэтому переверните все уравнения в виде t =? x.

2 =? x1 -> x1 =? 2

Исключить: учитывая x =? t, заменить все остальные уравнения, чтобы заменить все экземпляры x на t.

x1 + x2 = 7, x2 = 5 -> x1 + 5 = 7, x2 = 5

Разложить: Нам нужно взять любые функции и исключить их, чтобы получить уравнения в виде x =? t. Обратите внимание, что этот процесс технически удаляет только одну функцию за раз.

x1 + 5 = 7 -> x1 = 2
2 * (x1 + x2) = 14 -> x1 + x2 = 7

Надеюсь, это поможет.

...