add subsumes_term/2

This commit is contained in:
Mark Thom
2019-04-28 14:48:12 -06:00
parent 6be03a7f7a
commit d066765248
3 changed files with 12 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "scryer-prolog"
version = "0.8.71"
version = "0.8.72"
authors = ["Mark Thom <markjordanthom@gmail.com>"]
repository = "https://github.com/mthom/scryer-prolog"
description = "A modern Prolog implementation written mostly in Rust."

View File

@@ -223,6 +223,7 @@ The following predicates are built-in to Scryer.
* `setup_call_cleanup/3`
* `sort/2`
* `string/1`
* `subsumes_term/2`
* `term_expansion/2`
* `term_variables/2`
* `throw/1`

View File

@@ -17,8 +17,8 @@
expand_goal/2, expand_term/2, false/0, findall/3, findall/4,
get_char/1, halt/0, number_chars/2, once/1, op/3, read_term/2,
repeat/0, retract/1, set_prolog_flag/2, setof/3,
term_variables/2, throw/1, true/0, write/1, write_canonical/1,
write_term/2, writeq/1]).
subsumes_term/2, term_variables/2, throw/1, true/0, write/1,
write_canonical/1, write_term/2, writeq/1]).
% module resolution operator.
:- op(600, xfy, :).
@@ -815,3 +815,11 @@ number_chars(N, Chs) :-
'$number_to_chars'(N, Chsx),
Chsx = Chs
).
subsumes_term(General, Specific) :-
\+ \+ (
term_variables(Specific, SVs1),
General = Specific,
term_variables(SVs1, SVs2),
SVs1 == SVs2
).