-
Notifications
You must be signed in to change notification settings - Fork 138
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 explanations for multi_rewrite #231
Comments
Sorry, explanations do not currently properly support multipatterns. We should add this to the documentation. |
I see... But, anyway, could you please tell if it will hypothetically work? I've seen your post on the topic of backward rewrites. As I understood, there you are explaining why it's impossible to construct a e-graph, not treating the rewrites as symmetrical operators, but, at the same time, the |
I think they partially work right now, but don't guarantee that the proof term actually matches the multi-rewrite (since the multirewrite could have matched multiple terms somewhere in the egraph). As for being displayed weirdly, we could fix that by giving a name to the multirewrite instead of printing the weird debug string |
I see, thank you, I will try to get the real names of the multi-rewrites. But still, I don't get one thing. Isn't multirewrite a solution to the problem "how to turn off backward rewrites"? |
No- "backwards rewrites" can still happen when you use multi-rewrites. Did that help? |
Yeah, I understand that simply multi-rewrites will not solve the problem. I am talking about the idea used in
|
I think that even when you use rewrites like that one, a proof may still contain "backward" rewrites due to congruence. |
I tried creating a graph from term |
It sounds like the terms were not equivalent- |
I've set them to true, yes. Unfortunately, I now tried making a min-repr example for you, but now it seems to proof things in both directions. I guess I made some mistake last time testing. Well, thank you for your help and explanations. I guess I am now clear with the way things work. However, I cannot solve my problem using egg( |
I'm currently working on proofs for multi patterns in egglog: When that is done it will support this feature |
Hi everyone!
I was exploring proof construction with egg. I needed to have non-symmetrical rules, so that when I check
(a, b)
for equivalence it is true, and(b, a)
is not. I used a hack fromtests/prop.rs
with multi_rewrite, but I am facing something weird right now. If anExplanation<L>
provided byexplain_equivalence
contains amulti_rewrite
rule, its name in the graph is something like.../.cargo/registry/src/github.com-1ecc6299db9ec823/egg-0.9.3/src/multipattern.rs:167:32
. I have just added a printing of a proof totests/prop.rs
here.The text was updated successfully, but these errors were encountered: