Closed robblanco closed 7 years ago
Unless you substitute logic variables for X
, Y
, and Z
, they will have tag Constant
, which means that they are not instantiable on the right. You can see this by uncommenting show_tag
in term.ml, which will show you the tags on all variables.
I mean setting show_tag
to true
.
In the runtime equivalent of the test (in the context of my program) they are proper logic variables, or I have interpreted them to be, i.e., they will be prettyprinted as ?1
, ?2
, etc. I will take another look.
Indeed, the analogs in my program are logic variables. The test doesn't reflect this, so I will change it and see what happens. I'm still pretty sure the error is there.
I tracked down the error down to my local flavor of the search
tactic, thanks to your debugging tip. I have found inspecting variables programmatically rather inconvenient, and that helped narrow down an incorrect assumption. I think at least some variable attributes should be readable, but that's a discussion for another day. I'm closing the issue now.
I have run into and isolated the following issue. My expectation is that
Unify.try_right_unify_cpairs
should succeed, but it does not. I have run this through @thatdalemiller, and he seems to agree, provided that I did not miss anything important.The following test on the default signature reproduces the problem. It can be added directly to
Test_unify
, or taken from branchbug-try_right_unify_cpairs
in my local fork.