통일(컴퓨터과학)

Unification (computer science)

논리학컴퓨터 과학에서 통일은 상징적 표현 사이의 방정식을 푸는 알고리즘적 과정이다.

어떤 표현식(일명 용어)이 방정식 집합(통일 문제라고도 함)에서 일어날 수 있도록 허용되고 어떤 표현이 동등하다고 생각하느냐에 따라 통일의 여러 틀이 구분된다.고차 변수, 즉 함수를 나타내는 변수를 표현으로 허용하면 그 과정을 고차 통일, 그렇지 않으면 1차 통일이라고 한다.각 방정식의 양쪽을 문자 그대로 균등하게 만드는 해법이 요구되면 그 과정을 통사적 또는 자유통일, 그렇지 않으면 의미적 또는 등가적 통일, 또는 E-통일 또는 통일모듈로 이론이라고 한다.

통일 문제의 해결책대체, 즉 문제의 표현에 대한 각 변수에 상징적 값을 할당하는 매핑으로 표시된다.통일 알고리즘은 주어진 문제에 대한 완전하고 최소한의 대체 집합, 즉 그것의 모든 해결책을 포함하며 중복 구성원을 포함하지 않는 집합을 계산해야 한다.프레임워크에 따라 완전하고 최소한의 대체 집합은 최대 하나, 최대 미세하게 많거나 무한히 많은 구성원을 가질 수도 있고 아예 존재하지 않을 수도 있다.[note 1][1]어떤 프레임워크에서는 일반적으로 어떤 해결책이 존재하는지 결정하는 것이 불가능하다.1차 구문통일의 경우, 마텔리와 몬타나리는[2] 불능성을 보고하거나 이른바 가장 일반적인 단일기가 포함된 완전하고 최소의 단일톤 치환 세트를 계산하는 알고리즘을 부여했다.

