prolo11x
/* assoluto.pro */
/* esempio vari tipi argomenti e stampa */
/* scrivere GOAL:valori(intero) */
domains
 numero = real
predicates
 calcola(numero)
 valore(numero)
clauses
 calcola(0).
 calcola(X) if
  X>0,
  Y=X-1,
  calcola(Y).
 valore(X) if
  S=abs(X),             /* operazione */
  write("valore......",X,".."),
  write("risultato...",S,"..."),
  calcola(S).
     

 


/* diffe.pro */
/* esempio vari tipi argomenti e stampa */
/* scrivere GOAL:valori(intero,intero) */
domains
 numero = integer
predicates
 calcola(numero)
 valori(numero,numero)
clauses
 calcola(0).
 calcola(X) if
  X>0,
  Y=X-1,
  calcola(Y).
 valori(X,Y) if
  S=X-Y,             /* operazione */
  write("valori......",X,"..",Y,".."),
  write("risultato...",S,"..."),
  calcola(S).
     

 

 


/* divide.pro */
/* esempio vari tipi argomenti e stampa */
/* scrivere GOAL:valori(intero,intero) */
domains
 numero = integer
predicates
 calcola(numero)
 valori(numero,numero)
clauses
 calcola(0).
 calcola(X) if
  X>0,
  Y=X-1,
  calcola(Y).
 valori(X,Y) if
  S=X div Y,             /* operazione */
  write("valori......",X,"..",Y,".."),
  write("risultato...",S,"..."),
  calcola(S).
     

/* modulo.pro */
/* esempio vari tipi argomenti e stampa */
/* scrivere GOAL:valori(intero,intero) */
domains
 numero = integer
predicates
 calcola(numero)
 valori(numero,numero)
clauses
 calcola(0).
 calcola(X) if
  X>0,
  Y=X-1,
  calcola(Y).
 valori(X,Y) if
  S=X MOD Y,             /* operazione */
  write("valori......",X,"..",Y,".."),
  write("risultato...",S,"..."),
  calcola(S).
     

/* prodotto.pro */
/* esempio vari tipi argomenti e stampa */
/* scrivere GOAL:valori(intero,intero) */
domains
 numero = integer
predicates
 calcola(numero)
 valori(numero,numero)
clauses
 calcola(0).
 calcola(X) if
  X>0,
  Y=X-1,
  calcola(Y).
 valori(X,Y) if
  S=X*Y,             /* operazione */
  write("valori......",X,"..",Y,".."),
  write("risultato...",S,"..."),
  calcola(S).
     

/* quoziente.pro */
/* esempio vari tipi argomenti e stampa */
/* scrivere GOAL:valori(intero,intero) */
domains
 numero = integer
predicates
 calcola(numero)
 valori(numero,numero)
clauses
 calcola(0).
 calcola(X) if
  X>0,
  Y=X-1,
  calcola(Y).
 valori(X,Y) if
  S=X/Y,             /* operazione */
  write("valori......",X,"..",Y,".."),
  write("risultato...",S,"..."),
  calcola(S).
     

 


/* somma.pro */
/* esempio vari tipi argomenti e stampa */
/* scrivere GOAL:valori(intero,intero) */
domains
 numero = integer
predicates
 somma(numero)
 valori(numero,numero)
clauses
 somma(0).
 somma(X) if
  X>0,
  Y=X-1,
  somma(Y).
 valori(X,Y) if
  S=X+Y,
  write("valori......",X,"..",Y,".."),
  write("risultato...",S,"..."),
  somma(S).