이자형= ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪( x ○ y) ∘ z≈ x ∘ ( y∘ z)x ∘ e ≈ xx ∘ i ( x ) ≈ ex ∘ ( i ( x ) ∘ y) ≈ yx ∘ ( y∘ i ( x ∘ y) ) ≈ ee ∘ x ≈ xe ∘ ( x ∘ y) ≈ x ∘ y⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪
실제 문제를 해결하기 전에 지금까지의 작업에 대해 한 가지 언급하십시오. 2.a의 왼쪽 취소. 일반적으로 올바르지 않은 경우, 중요한 쌍은 입니다. 결과적으로 임계 쌍 2.b를 얻지 못합니다. 이 취소의 문제점은 일반적으로 얻은 방정식이 일반적으로 시작한 공리를 따르지 않는다는 것입니다. 예를 들어, 링 언어로 작업하는 경우 어느 시점에서 임계 쌍 도출 할 수 있지만 를 추론하는 것은 올바르지 않습니다 (즉, 사소한 모델). Huet을 포함한 사운드 재 작성 절차는 이러한 감소를 허용하지 않아야합니다.x ∘ ( e ∘ z) ≈ x ∘ z0 ∗ x ≈ 0 ∗ yx ≈ y
반면에, (변수 이름이 바뀐 버전의) 또는 를 모든 (예 : 두 번째 ). 결과 임계 쌍은x ∘ ex ∘ i ( x )( x ○ y) ∘ z∘
x ∘ ( y∘ E ) ← ( X ∘ Y) ∘ e → x ∘ y . 축소 후 사소한 방정식 가되고x∘y≈x∘y
x∘(y∘i(x∘y))←(x∘y)∘i(x∘y)→e . 더 줄일 수 없으며 (즉, 가정 의를 우선 순위 의 방향을 때 그랬던 것처럼 LPO를 정의하는 데 사용 ).x∘(y∘i(x∘y))→e∘▹e▹x∘i(x)≈e
기본 완료 절차 :
중요한 쌍을 만들 때마다 현재 규칙 세트를 사용하여 가능한 한 양 측면을 줄입니다. 결과 일반 양식이 같지 않으면 새 규칙을 만듭니다. 예를 들어, 2.c. 새로운 규칙 합니다. 반면에 를 과 통합 하면 임계 쌍 , 사소한 삭제했습니다.x∘(i(x)∘z)→e∘z(x∘y)∘zx1∘y1 x ∘ ( y ∘ ( z ∘ z 1 ) ) ≈ x ∘ ( y ∘ ( z ∘ z 1 ) )(x∘y)∘(z∘z1)←((x∘y)∘z)∘z1→(x∘(y∘z))∘z1x∘(y∘(z∘z1))≈x∘(y∘(z∘z1))
새 규칙 만들 때마다 , 당신이 사이의 모든 중요한 쌍과 기존의 규칙을 고려해야합니다 의 unifiability 검사 의 아닌 각 변수 subterm와 및 그 반대의 경우도 마찬가지입니다. 또한 위에서 설명한 연관성에 대해 자체 오버랩, 즉 자체 하위 용어 로 통합 가능성을 확인해야합니다 . 기존 규칙의 모든 중요 쌍을 검사하여 새 규칙을 생성하거나 폐기 한 경우에만 중지합니다.l 1 → r 1 , … , l n → r n l l i ll→rl1→r1,…,ln→rnllil
이 절차는 상당히 개선 될 수 있습니다. 특히 새로운 규칙을 사용하여 기존 규칙을 단순화하고 (사소한 규칙 인 경우 새 규칙에 포함되는 경우 버릴 수 있음) 폐기 할 수 있으며 검사 할 다음 중요한 쌍을 선택하는 데 좋은 휴리스틱이 적용됩니다. 규칙의 양.
조건부 방정식 시스템을 처리하고 있었으며 공리에 왼쪽 cancellability ( )가 포함되어 있습니까? 그것이 2.a에서 수행하는 단계이며, 공리로 정당화되면 할 수 있습니다. 그럼에도 불구하고 그것은 지름길입니다. 엄밀히 말하면 먼저 축소되지 않은 방정식을 도출 한 다음 조건식을 통해 축소 된 방정식을 얻은 다음 축소되지 않은 방정식을 제거합니다 (소비되기 때문에). x∗y=x∗z⇒y=z