В математике и других дисциплинах, связанных с формальными языками, включая математическую логику и информатику, свободная переменная - это нотация (символ), которая указывает места в выражении, где может иметь место подстановка, и не является параметром этого или любого другого выражения-контейнера. В некоторых старых книгах термины « действительная переменная» и « кажущаяся переменная» используются для обозначения свободной переменной и связанной переменной соответственно. Идея связана с заполнителем ( символ, который позже будет заменен некоторым значением) или символом подстановки, который обозначает неопределенный символ.
В компьютерном программировании термин свободная переменная относится к переменным, используемым в функции, которые не являются ни локальными переменными, ни параметрами этой функции. Термин нелокальная переменная часто является синонимом в этом контексте.
Связанная переменная является переменной, которая ранее была свободна, но был связан с конкретным значением или набором значений, называемых областью речи или вселенной. Например, переменная x становится связанной переменной, когда мы пишем:
Для всех х, ( х + 1) 2 = х 2 + 2 х + 1.
или
Существует x такое, что x 2 = 2.
В любом из этих предложений логически не имеет значения, используется ли x или какая-либо другая буква. Однако использование той же буквы в другом месте в каком-либо сложном предложении может сбить с толку. То есть свободные переменные становятся связанными, а затем в некотором смысле перестают быть доступными в качестве замещающих значений для других значений при создании формул.
Термин «фиктивная переменная» также иногда используется для связанной переменной (чаще в общей математике, чем в информатике), но такое использование может создать двусмысленность с определением фиктивных переменных в регрессионном анализе.
Прежде чем дать точное определение свободной переменной и связанной переменной, приведем несколько примеров, которые, возможно, проясняют эти две концепции, чем определение:
В выражении
n - свободная переменная, а k - связанная переменная; следовательно, значение этого выражения зависит от значения n, но нет ничего, называемого k, от чего оно могло бы зависеть.
В выражении
y - свободная переменная, а x - связанная переменная; следовательно, значение этого выражения зависит от значения y, но нет ничего, называемого x, от чего оно могло бы зависеть.
В выражении
x - свободная переменная, а h - связанная переменная; следовательно, значение этого выражения зависит от значения x, но нет ничего, называемого h, от чего оно могло бы зависеть.
В выражении
z - свободная переменная, а x и y - связанные переменные, связанные с логическими кванторами ; следовательно, логическое значение этого выражения зависит от значения z, но нет ничего, называемого x или y, от чего оно могло бы зависеть.
В более широком смысле, в большинстве доказательств мы используем связанные переменные. Например, следующее доказательство показывает, что каждый квадрат четного целого числа делится на
в доказательстве в качестве связанных переменных в целом использовались не только k, но и n.
Следующий
- это некоторые общие операторы привязки переменных. Каждый из них связывает переменную х для некоторого множества S.
Обратите внимание, что многие из этих операторов действуют на функции связанной переменной. В более сложных контекстах такие обозначения могут стать неудобными и запутанными. Может быть полезно переключиться на нотации, которые делают привязку явной, например
на суммы или
для дифференциации.
Механизмы связывания переменных встречаются в разных контекстах в математике, логике и информатике. Однако во всех случаях это чисто синтаксические свойства выражений и переменных в них. В этом разделе мы можем обобщить синтаксис, отождествив выражение с деревом, конечными узлами которого являются переменные, константы, функциональные константы или константы предиката, а нелистовые узлы - логические операторы. Затем это выражение может быть определено путем обхода дерева в порядке. Операторы привязки переменных - это логические операторы, которые встречаются почти во всех формальных языках. Оператор привязки 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
.
Переменные, связанные на верхнем уровне программы, являются технически свободными переменными в пределах терминов, к которым они привязаны, но часто обрабатываются особым образом, поскольку они могут быть скомпилированы как фиксированные адреса. Точно так же идентификатор, связанный с рекурсивной функцией, также технически является свободной переменной в своем собственном теле, но обрабатывается особым образом.
Замкнутый терм один не содержащий свободные переменные.
Чтобы привести пример из математики, рассмотрим выражение, определяющее функцию
где t - выражение. t может содержать некоторые, все или ни одного из x 1,…, x n, а также может содержать другие переменные. В этом случае мы говорим, что определение функции связывает переменные x 1,…, x n.
Таким образом, определение функции выражения типа, показанного выше, можно рассматривать как переменной связывания оператор, аналогичный лямбда - выражений лямбда - исчислении. Другие операторы связывания, такие как знак суммирования, можно рассматривать как функции высшего порядка, применяемые к функции. Так, например, выражение
можно рассматривать как обозначение для
где - оператор с двумя параметрами: однопараметрическая функция и набор для оценки этой функции. Другие операторы, перечисленные выше, могут быть выражены аналогичным образом; например, квантор можно рассматривать как оператор, который вычисляется в логическом соединении от булевозначных функции Р применяется над (возможно бесконечное) множество S.
При анализе формальной семантики можно увидеть, что естественные языки имеют свободные и связанные переменные. В английском языке личные местоимения, такие как он, она, они и т. Д., Могут действовать как свободные переменные.
В приведенном выше предложении притяжательное местоимение her является свободной переменной. Это может относиться к ранее упомянутой Лизе или к любой другой женщине. Другими словами, ее книга может относиться к книге Лизы (пример кореферентности ) или к книге, принадлежащей другой женщине (например, книга Джейн). Кто бы ни референт из нее это может быть установлен в соответствии с ситуационным (т.е. прагматического ) контекстом. Идентичность референта может быть показана с использованием индексов коиндексации, где i указывает на одного референта, а j указывает на второго референта (отличного от i). Таким образом, предложение, которое Лиза нашла в своей книге, имеет следующие толкования:
Это различие представляет собой не чисто академический интерес, так как некоторые языки действительно имеют разные формы для нее i и ее j: например, норвежский и шведский переводят кореферент ее i как грех и некореферент ее j как hennes.
Английский язык позволяет указывать кореференцию, но это необязательно, поскольку допустимы обе интерпретации предыдущего примера (инграмматическая интерпретация обозначена звездочкой):
Однако возвратные местоимения, такие как он, сама, себя и т. Д., И взаимные местоимения, такие как друг друга, действуют как связанные переменные. В таком предложении:
рефлексивные сам может относиться только к ранее упомянутое антецеденте, в этом случае Джейн, и никогда не может относиться к различному женскому лицу. В этом примере сама переменная связана с существительным Jane, которое встречается в позиции субъекта. Указывая на коиндексацию, первая интерпретация, в которой Джейн и она коиндексированы, допустима, но другая интерпретация, в которой они не коиндексированы, не грамматична :
Обратите внимание, что привязка кореферентности может быть представлена с использованием лямбда-выражения, как упоминалось в предыдущем разделе формального объяснения. Предложение с возвратным словом можно представить как
в котором Джейн является субъектным референтным аргументом, а λx.x damage x - это функция-предикат (лямбда-абстракция) с лямбда-нотацией, а x указывает как семантический субъект, так и семантический объект предложения как связанные. Это возвращает семантическую интерпретацию ДЖЕЙН обидела ДЖЕЙН, причем ДЖЕЙН была тем же человеком.
Местоимения тоже могут вести себя по-другому. В предложении ниже
местоимение her может относиться только к женщине, которая не является Эшли. Это означает, что оно никогда не может иметь рефлексивного значения, эквивалентного тому, как Эшли ударила себя. Грамматические и грамматические интерпретации:
Первая интерпретация невозможна. Грамматика разрешает только второе толкование.
Таким образом, можно видеть, что рефлексивы и обратные числа являются связанными переменными (технически известными как анафоры ), в то время как истинные местоимения являются свободными переменными в некоторых грамматических структурах, но переменными, которые не могут быть связаны в других грамматических структурах. Явления связывания, обнаруженные в естественных языках, были особенно важны для синтаксического управления и теории связывания (см. Также: Связывание (лингвистика) ).