-
Notifications
You must be signed in to change notification settings - Fork 19
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
Smt rw tac: Added the import to Smt.Reconstruction.Certifying #65
Conversation
This is looking good! Two comments about the last commit (please make a PR before pushing to main, so its easier to review):
|
Also, in for innerArr in arr do
let m := innerArr.size
if m > 1 then
for j in [: m-1] do
let r ← mv'.rewrite (← mv'.getType) (mkAppN assoc #[innerArr[m-j-2]!]) true
mv' ← mv'.replaceTargetEq r.eNew r.eqProof You could also iterate through the |
Oh thanks. This is nicer. |
Yes. I am skipping the last element deliberately. This is also why I iterated over indices instead. I can try iterating through arrays though. |
let n := arr.size | ||
let mut mv' := mv | ||
let assoc := (opsAssocNull op)[0]! | ||
let null := (opsAssocNull op)[1]! |
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 no big deal, but I believe it would be better if opsAssocNull
returned
a pair with the two Expr
instead of an Array, unless you're planning to extend
this function to return more constants in the future. Then you can do
let (assoc, null) := opsAssocNull op
at smtRw
.
(sorry I forgot to publish the comment before)
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, I plan to add more operators.
No description provided.