claimr 0.1.0

Claimr — a constraint logic programming language, Prolog III inspired, parsed with a rustemo-generated LR parser.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
% Arithmetic is part of the term language: it may appear in atom
% arguments as well as in constraint blocks. Division is exact (1/3 is
% a constant); linearity is checked by the solver, not the grammar.

sum(X, Y, X + Y).
double(X, 2 * X).
average(X, Y, (X + Y) / 2).

% Linear constraints with rational coefficients
{ X + Y = 10, 2*X - Y >= 1/3 }.
temperature(fahrenheit(F), celsius((F - 32) * 5 / 9)).

eligible(X) :- { age(X) + 1 >= 19 }.   % attribute term in arithmetic
discounted(P, D) :- { D = P - P / 10, D > 0 }.

?- sum(1, 2, S).
?- average(3, 4, A), { A >= 3.5 }.
?- discounted(100, D), { -D < -50 }.