예를 들어 x,y,z를 변수로 사용하는 싱글톤 방정식 집합 { cons(x,cons(x,nil)) = cons(2,y)}은 대체 {x y 2, y cons cons(2,nil)}을 유일한 해법으로 하는 통사적 1차 통일 문제다.통사적 1차 통일 문제 {y = cons(2,y)}은 유한한 용어의 집합에 대해서는 해결책이 없지만, 무한 나무 집합에 대해서는 단일 솔루션 { y ↦ cons(2,cons(2,...) }이 있다.의미론적 1차 통일 문제 { ax = x⋅a }은(는) 형식 { x ... a⋅...을 각각 대체한다.sema }은(는) 세미그룹에서 해결책으로서, 즉 (ㄴ) 연관성이 있는 것으로 간주되는 경우, (ㄴ) 아벨 그룹에서도 볼 수 있는 동일한 문제는 (ㄴ) 역교합성이 있는 것으로 간주되는, 해결책으로서 어떠한 대체도 가지고 있다.싱글톤 집합 { a = y(x) }은 함수 변수인 만큼 통사 2차 통일 문제다. 솔루션은 { xa, y ↦ (identity 함수) }이고, 다른 솔루션은 { y ↦ (각 값을 a에 매핑하는 고정 함수), x ↦ (임의) }이다.

는 첫번째 공식적인 조사 존 앨런 Robinson,[6][7]로 그것을 제거하는 일차 논리의 자동화된 추론 기술에 커다란 일보 전진해서 그의 해결 절차에 대한 기본적인 건축 블록으로, 일차 언어의 구문을 통일 사용에 기인할 수 있는 통일 알고리즘 먼저 자크 Herbrand,[3][4][5]에 의해 발견되었다.d가 한 근원조합 폭발: 용어의 인스턴스화 검색.오늘날에도 자동화된 추리는 여전히 통일의 주요 적용 분야다.구문 1차 통일은 로직 프로그래밍과 프로그래밍 언어 유형 시스템 구현, 특히 힌들리-밀너 기반 유형 추론 알고리즘에 사용된다.의미론적 통일은 시만텍 해결사, 용어 재쓰기 알고리즘, 암호 프로토콜 분석 등에 사용된다.고차 통일은 ISabelleTwel과 같은 교정 보조자에게 사용되며, 제한된 형태의 고차 통일(고차 패턴 통일)은 고차 패턴이 표현되어 있지만, 관련 통일 절차는 이론성을 유지하고 있기 때문에 람다프로로그와 같은 일부 프로그래밍 언어 구현에 사용된다.1차 통일과 가까운 부동산.

일반적인 형식 정의

전제조건

형식적으로는 통일 접근법이 전제된다.

  • 변수 세트 V V고차 통일의 경우 람다-항 경계 변수 집합에서 분리를 선택하는 것이 편리하다.
  • 과 같은 용어 T T 집합 1차 단일화의 경우 은 보통 1차 항(변수와 함수 기호로 작성된 용어) 집합이다.고차 통일의 경우 은(는) 1차 항과 람다 항(일부 고차 변수를 포함하는 항)으로 구성된다.
  • 매핑 변수: , assigning to each term the set of free variables occurring in .
  • 동등성 관계 어떤 항이 동등하다고 간주되는지 표시.1차 E-unity의 경우,{{\\ 은(는) 특정 기능 기호에 대한 배경 지식을 반영한다. 예를 들어, (가) t 인수를 스와핑하여 경우 t {\}일부 발생 시\ [note 2] 가장 일반적인 경우에서 배경 지식이 전혀 없는 경우, 문자 그대로 또는 구문론적으로만 동일한 용어가 동등하다고 간주된다.이 경우 ≡은 자유이론(자유이론), 빈이론(동일문장의 집합, 또는 배경지식이 비어있기 때문에), 해석되지 않은 함수론(통일이 해석되지 않은 용어로 이루어지기 때문에), 또는 생성자 이론(모든 함수 기호는 단지 데이터 용어를 쌓기 때문에,(이들 위에서 작동하기 보다는)고차 통일의 경우 으로 t{\}과 u{\(가) 알파 등가인 경우 u {\을(를) 사용한다.

1차 용어

변수 기호의 세트, 상수 C 세트, 연산자 기호라고도 하는 함수 기호의 설정, 각 자연 숫자 1 n\ 1 의 집합.다음 속성을 가진 최소 집합으로 재귀적으로 정의된다.[8]

  • 모든 변수 기호는 용어: T
  • 모든 상수 기호는 : C T
  • 모든 n 용어 , .. 와) 모든 n-ary 기호 n {\ fF_ 더 큰 용어 ,.. 1}, 작성할 수 있다.

For example, if is a variable symbol, is a constant symbol, and is a binary function symbol, then , and (hence) 1기, 2기, 3기 건물 규칙으로후자는 일반적으로 + {\로 표기되는데 infix 표기법과 보다 일반적인 연산자 기호 +를 사용하여 편리하게 표기한다.

고차항

대체

A substitution is a mapping from variables to terms; the notation refers to a substitution mapping each variable to the term = 1,. .. {\ 및 다른 모든 변수.Applying that substitution to a term is written in postfix notation as ; it means to (simultaneously) replace every occurrence of each variable in the term by i {\ t_ 용어에 대체 을(를) 적용하는 의 인스턴스instance)라고 한다 t 첫 번째 예로서 대체 {xh(a,y), z ↦ b}을(를)라는 용어에 적용한다.

수확하다

일반화, 전문화

용어{\ 과 동등한 인스턴스가 있는 경우, 즉, t 가) 일부 대체 u보다 일반적이라고 하며 u}은 led more special than, or subsumed by, . For example, is more general than if ⊕ is commutative, since then .

만약 ≡이 용어의 문자적(합성적) 정체성인 경우, 두 용어가 통사적 구조가 아닌 가변적 이름만 다를 경우에만 용어는 다른 용어보다 더 일반적이고 더 특별할 수 있다. 이러한 용어를 변형 또는 상호 명칭 변경이라고 한다.예를 들어 f( 1,, g ( ), ) (는) 이후f2 , ( )2}}}의

, 그리고

.

However, is not a variant of , since no substitution can transform the latter term into the former one.그러므로 후기는 전기에 비해 적절하게 더 특별하다.

임의의 의 경우 용어는 구조적으로 다른 용어보다 더 일반적이고 더 특별할 수 있다.For example, if ⊕ is idempotent, that is, if always , then the term is more general than ,[note 3] and vice versa,[note 4] although and are of different structure.

A substitution is more special than, or subsumed by, a substitution if is more special than for each term . We also say that is more general than . For instance is more special than , but is not, as is not mo( , y) = ( , y) 보다 특별함[9]

통일 문제, 솔루션 세트

통일문제는 전위 방정식의 유한 집합 { l1 r1, ..., ln rn }이다. 여기서 lii, r ∈ T. 대체 σ은 = ,., i=1, 대한i l r i rσ이 그 문제의 해결책이다 이러한 대체는 통일문제의 통일문제의 통일문제의 통일문제의 통일문안자라고도 한다.예를 들어 ⊕이 연관성이 있는 경우 통일 문제 {xaa },, {xaa}, {xaa }, a} 등의 해결책이 있는 반면, 문제 {xaa },}은 해결책이 없다.

주어진 통일 문제의 경우, 각 해결책 대체가 일부 대체 σ S에 의해 요약되는 경우, 집합 S 구성원 중 어느 누구도 다른 것을 흡수하지 않는 경우 최소라고 불린다.

1차 용어의 통사적 통일

대체에 의한 구문론적 통일 t1t2 용어의 계통 삼각도 σ

1차 용어의 통사적 통일은 가장 널리 사용되는 통일의 틀이다.그것은 1차 항(일부 주어진 변수 V, 상수의 C, n-ary 함수 기호의 Fn)의 집합인 T와 구문적 동일성에 기초한다.이 프레임워크에서 해결 가능한 각 통일 문제 {l1 r1, ..., ln rn}에는 완전하고 분명히 최소의 싱글톤 솔루션 집합 {σ}이(가) 있다.그 멤버인 σ은 문제의 가장 일반적인 단결자(mgu)로 불린다.각 전위 방정식의 왼쪽과 오른쪽의 항은 mgu를 적용할 때 구문론적으로 동일해진다. 즉, 1 = 1 ...lnσ = rnσ.문제의 모든 단결자는 mgu σ에 의해[note 5] 요약된다.mgu는 변형에 따라 고유하다: S1 S2 모두 동일한 구문 통일 문제의 완전하고 최소 솔루션 집합인 경우, 일부 대체 and112 for에 대해1 S = { } }과2 S = { } } }이며2, 1 문제에서 발생하는 각 변수 x에 대한 2 변종이다.

