Gödel (programming language)

GödelParadigm| declarative, logic

|

Designed by| John Lloyd & Patricia Hill
Developer| John Lloyd & Patricia Hill
First appeared| 1992
Stable release|

1.5 / August 11, 1995 (1995-08-11)

Typing discipline| strong
OS| Unix-like
License| Non-commercial research/educational use only
Website| https://www.cs.unipr.it/~hill/GOEDEL/expgoedel.html
Dialects
Gödel with Generic (Parametrised) Modules

Gödel is a declarative, general-purpose programming language that adheres to the logic programming paradigm. It is a strongly typed language, the type system being based on many-sorted logic with parametric polymorphism. It is named after logician Kurt Gödel.

## Features

Gödel has a module system, and it supports arbitrary precision integers, arbitrary precision rationals, and also floating-point numbers. It can solve constraints over finite domains of integers and also linear rational constraints. It supports processing of finite sets. It also has a flexible computation rule and a pruning operator which generalises the commit of the concurrent logic programming languages.

Gödel's meta-logical facilities provide support for meta-programs that do analysis, transformation, compilation, verification, and debugging, among other tasks.

## Sample code

The following Gödel module is a specification of the greatest common divisor (GCD) of two numbers. It is intended to demonstrate the declarative nature of Gödel, not to be particularly efficient. The `CommonDivisor` predicate says that if `i` and `j` are not zero, then `d` is a common divisor of `i` and `j` if it lies between `1` and the smaller of `i` and `j` and divides both `i` and `j` exactly. The `Gcd` predicate says that `d` is a greatest common divisor of `i` and `j` if it is a common divisor of `i` and `j`, and there is no `e` that is also a common divisor of `i` and `j` and is greater than `d`.

MODULE      GCD.
IMPORT      Integers.

PREDICATE   Gcd : Integer * Integer * Integer.
Gcd(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.

## External links

* https://web.archive.org/web/20091207092823/http://www.scs.leeds.ac.uk/hill/GOEDEL/expgoedel.html
* https://mitpress.mit.edu/9780262519151/the-godel-programming-language/

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Gödel (programming language). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Gödel_(programming_language)&oldid=270231"