Можно ли придать точный смысл задачам вида "Вычислить
"?
Если обозначить множество значений функции
как
, то сначала получается такое: вычислить
означает найти
такой, что
. Смысл вроде бы ясен, однако формально получается ерунда: исходный терм
удовлетворяет условию задачи, действительно:
и
. И любой равный ему терм тоже удовлетворяет условию. (например, при таком определении решением задачи "Вычислить
" будет
, поскольку
и
- натуральное число!)
Уточнить смысл получается следующим образом: для каждого выражения следует рассматривать его синтаксическое дерево, вершины которого помечены нужными метками, а исходное выражение считать функцией от этого дерева. Далее я постарался записать это формально.
Пусть
- какой-то конечный алфавит,
- множество непустых строк в нем. Множество
назовем кодифицированным в
существует эффективно вычислимая в обе стороны биекция
из какого-то подмножества
в
. Значения
будем называть меткой элемента
.
Пусть
- множество,
- некое подмножество функций
, причем
кодифицированы.
Определение: простым синтаксическим деревом назовем граф, состоящий из одной вершины с меткой
. Будем его обозначать
.
Определение: 1. Простое синтаксическое дерево является синтаксическим деревом.
2. Если
- синтаксические деревья,
-
-местная функция,
- метка
, то ориентированное дерево с корнем
и дугами, связывающими
и корни
в таком же порядке тоже является синтаксическим деревом (это я рисователь деревьев пока ниасилил)
3. Других синтаксических деревьев нет.
Далее я буду слово "синтаксическое" для простоты опускать.
Определение: пусть
- дерево.
1. Если
- простое:
, то его значение
.
2. Если
- дерево с корнем с меткой
, где
-
-местная функция, а
- непосредственные поддеревья корня, то его значение
.
Множество всех деревьев над
обозначим
.
Отношение
на
порождает нетривиальное отношение эквивалентности
на
при
:
.
Таким образом, задача вида "Вычислить
" означает "Для какого-нибудь дерева
, представляющего
, найти простое дерево
и
". Т.е. пафос в том, что мы работает не с элементами
, а с деревьями.
Аналогично можно придать более точный смысл более общим задачам:
1. Задача "Упростить
" означает "Для дерева
, представляющего
, найти эквивалентное дерево с минимальным числом вершин".
2. Задача "Вычислить
относительно множества функций/функционалов/еще-чего-то-более-страшного
" означает "Для дерева
, представляющего
, найти эквивалентное дерево, не содержащее меток
". Это задачи вычисления производных, определенных и неопределенных интегралов, нахождения суммы в замкнутом виде и т.п. - во всех них требуется найти представление в виде дерева, не содержащего функционалы.
Если просмотреть типовые задачи на вычисление, то можно заметить, что из некоторых из них "торчат уши" подхода с деревьями. Те же формулировки типа "найти сумму в замкнутом виде", теоремы интегрирования некоторых классов функций (
, способы упрощения диффуров, "не содержащих в явном виде" буквы
или
, формализация поиска области определения и т.п.).
С другой стороны, с формализацией смысла задачи типа вида "Вычислить
" может оказаться не все так гладко.
Т.е. получается в математике часть задач на вычисление имеет "дырявые абстракции" - написано простое выражение, но за ним стоит сложное дерево, которое "не замечают", но иногда при необходимости к нему обращаются.
И вот это все к чему: а почему ничего подобного в книгах по математике нету? Это все давно известно и описано в книгах
, которые я просто не читал? (я видел деревья только в книгах по информатике) Это очевидно, уныло и неинтересно? Это не дает ни одной полезной теоремы? Это излишняя формализация? Или еще какая-то причина?