예를 들어 통일 문제 { xz, y ≐ f(x) }에는 통일 문제 { x ↦ z, yf(z)}이(가) 있기 때문에 unifier { x , z, y ( f(z)}이(가) 있다.

x { xz, yf(z) } = z = z { xz, yf(z) } , 그리고
y { xz, yf(z) } = f(z) = f(x) { xz, yf(z) } .

이것 또한 가장 일반적인 통일이다.동일한 문제에 대한 다른 고유어는 예를 들어, { x f f(x1), y f f(x1), z f f(x1) }, { x f f(f(x1)), y f f(f(x1)), z f f(f(x1) } 등이 있으며, 이와 유사한 고유어가 무한히 많다.

또 다른 예로, problem f(y) literal f(y)는 ≡이 문자 그대로의 정체성과 관련하여 해답이 없다. 왜냐하면 좌우에 적용되는 대체는 각각 가장 바깥쪽 gf를 유지하며, 가장 바깥쪽 함수 기호가 다른 항은 구문론적으로 다르기 때문이다.

통일 알고리즘

로빈슨 1965년 통일 알고리즘

기호는 함수 기호 앞에 변수가 선행되도록 정렬된다.용어는 쓰기 길이를 늘려서 주문하고, 똑같이 긴 용어는 사전 사전순으로 주문한다.[10]정해진 T 항의 경우, 이의 불일치 경로 pT의 두 멤버 용어가 다른 사전 통계학적으로 최소 경로다.이의 불일치 집합은 p에서 시작하는 하위 조건 집합이다. 공식: { t : T [11]

알고리즘:[12]
Given a set T of terms to be unified
Let initially be the identity substitution
do forever
if is a singleton set then
return
fi
let D be the disagreement set of
let s, t be the two lexicographically least terms in D
if s is not a variable or s occurs in t then
return "NONUNIFIABLE"
fi

done

로빈슨(1965)이 준 첫 번째 알고리즘은 다소 비효율적이었다; cf. box.다음의 더 빠른 알고리즘은 마텔리 몬타나리(1982)에서 비롯되었다.[note 6]본 논문에는 효율적인 구문 통일 알고리즘을 찾기 위한 선행 시도도 나열되어 있으며,[13][14][15][16][17][18] 선형 시간 알고리즘은 마르텔리 몬타나리(1976년)[15]와 패터슨 웨그만(1976년,[19] 1978년[16])에 의해 독자적으로 발견되었다고 기술되어 있다.[note 7]

감안할 때들은 한정된),{\displaystyle G=\{s_{1}\doteq t_{1}{s1≐ t1,..., sn≐ tn}G설정...잠재적인 방정식(t_{n}\}}, 알고리즘 형태의 방정식이 x1,..., xm는 별개의 변수와 u1,..., 음 있는 용어들{x1 ≐ u1,...,xm ≐)}의 등가 세트 이렇게 변형에 규칙을 적용합니다. containing x i 어느 것도. 이 형식의 집합은 대체물로 읽을 수 없다.해결책이 없을 경우 알고리즘은 ⊥으로 종료된다. 다른 저자는 이 경우 "Ω", "{}" 또는 "fail"을 사용한다.문제 G에서 발생하는 모든 변수 x를 용어 t로 대체하는 작업은 G {xt}로 표시된다.단순성을 위해 상수 기호는 인수가 0인 함수 기호로 간주된다.

삭제하다
분해하다
또는 인 경우 갈등을 빚다
바꾸다
) ) x인 경우 없애다[주 8]
( .. . . s )})})인 경우 수표

발생 확인

x를 포함하는 항을 엄격한 하위항 x f f(..., x, ...)로 하여 변수 x를 통일하려는 시도는 x 자체의 하위항으로서 발생하기 때문에 x에 대한 솔루션으로서 무한의 항으로 이어질 것이다.위에서 정의한 (최종) 1차 항 집합에서 x ≐ f(..., x, ...) 방정식은 해법이 없으므로, 제거 규칙은 x ∉ var(t)일 경우에만 적용될 수 있다.발생 점검이라고 불리는 추가 점검은 알고리즘을 느리게 하기 때문에 대부분의 Prolog 시스템에서 생략된다.이론적인 관점에서, 체크 양을 생략하는 것은 무한 나무에 대한 방정식을 푸는 것과 같다. 아래를 참조하라.

해지증빙

이 알고리즘의 해지의 증명을 위해서 삼중⟨ nv을 고려한 r, n나는 h, neq n⟩{\displaystyle\langle n_{},n_{lhs},n_{유닉스}\rangle}이 nvar은 숫자의 변수 발생하는 한번 이상의 방정식 집합, nlhs은 숫자의 함수 기호와 상수에 왼손 측면들의 잠재적인 equa.결함,그리고eqn n은 방정식의 수입니다.규칙 제거가 적용되면 nvar 감소하는데, x가 G에서 제거되고 { x t t }에만 유지되기 때문이다. 다른 규칙을 적용하면 nvar 다시 증가하지 않는다.규칙이 분해, 충돌 또는 스왑을 적용할 때 nlhs 감소하는데, 적어도 왼쪽의 가장 바깥쪽 f는 사라지기 때문이다.나머지 규칙 중 하나를 삭제하거나 확인하는 것은 nlhs 증가시킬 수 없지만 neqn 감소한다.따라서 모든 규칙 애플리케이션은 한정된 횟수만큼만 가능한 사전적 순서와 관련하여 트리플 n h n 를 감소시킨다.

코너 맥브라이드는 "통일이 악용하는 구조를 에피그램과 같이 의존적으로 입력된 언어로 표현함으로써 로빈슨의 알고리즘은 변수 수에 따라 재귀적으로 만들어질 수 있으며, 이 경우 별도의 종료 증명이 불필요하게 된다"고 관측한다[20].

1차 용어의 통사적 통일 예제

프롤로그 통념에서 대문자로 시작하는 기호는 변수 이름, 소문자로 시작하는 기호는 함수 기호, 쉼표는 논리 및 연산자로 사용된다.수학 표기법의 경우 x,y,z는 변수로, f,g는 함수 기호로, a,b는 상수로 사용된다.

프롤로그 표기법 수학적 표기법 통합 대체 설명
a = a { a = } {} 성공하다.(자동학)
a = b { a = b } ab가 일치하지 않다
X = X { x = x } {} 성공하다.(자동학)
a = X { a = x } { x x ↦ a } x는 상수 a와 통일된다.
X = Y { x = y } { xy } xy는 별칭임
f(a,X) = f(a,b) { f(a,x) = f(a,b) } { xb } 함수 기호와 상수 기호가 일치하며, x는 상수 b와 통일된다.
f(a) = g(a) { f(a) = g(a) } fg가 일치하지 않음
f(X) = f(Y) { f(x) = f(y) } { xy } xy는 별칭임
f(X) = g(Y) { f(x) = g(y) } fg가 일치하지 않음
f(X) = f(Y,Z) { f(x) = f(y,z) } 실패함. f 함수 기호는 서로 다른 아성을 갖는다.
f(g(X)) = f(Y) { f(g(x) = f(y) } { yg(x) } x) {\ g 용어와 통합
f(g(X),X) = f(Y,a) { f(g(x),x) = f(y,a) } { x x a a, y g g(a) } 상수 x를 통합하고, ) 이라는 용어로 y를 통합한다.
X = f(X) { x = f(x) } ⊥여야 한다 1차 로직과 많은 최신 프롤로그 방언(발생 확인에 의해 강제 적용)으로 returns을 반환한다.

기존 프롤로그와 프롤로그 II에서 성공, x를 무한 용어로 통일x=f(f(f(f(...)))).

