Approved
Core
BLD
PRD
This test highlights the different behavior of forward-chaining vs. backward-chaining engines
The entailment holds, but some engines may have difficulty finding it and/or may behave badly with it. This particular test case may be hard to handle for backward-chaining engines, depending on their implementation of the func:numeric-subtract builtin. In a forward-chaining strategy, the entailment should be found. Note that a backward-chaining engine, which is able to handle the external built-in in the head would avoid non-termination problems on arbitrary other entailment tests with this ruleset by the termination condition in the body.
Chaining_strategy_numeric-subtract_2-premise.rif
http://www.w3.org/2005/rules/test/repository/tc/Chaining_strategy_numeric-subtract_2/Chaining_strategy_numeric-subtract_2-premise.rif
)
Prefix(func )
Prefix(pred )
Group (
Forall ?x ( ex:a(External(func:numeric-subtract(?x 1))) :-
And ( ex:a(?x) External(pred:numeric-greater-than-or-equal(?x 0)))
)
ex:a(10)
)
)
]]>
Chaining_strategy_numeric-subtract_2-conclusion.rif
http://www.w3.org/2005/rules/test/repository/tc/Chaining_strategy_numeric-subtract_2/Chaining_strategy_numeric-subtract_2-conclusion.rif