Gödel é um linguagem de programação declarativa, de propósito geral que adere ao paradigma lógico. É uma linguagem fortemente tipada, o sistema de tipos é baseado em muitos ordenados da lógica com polimorfismo paramétrico. Seu nome é uma homenagem ao lógico Kurt Gödel.
Gödel tem um sistema de módulos, e suporta inteiros de precisão arbitrária, racionais de precisão arbitrária, e também números de ponto flutuante. Pode resolver restrições sobre domínios finitos de inteiros e também restrições racionais lineares. Ele suporta o processamento de conjuntos finitos. Ele também tem uma regra de computação flexível e um operador de poda que generaliza a consignação (em inglês: commit) das linguagens de programação lógica concorrente.
As instalações meta-lógicas da linguagem Gödel fornecem suporte para meta-programas que fazem análise, transformação, compilação, verificação e depuração, entre outras tarefas.
O módulo de Gödel que se segue é uma especificação do maior divisor comum (mdc) de dois números. Pretende-se demonstrar a natureza declarativa de Gödel, e não, o ser particularmente eficaz. O predicado CommonDivisor diz que se i e j não são zero, então d é um divisor comum de i e j se situa entre 1 e os menores entre i e j e divide ambos i e j exatamente. O predicado Mdc diz que d é um máximo divisor comum de i e j se for um divisor comum de i e j, e não há e que também é um divisor comum de i e j e é maior do que d.
CommonDivisor
i
j
d
1
Mdc
e
MODULE MDC. IMPORT Integers.
PREDICATE Mdc : Integer * Integer * Integer. Mdc(i,j,d) ← CommonDivisor(i,j,d) & ~ SOME [e] (CommonDivisor(i,j,e) & e > d).
PREDICATE CommonDivisor : Integer * Integer * Integer. CommonDivisor(i,j,d) ← IF (i = 0 \/ j = 0) THEN d = Max(Abs(i),Abs(j)) ELSE 1 =< d =< Min(Abs(i),Abs(j)) & i Mod d = 0 & j Mod d = 0.