X = Y, Y = a { x = y, y = a } { x x ↦ a, ya } xy는 모두 상수 a로 통일된다.
a = Y, X = Y { a = y, x = y } { x x ↦ a, ya } 위와 같이(세트 방정식의 순서는 중요하지 않음)
X = a, b = X { x = a, b = x } 실패. ab가 일치하지 않기 때문에 x는 둘 다와 통일될 수 없다.
가장 일반적인 경우를 위해 기하급수적으로 큰 트리를 가진 두 개의 용어.그것의 dag 표현(가장 오른쪽, 주황색 부분)은 여전히 선형이다.

n 크기의 통사적 1차 통일 문제의 가장 일반적인 단일화는 2n 크기를 가질 수 있다.For example, the problem has the most general unifier cf. 사진.이러한 블로업으로 인한 기하급수적인 시간 복잡성을 피하기 위해 고급 통일 알고리즘은 나무보다는 지시된 반복 그래프(다그)에 작용한다.[21]

응용 프로그램: 로직 프로그래밍에서의 통일

통일의 개념은 로직 프로그래밍의 주요 아이디어 중 하나로, 프롤로그 언어를 통해 가장 잘 알려져 있다.변수의 내용을 구속하는 메커니즘을 나타내며 일종의 일회성 할당으로 볼 수 있다.Prolog에서 이 연산은 동일 기호(Equality 기호로 표시됨=, 그러나 변수를 인스턴스화할 때도 수행된다(아래 참조).그것은 또한 평등 기호를 사용함으로써 다른 언어에서도 사용된다.=, 그러나 또한 다음을 포함한 많은 운영과 함께.+,-,*,/. 형식 추론 알고리즘은 일반적으로 단일화에 기반한다.

프롤로그에서:

  1. 인스턴스화되지 않은 변수(즉, 이전에 단일화가 수행되지 않은 변수)는 원자, 용어 또는 다른 인스턴스화되지 않은 변수와 통일될 수 있으므로 사실상 그 별칭이 된다.현대의 많은 프롤로그 방언과 1차 논리에서는 변수를 포함하는 용어로 통일할 수 없다. 이것이 소위 발생 점검이다.
  2. 두 원자는 동일해야 통일할 수 있다.
  3. 마찬가지로 항은 상위 함수 기호와 용어의 아성이 동일하고 매개변수가 동시에 통일될 수 있는 경우 다른 항과 통일될 수 있다.이것은 반복적인 행동이라는 점에 유의한다.

응용 프로그램: 유형 추론

통일은 예를 들어 기능 프로그래밍 언어 하스켈에서 유형 추론 중에 사용된다.한편, 프로그래머는 모든 기능에 대한 형식 정보를 제공할 필요가 없고, 다른 한편으로 그것은 타이핑 오류를 감지하는 데 사용된다.하스켈 표현True : ['x', 'y', 'z']올바르게 입력되지 않음.목록 작성 기능(:)형식이다.a -> [a] -> [a], 그리고 첫 번째 논쟁에 대해서.True다형체형 변수a와 통일되어야 한다.True의 유형,Bool두번째 논쟁은,['x', 'y', 'z']는 유형이다.[Char]그렇지만a둘 다일 수는 없다Bool, 그리고Char동시에

Prolog와 마찬가지로 유형 추론을 위한 알고리즘을 제공할 수 있다.

  1. 모든 형식 변수는 모든 형식 표현식과 통합되며 해당 표현식에 인스턴스화된다.특정 이론은 발생 체크로 이 규칙을 제한할 수 있다.
  2. 두 유형 상수는 유형이 같은 경우에만 통일된다.
  3. 두 가지 유형구조는 동일한 유형구축자의 애플리케이션인 경우에만 통일되고 모든 구성요소 유형은 반복적으로 통일된다.

선언적인 성격 때문에 일련의 통일의 순서는 (보통) 중요하지 않다.

1차 논리학의 용어에서 원자는 기본 명제로서 프롤로그 용어와 유사하게 통일된다는 점에 유의한다.

질서정연한 통일

순서 정렬 논리학에서는 각 용어에 분류 또는 유형을 할당하고1, 일반적으로1 s s2 s로 표기된 다른2 종류의 하위 집합을 선언할 수 있다.예를 들어 생물학적 생물에 대해 재도약할 때, 분류된 를 분류된 동물의 하위집단이라고 선언하는 것이 유용하다.어떤 종류의 용어가 필요한 경우, s의 하위 용어가 대신 제공될 수 있다.예를 들어 함수 선언 어미: 동물동물, 그리고 상수 선언 래시: 를 가정하면 어미(래시)라는 용어는 완벽하게 유효하며 종류별 동물을 가지고 있다.개 엄마가 개라는 정보를 차례대로 공급하기 위해 개 → 개라는 또 다른 선언적 어미인 개 → 를 발행할 수 있는데, 이를 프로그래밍 언어의 과부하와 비슷하게 함수 과부하라고 한다.

발터order-sorted 논리에 조건을, 어떤 두개를 선언한 종류 s1을 의무화하는 선고를 받기 교차 s1∩ s2 s2도 바로 종류 s1과 s2의 x1과 미국은 변수, 각각, 방정식 x1 ≐ 미국은 해결책{x1=-1, 미국))}, x:∩ s2 s1 통일 알고리즘을 주었다.한clause-based 자동화로 이 알고리즘을 통합한 후[22].정리 프로베르는 벤치마크 문제를 순서 결정 논리로 번역하여 해결할 수 있었고, 그에 따라 많은 단수 술어들이 분류로 변함에 따라 그 크기를 줄였다.

스몰카는 파라메트릭 다형성을 허용하기 위해 순서 편중 논리를 일반화했다.[23] 그의 틀에서 하위집단 선언은 복잡한 유형 표현으로 전파된다.프로그래밍 예로서 파라메트릭 정렬 리스트(X)를 선언할 수 있으며(X는 C++ 템플릿에서와 같은 형식 매개변수임), 서브포트 선언 int에서 관계 리스트(int) ⊆ 리스트(float)는 자동으로 유추되며, 이는 각 정수 리스트도 플로트의 리스트라는 것을 의미한다.

