Введение

Понятие в математике или информатике. Связанные переменные в компьютерном программировании. Свободные переменные в системах линейных уравнений.

В математике, а также в других дисциплинах, включающих формальные языки, таких как математическая логика и информатика, переменная может быть либо свободной, либо связанной. Свободная переменная — это обозначение (символ), указывающее места в выражении, где может происходить подстановка, и не являющееся параметром этого или какого-либо включающего выражения. В некоторых старых книгах для свободной переменной используется термин «реальная переменная», а для связанной — «видимая переменная». Эта идея связана с заполнителем (символом, который впоследствии будет заменен некоторым значением) или символом подстановки, представляющим неопределенный символ. В компьютерном программировании термин «свободная переменная» относится к переменным, используемым в функции, которые не являются ни локальными переменными, ни параметрами этой функции. Термин «нелокальная переменная» часто является синонимом в этом контексте. Экземпляр символа переменной считается связанным, если значение этого символа переменной было привязано к конкретному значению или диапазону значений в области определения или вселенной. Этого можно достичь с помощью логических кванторов, операторов связывания переменных или явного указания допустимых значений для переменной (например, «где — положительное целое число»). В целом, символ переменной считается связанным, если хотя бы одно его вхождение связано. С.142–143. Поскольку один и тот же символ переменной может встречаться в нескольких местах в выражении, некоторые вхождения символа переменной могут быть свободными, а другие — связанными, с.78, следовательно, «свободные» и «связанные» сначала определяются для вхождений, а затем обобщаются на все вхождения данного символа переменной в выражении. Однако, как бы это ни было сделано, переменная перестает быть независимой переменной, от которой зависит значение выражения, будь то значение истинности или числовой результат вычисления, или, в более общем смысле, элемент множества значений функции. Хотя область определения часто подразумевается в контексте, когда явный диапазон значений для связанной переменной не задан, может потребоваться указать область для правильной оценки выражения. Например, рассмотрим следующее выражение, в котором обе переменные связаны логическими кванторами:

Это выражение оценивается как ложное, если область определения и — действительные числа, но как истинное, если область определения — комплексные числа. Термин «фиктивная переменная» также иногда используется для связанной переменной (чаще во общей математике, чем в информатике), но его не следует путать с одноименным, но несвязанным понятием «фиктивная переменная», используемым в статистике, чаще всего в регрессионном анализе.

Официальное объяснение

Механизмы связывания переменных встречаются в различных контекстах в математике, логике и информатике. Однако во всех случаях они являются чисто синтаксическими свойствами выражений и переменных в них. Для целей данного раздела мы можем обобщить синтаксис, отождествляя выражение с деревом, у которого листья – это переменные, константы, константы функций или константы предикатов, а нелистья – логические операторы. Тогда это выражение можно определить, выполняя обход дерева в порядке прямой адресации (inorder traversal). Операторы связывания переменных – это логические операторы, которые встречаются почти во всех формальных языках. Связывающий оператор Q принимает два аргумента: переменную v и выражение P, и при применении к ним производит новое выражение Q(v, P). Значение связывающих операторов определяется семантикой языка и не интересует нас здесь. Связывание переменной связывает три вещи: переменную v, местоположение a этой переменной в выражении и нелистовой узел n вида Q(v, P). Примечание: мы определяем местоположение в выражении как листовой узел в дереве синтаксиса. Связывание переменной происходит, когда это местоположение находится ниже узла n.

В лямбда-исчислении x является связанной переменной в терме M = λx. T и свободной переменной в терме T. Мы говорим, что x связана в M и свободна в T. Если T содержит подтерм λx. U, то x пересвязывается в этом терме. Такое вложенное, внутреннее связывание x называется "затенением" внешнего связывания. Вхождения x в U являются свободными вхождениями новой x.

Переменные, связанные на верхнем уровне программы, технически являются свободными переменными в пределах термов, к которым они привязаны, но часто обрабатываются особым образом, поскольку их можно скомпилировать как фиксированные адреса. Аналогично, идентификатор, связанный с рекурсивной функцией, также технически является свободной переменной в собственном теле, но обрабатывается особым образом. Закрытый терм – это терм, не содержащий свободных переменных.