Skip to content
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

Proof Slicer always active #3301

Closed
unp1 opened this issue Oct 17, 2023 · 2 comments · Fixed by #3309
Closed

Proof Slicer always active #3301

unp1 opened this issue Oct 17, 2023 · 2 comments · Fixed by #3309
Assignees

Comments

@unp1
Copy link
Member

unp1 commented Oct 17, 2023

Description

The dependency tracking of the proof slicer is always active even during automatic proof search.

Additional information

The implementation of ruleApplied() contains several loops, hence, this could be a performance issue.
The other reason (and why I looked at it), if something goes wrong there, the proof cannot be continued.

My suggestions would be:

  • listen to the event for autoModeStarted() and unregister when that happens (when it restart the analysis needs to be rebuild or one can store at the starting event the relevant nodes and then replay from there?)
  • allow the user to diconnect from the dependency tracking (unchecking the dependency tracking checkbox, does not unregister the listener)
  • Question: Would it be possible to do the dependency tracking first once we decide to slice proof?

  • Commit:
@unp1 unp1 added the keyext.slicing Module: keyext.slicing label Oct 17, 2023
@FliegendeWurst
Copy link
Member

Question: Would it be possible to do the dependency tracking first once we decide to slice proof?

I think there was a reason I didn't implement it this way in the first place. But I will check again.

@FliegendeWurst
Copy link
Member

FliegendeWurst commented Oct 20, 2023

Question: Would it be possible to do the dependency tracking first once we decide to slice proof?

I think there was a reason I didn't implement it this way in the first place. But I will check again.

Just had a look. It seems it is just easier to gather the data using RuleAppInfo (added/removed formulas). It's definitely possible to construct the dependency graph without running the tracker all the time.

The implementation of ruleApplied() contains several loops, hence, this could be a performance issue.

I did some profiling recently and the dependency tracking had almost no impact on performance (<1%). The runtime is approximately O(input formulas * output formulas) per node.
But it is indeed possible that the tracking code could throw an exception.

There is one benefit of always tracking dependencies: the "show proof step that created this formula" action isn't available otherwise.

github-merge-queue bot pushed a commit that referenced this issue Oct 25, 2023
Fixes #3301 by adding an option to disable the dependency tracker and
adding a way to create the dependency graph after the proof is done.

cc @unp1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants