람다 대수 (λ代數, 영어 : lambda calculus ) 또는 λ-대수 또는 람다 계산 (λ計算) 또는 람다 계산법 (λ計算法)은 추상화 와 함수 적용 등의 논리 연산 을 다루는 형식 체계 이다.[ 1] 람다 대수의 항은 변수와 추상화 및 적용 연산을 통해 구성되며 (비순수 람다 대수에서는 상수 역시 구성에 참여한다), 추상화의 기호로는 그리스 문자 람다 (λ)가 사용된다. 람다 대수의 항들에 대하여 알파 동치와 베타 축약 등의 연산을 수행할 수 있다. 알파 동치는 제한 변수를 변경하는 변환으로서 이름 충돌 을 방지하기 위해 사용되며, 드 브루인 첨수 를 사용할 경우 이는 필요 없다. 베타 축약은 함수 적용을 적절한 치환 연산 결과로 대신하는 변환이며, 베타 축약에 대한 주어진 항의 표준형이 (존재할 경우) 알파 동치 아래 유일하다는 사실은 처치-로서 정리 의 따름정리이다.
1930년대 알론조 처치 가 수학기초론 을 연구하는 과정에서 람다 대수의 형식을 제안하였다. 최초의 람다 대수 체계는 논리적인 오류가 있음이 증명되었으나, 처치가 1936년에 그 속에서 계산과 관련된 부분만 따로 빼내어 후에 유형 없는 람다 대수 라고 불리게 된 체계를 발표하였다. 또한 1940년에는 더 약한 형태이지만 논리적 모순이 없는 단순 유형 람다 대수 를 도입하였다.
람다 대수는 튜링 완전성 을 만족시키며, 보편 튜링 기계 와 동치이다. 람다 대수는 프로그래밍 언어 이론 에서 중요한 역할을 하며, 리스프 를 비롯한 함수형 프로그래밍 언어 의 기반이 된다. 람다 대수는 그 밖에도 논리학 , 철학 ,[ 2] 언어학 ,[ 3] [ 4] 컴퓨터 과학 [ 5] 등의 여러 분야에서 응용된다.
람다 대수는 수학자 알론조 처치 에 의해 수학기초론 연구의 일환으로 1930년대 소개됐다.[ 6] [ 7] 최초의 시스템은 스티븐 클레이니 와 존 버클리 로서 가 클리네-로저 역설 을 제창하면서 1935년 논리적 모순 을 보이기 위해 도입됐다.[ 8] [ 9]
그 후인 1936년 처치는 독립적으로 현재에는 유형 없는 람다 대수라고 불리는 계산에 관련한 부분을 출판했다.[ 10] 1940년, 그는 또한 계산적으로는 떨어지지만 논리적으로 무결한 시스템을 공개했다. 이것이 단순 유형 람다 대수 이다.[ 11]
1960년대에 람다 대수와 프로그래밍 언어의 관계가 명확히 밝혀지기 전까지는 λ-대수는 단지 형식주의 (formalism)일 뿐이었다. 감사하게도 리처드 몬터규 와 언어학자들이 λ-대수를 자연어 (natural language)의 의미론에 적용함으로써, λ-대수는 언어학과[ 12] 컴퓨터 과학[ 13] 양쪽 분야에서 인정받는 위치를 차지했다.
함수 는 컴퓨터 과학 과 수학 의 기초를 이루는 개념이다. 람다 대수는 함수를 단순하게 표현할 수 있도록 하여 '함수의 계산'이라는 개념을 더 깊이 이해할 수 있게 돕는다.
예를 들어 항등 함수 I ( x ) = x {\displaystyle I(x)=x} 는 하나의 입력 x {\displaystyle x} 를 받아 다시 x {\displaystyle x} 를 결과로 내놓는다고 하자. 한편 함수 s ( x , y ) = x × x + y × y {\displaystyle s(x,y)=x\times x+y\times y} 는 입력 x {\displaystyle x} 와 y {\displaystyle y} 를 받아 두 수의 제곱의 합을 내놓는다고 하자. 이 두 예제로부터 세 가지 유용한 사실을 알 수 있다.
함수가 반드시 이름을 가질 필요는 없다. 함수 s {\displaystyle s} 는 이름을 제거하고 ( x , y ) ↦ x × x + y × y {\displaystyle (x,y)\mapsto x\times x+y\times y} 와 같은 형태로 쓸 수 있다. 또한 항등 함수 I ( x ) = x {\displaystyle I(x)=x} 는 x ↦ x {\displaystyle x\mapsto x} 의 형태로 쓸 수 있다. 함수의 입력 변수의 이름 또한 필요 없다. x ↦ x {\displaystyle x\mapsto x} 와 y ↦ y {\displaystyle y\mapsto y} 는 변수의 이름은 다르지만 같은 항등 함수를 의미한다. 또한 ( x , y ) ↦ x × x + y × y {\displaystyle (x,y)\mapsto x\times x+y\times y} 와 ( u , v ) ↦ u × u + v × v {\displaystyle (u,v)\mapsto u\times u+v\times v} 는 같은 함수를 나타낸다. 두 개 이상의 입력을 받는 함수는 하나의 입력을 받아 또다른 함수를 출력하는 함수로 다시 쓸 수 있다. 예를 들어, ( x , y ) ↦ x × x + y × y {\displaystyle (x,y)\mapsto x\times x+y\times y} 는 x ↦ ( y ↦ x × x + y × y ) {\displaystyle x\mapsto (y\mapsto x\times x+y\times y)} 와 같은 형태로 다시 쓸 수 있다. 함수를 이와 같이 변환하는 것을 커링 (currying) 이라고 한다. 위의 함수 s ( x , y ) {\displaystyle s(x,y)} 는 다음과 같이 단일 입력 함수를 두 번 적용하는 것으로 이해할 수 있다. ( x ↦ ( y ↦ x × x + y × y ) ) ( 5 ) ( 2 ) {\displaystyle (x\mapsto (y\mapsto x\times x+y\times y))(5)(2)} = ( y ↦ 5 × 5 + y × y ) ( 2 ) {\displaystyle =(y\mapsto 5\times 5+y\times y)(2)} = 5 × 5 + 2 × 2 {\displaystyle =5\times 5+2\times 2}
추상화: λ x . t {\displaystyle \lambda x.t} 는 단일 입력 x {\displaystyle x} 를 받아 t {\displaystyle t} 의 표현으로 치환하는 익명의 함수를 지칭한다. 예를 들어 λ x . x 2 + 2 {\displaystyle \lambda x.x^{2}+2} 는 함수 f ( x ) = x 2 + 2 {\displaystyle f(x)=x^{2}+2} 의 람다 추상화이다. 람다 추상화를 통해 함수를 정의한다는 것은 함수를 정의하기만 하고 함수를 수행(호출)하지는 않는다는 것을 의미한다. 람다 추상화를 통해 변수 x {\displaystyle x} 는 표현 t {\displaystyle t} 에 속박 된다.
자유 변수: 자유 변수(free variable)는 람다 추상화를 통해 표현에 묶이지 않은 변수를 말한다. 자유 변수의 집합은 귀납적으로 정의된다.
x {\displaystyle x} 의 자유 변수는 x {\displaystyle x} 뿐이다. λ x . t {\displaystyle \lambda x.t} 의 자유변수는 x {\displaystyle x} 를 제외하고 t {\displaystyle t} 에 등장하는 변수들이다. 두 표현 t {\displaystyle t} 와 s {\displaystyle s} 의 결합 t s {\displaystyle ts} 의 자유변수의 집합은 t {\displaystyle t} 의 자유변수의 집합과 s {\displaystyle s} 의 자유변수의 집합의 합집합이다. 예를 들어, λ x . x {\displaystyle \lambda x.x} 에는 자유 변수가 없지만, λ x . x + y {\displaystyle \lambda x.x+y} 에는 자유변수가 y {\displaystyle y} 하나이다.
람다 대수의 언어는 변수, 상수, 람다 기호, 괄호, 온점으로 구성된다. 변수와 상수는 (후술할) 람다 항의 기초 구성원들이며, 람다 항에 등장하는 자유 변수는 (이후 정의할) 치환 연산을 통해 다른 람다 항으로 치환될 수 있다. 람다 기호는 (후술할) 추상화 연산을 나타내는 기호이다. 괄호와 온점은 이론적으로는 불필요하지만, 여러 가지 편의를 위해 사용된다. 구체적으로, 다음과 같은 데이터가 주어졌다고 하자.
가산 무한 정렬 전순서 집합 ( I , ≤ ) {\displaystyle (I,\leq )} . 또한 I {\displaystyle I} 는 최대 원소 를 갖지 않아야 한다. 집합 J {\displaystyle J} 만약 J = ∅ {\displaystyle J=\varnothing } 일 경우, 이 람다 대수를 순수 람다 대수 (純粹λ代數, 영어 : pure lambda calculus )라고 한다. (여기서 I {\displaystyle I} 가 최대 원소를 갖지 않는 정렬 전순서 집합이어야 하는 것은 치환의 정의에서 주어진 모든 변수들보다 큰 변수들의 집합의 최소 원소를 취할 수 있어야 하기 때문이다.) 그렇다면, ( I , J ) {\displaystyle (I,J)} 에 대한 람다 대수의 언어는 다음과 같은 기호들로 구성된다.
각 i ∈ I {\displaystyle i\in I} 에 대하여, 변수 x i {\displaystyle {\mathsf {x}}_{i}} 각 j ∈ J {\displaystyle j\in J} 에 대하여, 상수 a j {\displaystyle {\mathsf {a}}_{j}} 람다 기호 λ {\displaystyle \lambda } 괄호 ( ) {\displaystyle ()} 및 온점 . {\displaystyle .} 람다 항 (λ項, 영어 : lambda term )은 변수와 상수들로부터 시작하여 유한 차례 적용 및 추상화를 가하여 얻는, 람다 대수 기호들의 문자열이다. 즉, 이는 다음과 같은 문법을 따른다.
모든 변수와 상수는 람다 항이다. 두 람다 항 M {\displaystyle M} , N {\displaystyle N} 에 대하여, 문자열 ( M N ) {\displaystyle (MN)} 은 람다 항이다. 이를 N {\displaystyle N} 에 대한 M {\displaystyle M} 의 적용 (適用, 영어 : application )이라고 한다. 람다 항 M {\displaystyle M} 및 변수 x {\displaystyle x} 에 대하여, 문자열 ( λ x . M ) {\displaystyle (\lambda x.M)} 은 람다 항이다. 이를 x {\displaystyle x} 에 대한 M {\displaystyle M} 의 추상화 (抽象化, 영어 : abstraction )라고 한다. 괄호 사용을 줄이기 위해 단순히 M 1 M 2 ⋯ M n {\displaystyle M_{1}M_{2}\cdots M_{n}} 은 ( ⋯ ( ( M 1 M 2 ) M 3 ) ⋯ M n ) {\displaystyle (\cdots ((M_{1}M_{2})M_{3})\cdots M_{n})} 을 나타내고, λ x . M 1 ⋯ M n {\displaystyle \lambda x.M_{1}\cdots M_{n}} 은 ( λ x . ( ⋯ ( ( M 1 M 2 ) M 3 ) ⋯ M n ) ) {\displaystyle (\lambda x.(\cdots ((M_{1}M_{2})M_{3})\cdots M_{n}))} 을, λ x 1 . ⋯ λ x n . M {\displaystyle \lambda x_{1}.\cdots \lambda x_{n}.M} (또는 λ x 1 ⋯ x n . M {\displaystyle \lambda x_{1}\cdots x_{n}.M} )은 ( λ x 1 . ⋯ ( λ x n − 1 . ( λ x n . M ) ) ⋯ ) {\displaystyle (\lambda x_{1}.\cdots (\lambda x_{n-1}.(\lambda x_{n}.M))\cdots )} 을 나타내는 데 사용할 수 있다. 예를 들어, 변수 x {\displaystyle x} , y {\displaystyle y} , z {\displaystyle z} 에 대하여,
λ x . x λ x . λ y . x y z {\displaystyle \lambda x.x\lambda x.\lambda y.xyz} 는
( λ x . ( x ( λ x . ( λ y . ( ( x y ) z ) ) ) ) ) {\displaystyle (\lambda x.(x(\lambda x.(\lambda y.((xy)z)))))} 를 나타낸다.
람다 항에 등장하는 변수들은 자유 변수 (自由變數, 영어 : free variable )와 제한 변수 (制限變數, 영어 : bound variable )로 분류된다. 람다 항 M {\displaystyle M} 과 변수 x {\displaystyle x} 에 대하여, 만약 M {\displaystyle M} 에 등장하는 모든 x {\displaystyle x} 가 M {\displaystyle M} 속 λ x . N {\displaystyle \lambda x.N} 과 같은 꼴의 부분 람다 항에 등장한다면 x {\displaystyle x} 는 제한 변수이며, 만약 적어도 한 x {\displaystyle x} 가 λ x . N {\displaystyle \lambda x.N} 과 같은 꼴의 부분 람다 항에 등장하지 않는다면 x {\displaystyle x} 는 자유 변수이다. 즉, 람다 항 M {\displaystyle M} 의 자유 변수의 집합 FV ( M ) {\displaystyle \operatorname {FV} (M)} 는 M {\displaystyle M} 의 구조에 따라 다음과 같이 재귀적으로 정의된다.
변수 x {\displaystyle x} 에 대하여, FV ( x ) = { x } {\displaystyle \operatorname {FV} (x)=\{x\}} 상수 a {\displaystyle a} 에 대하여, FV ( a ) = ∅ {\displaystyle \operatorname {FV} (a)=\varnothing } 두 람다 항 M {\displaystyle M} , N {\displaystyle N} 에 대하여, FV ( M N ) = FV ( M ) ∪ FV ( N ) {\displaystyle \operatorname {FV} (MN)=\operatorname {FV} (M)\cup \operatorname {FV} (N)} 람다 항 M {\displaystyle M} 및 변수 x {\displaystyle x} 에 대하여, FV ( λ x . M ) = FV ( M ) ∖ { x } {\displaystyle \operatorname {FV} (\lambda x.M)=\operatorname {FV} (M)\setminus \{x\}} 람다 항 M {\displaystyle M} 에 등장하는 변수 가운데 자유 변수가 아닌 것들을 M {\displaystyle M} 의 제한 변수라고 한다. 자유 변수를 갖지 않는 람다 항을 닫힌 람다 항 (닫힌λ項, 영어 : closed lambda term )이라고 한다.
예를 들어, 변수 x {\displaystyle x} , y {\displaystyle y} , z {\displaystyle z} 에 대하여,
( λ x . λ y . x y z ) x {\displaystyle (\lambda x.\lambda y.xyz)x} 의 자유 변수의 집합은 { x , z } {\displaystyle \{x,z\}} 이며, 제한 변수의 집합은 { y } {\displaystyle \{y\}} 이다.
주어진 람다 항에 등장하는 자유 변수를 또 다른 람다 항으로 치환 (置換, 영어 : substitution )하는 연산을 정의할 수 있다. 치환 연산의 정의는 자연스러우며, 다만 원래 람다 항의 의미가 변질되는 경우에는 알파 변환이 선행되어야 한다 (이는 아래 네 번째 조건의 세 번째 경우에 해당한다). 구체적으로, 람다 항 M {\displaystyle M} , N {\displaystyle N} 및 변수 x {\displaystyle x} 에 대하여, x {\displaystyle x} 를 N {\displaystyle N} 으로 치환한 M {\displaystyle M} 의 치환 실례 (置換實例, 영어 : substitution instance ) M [ N / x ] {\displaystyle M[N/x]} 는 M {\displaystyle M} 의 구조에 따라 다음과 같이 재귀적으로 정의된다.
변수 y {\displaystyle y} 에 대하여, y [ N / x ] = { N y = x y y ≠ x {\displaystyle y[N/x]={\begin{cases}N&y=x\\y&y\neq x\end{cases}}} 상수 a {\displaystyle a} 에 대하여, a [ N / x ] = a {\displaystyle a[N/x]=a} 람다 항 M {\displaystyle M} , M ′ {\displaystyle M'} 에 대하여, ( M M ′ ) [ N / x ] = ( M [ N / x ] ) ( M ′ [ N / x ] ) {\displaystyle (MM')[N/x]=(M[N/x])(M'[N/x])} 람다 항 M {\displaystyle M} 및 변수 y {\displaystyle y} 에 대하여, ( λ y . M ) [ N / x ] = { λ y . M y = x λ y . ( M [ N / x ] ) ( y ≠ x ) ∧ ( y ∉ FV ( N ) ∨ x ∉ FV ( M ) ) λ z . ( M [ z / y ] [ N / x ] ) ( y ≠ x ) ∧ ( y ∈ FV ( N ) ∧ x ∈ FV ( M ) ) ∧ ( z = min { w ∈ I : w > max ( FV ( M ) ∪ FV ( N ) ) } ) {\displaystyle (\lambda y.M)[N/x]={\begin{cases}\lambda y.M&y=x\\\lambda y.(M[N/x])&(y\neq x)\land (y\not \in \operatorname {FV} (N)\lor x\not \in \operatorname {FV} (M))\\\lambda z.(M[z/y][N/x])&(y\neq x)\land (y\in \operatorname {FV} (N)\land x\in \operatorname {FV} (M))\land (z=\min\{w\in I\colon w>\max(\operatorname {FV} (M)\cup \operatorname {FV} (N))\})\end{cases}}} 예를 들어,
( ( λ x . λ y . x y z ) x ) [ y w / x ] = ( λ x . λ y . x y z ) ( y w ) {\displaystyle ((\lambda x.\lambda y.xyz)x)[yw/x]=(\lambda x.\lambda y.xyz)(yw)} ( ( λ x . λ y . x y z ) x ) [ y w / z ] = ( λ x . λ v . x v y w ) x ( v = min { u ∈ I : u > max { x , y , z , w } } ) {\displaystyle ((\lambda x.\lambda y.xyz)x)[yw/z]=(\lambda x.\lambda v.xvyw)x\qquad (v=\min\{u\in I\colon u>\max\{x,y,z,w\}\})} 이다.
알파 동치 (α同値, 영어 : alpha equivalence )는 제한 변수 변경을 통해 주어진 람다 항을 새로운 람다 항으로 변환하는 방법이다. 람다 항 M {\displaystyle M} 이 부분 람다 항 λ x . P {\displaystyle \lambda x.P} 를 가질 경우, 이를 P {\displaystyle P} 의 자유 변수가 아닌 변수 y {\displaystyle y} 에 대하여 λ y . P [ y / x ] {\displaystyle \lambda y.P[y/x]} 로 바꾸면 새로운 람다 항을 얻는다. 이와 같은 과정을 유한 번 거듭하여 람다 항 N {\displaystyle N} 를 얻을 경우, 두 람다 항 M {\displaystyle M} , N {\displaystyle N} 이 서로 알파 동치 라고 하며, M ≡ α N {\displaystyle M\equiv _{\alpha }N} 라고 표기한다.
예를 들어,
( λ x . x y ) ( λ y . y x ) ≡ α ( λ z . z y ) ( λ y . y x ) ≡ α ( λ z . z y ) ( λ w . w x ) {\displaystyle {\begin{aligned}(\lambda x.xy)(\lambda y.yx)&\equiv _{\alpha }(\lambda z.zy)(\lambda y.yx)\\&\equiv _{\alpha }(\lambda z.zy)(\lambda w.wx)\\\end{aligned}}} 이다.
베타 축약 (β縮約, 영어 : beta reduction )은 추상화된 함수의 적용을 적절한 치환 실례로 바꾸는 것을 통해 람다 항을 변환하는 방법이다. 람다 항 M {\displaystyle M} 가 부분 람다 항 ( λ x . P ) Q {\displaystyle (\lambda x.P)Q} 를 가질 경우, 이를 P [ Q / x ] {\displaystyle P[Q/x]} 로 대신하여 새로운 람다 항 N {\displaystyle N} 를 얻을 수 있다. 이 경우 M ⊳ β , 1 N {\displaystyle M\vartriangleright _{\beta ,1}N} 이라고 표기한다. 두 람다 항 M {\displaystyle M} , N {\displaystyle N} 이 다음 조건을 만족시키면, N {\displaystyle N} 이 M {\displaystyle M} 의 베타 축약 이라고 하며, M ⊳ β N {\displaystyle M\vartriangleright _{\beta }N} 이라고 표기한다.
다음 조건을 만족시키는 람다 항의 열 M = M 0 , M 1 , … , M n = N {\displaystyle M=M_{0},M_{1},\dots ,M_{n}=N} 이 존재한다. 임의의 k ∈ { 0 , … , n − 1 } {\displaystyle k\in \{0,\dots ,n-1\}} 에 대하여, M k ≡ α M k + 1 {\displaystyle M_{k}\equiv _{\alpha }M_{k+1}} 이거나 M k ⊳ β , 1 N k + 1 {\displaystyle M_{k}\vartriangleright _{\beta ,1}N_{k+1}} 두 람다 항 M {\displaystyle M} , N {\displaystyle N} 에 대하여, 다음 두 조건이 서로 동치이며, 이를 만족시키는 M {\displaystyle M} , N {\displaystyle N} 을 서로 베타 동치 (β同値, 영어 : beta equivalence )라고 하며, M ≡ β N {\displaystyle M\equiv _{\beta }N} 이라고 표기한다.
다음 조건을 만족시키는 람다 항의 열 M = M 0 , M 1 , … , M n = N {\displaystyle M=M_{0},M_{1},\dots ,M_{n}=N} 이 존재한다. 임의의 k ∈ { 0 , … , n − 1 } {\displaystyle k\in \{0,\dots ,n-1\}} 에 대하여, M k ⊳ β M k + 1 {\displaystyle M_{k}\vartriangleright _{\beta }M_{k+1}} 이거나 M k ⊲ β M k + 1 {\displaystyle M_{k}\vartriangleleft _{\beta }M_{k+1}} (처치-로서 정리 ) M ⊳ β P {\displaystyle M\vartriangleright _{\beta }P} 이며 N ⊳ β P {\displaystyle N\vartriangleright _{\beta }P} 인 람다 항 P {\displaystyle P} 가 존재한다. 람다 항 N {\displaystyle N} 이 ( λ x . P ) Q {\displaystyle (\lambda x.P)Q} 와 같은 꼴의 부분 람다 항을 가지지 않는다면, N {\displaystyle N} 을 베타 표준형 (β標準型, 영어 : beta normal form )이라고 한다. 베타 표준형 N {\displaystyle N} 이 람다 항 M {\displaystyle M} 의 베타 축약이라면 (즉, M ⊳ β N {\displaystyle M\vartriangleright _{\beta }N} 이라면), N {\displaystyle N} 을 M {\displaystyle M} 의 베타 표준형 이라고 한다. 처치-로서 정리에 따라, 주어진 람다 항의 베타 표준형이 존재할 경우, 이는 (알파 동치를 무시하면) 유일하다.
N {\displaystyle \mathbb {N} } 이 음이 아닌 정수의 집합이라고 하자.
람다 대수의 언어를 사용하여 자연수 의 페아노 산술 을 다음과 같이 표현할 수 있다.
(처치 숫자, 영어 : Church numeral ) n ¯ = λ f . λ x . f n x ( n ∈ N ) {\displaystyle {\bar {n}}=\lambda f.\lambda x.f^{n}x\qquad (n\in \mathbb {N} )} plus = λ m . λ n . λ f . λ x . m f ( n f x ) {\displaystyle \operatorname {plus} =\lambda m.\lambda n.\lambda f.\lambda x.mf(nfx)} times = λ m . λ n . λ f . λ x . m ( n f ) x {\displaystyle \operatorname {times} =\lambda m.\lambda n.\lambda f.\lambda x.m(nf)x} 여기서
f n = f ⋯ f ⏟ n {\displaystyle f^{n}=\underbrace {f\cdots f} _{n}} 이다.
μ-재귀 함수 는 람다 대수의 언어를 사용하여 표현할 수 있다. 즉, 임의의 부분 재귀 함수 f : ( N ∙ ) d → N ∙ {\displaystyle f\colon (\mathbb {N} _{\bullet })^{d}\to \mathbb {N} _{\bullet }} 에 대하여, 다음 두 조건을 만족시키는 람다 항 f ¯ {\displaystyle {\bar {f}}} 가 존재한다.[ 1] :332, §43.8, Definition 276 (여기서 N ∙ = N ⊔ { ∙ N } {\displaystyle \mathbb {N} _{\bullet }=\mathbb {N} \sqcup \{\bullet _{\mathbb {N} }\}} 는 점을 가진 집합 이다.)
임의의 ( n 1 , … , n d ) ∈ N ∙ d {\displaystyle (n_{1},\dots ,n_{d})\in \mathbb {N} _{\bullet }^{d}} 에 대하여, 만약 f ( n 1 , … , n d ) = ∙ N {\displaystyle f(n_{1},\dots ,n_{d})=\bullet _{\mathbb {N} }} 이라면, f ¯ n ¯ 1 ⋯ n ¯ d {\displaystyle {\bar {f}}{\bar {n}}_{1}\cdots {\bar {n}}_{d}} 는 베타 표준형을 갖지 않는다. 임의의 ( n 1 , … , n d ) ∈ N ∙ d {\displaystyle (n_{1},\dots ,n_{d})\in \mathbb {N} _{\bullet }^{d}} 에 대하여, 만약 f ( n 1 , … , n d ) ∈ N {\displaystyle f(n_{1},\dots ,n_{d})\in \mathbb {N} } 이라면, f ¯ n ¯ 1 ⋯ n ¯ d {\displaystyle {\bar {f}}{\bar {n}}_{1}\cdots {\bar {n}}_{d}} 는 f ( n 1 , … , n d ) ¯ {\displaystyle {\overline {f(n_{1},\dots ,n_{d})}}} 를 베타 표준형으로 갖는다. ↑ 가 나 Mazzola, Guerino; Milmeister, Gérard; Weissmann, Jody (2005). 《Comprehensive Mathematics for Computer Scientists 2》. Universitext (영어). Berlin, Heidelberg: Springer. doi :10.1007/b138337 . ISBN 978-3-540-20861-7 . LCCN 2004102307 . ↑ Coquand, Thierry, "Type Theory" , The Stanford Encyclopedia of Philosophy (Summer 2013 Edition), Edward N. Zalta (ed.). ↑ Moortgat, Michael (1988). 《Categorial Investigations: Logical and Linguistic Aspects of the Lambek Calculus》 . Foris Publications. ISBN 9789067653879 . ↑ Bunt, Harry; Muskens, Reinhard, 편집. (2008), 《Computing Meaning》 , Springer, ISBN 9781402059575 ↑ Mitchell, John C. (2003), 《Concepts in Programming Languages》 , Cambridge University Press, 57쪽, ISBN 9780521780988 ↑ Church, A. (1932). “A set of postulates for the foundation of logic”. 《Annals of Mathematics》. Series 2 33 (2): 346–366. doi :10.2307/1968337 . JSTOR 1968337 . ↑ For a full history, see Cardone and Hindley's "History of Lambda-calculus and Combinatory Logic" (2006). ↑ Kleene, S. C. ; Rosser, J. B. (July 1935). “The Inconsistency of Certain Formal Logics” . 《The Annals of Mathematics》 36 (3): 630. doi :10.2307/1968646 . ↑ Church, Alonzo (December 1942). “Review of Haskell B. Curry, The Inconsistency of Certain Formal Logics ”. 《The Journal of Symbolic Logic》 7 (4): 170–171. doi :10.2307/2268117 . JSTOR 2268117 . ↑ Church, A. (1936). “An unsolvable problem of elementary number theory” . 《American Journal of Mathematics》 58 (2): 345–363. doi :10.2307/2371045 . JSTOR 2371045 . ↑ Church, A. (1940). “A Formulation of the Simple Theory of Types”. 《Journal of Symbolic Logic》 5 (2): 56–68. doi :10.2307/2266170 . JSTOR 2266170 . ↑ Partee, B. B. H.; ter Meulen, A.; Wall, R. E. (1990). 《Mathematical Methods in Linguistics》 . Springer. 2016년 12월 29일에 확인함 . ↑ Alama, Jesse "The Lambda Calculus" , The Stanford Encyclopedia of Philosophy (Summer 2013 Edition), Edward N. Zalta (ed.).