Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Понятие в математике или информатике. Связанные переменные в компьютерном программировании. Свободные переменные в системах линейных уравнений.
Concept in mathematics or computer science
bound variables in computer programming
free variables in systems of linear equations
В математике, а также в других дисциплинах, включающих формальные языки, таких как математическая логика и информатика, переменная может быть либо свободной, либо связанной. Свободная переменная — это обозначение (символ), указывающее места в выражении, где может происходить подстановка, и не являющееся параметром этого или какого-либо включающего выражения. В некоторых старых книгах для свободной переменной используется термин «реальная переменная», а для связанной — «видимая переменная». Эта идея связана с заполнителем (символом, который впоследствии будет заменен некоторым значением) или символом подстановки, представляющим неопределенный символ. В компьютерном программировании термин «свободная переменная» относится к переменным, используемым в функции, которые не являются ни локальными переменными, ни параметрами этой функции. Термин «нелокальная переменная» часто является синонимом в этом контексте. Экземпляр символа переменной считается связанным, если значение этого символа переменной было привязано к конкретному значению или диапазону значений в области определения или вселенной. Этого можно достичь с помощью логических кванторов, операторов связывания переменных или явного указания допустимых значений для переменной (например, «где — положительное целое число»). В целом, символ переменной считается связанным, если хотя бы одно его вхождение связано. С.142–143. Поскольку один и тот же символ переменной может встречаться в нескольких местах в выражении, некоторые вхождения символа переменной могут быть свободными, а другие — связанными, с.78, следовательно, «свободные» и «связанные» сначала определяются для вхождений, а затем обобщаются на все вхождения данного символа переменной в выражении. Однако, как бы это ни было сделано, переменная перестает быть независимой переменной, от которой зависит значение выражения, будь то значение истинности или числовой результат вычисления, или, в более общем смысле, элемент множества значений функции. Хотя область определения часто подразумевается в контексте, когда явный диапазон значений для связанной переменной не задан, может потребоваться указать область для правильной оценки выражения. Например, рассмотрим следующее выражение, в котором обе переменные связаны логическими кванторами:
In mathematics, and in other disciplines involving formal languages, including mathematical logic and computer science, a variable may be said to be either free or bound. A free variable is a notation (symbol) that specifies places in an expression where substitution may take place and is not a parameter of this or any container expression. Some older books use the terms real variable and apparent variable for free variable and bound variable, respectively. The idea is related to a placeholder (a symbol that will later be replaced by some value), or a wildcard character that stands for an unspecified symbol. In computer programming, the term free variable refers to variables used in a function that are neither local variables nor parameters of that function. The term non local variable is often a synonym in this context. An instance of a variable symbol is bound, in contrast, if the value of that variable symbol has been bound to a specific value or range of values in the domain of discourse or universe. This may be achieved through the use of logical quantifiers, variable binding operators, or an explicit statement of allowed values for the variable (such as, " where is a positive integer".) A variable symbol overall is bound if at least one occurrence of it is bound. pp.142 143 Since the same variable symbol may appear in multiple places in an expression, some occurrences of the variable symbol may be free while others are bound,p.78 hence "free" and "bound" are at first defined for occurrences and then generalized over all occurrences of said variable symbol in the expression. However it is done, the variable ceases to be an independent variable on which the value of the expression depends, whether that value be a truth value or the numerical result of a calculation, or, more generally, an element of an image set of a function. While the domain of discourse in many contexts is understood, when an explicit range of values for the bound variable has not been given, it may be necessary to specify the domain in order to properly evaluate the expression. For example, consider the following expression in which both variables are bound by logical quantifiers:
Это выражение оценивается как ложное, если область определения и — действительные числа, но как истинное, если область определения — комплексные числа. Термин «фиктивная переменная» также иногда используется для связанной переменной (чаще во общей математике, чем в информатике), но его не следует путать с одноименным, но несвязанным понятием «фиктивная переменная», используемым в статистике, чаще всего в регрессионном анализе.
This expression evaluates to false if the domain of and is the real numbers, but true if the domain is the complex numbers. The term "dummy variable" is also sometimes used for a bound variable (more commonly in general mathematics than in computer science), but this should not be confused with the identically named but unrelated concept of dummy variable as used in statistics, most commonly in regression analysis.
Официальное объяснение
Механизмы связывания переменных встречаются в различных контекстах в математике, логике и информатике. Однако во всех случаях они являются чисто синтаксическими свойствами выражений и переменных в них. Для целей данного раздела мы можем обобщить синтаксис, отождествляя выражение с деревом, у которого листья – это переменные, константы, константы функций или константы предикатов, а нелистья – логические операторы. Тогда это выражение можно определить, выполняя обход дерева в порядке прямой адресации (inorder traversal). Операторы связывания переменных – это логические операторы, которые встречаются почти во всех формальных языках. Связывающий оператор Q принимает два аргумента: переменную v и выражение P, и при применении к ним производит новое выражение Q(v, P). Значение связывающих операторов определяется семантикой языка и не интересует нас здесь. Связывание переменной связывает три вещи: переменную v, местоположение a этой переменной в выражении и нелистовой узел n вида Q(v, P). Примечание: мы определяем местоположение в выражении как листовой узел в дереве синтаксиса. Связывание переменной происходит, когда это местоположение находится ниже узла n.
Variable binding mechanisms occur in different contexts in mathematics, logic and computer science. In all cases, however, they are purely syntactic properties of expressions and variables in them. For this section we can summarize syntax by identifying an expression with a tree whose leaf nodes are variables, constants, function constants or predicate constants and whose non leaf nodes are logical operators. This expression can then be determined by doing an inorder traversal of the tree. Variable binding operators are logical operators that occur in almost every formal language. A binding operator Q takes two arguments: a variable v and an expression P, and when applied to its arguments produces a new expression Q(v, P). The meaning of binding operators is supplied by the semantics of the language and does not concern us here. Variable binding relates three things: a variable v, a location a for that variable in an expression and a non leaf node n of the form Q(v, P). Note: we define a location in an expression as a leaf node in the syntax tree. Variable binding occurs when that location is below the node n.
В лямбда-исчислении x является связанной переменной в терме M = λx. T и свободной переменной в терме T. Мы говорим, что x связана в M и свободна в T. Если T содержит подтерм λx. U, то x пересвязывается в этом терме. Такое вложенное, внутреннее связывание x называется "затенением" внешнего связывания. Вхождения x в U являются свободными вхождениями новой x.
In the lambda calculus, x is a bound variable in the term M = λx. T and a free variable in the term T. We say x is bound in M and free in T. If T contains a subterm λx. U then x is rebound in this term. This nested, inner binding of x is said to "shadow" the outer binding. Occurrences of x in U are free occurrences of the new x.
Переменные, связанные на верхнем уровне программы, технически являются свободными переменными в пределах термов, к которым они привязаны, но часто обрабатываются особым образом, поскольку их можно скомпилировать как фиксированные адреса. Аналогично, идентификатор, связанный с рекурсивной функцией, также технически является свободной переменной в собственном теле, но обрабатывается особым образом. Закрытый терм – это терм, не содержащий свободных переменных.
Variables bound at the top level of a program are technically free variables within the terms to which they are bound but are often treated specially because they can be compiled as fixed addresses. Similarly, an identifier bound to a recursive function is also technically a free variable within its own body but is treated specially. A closed term is one containing no free variables.