# BNR Prolog

> constraint logic programming language

**Wikidata**: [Q60790863](https://www.wikidata.org/wiki/Q60790863)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/BNR_Prolog)  
**Source**: https://4ort.xyz/entity/bnr-prolog

## Summary
BNR Prolog is a constraint logic programming language created in 1988 by Bell-Northern Research. It combines the principles of logic programming with constraint programming, allowing developers to solve complex problems by defining logical relationships and constraints. As an early pioneer in this field, it provided a framework for efficiently tackling combinatorial and optimization tasks.

## Key Facts
- Created in 1988 by Bell-Northern Research.
- Is an instance of a constraint logic programming language.
- Its programming paradigm is constraint logic programming.
- Source code is available under the MIT License.
- Source code repository is hosted at https://github.com/ridgeworks/BNRProlog-Source-Archive.
- Developer is Bell-Northern Research.
- Described in documentation available at http://www.softwarepreservation.org/projects/prolog/bnr/doc/BNR_Mac_Prolog_User_Guide.pdf.
- A related constraint logic programming language, ECLiPSe, was created in 1992.
- A related constraint logic programming language, GNU Prolog, was created in 1996.
- A related logic programming system, SWI-Prolog, was created in 1987.

## FAQs
**What is BNR Prolog?**
BNR Prolog is a programming language developed in 1988 that integrates logic programming with constraint programming. This combination enables the efficient solution of problems involving logical relationships and numerical constraints.

**How does BNR Prolog relate to other Prolog systems?**
BNR Prolog is a specific implementation within the broader family of Prolog languages, distinguished by its focus on constraint logic programming. It is a contemporary of other systems like SWI-Prolog (1987) and a precursor to languages like GNU Prolog (1996).

**What kind of problems is BNR Prolog suited for?**
The language is particularly effective for solving combinatorial problems, optimization tasks, and scenarios that can be naturally expressed as a set of logical rules with constraints, such as scheduling and resource allocation.

## Why It Matters
BNR Prolog represents a significant step in the evolution of declarative programming paradigms. By merging logic programming's expressive power for relationships with constraint programming's efficiency in handling numerical limits, it provided a powerful tool for complex problem-solving. Its development in the late 1980s placed it among the early pioneers demonstrating the practical viability of constraint logic programming, influencing subsequent systems and expanding the application of Prolog into areas like artificial intelligence, planning, and decision support systems.

## Notable For
- Being an early constraint logic programming language, created in 1988.
- Its development by Bell-Northern Research, a notable industrial research organization.
- Pioneering the integration of constraint solving within a logic programming framework.

## Body
### Historical Development
BNR Prolog was created in 1988, positioning it as a significant early implementation in the field of constraint logic programming. It emerged during a period of active development in logic-based languages, alongside systems like SWI-Prolog (1987) and before others like GNU Prolog (1996) and ECLiPSe (1992).

### Technical Characteristics
As a constraint logic programming language, BNR Prolog combines two paradigms. It uses a declarative syntax based on logic programming for expressing relationships and is augmented with mechanisms for defining and solving constraints. This allows programmers to specify problems without detailing the step-by-step solution algorithm, relying instead on the system's built-in constraint solver.

### Implementation and Licensing
The source code for BNR Prolog is available in an archive repository under the MIT License. The original documentation, such as the user guide, is in English and provides detailed information on the language's capabilities and use.

### Relationship to Other Languages
BNR Prolog is an instance of the broader class of constraint logic programming languages. This class is defined as programming languages that combine logic and constraint programming, forming a subclass of both constraint programming languages and logic programming languages. It is related to other implementations that share this paradigm.

## References

1. [Source](https://github.com/ridgeworks/BNRProlog-Source-Archive/blob/master/LICENSE)
2. [Source](https://ridgeworks.github.io/BNRProlog-Papers/)