슈미트-샤우프는 용어 선언을 허용하기 위해 주문-변형 논리를 일반화했다.[24] 예를 들어, 하위 항목이 even intodd int int까지 선언한다고 가정하면, ∀ i : int. (i + i) : 일반적인 과부하로 표현할 수 없는 정수 덧셈의 속성까지 선언할 수 있다.

무한한 용어의 통일

무한 나무의 배경:

  • B. Courcelle (1983). "Fundamental Properties of Infinite Trees" (PDF). Theoret. Comput. Sci. 25 (2): 95–169. doi:10.1016/0304-3975(83)90059-2. Archived from the original (PDF) on 2014-04-21. Retrieved 2013-06-28.
  • Michael J. Maher (Jul 1988). "Complete Axiomatizations of the Algebras of Finite, Rational and Infinite Trees". Proc. IEEE 3rd Annual Symp. on Logic in Computer Science, Edinburgh. pp. 348–357.
  • Joxan Jaffar; Peter J. Stuckey (1986). "Semantics of Infinite Tree Logic Programming". Theoretical Computer Science. 46: 141–158. doi:10.1016/0304-3975(86)90027-7.

통일 알고리즘, Prolog II:

  • A. Colmerauer (1982). K.L. Clark; S.-A. Tarnlund (eds.). Prolog and Infinite Trees. Academic Press.
  • Alain Colmerauer (1984). "Equations and Inequations on Finite and Infinite Trees". In ICOT (ed.). Proc. Int. Conf. on Fifth Generation Computer Systems. pp. 85–99.

응용 프로그램:

E-통일

E-통일(E-unified)은 어떤 등가적 배경지식 E를 고려하여 주어진 방정식 집합에 대한 해결책을 찾는 문제다.후자는 보편적 평등의 집합으로 주어진다.일부 특정 집합 E에서는 방정식 해결 알고리즘(예: E-통일 알고리즘)이 고안되었고, 다른 집합에서는 그러한 알고리즘이 존재할 수 없다는 것이 증명되었다.

예를 들어 ab가 구별되는 상수인 경우, x x b x y은(는) 연산자에 대해 알려진 것이 없는 순수 통사적 통일과 관련하여 해법이 없다 그러나, 만일 교호작용적인 것으로 알려지면 치환 {x { b, y, y, y, a}은(는) 다음부터 위의 방정식을 해결한다.

{xb, ya}
= 대체 적용으로
= 의 동시 사용률로
= {xb, ya} 대체적용에 의하여.

배경지식 E는 만유평등 " v = u u 의한{{\u}의 공통성을 모든 u, v"에 대해 진술할 수 있다.

특정 배경 지식 집합 E

사용된 명명 규칙
u,v,w: = A 의 연관성
u,v: = C 의 동일성
u,v,w: = Dl 대한 의 왼쪽 분포
u,v,w: = Dr 대한 의 올바른 분포
u: = u I 의 IDempotence
u: = u Nl 대한 좌측 중립 요소 n
u: = u Nr 에 대한 우측 중립 요소 n

어떤 입력 문제에 대해 종결되는 통일 알고리즘이 고안되었다면, 어떤 이론에 대해서도 통일은 결정 가능하다고 한다.어떤 해결 가능한 입력 문제에 대해 종결되는 통일 알고리즘이 고안되었다면, 통일은 이론에 대해 반 결정적으로 가능하지만, 풀 수 없는 입력 문제의 해결책을 계속해서 찾을 수 있을 것이다.

통일은 다음과 같은 이론에 대해 결정 가능하다.

통일은 다음과 같은 이론에 대해 반결정가능하다.

단측 파라미터

E에 사용할 수 있는 수렴 용어 재쓰기 시스템 R이 있는 경우, 단측 매개변수 알고리즘을[37] 사용하여 주어진 방정식의 모든 해결책을 열거할 수 있다.

단측 매개변수 규칙
G ∪ {f,s1...snf(t1,...,t) } f(t,...,tn) } ; S G ∪ { s1t1, ..., sntn } } ; S 분해하다
G ∪ { xt } ; S G { xt } ; S{xt} ∪ {xt} 변수 xt에서 발생하지 않는 경우 없애다
G ∪ {f1,...snt } ; S G ∪ { s1 ≐ u1, ..., sn ≐ un, rt } ; S f(u1, ...,un) → rR의 규칙이라면 돌연변이를 일으키다
G ∪ {f1,...sn ≐ y } ; S G ∪ { s1y1, ..., snyn, yf(y1,...,yn) } ; S 만약1 y,...yn 새로운 변수라면 흉내를 내다

G가 해결해야 할 통일문제, S가 정체성 대체문제인 것을 시작으로 빈 세트가 실제 G로 나타날 때까지 비결정론적으로 규칙이 적용되는데, 이 경우 실제 S는 통일성 대체다.매개 변수 규칙을 적용하는 순서에 따라, G로부터 실제 방정식의 선택, 돌연변이에 있어서 R의 규칙의 선택에 따라, 다른 계산 경로가 가능하다.일부만 해결책으로 이어지는 반면 다른 일부는 더 이상의 규칙이 적용되지 않는 G ≠ {}에서 종료된다(예: G = { f(...) ≐ g(...) ≐ g(...) }).

예시 용어 재작성 시스템 R
1 app(nil,z) z
2 app(x.y,z) x.app(y,z)

For an example, a term rewrite system R is used defining the append operator of lists built from cons and nil; where cons(x,y) is written in infix notation as x.y for brevity; e.g. app(a.b.nil,c.d.nil) → a.app(b.nil,c.d.nil) → a.b.app(nil,c.d.nil) → a.b.c.d.nil demonstrates the concatenation of the lists a.b.nil and c.d.nil, employing the rewrite rule 2, 2, 1.R에 해당하는 등가 이론 ER합치성 폐쇄로, 둘 다 용어로 이항관계로 간주된다.예를 들어, app(a.b.nil, c.d.nil) app(a.b.c.d.nil,nil) app(a.b.c.d.nil,nil) app.매개변수 알고리즘은 예 R을 사용할 때 E에 대한 방정식에 대한 해결책을 열거한다.

