Qualcuno potrebbe spiegare la differenza tra tipi dipendenti e tipi di perfezionamento? A quanto ho capito, un tipo di perfezionamento contiene tutti i valori di un tipo che soddisfano un predicato. Esiste una caratteristica di tipi dipendenti che li distingue?
Se aiuta, mi sono imbattuto in tipi raffinati tramite il progetto Liquid Haskell e tipi dipendenti tramite Coq e Agda. Detto questo, sto cercando una spiegazione di come le teorie differiscono.