Costanti, variabili e strutture.

Costanti

Dire quali dei seguenti ternini sono atomi:
      1)       cane             si inizia con una lettera minuscola
      2)       Cane             no inizia con una lettera maiuscola
      3)       x25              si inizia con una lettera minuscola 
      4)       3x2              no inizia con una cifra numerica
      5)       variabile_x      si inizia con una lettera minuscola
      6)       VariabileZ       no inizia con una lettera maiuscola 
      7)       varZ             si inizia con una lettera minuscola
      8)       ===>             si composto da caratteri speciali
      9)       :-               si composto da caratteri speciali 
     10)       _aprile          no inizia con un sottolineato
     11)       'Mario'          si racchiuso fra apici
     12)       'X'              si racchiuso fra apici 
    

Variabili

Dire quali dei seguenti termini sono variabili:
       1)      X                si inizia conuna lettera maiuscola
       2)      Cognome          si inizia conuna lettera maiuscola
       3)      X_22             si inizia conuna lettera maiuscola
       4)      x_22             no inizia conuna lettera minuscola
       5)      'ABC'            no racchiuso fra apici
       6)      _3x              si inizia con un sottolineato
       7)      _                si sottolineato - variabile anonima
       8)      22               no e' un numero

Strutture

Siano dati i fatti:
% file: strutture/es1.pl

 in_prestito(rossi,libro(la_valle_dell_eden,autore(john,steinbeck))).
 in_prestito(verdi,libro(cime_tempestose,autore(emily,bronte))).
 in_prestito(verdi,libro(gente_di_dublino,autore(james,joyce))).
 in_prestito(rossi,libro(ulisse,autore(james,joyce))).
Sfruttando le regole di matching ed il meccanismo di backtracking rispondere alle seguenti domande:
  1. trovare chi ha in prestito il libro "Cime tempestose".
     
     ?- in_prestito(X,libro(cime_tempestose,_)).
        
          X = verdi
          Yes     
        
  2. trovare quali libri sono stati dati in prestito a Verdi.
    
     ?- in_prestito(verdi,libro(Libro,Autore)).
    
    Libro = cime_tempestose
    Autore = autore(emily, bronte) 
    Yes
    
    Libro = gente_di_dublino
    Autore = autore(james, joyce) 
    Yes
    
    No
     
    Ricordare che per avere tutte le soluzioni bisogna usare l'opzione di "all" di pquery.

  3. trovare quali libri di Joyce sono in prestito.
    ?- in_prestito(_,libro(Libro,autore(james,joyce))).
    
    Libro = gente_di_dublino 
    Yes
    
    Libro = ulisse 
    Yes
    
    No