Closed unp1 closed 10 months ago
Attention: 31 lines
in your changes are missing coverage. Please review.
Comparison is base (
0ab2555
) 37.86% compared to head (879d3f7
) 37.86%.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Not for this PR, but we should have a discussion about what our proof object should have as basic data structure. My idea:
merge references and linked goals to once concept independent of merge rule or proof caching
allow to register reference resolvers that can deal with references
ask before saving (in the GUI) if references should be resolved
- if yes, resolve and then pass the proof to the
OutputStreamProofSaver
- if not, the proof is passed to
OutputStreamProofSaver
which just saves the references (and does not resolve)
I can see how to resolve a cached proof reference (just copy the steps). But I don't really understand the difference between resolving and saving a linked goal yet. A linked goal is always "resolved" by the branch it is linked to, right?
Not for this PR, but we should have a discussion about what our proof object should have as basic data structure. My idea:
- merge references and linked goals to once concept independent of merge rule or proof caching
- allow to register reference resolvers that can deal with references
ask before saving (in the GUI) if references should be resolved
- if yes, resolve and then pass the proof to the
OutputStreamProofSaver
- if not, the proof is passed to
OutputStreamProofSaver
which just saves the references (and does not resolve)I can see how to resolve a cached proof reference (just copy the steps). But I don't really understand the difference between resolving and saving a linked goal yet. A linked goal is always "resolved" by the branch it is linked to, right?
yes, the resolver would be the application of the merge rule (so the resolver would just be the identity and the correctness justification, the correctness proof of the merge rule). But we would have a common framework for both cases. So we would get rid of the special "linked" case.
This commit factors out pruning, saving and reference resolving functionality to reduce the dependencies of Proof and to make it later easier to realise correct synchronization as well as saving proofs.
Not for this PR, but we should have a discussion about what our proof object should have as basic data structure. My idea:
OutputStreamProofSaver
OutputStreamProofSaver
which just saves the references (and does not resolve)CopyReferenceResolver.copyCachedGoals(proof, null, null, null);
fromOutputStreamProofSaver
. As the saver should not have specific knowledge and it should not change the proof object while saving