La derivazione del programma è definita come la derivazione di un programma dalle sue specifiche. Di solito questo linguaggio di specificazione è una qualche forma di logica proposizionale, ma da quello che capisco, non è necessario. Per ragioni di specificità, ho a che fare solo con linguaggi puramente funzionali come Haskell qui.
Quando scrivi un programma in Haskell, non stai descrivendo come il calcolo è fatto, ma quali sono . Ad esempio, in questa funzione che produce i numeri di Fibonacci, viene fornita una specifica per i numeri di Fibonacci, non come dovrebbe essere implementata la funzione.
fib :: int -> int
fib n = (fib n-1) + (fib n-2)
fib 1 = 1
fib 0 = 1
Per far funzionare questo codice, il compilatore Haskell deve convertire questa specifica dichiarativa della funzione in un codice macchina imperativo. Non è questa per definizione una derivazione del genere?