Ах, похоже, мое предположение о том, как работает перезапись, было неверным.
Any-comm xs [] prf rewrite sym (++-identityʳ xs) = {!!}
Goal: Any P (xs ++ [])
————————————————————————————————————————————————————————————
prf : Any P ((xs ++ []) ++ [])
P : A → Set (not in scope)
xs : List A
A : Set (not in scope)
Когда я попробовал вышеупомянутое, я был удивлен, увидев, что оно переписало и цель, и предпосылку. Таким образом, способ переписать предпосылку.
Any-comm xs [] prf rewrite ++-identityʳ xs = prf
Я не уверен, должно ли это быть настолько удивительным, но я не заметил этого, несмотря на то, что почти прошел весь том 1 книги PLFA. Это поведение отличается от переписывания Coq.