통일 문제 {app(x,app(y,x) ≐ a.a.nil }에 대한 성공적인 계산 경로가 아래와 같다.가변 이름 충돌을 피하기 위해 규칙 변경에 의해 사용되기 전에 항상 다시 쓰기 규칙의 이름을 변경한다. v2, v3, ...는 이러한 목적을 위해 컴퓨터에서 생성된 변수 이름이다.각 선에서 G에서 선택한 방정식은 빨간색으로 강조 표시된다.돌연변이 규칙을 적용할 때마다 선택한 다시 쓰기 규칙(1 또는 2)이 괄호 안에 표시된다.마지막 줄부터 통일 대체 S = { ynil, x ↦ a.nil }을(를) 얻을 수 있다.실제로 app(x,app(y,x)) {ynil, x↦ a.nil } = app(a.nil,app(nil,a.nil) ≡ a.app(nil,a.nil) ≡ a.a.nil이 주어진 문제를 해결한다."mutate(1), mutate(2), mutate(2), mutate(2), mutate(1)"를 선택하여 얻을 수 있는 두 번째 성공적인 계산 경로는 대체 S = { y y a.a.nil, xnil }을(를) 유도하며, 여기에는 표시되지 않는다.다른 길은 성공으로 이어지지 않는다.

유니퍼 계산 예제
사용된 규칙 G S
{ app(x,app(y,x)) ≐ a.a.nil } {}
돌연변이(2) { xv2.v3, app(y,x) ≐ v4, v2.app(v3,v4) ≐ a.a.nil } {}
분해하다 { xv2.v3, app(y,x) ≐ v4, v2a, app(v3,v4) ≐ a.nil } {}
없애다 { app(y,v2.v3) ≐ v4, v2a, app(v3,v4) ≐ a.nil } { x ↦ v2.v3 }
없애다 { app(y,a.v3) ≐ v4, app(v3,v4) ≐ a.nil } { x ↦ a.v3 }
돌연변이(1) { ynil, a.v3v5, v5 v4, app(v3,v4) ≐ a.nil } { x ↦ a.v3 }
없애다 { y nil, a.v3v4, app(v3,v4) ≐ a.nil } { x ↦ a.v3 }
없애다 { a.v3v4, app(v3,v4) ≐ a.nil } { ynil, x ↦ a.v3 }
돌연변이(1) { a.v3v4, v3nil, v4v6, v6a.nil } { ynil, x ↦ a.v3 }
없애다 { a.v3v4, v3nil, v4a.nil } { ynil, x ↦ a.v3 }
없애다 { a.nilv4, v4a.nil } { ynil, x ↦ a.nil }
없애다 { a.nila.nil } { ynil, x ↦ a.nil }
분해하다 { aa, nilnil } { ynil, x ↦ a.nil }
분해하다 {nilnil } { ynil, x ↦ a.nil }
분해하다 {} { ynil, x ↦ a.nil }

좁히기

rewrite rule l r (상단 행)을 사용한, 단일 대체 σ (하단 행)과 함께 p 위치에서 스텝 st를 좁히는 삼각도

RE를 위한 융합 용어 재작성 시스템인 경우, 이전 절의 접근 대안은 "경사적 단계"의 연속적인 적용으로 구성된다. 이는 결국 주어진 방정식의 모든 해결책을 열거할 것이다.좁은 단계(cf. picture)는

  • 당기의 비변수 하위항 선택,
  • R에서 규칙의 왼쪽과 구문적으로 통일하고, 그리고
  • 즉석 규칙의 오른손을 즉석 용어로 대체한다.

형식적으로 l rR에서 다시쓰기 규칙의 개명본으로, 용어의 s와 공통적으로 변수가 없고, 하위 용어 s가 변수가 아니며 mgu σ을 통해 l와 함께 사용할 수 없는 경우, s t = s[[],p라는 용어로 좁혀질 수 있으며, s는 으로 대체된 p에서 하위 용어로 좁혀질 수 있다.st로 좁혀질 수 있는 상황은 일반적으로 st로 표시된다.직관적으로, 일련의 좁은 단계 t1t2 ↝ ...tn rewrite step t1t2 → ...의 순서로 생각할 수 있다.tn, 그러나 사용된 각 규칙을 적용 가능하도록 하기 위해 필요한 경우 초기 용어1 t를 더 멀리 그리고 더 인스턴스화한다.

의 예시 매개변수 계산은 다음과 같은 좁은 시퀀스("여기에서 인스턴스화를 나타내는")에 해당한다.

(app) x ,app(y, x ))
xv2.v3
(app) v2.v3 ,app(y, v2.v3 )) v2.app(v3,app) y ,v2.v3)))
y
v2.app(v3,app) 못을 박다 ,v2.v3))) v2.app. v3 ,v2. v3 )
v3nil.
v2.app. 못을 박다 ,v2. 못을 박다 ) v2.v2.nil

마지막 용어인 v2.v2.nil은 원래 오른쪽 측면 용어인 a.a.nil과 구문적으로 통일될 수 있다.

축소 보조정리법[38] 융합적 용어 재작성 시스템에 의해 s라는 용어의 한 인스턴스를 t라는 용어로 다시 쓸 수 있을 마다 s와 t각각 s narrowed와 twritten라는 용어로 좁히고 다시 쓸 수 있도록 보장한다.

형식적: t가 어떤 대체 σ에 대해 보유할 때마다 s′, t′, s terms, t′, s = t 등의 용어가 존재하게 된다.

고차통일

많은 응용 프로그램에서는 1차 용어 대신 람다-단어의 통일성을 고려해야 한다.이런 통일을 흔히 고차적 통일이라고 부른다.고차 통일의 잘 연구된 분과는 단순히 입력된 람다 용어를 αββ 변환에 의해 결정되는 동등성으로 통일하는 문제다.그러한 통일 문제는 대부분의 일반적인 통일 문제를 가지고 있지 않다.반면higher-order 통일 undecidable,[39][40][41]은 제라르 후 에트는 unifiers의(조건을 Martelli-Montanari[2]의 규칙으로 통일 알고리즘을 일반화 고차 변수가 들어 있는)그 충분히 practic에서 일하는 것처럼 보이는 우주의 유기적인 검색할 수 있는semi-decidable(전송)unification algorithm[42]을 주었다.eHuet과[43] Gilles Dowek은[44] 이 주제에 관한 기사를 썼다.

