A Proof Method of Logic Programs in Parallel Environment

병렬화를 위한 논리 프로그램의 증명 방법

  • Published : 1993.03.01

Abstract

Due to the producer-consumer dependency of shared variables, the potential parallelism embeded in the logic programming language has not been fully examined. The method proposed in this paper eliminates the dependency of shared variables by introducing number-sequenced variables in expanding an AND-OR proof tree. Basically, the execution of a logic program can be divided into two phases : expanding an AND-OR tree and proving the tree by matching facts with leaf nodes. In the course of the first phase, a set of number-sequenced variables are produced by expanding an AND-OR tree in the breadth-first searching. Based on the information of number-sequence, each of them is verified in the second phase in order to prove the tree. Consequently, the proposed algorithm can explore more parallelism without the dependency of shared variables.

기존의 논리 프로그램을 병렬로 실행하는 방법들은 병렬화의 제약이 되었던 공유 변수들의 생산변수-사용변수의 의존관계로 인해 서술적인 표현력이 강한 논리 언어에 잠재된 병렬성을 살리지 못했다. 이 논문에서는 공유 변수의 의존 관계를 제거하기 위해 논리 프로그램의 실행을 증명 나무의 생성 단계와 사실을 처리하는 두 단계로 분리하는 방법을 제시한다. 첫단계에서는 변수마다 유일한 번호를 붙여 증명 나무에 생성되는 연구들을 변수 수열로 차별화하고, 사실 처리시 각 변수의 값을 차별화된 변수로 구하여 증명 나무의 성공 여부를 확인할 수 있다. 따라서, 생산 변수가 값을 생산한 후 사용 변수가 있는 술어의 처리가 가능했던 기존의 병렬 처리 방식보다 더 높은 병렬성을 이룰 수 있다.

Keywords