title: Forward chaining
text: # Forward chaining
  
  Il forward chaining o forward reasoning (lett. risp. "incatenamento in avanti" e "ragionamento in avanti") è uno dei due principali metodi di ragionamento usati da un motore inferenziale. Può essere descritto logicamente come la ripetuta applicazione del modus ponens. L'opposto del forward chaining è il backward chaining.
  
  ## Funzionamento
  
  Il forward chaining inizia dai dati disponibili e usa le regole di inferenza per ricavare ulteriori dati fino al raggiungimento di un certo obiettivo. Un motore inferenziale che usa forward chaining ad ogni passo va alla ricerca delle regole di inferenza tali per cui la premessa è nota essere vera, dopodiché può dedurre la conseguenza e aggiungerla come nuovo dato a disposizione.
  
  ## Esempio
  
  Supponiamo che l'obbiettivo sia quello di trovare il colore di un certo animale di nome Fritz, sapendo che esso gracida e mangia le mosche e conoscendo le seguenti regole di inferenza:
  
  * Se X gracida e X mangia mosche, allora X è una rana.
  * Se X cinguetta e X canta, allora X è un canarino.
  * Se X è una rana, allora X è verde.
  * Se X è un canarino, allora X è giallo.
  
  Assumiamo veri i seguenti fatti:
  
  * Fritz gracida
  * Fritz mangia le mosche
  
  Ragionando tramite forward chaining, il motore inferenziale può derivare che Fritz è verde tramite la seguente serie di passaggi:
  
  * Dato che i fatti a e b rendono la premessa della regola n° 1 vera, sostituendo in quest'ultima X con Fritz si deduce il seguente fatto:
     * Fritz è una rana
  * Dato che il fatto c rende la premessa della regola n° 3 vera, sostituendo in quest'ultima X con Fritz si deduce il seguente fatto:
     * Fritz è verde
  
  ## Differenze con il backward chaining
  
  Il nome "forward chaining" deriva dal fatto che il motore di inferenza parte dai dati e ragiona "in avanti" verso la risposta, in opposizione al backward chaining, in cui avviene il procedimento inverso.
  
  Visto che sono i dati disponibili a determinare la scelta delle regole di inferenza, il metodo è definito "data-driven", in contrasto con il metodo backward chaining che è definito "goal-driven". In altre parole, mentre il forward chaining prevede la materializzazione delle informazioni dedotte, il backward chaining consiste nel cosiddetto query rewriting (lett. "riscrittura della query"), ovvero sulla riformulazione intensionale dell'obiettivo da raggiungere. Nelle basi di dati questi due paradigmi sono noti anche come bottom-up e top-down, rispettivamente.
  
  