데일 밀러는 현재 고차 패턴 통일이라고 불리는 것을 묘사했다.[45]고차 통일의 이 부분집합은 해독이 가능하며 해결 가능한 통일 문제는 대부분의 일반적인 통일자를 가지고 있다.고차 로직 프로그래밍 언어인 proPrologTweel과 같이 고차 통일을 포함하는 많은 컴퓨터 시스템은 완전 고차 통일은 아닌 패턴 단편만 구현하는 경우가 많다.

계산언어학에서 가장 영향력 있는 줄임표 이론 중 하나는 타원이 자유 변수에 의해 표현되고 그 값은 HOU(High-Order Uniform)를 사용하여 결정된다는 것이다.예를 들어 "존은 메리를 좋아하고 베드로도 좋아한다"는 의미표현은 (j, m)∧ R(p)과 같으며, R(타원의 의미표현)의 값은 (j, m) = R(j)같은 방정식에 의해 결정된다.그런 방정식을 푸는 과정을 고차 통일이라고 한다.[46]

For example, the unification problem { f(a, b, a) ≐ d(b, a, c) }, where the only variable is f, has the solutions {f ↦ λxyz.d(y, x, c) }, {f ↦ λxyz.d(y, z, c) }, {f ↦ λxyz.d(y, a, c) }, {f ↦ λxyz.d(b, x, c) }, {f ↦ λxyz.d(b, z, c) } and {f ↦ λxyz.d(b, a, c) }.

웨인 스나이더는 고차 통일과 E-통일의 일반화, 즉 람다-단어 모듈로를 평준화 이론으로 통일하는 알고리즘을 제공했다.[47]

참고 항목

