Document list_remove and list_remove_list.
Wow, these are strange functions... why would they even be partial? My expectation would have been for
list_removeto leave the list unchanged if
xis not in there.
Well, they were there, and while reading the code I decided to document them ;)
It seems that they are mostly used to prove that contains is decidable. The key lemma for that is:
l1 `contains` l2 ↔ is_Some (list_remove_list l1 l2).