Il metodo per la negazione in programmazione logica esposto nei capitoli precedenti è stato implementato utilizzando il linguaggio Gödel [HL91]. Tale linguaggio per la programmazione logica è stato sviluppato, all'Università di Bristol, nell'ambito del progetto ESPRIT Compulog, e rappresenta un successore dichiarativo del Prolog.
Il linguaggio è stato chiamato Gödel perchè il concetto chiave del suo approccio alla metaprogrammazione, come si vedrà in seguito, è la rappresentazione (o naming), che fu introdotta da Gödel nel suo risultato di incompletezza.
È stato scelto questo linguaggio per realizzare i metaoperatori e il metodo per la negazione presentato nel capitolo precedente perchè fornisce tutta una serie di predicati per la metaprogrammazione permettendo di rappresentare i programmi logici come moduli separati. In Gödel è possibile ottenere la rappresentazione ground di programmi logici, come descritto nel seguito, e manipolarla in modo semplice e chiaro, aderente allo spirito dichiarativo della programmazione logica.
Nel seguito esporremo le caratteristiche principali del linguaggio e gli obiettivi che si sono voluti raggiungere definendolo.