DOI QR코드

DOI QR Code

공개 집합 제한 논리 언어의 구현 방법

An Implementation of Open Set Constraint Logic Language

  • 신동하 (상명대학교 소프트웨어학부) ;
  • 손성훈 (상명대학교 소프트웨어학부)
  • 발행 : 2005.10.01

초록

`집합 제한 논리 언어`는 `집합 이론`을 프로그래밍에 도입한 언어이다. 본 논문은 A. Dovier 연구팀이 제안한 집합 제한 문제 풀이(solver) 절차를 소개하고, 이 절차가 논리 언어 Prolog 상에서 어떻게 구현 가능한 지를 보인다. 이 절차는 `다시쓰기 규칙(rewrite rule)`으로 표현되어 있는데 이 표현의 특징은 일반 프로그래밍 언어가 표현하기 힘든 비결정적 규칙 적용(nondeterministic rule application)과 수학적 변수 (mathematical variable)를 사용한다는 점이다. 본 연구에서는 이들 특징이 Prolog 언어에서 제공되는 비결정적 제어 (nondeterministic control), 논리적 변수(logical variable) 및 리스트(list) 자료구조의 사용으로 쉽게 구현 가능함을 보인다. 본 연구의 구현은 다음과 같은 의의를 가지고 있다. 첫째 본연구는 이 언어의 모든 기능을 완전하게 구현하였다는 점이다. 둘째 본 연구에서는 이 언어의 구현 방법을 누구나 알기 쉽게 기술하였다는 점이다. 셋째 기존의 구현이 상업적 Prolog인 SICStus Prolog를 사용하여 구현한 것과는 달리 본 구현은GNU GPL(General Public License)을 가지는CIAO Prolog를 사용하여 구현하였기 때문에 누구나 자유롭게 사용할 수 있는 점이다. 넷째 본 연구에서 개발된 소스 코드는 공개 소프트웨어이기 때문에 누구나 자유롭게 사용, 수정 및 배포할 수 있다는 점이다.

Set constraints logic language is a language that adopts `set theory` in programming. In this paper, we introduce the procedure for solving set constraints proposed by A. Dovier and show how the procedure can be implemented in logic language Prolog. The procedure is represented in `rewriting rules` and this representation is characterized by having nondeterministic rule applicationsand mathematical variables that is difficult to be implemented in general programming languages. In this paper, we show that the representation can be easily implemented by using nondeterministic control, logical variables and data structure `list` provided in Prolog. Our implementation has following advantages.First we have implemented the full features of the language. Second we have described the implementation detail in thisresearch. Third other used the commercial Prolog called SICStus, but we are using CIAO Prolog with GNU GPL(General Public License) and anyone can use it freely. Forth the software of our implementation is open source so anyone can use, modify, and distribute it freely.

키워드

참고문헌

  1. A. Dovier, Computable Set Theory and Logic Programming, PhD Thesis TD-1/96, Universita degli Studi di Pisa, dip. di Informatica, March, 1996
  2. A. Dovier, E. Pontelli, and G. Rossi, Set Unification, Rapporto di Ricerca, Dipartimento di Matematica, Universita di Parma, n.310, 2002
  3. A. Dovier, C. Piazza, E. Pontelli, and G. Rossi, Sets and Constraint Logic Programming, 'ACM Transactions on Programming Languages and Systems,' Vol.22, No.5, pp.861-931, 2000 https://doi.org/10.1145/365151.365169
  4. A. Dovier, E.G. Omodeo, E. Pontelli, and G. Rossi, {log}: A Language for Programming in Logic with Finite Sets,' The Journal of Logic Programming,' Vol.28, No.1, pp.1-44, 1996 https://doi.org/10.1016/0743-1066(95)00147-6
  5. Chin-Liang Chang and Richard Lee, 'Symbolic Logic and Mechanical Theorem Proving,' Academic Press, 1973
  6. Escher NG Manual, http://users.unimi.it/~ddl/vega/manual/escher_ng/
  7. F. Baader and W. Snyder, Unification theory, 'Handbook of Automated Reasoning,' Elsevier Science Publishers B. V., 1999
  8. GNU General Public License, http://www.gnu.org/copyleft/gpl.html
  9. I. Bratko, 'PROLOG Programming for Artificial Intelligence,' Addison-Wesley, 2000
  10. J. W. Lloyd, 'Foundations of Logic Programming,' Springer-Verlag, 1984
  11. M. F. Clocksin and C. S. Mellish, 'Programming in Prolog, fourth edition,' Springer-Verlag, 1994
  12. Mozart Documentation, http://www.mozart-oz.org/documentation/index.html
  13. Pat M. Hill and John W. Lloyd, The Godel Programming Language, MIT Press, 1994
  14. Quintus Prolog Homepage, http://www.sics.se/quintus/
  15. SICStus Prolog Homepage, http://www.sics.se/isl/sicstuswww/site/index.html
  16. The CIAO Prolog Development System WWW Site, http://clip.dia.fi.upm.es/Software/Ciao/
  17. The CIAO Prolog System Manual, http://clip.dia.fi.upm.es/Software/Ciao/ciao_html/ciao_toc.html
  18. The Open Source Software Promotion Center, http://www.oss.or.kr
  19. The Open Source Definition, http://opensource.org/docs/definition.php
  20. V. Sperschneider and G. Antoniou, 'Logic: A Foundation for Computer Science', Addison-wesley, 1991