Rules cannot be recursively applied because the current implementation only allows one variable mask (assigning syntax to variable concepts) to be applied to a rule at a time.
can be used to infer that 2 > 0 given 2 > 1 and 1 > 0 because it just needs to apply the rule once with _x_ assigned to 2 and _z_ assigned 0.
However, given 3 > 2 as well, 3 > 0 cannot be inferred due to the rule needing to be applied once with _x_ assigned to 3 and _z_ assigned to 0 and then again with _x_ assigned to 2 or some other combination.
There is also a performance problems with the current implementation to check existence. It basically brute forces the existential property by trying all known concepts. Instead, the existential property can be satisfied by matching it with an expression that is known to be true. This will prevent trying concepts that have no chance of satisfying the existential property
Rules cannot be recursively applied because the current implementation only allows one variable mask (assigning syntax to variable concepts) to be applied to a rule at a time.
So the rule
can be used to infer that
2 > 0
given2 > 1
and1 > 0
because it just needs to apply the rule once with_x_
assigned to2
and_z_
assigned0
.However, given
3 > 2
as well,3 > 0
cannot be inferred due to the rule needing to be applied once with_x_
assigned to3
and_z_
assigned to0
and then again with_x_
assigned to2
or some other combination.There is also a performance problems with the current implementation to check existence. It basically brute forces the existential property by trying all known concepts. Instead, the existential property can be satisfied by matching it with an expression that is known to be true. This will prevent trying concepts that have no chance of satisfying the existential property