Change comparison ops to not use CLP(FD).

This commit is contained in:
Simon Forman 2019-07-15 23:02:08 -07:00
parent 84584a949c
commit 06b81914eb
2 changed files with 21 additions and 7 deletions

View File

@ -1,3 +1,4 @@
-- == 1 -
++ == 1 +
anamorphism == [pop []] swap [dip swons] genrec
app1 == grba infrst

View File

@ -102,7 +102,7 @@ func(-, [A, B|S], [B - A|S]).
func(*, [A, B|S], [B * A|S]).
func(/, [A, B|S], [B / A|S]).
func(=, [A|S], [B|S]) :- B is A.
func(calc, [A|S], [B|S]) :- B is A.
% func(pm, [A, B|S], [C, D|S]) :- C #= A + B, D #= B - A.
% func(pm, [A, B|S], [B + A, B - A|S]).
@ -127,12 +127,25 @@ func(tuck, [A, B|S], [A, B, A|S]).
func(rollup, Si, So) :- func(rolldown, So, Si).
func(uncons, Si, So) :- func(cons, So, Si).
func(>, [A, B|S], [T|S]) :- B #> A #<==> R, r_truth(R, T).
func(<, [A, B|S], [T|S]) :- B #< A #<==> R, r_truth(R, T).
func(=, [A, B|S], [T|S]) :- B #= A #<==> R, r_truth(R, T).
func(>=, [A, B|S], [T|S]) :- B #>= A #<==> R, r_truth(R, T).
func(<=, [A, B|S], [T|S]) :- B #=< A #<==> R, r_truth(R, T).
func(<>, [A, B|S], [T|S]) :- B #\= A #<==> R, r_truth(R, T).
func(>, [A, B|S], [ true|S]) :- B > A.
func(>, [A, B|S], [false|S]) :- \+ B > A.
func(<, [A, B|S], [ true|S]) :- B < A.
func(<, [A, B|S], [false|S]) :- \+ B < A.
func(>=, [A, B|S], [ true|S]) :- B >= A.
func(>=, [A, B|S], [false|S]) :- \+ B >= A.
func(<=, [A, B|S], [ true|S]) :- B =< A.
func(<=, [A, B|S], [false|S]) :- \+ B =< A.
func(=, [A, B|S], [ true|S]) :- B =:= A.
func(=, [A, B|S], [false|S]) :- B =\= A.
func(<>, [A, B|S], [ true|S]) :- B =\= A.
func(<>, [A, B|S], [false|S]) :- B =:= A.
% func(>, [A, B|S], [T|S]) :- B #> A #<==> R, r_truth(R, T).
% func(<, [A, B|S], [T|S]) :- B #< A #<==> R, r_truth(R, T).
% func(=, [A, B|S], [T|S]) :- B #= A #<==> R, r_truth(R, T).
% func(>=, [A, B|S], [T|S]) :- B #>= A #<==> R, r_truth(R, T).
% func(<=, [A, B|S], [T|S]) :- B #=< A #<==> R, r_truth(R, T).
% func(<>, [A, B|S], [T|S]) :- B #\= A #<==> R, r_truth(R, T).
r_truth(0, false).
r_truth(1, true).