home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l210 / 1.ddi / REFEXAMP.ARC / FREE1.PRO < prev    next >
Encoding:
Text File  |  1988-06-21  |  558 b   |  27 lines

  1. %====================== free/1                ===============================
  2. PREDICATES
  3.   plus(INTEGER,INTEGER,INTEGER)
  4.   numb(INTEGER)
  5.  
  6. CLAUSES
  7.   /* This predicate implements addition for all flow-patterns */
  8.   plus(X,Y,Z):-bound(X),bound(Y),Z=X+Y.
  9.   plus(X,Y,Z):-free(X),free(Y),bound(Z),numb(X),Y=Z-X.
  10.  
  11.   numb(0).
  12.   numb(X):-numb(A), X=A+1.
  13.  
  14. Goal: plus(X,Y,3)
  15. X=0, Y=3
  16. X=1, Y=2
  17. X=2, Y=1
  18. X=3, Y=0
  19. X=4, Y=-1
  20. etc.
  21.  
  22.   call(ID,TERML):-
  23.     clause(cmp(ID,TERML1),BODY),
  24.     free(ENV),
  25.     unify_terml(TERML,TERML1,ENV),
  26.     unify_body(BODY,ENV).
  27.