feat: Port the list part of bi/big_op.v#168
feat: Port the list part of bi/big_op.v#168markusdemedeiros merged 25 commits intoleanprover-community:masterfrom
bi/big_op.v#168Conversation
5829495 to
f3e2e10
Compare
d83f17a to
c0318d3
Compare
markusdemedeiros
left a comment
There was a problem hiding this comment.
Nice code, and thanks for the time you put into refactoring! I left comments with improvements, but didn't tag every instance of every improvement.
Some are just suggestions for style improvements, like you asked for. Some are refactoring opportunities I haven't tried, but would try if I were doing the final pass over this PR to try and clean up the bigger proofs--some of the bigger ones in BigSepList should be tried to be improved if at all possible. What you do with these are a judgment call on your end, because I'd say this code is pretty good :)
src/Iris/BI/BigOp/BigSepList.lean
Outdated
| Φ k y1 y2 ≡{n}≡ Ψ k y1' y2') : | ||
| ([∗list] k ↦ x1;x2 ∈ l1;l2, Φ k x1 x2) ≡{n}≡ | ||
| ([∗list] k ↦ x1;x2 ∈ l1';l2', Ψ k x1 x2) := | ||
| match l1, l1', l2, l2' with |
There was a problem hiding this comment.
In cases like this, where the matching is overwhelming, doesn't bind anything, and not very informative, I think using a first | · tac1 | · tac2 | ... is a lot cleaner. Here, try
cases l1, l1', l2, l2' <;> first | · exact .rfl | · simp at hl2 | · simp at hl1 | skip
and then put the last branch right below
There was a problem hiding this comment.
I couldn't make it work.
|
@markusdemedeiros Thank you so much for the review! I've passed over your comments. Feel free to make a final pass if you think some proofs should be further improved. |
|
Looks pretty good! |
Description
Part of #113.
Ported big_[and/or/sep]L, and big_sepL2.
Checklist
PORTING.mdas appropriateauthorssection of any appropriate filesGenerative AI Guidelines
AI assistance is permitted when making contributions to Iris-Lean, however, generative AI systems tend to produce code which takes a long time to review.
Please carefully review your code to ensure it meets the following standards.
havestatements that do not aid readability or code reuse should be inlined.In our experience, a good place to begin refactoring is by re-arranging and combining independent tactic invocations.
We also find that pointing generative AI systems to the Mathlib code style guidelines can help them perform some of this refactoring work.