-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LRS updates and fixes #643
Conversation
…he corrosponding fix made matters worse)
…ck (just moved an existing rule a bit forward)
…lead to a redefinition of the PassiveClauseContainer LRS-interface, hopefully to something easier to understand. Will now check if this is equivalent (or better) performance-wise.
…eClausesUnderConstructionOnLimits
…ion (both queus are always active)
…cessarilyExceedLimits in onLimitsUpdated to delete even more
…; also a fix where mayBeAbleToDiscriminateClausesUnderConstructionOnLimits is more precise now
…t lead to better performance in general)
FOF TPTP run with
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is much nicer code. Big experimental improvements, too! Can we treat lrd
with suspicion and eventually delete if it doesn't give any benefit?
bool andThatsIt = false; | ||
bool hasAgeLimitStrike = passiveClauseContainer && passiveClauseContainer->mayBeAbleToDiscriminateClausesUnderConstructionOnLimits() | ||
&& passiveClauseContainer->exceedsAgeLimit(numPositiveLiteralsLowerBound, inf, andThatsIt); | ||
if (hasAgeLimitStrike && andThatsIt) { // we are dealing with purely age-limited container (no need for weight-related investigations) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What are the semantics of andThatsIt
? The container only discriminates by age?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it's the weird -arw 1:0
corner case.
I agree we could simplify things here if we agreed that pure age container is not worth extra fancyness in the code.
Otherwise, I was just trying to do my homework to the end ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
'A' for the homework! OK - I was just thinking if so that you could have a member function isPureAgeContainer() const
or even a static (if the inheritance stuff works out) that does that bit, and thereby remove the need for the out-parameter here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's definitely to the effect of isPureAgeContainer
. But I think we would need another virtual function in the interface for this, don't you?
I guess I can still easily kick this out, check how much we lose in the -awr 1:0
case and if it's bearable, simplify, but leave a comment on how the homework should have been done?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please don't kick it out, it seems like the nice way of doing things! I intended adding another virtual function to the interface like you say, but if you don't like that solution this one seems fine to me. :-)
Yes, it would be nice if we could spider-out A potential explanation for why retroactive deletions are not so good is that it takes extra effort to remove these clauses and we have "already payed for" them (through inter-reductions on entering passive) so might just keep them for chance of leading to a "luck proof" trough reductions. (As LRS is deleting clauses on the grounds they will most likely not be feasible parents for GENERATING inferences only.) |
Adding one more boost - Unprocessed doing FIFO instead of LIFO, moves us up by ~30 problems here: 8452 ['problemsSTD_mlf8777_default_i5000.pkl'] [ |
38a3bce
to
687505b
Compare
687505b
to
045bd83
Compare
This is a result of some cleanup / refactoring / inspection efforts of LRS and the related code mostly around the PassiveContainer and its descendants.
(Ultimately, the goal was to create AWPassiveContainer as a generic, templated blend of two single queue
AgeBasedPassiveClauseContainer : public SingleQueuePassiveClauseContainer<AgeQueue>
andWeightBasedPassiveClauseContainer : public SingleQueuePassiveClauseContainer<WeightQueue>
, which are now provided, and later use such CompositePassiveClauseContainer<C1,C2> for further experiments. However, this ambitious bit is not achieved, yet.)Major things done:
fulfilsAgeLimit
/fulfilsWeightLimit
where the buggy pattern ofmeant that the second half of the condition never triggered and the corresponding computation was useless.
fulfilsWeightLimit
lead to a performance degradation and so I instead kicked out_weightSelectionMaxAge
and we no longer maintain the age tie breaker in the stored limit on the weight queueI renamed a file in the process, so the part of the diff is not very useful, sorry! However, I will soon add some performance results to compensate.