Сужение наборов алгебраических значений
Как и логическое программирование , сужение [1] [2] наборов алгебраических значений дает метод рассуждений о значениях в нерешенных или частично решенных уравнениях. Там, где логическое программирование основано на разрешении , алгебра множеств значений опирается на правила сужения. Правила сужения позволяют исключить из набора решений значения, несовместимые с решаемыми уравнениями.
В отличие от логического программирования, сужение наборов алгебраических значений не требует возврата . Вместо этого все значения содержатся в наборах значений и рассматриваются параллельно.
Этот подход также аналогичен использованию ограничений [3] в программировании логики с ограничениями , но без основы логической обработки.
Вероятностные наборы значений — это естественное расширение наборов значений до дедуктивной вероятности . Конструкция набора значений содержит информацию, необходимую для расчета вероятностей рассчитанных значений на основе вероятностей начальных значений.
История
[ редактировать ]Ранние языки программирования были необходимы . Они реализуют функциональность, позволяя представлять изменения. Оператор присваивания позволяет переменной изменять свое значение.
В математике значение переменной не может меняться. Это является фундаментальным для математического подхода. Функциональные языки, основанные на лямбда-исчислении, допускают такой математический подход к программированию. Функциональные языки, разработанные с использованием ленивых вычислений и позволяющие передавать функции в качестве параметров.
Отложенное вычисление — важная особенность современных функциональных языков программирования, таких как Haskell . Haskell — последний из серии языков, основанных на лямбда-исчислении и let-выражениях . Эти языки обеспечивают богатую функциональность за счет отложенных вычислений и полиморфную систему типов, использующую вывод типов . Функциональные языки программирования также естественным образом поддерживают функции высшего порядка .
Логическое программирование на основе Резолюции, разработанное наряду с функциональным программированием. Логическое программирование — это форма реляционного программирования , которая делает выводы о значениях. Логическое программирование с ограничениями расширяет логическое программирование, поддерживая ограничения . Языки программирования логики ограничений, такие как ECLiPSe, предоставляют возможность решать сложные логические задачи. Однако ECLiPSe не ленив .
Языки логического программирования, хотя и обладают большими способностями к дедукции, никогда не обладали мощью и гибкостью функциональных языков.
Сужение — это метод, позволяющий осуществлять логический вывод с гибкостью функциональных языков.
Введение
[ редактировать ]В математике выражение представляет одно значение. Функция сопоставляет одно или несколько значений одному уникальному значению.
Обратные функции не всегда четко определяются как функции. Иногда требуются дополнительные условия, чтобы обратная функция соответствовала определению функции.
Некоторые логические операции, в частности, не имеют обратных операций, которые можно определить как функции. В частности, дизъюнкция «или» имеет обратные значения, допускающие два значения. В естественном языке «или» представляет альтернативные возможности.
Сужение основано на наборах значений, которые позволяют упаковывать несколько значений и рассматривать их как одно значение. Это позволяет всегда рассматривать обратные функции как функции.
Для достижения этого наборы значений должны записывать контекст, к которому принадлежит значение. Переменная может принимать только одно значение в каждом возможном мире . Наборы значений помечают каждое значение в наборе значений миром, к которому оно принадлежит.
Возможные миры принадлежат множествам миров. Набор миров — это набор всех взаимоисключающих миров. Объединение значений из разных возможных миров невозможно, потому что это означало бы объединение взаимоисключающих возможных миров.
Применение функций к наборам значений создает комбинации наборов значений из разных миров. Сужение уменьшает количество этих миров, исключая комбинации разных миров из одного набора миров. Правила сужения также определяют ситуации, в которых некоторые комбинации миров оказываются невозможными.
При использовании сужения не требуется обратное отслеживание. Упаковав возможные значения в набор значений, можно одновременно рассматривать все комбинации значений. Оценка происходит как в функциональном языке, комбинируя комбинации значений в наборах значений, при этом правила сужения исключают невозможные значения из наборов.
Введение в наборы значений
[ редактировать ]Набор значений — это объект, который представляет набор значений, которые может иметь переменная. Набор значений математически ведет себя как одно значение, но внутренне представляет несколько значений. Для достижения этого набор значений отслеживает значения вместе с контекстом или миром, в котором они произошли.
Множественные решения уравнения
[ редактировать ]В математике выражение должно представлять одно значение. Например, рассмотрим уравнение
что подразумевает,
Но это немного запутанно и не позволяет нам работать с несколькими значениями одновременно. Если к x добавляются дополнительные условия или ограничения, мы хотели бы рассмотреть каждое значение, чтобы увидеть, соответствует ли оно ограничению. Так наивно нам хотелось бы написать,
Тогда наивно,
но это неправильно. Каждый x должен представлять одно значение в выражении. Либо x равно 2, либо x = −2. Эту проблему можно решить, отслеживая два значения, чтобы гарантировать, что значения используются последовательно, и именно это и делает набор значений.
Представительство
[ редактировать ]Значение, установленное для «x», записывается как:
Это контейнер V, который имеет набор пар тегов, значений,
Значение 2 связано с возможным миром . Значение −2 связано с возможным миром . Это означает, что значение не может быть одновременно 2 и −2. В мире значение набора значений должно быть равно 2. В мире значение набора значений должно быть -2.
Решение уравнения,
является,
Возможные миры
[ редактировать ]Возможный мир используется здесь как неформальный термин. Формально возможный мир определяется логическим условием. Возможный мир можно рассматривать как набор возможностей мира, соответствующих условию.
Термин «возможный мир» используется для облегчения понимания описания наборов значений.
Мировые наборы
[ редактировать ]Набор миров — это набор возможных миров, которые представляют все возможности. Так — это мир, заданный как x = 2 (в мире ) или x= −2 (в мире ). Других возможностей нет.
Миры из одного и того же набора миров являются взаимоисключающими, поэтому не возможно, чтобы предложения для обоих миров были взаимоисключающими. и верны одновременно.
Применение функций
[ редактировать ]Правило применения функций к наборам значений таково:
Например,
является,
Пересечение возможного мира с самим собой есть возможный мир,
Пересечение возможного мира с другим возможным миром из того же множества миров пусто,
Так,
Правило пустых миров позволяет удалять отмеченные значения из пустых миров.
предоставление,
Давая результат, который равно либо −4, либо 4, как и ожидалось.
Применение к логическим значениям
[ редактировать ]Это связь между a , b и true , которая подразумевает, что и a, и b должны быть истинными.
Допускает несколько значений для a и b . Если есть ,
тогда для б
Это означает, что если a ложно , то b должно быть истинным .
Теперь рассмотрим,
дает,
и
объединение этих двух наборов значений дает:
Пара удаляется из-за правила «утверждать равное»,
Его ценность не совпало с .
Зависимые миры
[ редактировать ]Рассмотрим проблему,
Сначала рассчитайте значение, установленное для ,
Поскольку это утверждение считается истинным, все ложные значения отбрасываются, что дает:
Миры,
невозможны. Миры пусты.
Если набор миров включен в расчет, то каждый мир из набора миров должен быть включен в результат. Если мир не найден, он называется зависимым миром и должен быть пустым. Мир не представлен в этом значении и поэтому должен быть пустым. Значение, установленное для теперь меньше,
Второе условие теперь стало проще из-за меньшего набора значений.
Тогда наборы значений будут такими:
И расчет такой:
Но пусто. Так,
Так и пусты,
Сейчас и не представлены и удалены как зависимые миры. Так,
Каждое выполненное вычисление может уменьшить размер наборов значений за счет удаления зависимых миров, но добавить новый набор значений, размер которого является произведением размеров входных наборов значений. Тогда расчеты следует продолжать сначала там, где произведение размеров наборов входных значений наименьшее.
Пицца, пиво, виски
[ редактировать ]После тяжелого рабочего дня в попытках уложиться в какой-то сумасшедший срок с адским проектом, в 22:00 наступает то отчаянное время, когда нам всем нужна пицца, пиво и виски. Пиццерии открыты по адресу:
Пиво, которое ты можешь получить,
Виски,
Копы рядом, а мы не становимся моложе. Куда пойти?
Если ограничения применяются в порядке слева направо ,
Тогда нам нужно объединить это с,
Это создаст 24 комбинации, из которых будут совпадающие,
Наконец, нам нужно объединиться с виски.
Что дает 6 комбинаций. Соответствующий,
Всего было создано 30 комбинаций.
Если ограничения применяются в порядке справа налево ,
Тогда нам нужно объединить это с,
Это создаст 8 комбинаций, из которых совпадающая будет:
Наконец, нам нужно объединиться с пиццей.
Что дает 6 комбинаций. Соответствующий,
Результат тот же, но для получения вывода было создано всего 14 комбинаций.
Каждое вычисление объединяет наборы значений для создания набора значений, который является произведением размеров входных наборов значений. Затем установленное значение будет сокращено. И каждый расчет имеет равные шансы сузить расчет. Таким образом, контролируя порядок и продолжая вычисления с наименьшим произведением размеров, будет меньше вычислений и меньше комбинаторного взрыва .
Пусть выражения и несколько значений
[ редактировать ]Требуется общее решение проблемы обратных функций, которые не являются функциями. Требуется представление значения, которое ограничено тем, что оно является членом набора значений. Выражение let может использоваться для представления значения, которое является членом набора.
В этом выражении является ограничением. Ограничение — это логическое выражение, которому должна удовлетворять переменная. Выражение let позволяет представить ограничение в выражении. Если бы существовало общее правило применения функций выражений ограничений, то ограничение можно было бы рассматривать как значение.
При применении функции одного выражения let к другому,
Но для применения выражения let к самому себе применяется другое правило. Выражение let не ограничивает область действия переменной x, поэтому x является одной и той же переменной в двух выражениях let.
Кажется, не существует простого правила для объединения выражений let. Требуется общая форма выражения, представляющая переменную, значение которой является членом набора значений. Выражение должно быть основано на переменной и наборе.
Применение функции, примененное к этой форме, должно дать другое выражение в той же форме. Таким образом, любое выражение для функции нескольких значений можно рассматривать так, как если бы оно имело одно значение.
Недостаточно, чтобы форма представляла только набор значений. Каждое значение должно иметь условие, определяющее, когда выражение принимает значение. Результирующая конструкция представляет собой набор пар условий и значений, называемый «набором значений».
Теория множеств ценностей
[ редактировать ]«Набор значений» K определяется как набор пар, каждая пара состоит из значения и набора зависимых условий. Набор зависимых условий используется «функцией условия», чтобы определить, принимает ли набор значений это значение.
Функция состояния определяется тремя аксиомами:
- Каждая пара означает, что значение набора значений является v, если к списку применена функция условия, , это правда.
- Одно из условий верно.
- Только одно из условий верно.
Условие представляется как функция, применяемая к набору зависимых условий, что позволяет управлять структурой условия. Также набор условий используется при сужении путем исключения зависимых значений . Однако для большинства целей набор значений можно рассматривать как набор пар «значение-условие». Функция условия переводит множество в условие.
Формально,
Имя | Определение |
---|---|
Функция условия | |
Условие значения | |
Полный комплект | |
Исключение |
Функция значения
[ редактировать ]Используя условие ценности и аксиомы полного набора,
В качестве выражения let это выглядит так:
Одно значение
[ редактировать ]Значение, заданное для представления одного значения:
Вывод такой:
Элемент набора
[ редактировать ]Набор значений для представления элемента набора:
Это довольно странное определение добавляет значение, заданное как часть зависимого условия. Это используется для сужения путем исключения зависимых значений .
Значение выражения
- .
И R, и x должны быть включены в зависимое условие, поскольку R идентифицирует набор значений, которому принадлежит зависимое условие, а x предоставляет переменную, используемую для хранения значения в выражении let.
Если пренебречь добавлением R к зависимому условию, выражение принимает более простой и понятный вид:
Вывод такой:
Применение функций
[ редактировать ]Применение функции наборов значений определяется формулой:
Вывод,
Затем, используя
получать,
Исключение
[ редактировать ]Исключение — это правило, определяющее, когда условия должны быть ложными,
Это может быть получено из того,
Упрощение
[ редактировать ]Правило упрощения позволяет отбрасывать значения, условие которых является ложным.
Вывод
Краткое изложение результатов
[ редактировать ]Имя | Правило |
---|---|
Функция значения | |
Одно значение | |
Установить элемент | |
Применение функции | |
Исключение | |
Упрощение | |
Утверждать равенство |
Значение устанавливает идентичность
[ редактировать ]Благодаря определению применения функций к наборам значений было также переопределено определение равенства наборов значений. Старое определение равенства все еще существует, поскольку наборы значений создаются как набор пар. Два множества равны, если они содержат одни и те же элементы. Такое определение равенства наборов значений в лучшем случае вводит в заблуждение.
Что необходимо, так это использовать имя или идентификатор переменной, из которой создается набор значений, как часть структуры набора значений. Это сделало бы наборы значений разными, если только они не основаны на одной и той же переменной.
В математике количественная оценка осуществляется по значениям, а не по формулам. Чтобы продолжить дальнейшее точное определение наборов значений, необходима количественная оценка формул таким образом, чтобы можно было сравнить идентичность формул. Различие между формулой, представляющей значение, и идентичностью формулы — это различие использования и упоминания . Обозначение,
вводится для обозначения количественной оценки по формуле x, где x относится к значению в качестве использования, а u относится к идентичности формулы, представленной или упомянутой.
Используя эту запись, элементом определения множества будет:
В этом случае каждую ссылку на набор значений необходимо будет изменить, чтобы принять во внимание дополнительный уровень структуры набора значений, что затруднит чтение описания. Для удобства чтения этот дополнительный уровень структуры был исключен из определения наборов значений.
Сужение
[ редактировать ]«Сужение» определяет, когда условия для значений должны быть ложными . Сужение начинается, когда значение двух наборов значений считается равным.
Сужение путем утверждения равенства
[ редактировать ]Утверждение о том, что два набора значений равны, дает правило сужения:
Для вывода начнем с
Условие значения дает:
Сужение соединением
[ редактировать ]Если какое-либо базовое условие ложно, то все условия, полученные из него, ложны.
Это следует из определения функции Condition,
Базовое условие для (r, z, u) таково:
Так что если это ложь является ложным.
Сужение скрещенными условиями
[ редактировать ]Если список зависимых условий содержит два разных базовых условия из одного и того же набора значений, он должен быть ложным.
Чтобы получить это, начните с правила исключения, которое гласит:
Тогда для любого набора зависимых l условий
Таким образом, если список зависимых условий основан на двух условиях из одного и того же набора значений, значение условия этого списка зависимых условий будет ложным.
Сужение путем исключения зависимых значений
[ редактировать ]Каждый набор значений накладывает ограничение на базовый набор значений, из которого он состоит. Если набор базовых значений включает значения, которые не представлены в качестве зависимых значений в наборе значений, условия для этих значений должны быть ложными.
Чтобы получить это, начните с правила полного набора:
Условная функция:
Может быть выбрано конкретное зависимое условие, подразумеваемое всем условием.
Так
Здесь . Выражение можно изменить, чтобы определить набор значений, которые может взять,
и так,
Затем, используя правило исключения,
дает,
Это сужающее правило исключения. представляет собой набор значений в наборе базовых значений L которые представлены в наборе значений K. , Условия для других значений должны быть ложными.
Наборы вероятностных значений
[ редактировать ]Набор значений записывает зависимые условия, к которым может быть применена функция условия, чтобы сделать вывод об истинности утверждения о том, что набор значений имеет конкретное значение. Та же самая структура может использоваться для определения вероятности того, что набор значений будет равен конкретному значению. Условная функция:
Функция вероятности:
Это вероятность того, что каждый базовый вариант имеет определенное значение, если события независимы.
Функция вероятности определяется тремя аксиомами:
- Каждая пара означает, что вероятность набора значений — v функция вероятности, примененная к списку, .
- Сумма вероятностей по всему набору значений равна 1.
- Вероятность появления любых двух пар в наборе значений равна нулю.
Функция вероятности дает вероятности результатов на основе начальных вероятностей, заданных булевым индуктивным выводом .
Формально,
Имя | Определение |
---|---|
Функция вероятности | |
Условие значения | |
Complete set | |
Allowed values | |
Exclusion |
Probabilities for each value in a value set may be calculated from probabilities in base value sets using the probability function and the value condition. Base value sets are either for a single value, or multiple value value set.
Probability for a single value
[edit]The value set to represent a single value is,
The complete set rule is,
Which is consistent with the axiom.
Probabilities for multiple values
[edit]The value set to represent multiple values is,
The probability is given by the allowed values rule,
which simplifies to,
If prior estimates of probabilities for values are given then they will be proportional to the posterior probabilities, if the value is in the value set.
If the value is not in the value set the probabilities will be zero,
So,
If the prior probabilities are all the same the probabilities are,
Probabilities of general value sets
[edit]A general value set is created out of the application of base value sets. The value condition rule and the probability function may be combined to give,
Accessing the value set
[edit]Narrowing allows the elimination of values that do not satisfy a variable's constraints. Considered as the basis for an algorithm for solving equations, this narrowing gives a set of values consistent with the constraints on a variable. However in mathematics there is no way to access this set of values.
If is an expression constraining a variable x then the set of values that the variable may take is,
Define the gset of x to be the set of values that satisfy the constraints on x. Consider defining gset as,
This definition depends on knowing the expression E, which is the condition giving all the constraints on x. Within mathematics E may not be obtained from x. So there is no mathematical function that may be applied to a variable to request the set of values. So may the gset function be added to mathematics?
Meta math definition
[edit]A meta-mathematical definition of gset may be possible. Imagine that what we know of as mathematics is actually implemented by a meta function called math. math takes an abstract syntax tree and gives meaning to the variables and mathematical structures and adds existential quantifiers for variables not explicitly quantified.
math would be an expression in a meta mathematical environment with its own variables. To distinguish these meta-variables from math variables represent them by capital letters and the mathematical variables by lower case letters.
Now suppose there is an extended implementation of mathematics implemented by the xmath function, defined as,
Using xmath, gset may be defined by,
Here again the notation,
is used to mean quantification over variables x where x refers to the value, and u refers to the unique identity of the variable.
Example
[edit]For example take the constraint expression . Then,
Then the xmath expression is,
Then where u is the unique identity of the variable x, represented here as the number 1 (for the first variable used in a call to gset),
Here invokes T with M as N.
See also
[edit]References
[edit]- ^ Kirchner, Hélène; Ringeissen, Christophe (1994). "Constraint Solving by Narrowing in Combined Algebraic Domains". Proc. 11th International Conference on Logic Programming. The MIT press. pp. 617–31.
- ^ Arenas, Puri; Artalejo, Mario Rodríguez (1997). "A Lazy Narrowing Calculus for Functional Logic Programming with Algebraic Polymorphic Types.". Proc. of the International Symposium on Logic Programming (ILPS'97). The MIT Press. pp. 53–67.
- ^ Marriott, Kim; Stuckey, Peter J. (1998). Programming with constraints: An introduction. MIT Press.