Неинтерпретируемая функция - Uninterpreted function
В математической логике , неосмысленные функции или функция символ является тот , который не имеет никакого другого свойства , чем его имя и п-ичная форма. Функциональные символы используются вместе с константами и переменными для образования терминов .
Теория неинтерпретированных функций также иногда называют свободную теорию , потому что она свободно порождена, и , таким образом, свободный объект , или пустой теория , будучи теорией , имеющей пустое множество предложений (по аналогии с исходной алгебры ). Теории с непустым набором уравнений известны как эквациональные теории . Проблема выполнимости свободных теорий решается синтаксической унификацией ; алгоритмы для последнего используются интерпретаторами для различных компьютерных языков, таких как Prolog . Синтаксическая унификация также используется в алгоритмах проблемы выполнимости для некоторых других эквациональных теорий, см. Е-унификация и сужение .
Пример
В качестве примера неинтерпретируемых функций для SMT-LIB, если этот ввод передан решателю SMT :
(declare-fun f (Int) Int)
(assert (= (f 10) 1))
решающая программа SMT вернет «Этот ввод допустим». Это происходит потому, что f это неинтерпретируемая функция (то есть все, что известно о f ее сигнатуре ), поэтому возможно, что f(10) = 1 . Но применив ввод ниже:
(declare-fun f (Int) Int)
(assert (= (f 10) 1))
(assert (= (f 10) 42))
решающая программа SMT вернет «Этот ввод неудовлетворителен». Это происходит потому, что хотя f не имеет интерпретации, но невозможно, чтобы он возвращал разные значения для одного и того же ввода.
Обсуждение
Проблема решения для свободных теорий особенно важна, потому что с ее помощью можно свести к минимуму многие теории.
Свободные теории могут быть решены путем поиска общих подвыражений, образующих замыкание конгруэнции . Решатели включают в себя решатели теорий выполнимости по модулю .
Смотрите также
Заметки
Рекомендации