BNR Prolog, also known as CLP(BNR) is a declarative constraint logic programming language based on relational interval arithmetic developed at Bell-Northern Research in the 1980s and 1990s. Embedding relational interval arithmetic in a logic programming language differs from other constraint logic programming (CLP) systems like CLP(R) or Prolog-III in that it does not perform any symbolic processing. BNR Prolog was the first such implementation of interval arithmetic in a logic programming language. Since the constraint propagation is performed on real interval values, it is possible to express and partially solve non-linear equations. Example rule The simultaneous equations: are expressed in CLP(BNR) as: ?- {X>=0,Y>=0, tan(X)==Y, X**2 + Y**2 == 5}. and a typical implementation's response would be: X = _58::real(1.0966681287054703,1.0966681287054718), Y = _106::real(1.9486710896099515,1.9486710896099542). Yes References J. G. Cleary, "Logical Arithmetic", Future Computing Systems, Vol 2, No 2, pp. 125–149, 1987. W. Older and A. Vellino, "Extending Prolog with Constraint Arithmetic on Real Intervals", in Proc. of the Canadian Conf. on Electrical and Computer Engineering, 1990. Older, W., and Benhamou, F., Programming in CLP(BNR), in: 1st Workshop on Principles and Practice of Constraint Programming, 1993. External links GitHub site for a 2018 re-implementation in SWI-Prolog Declarative programming languages Constraint programming Logic programming Constraint logic programming Prolog programming language family