Closed bollu closed 18 hours ago
awaiting-review
Mathlib CI status (docs):
nightly-with-mathlib
branch. Try git rebase 82666e5e7cfc541659459bd450f5f1b24a4080eb --onto 3035d2f8f689b52963f49b2414414913ca296953
. (2024-05-15 17:54:57)nightly-with-mathlib
branch. Try git rebase 73a0c73c7cc465ce8674eacaaa831e9ee0e95950 --onto d984030c6a683a80313917b6fd3e77abdf497809
. (2024-05-23 14:25:36)nightly-with-mathlib
branch. Try git rebase 73a0c73c7cc465ce8674eacaaa831e9ee0e95950 --onto b0c1112471a3f38859d9738184d21132b7d9cd0c
. (2024-05-25 01:50:13)nightly-with-mathlib
branch. Try git rebase 73a0c73c7cc465ce8674eacaaa831e9ee0e95950 --onto fe17b82096bf4825d83a36f220d79a6dadebf5c8
. (2024-05-27 11:09:32)awaiting-review
awaiting-review
Many stylistic comments, but I'm now satisfied that the main proof really requires this much talking about Int.negSucc
! Hopefully we can merge soon.
awaiting-author
@semorrison I've cleaned up the proof, thanks a lot for your detailed stylistic comments.
awaiting-review
In the course of the development, I grabbed facts about right shifting over integers from
mathlib4
.The core proof strategy is to perform a case analysis of the msb:
msb = false
, thensshiftRight = ushiftRight
.msb = true
. thenx >>>s i = ~~~(~~~(x >>>u i))
. The double negation introduces the high1
bits that one expects of the arithmetic shift.