OK, I see. For the Alice960 you want the sliders to be flying w.r.t. piece on the 'other board', but ban the hopping for pieces 'on the same board'.
This looks like legitimate use of non-final mp legs. The issue is that the captureMatrix makes that the p in mp isn't what it looks like, and is no longer guaranteed to be allowed. So eliminating the test on the square occupancy by merging the leg is not justified.
I suppose the correct solution here is to consult the capture matrix before making the decision to merge. If there exists a p-ban for jumping over some types for the piece whose move is being treated, there should be no merging. This can be done, as the capture matrix is known at the time the XBetza move descriptors are compiled.
But this interferes with the case for which I really did this: auto-generated intermediate squares during expansion of bracket notations; the crux there was that I didn't want the p in those intermediates to be subject to the capture matrix, but explicitly written p in the bracket notation should be. I could cure that by using mpo as mode for these auto-generated intermediates, and only apply meging to mpo stepper legs. In theory this leads to the same problem, though; there might also be legitimate uses I am not aware of where one wants the p in an mpo leg to be subject to the capture matrix. I can only hope these would be more rare, as board with holes are not that common. (And forward-backward probes for an edge should be exempted from merging anyway, as this would result in a leg with zero step.)
The problem is that by the time the merging is done, it can no longer be seen whether an intermediate leg was auto-generated or explicitly written, due to bracket notation being handled by a pre-processor to produce XBetza first. In the XBetza all legs are then explicitly written.
I think for the time being I will switch to mpo merging only.
Note that using captureMatrix for restricting a p to friendly or enemy hopping is a good alternative to the dau/cau kludge, and might even be the preferred method as far as presentation to a non-expert reader is concerned.
OK, I see. For the Alice960 you want the sliders to be flying w.r.t. piece on the 'other board', but ban the hopping for pieces 'on the same board'.
This looks like legitimate use of non-final mp legs. The issue is that the captureMatrix makes that the p in mp isn't what it looks like, and is no longer guaranteed to be allowed. So eliminating the test on the square occupancy by merging the leg is not justified.
I suppose the correct solution here is to consult the capture matrix before making the decision to merge. If there exists a p-ban for jumping over some types for the piece whose move is being treated, there should be no merging. This can be done, as the capture matrix is known at the time the XBetza move descriptors are compiled.
But this interferes with the case for which I really did this: auto-generated intermediate squares during expansion of bracket notations; the crux there was that I didn't want the p in those intermediates to be subject to the capture matrix, but explicitly written p in the bracket notation should be. I could cure that by using mpo as mode for these auto-generated intermediates, and only apply meging to mpo stepper legs. In theory this leads to the same problem, though; there might also be legitimate uses I am not aware of where one wants the p in an mpo leg to be subject to the capture matrix. I can only hope these would be more rare, as board with holes are not that common. (And forward-backward probes for an edge should be exempted from merging anyway, as this would result in a leg with zero step.)
The problem is that by the time the merging is done, it can no longer be seen whether an intermediate leg was auto-generated or explicitly written, due to bracket notation being handled by a pre-processor to produce XBetza first. In the XBetza all legs are then explicitly written.
I think for the time being I will switch to mpo merging only.
Note that using captureMatrix for restricting a p to friendly or enemy hopping is a good alternative to the dau/cau kludge, and might even be the preferred method as far as presentation to a non-expert reader is concerned.