메모들

  1. ^ 이 경우, 완전한 대체 세트(예: 모든 솔루션의 세트)가 여전히 존재하지만, 그러한 세트 각각은 중복 멤버를 포함한다.
  2. ^ ) ⊕ (bf(x) ≡ f (f(x) b) ( (b f f(x) ≡) a a (f(x) a a a) a a
  3. ^ ){ , y z = z
  4. ^ z {zxy} = x ⊕ y 이후
  5. ^ 형식: 각 단수 τ은 x를 만족한다: 어떤 대체 ρ에 대해 = ()ρ
  6. ^ 알그.1, 페이지 261.이들의 규칙(a)은 여기서 규칙 스왑, (b) 삭제, (c) 분해충돌, (d) 제거검사 모두에 해당한다.
  7. ^ 독립적 발견은 마르텔리 몬타나리(1982년),[2] 제1장, 페이지 259에 명시되어 있다.패터슨과 웨그먼의 저널 논문은[16] 1978년 날짜로 되어 있지만, 그 저널 출판사는 그것을 1976년 9월에 받았다.
  8. ^ 규칙은 xtG에 유지하지만, 전제 조건인 x varvars(G)가 첫 번째 적용으로 무효화되기 때문에 영원히 반복할 수 없다.보다 일반적으로 알고리즘은 항상 종료가 보장된다(아래 참조).
  9. ^ a b 동일성 C가 존재하는 경우, 동일성 Nl Nr 동일하며, Dl Dr 경우 유사하다.

참조

  1. ^ Fages, François; Huet, Gérard (1986). "Complete Sets of Unifiers and Matchers in Equational Theories". Theoretical Computer Science. 43: 189–200. doi:10.1016/0304-3975(86)90175-1.
  2. ^ a b c Martelli, Alberto; Montanari, Ugo (Apr 1982). "An Efficient Unification Algorithm". ACM Trans. Program. Lang. Syst. 4 (2): 258–282. doi:10.1145/357162.357169. S2CID 10921306.
  3. ^ J. 허브랜드:리허칭 sur la theri de la demonstration.Travau de la societé des Sciences et Des Letres de Varsovie, Class III, Science Mathématiquees et Physique, 33, 1930.
  4. ^ Claus-Peter Wirth; Jörg Siekmann; Christoph Benzmüller; Serge Autexier (2009). Lectures on Jacques Herbrand as a Logician (SEKI Report). DFKI. arXiv:0902.4682. 여기: p.56
  5. ^ Jacques Herbrand (1930). Recherches sur la théorie de la demonstration (PDF) (Ph.D. thesis). A. Vol. 1252. Université de Paris. 여기: 페이지 96-97
  6. ^ a b c d J.A. Robinson (Jan 1965). "A Machine-Oriented Logic Based on the Resolution Principle". Journal of the ACM. 12 (1): 23–41. doi:10.1145/321250.321253. S2CID 14389185.; 여기: 제5.8장, 페이지 32
  7. ^ J.A. Robinson (1971). "Computational logic: The unification computation". Machine Intelligence. 6: 63–72.
  8. ^ C.C. Chang; H. Jerome Keisler (1977). Model Theory. Studies in Logic and the Foundation of Mathematics. Vol. 73. North Holland.; 여기: 제1.3장
  9. ^ K.R. 아파트 "논리 프로그래밍에서 프롤로그까지" 24페이지프렌티스 홀, 1997.
  10. ^ 로빈슨(1965);[6] nr.2.5, 2.14, 페이지 25
  11. ^ 로빈슨(1965);[6] nr.5.6, 페이지 32
  12. ^ 로빈슨(1965);[6] nr.5.8, 페이지 32
  13. ^ Lewis Denver Baxter (Feb 1976). A practically linear unification algorithm (PDF) (Res. Report). Vol. CS-76-13. Univ. of Waterloo, Ontario.
  14. ^ Gérard Huet (Sep 1976). Resolution d'Equations dans des Langages d'Ordre 1,2,...ω (These d'etat). Universite de Paris VII.
  15. ^ a b Alberto Martelli & Ugo Montanari (Jul 1976). Unification in linear time and space: A structured presentation (Internal Note). Vol. IEI-B76-16. Consiglio Nazionale delle Ricerche, Pisa. Archived from the original on 2015-01-15.
  16. ^ a b c d Michael Stewart Paterson and M.N. Wegman (Apr 1978). "Linear unification". J. Comput. Syst. Sci. 16 (2): 158–167. doi:10.1016/0022-0000(78)90043-0.
  17. ^ J.A. Robinson (Jan 1976). "Fast unification". In Woodrow W. Bledsoe, Michael M. Richter (ed.). Proc. Theorem Proving Workshop Oberwolfach. Oberwolfach Workshop Report. Vol. 1976/3.[영구적 데드링크]
  18. ^ M. Venturini-Zilli (Oct 1975). "Complexity of the unification algorithm for first-order expressions". Calcolo. 12 (4): 361–372. doi:10.1007/BF02575754. S2CID 189789152.
  19. ^ Paterson, M.S.; Wegman, M.N. (May 1976). Chandra, Ashok K.; Wotschke, Detlef; Friedman, Emily P.; Harrison, Michael A. (eds.). Linear unification. Proceedings of the eighth annual ACM Symposium on Theory of Computing (STOC). ACM. pp. 181–186. doi:10.1145/800113.803646.
  20. ^ McBride, Conor (October 2003). "First-Order Unification by Structural Recursion". Journal of Functional Programming. 13 (6): 1061–1076. CiteSeerX 10.1.1.25.1516. doi:10.1017/S0956796803004957. ISSN 0956-7968. Retrieved 30 March 2012.
  21. ^ 예: 패터슨, 웨그만(1978),[16] 제2장, 페이지 159
  22. ^ Walther, Christoph (1985). "A Mechanical Solution of Schubert's Steamroller by Many-Sorted Resolution" (PDF). Artif. Intell. 26 (2): 217–224. doi:10.1016/0004-3702(85)90029-3. Archived from the original (PDF) on 2011-07-08. Retrieved 2013-06-28.
  23. ^ Smolka, Gert (Nov 1988). Logic Programming with Polymorphically Order-Sorted Types (PDF). Int. Workshop Algebraic and Logic Programming. LNCS. Vol. 343. Springer. pp. 53–70. doi:10.1007/3-540-50667-5_58.
  24. ^ Schmidt-Schauß, Manfred (Apr 1988). Computational Aspects of an Order-Sorted Logic with Term Declarations. LNAI. Vol. 395. Springer.
  25. ^ 고든 D. Plotkin, Lattice 이론적 Subsumption, MIP-R-77, Univ.에든버러, 1970년 6월
  26. ^ Mark E. Stickel, 연상-상호함수를 위한 통일 알고리즘, J. Association.계산하다.마하, 제28권, 제3권, 페이지 423–434, 1981.
  27. ^ a b F. 페이즈, 연상-명언 통일, J. 심볼 연산, vol.3, no.3, 페이지 257–275, 1987
  28. ^ Franz Baader, Unification in Idempotent Sem그룹s는 Zero, J. Automat 타입이다.추론, 제2권, 제3권, 1986년
  29. ^ J. 마카닌, 아카드 자유 반군에서 방정식의 해결의 문제.Nauk SSSR, vol.233, No.2, 1977
  30. ^ F. Fages (1987). "Associative-Commutative Unification" (PDF). J. Symbolic Comput. 3 (3): 257–275. doi:10.1016/s0747-7171(87)80004-4.
  31. ^ Martin, U., Nipkow, T. (1986). "Unification in Boolean Rings". In Jörg H. Siekmann (ed.). Proc. 8th CADE. LNCS. Vol. 230. Springer. pp. 506–513.{{cite book}}: CS1 maint : 복수이름 : 작성자 목록(링크)
  32. ^ A. Boudet; J.P. Jouannaud; M. Schmidt-Schauß (1989). "Unification of Boolean Rings and Abelian Groups". Journal of Symbolic Computation. 8 (5): 449–477. doi:10.1016/s0747-7171(89)80054-9.
  33. ^ a b 바더와 스나이더(2001) 페이지 486.
  34. ^ F. 바더와 S.길라르디, 모달과 서술 로직통일, 인터넷 거버넌스 포럼 19(2011), 제6권 705-730호.
  35. ^ P. Szabo, Unifiationstheory erster Ordnung (제1차 통일 이론), 논문, Univ.카를스루헤, 1982년 서독
  36. ^ 요르그 H. 지크만, 만국통일, Proc. 7 int.Springer LNCS vol.170, 페이지 1-42, 1984년 자동 공제 관련 설명
  37. ^ N. Dershowitz와 G. Sivakumar, Proc. 1 Int.조건부 용어 재작성 시스템 워크숍, Springer LNCS vol.308, 페이지 45–55, 1988
  38. ^ Fay (1979). "First-Order Unification in an Equational Theory". Proc. 4th Workshop on Automated Deduction. pp. 161–167.
  39. ^ Warren D. Goldfarb (1981). "The Undecidability of the Second-Order Unification Problem". TCS. 13 (2): 225–230. doi:10.1016/0304-3975(81)90040-2.
  40. ^ Gérard P. Huet (1973). "The Undecidability of Unification in Third Order Logic". Information and Control. 22 (3): 257–267. doi:10.1016/S0019-9958(73)90301-X.
  41. ^ 클라우디오 루체시:제3차 세계어 통일문제의 난해성(연구보고서 CSRR 2059; Waterloo대학 컴퓨터과학부, 1972)
  42. ^ Gérard Huet : Lambda-Miculus type에 대한 통일 알고리즘 []
  43. ^ 제라드 휴트:30년 후 상위질서 통일
  44. ^ 길레스 다우크:고차 통일 및 매칭.자동 추론 2001: 1009-1062
  45. ^ Miller, Dale (1991). "A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification" (PDF). Journal of Logic and Computation. 1 (4): 497–536. doi:10.1093/logcom/1.4.497.
  46. ^ Gardent, Claire; Kohlhase, Michael; Konrad, Karsten (1997). "A Multi-Level, Higher-Order Unification Approach to Ellipsis". Submitted to European Association for Computational Linguistics (EACL). CiteSeerX 10.1.1.55.9018.
  47. ^ Wayne Snyder (Jul 1990). "Higher order E-unification". Proc. 10th Conference on Automated Deduction. LNAI. Vol. 449. Springer. pp. 573–587.

추가 읽기