The lemma split_of_app_right in systems/chord-props/QueryInvariant.v is unprovable as currently stated:
Lemma split_of_app_right :
forall A (l l' : list A) xs a ys,
l ++ l' = xs ++ a :: ys ->
In a l' ->
exists xs',
xs = l ++ xs' /\
l' = xs' ++ a :: ys.
To see why, set l = a0 :: l0 (for some a0 : A and l0 : list A) and xs = []. Then, we have to prove exists xs', [] = a0 :: l0 ++ xs', which is clearly impossible.
It may be possible to save the lemma by ruling out this case (e.g., by requiring xs <> []).
The lemma
split_of_app_rightinsystems/chord-props/QueryInvariant.vis unprovable as currently stated:To see why, set
l = a0 :: l0(for somea0 : Aandl0 : list A) andxs = []. Then, we have to proveexists xs', [] = a0 :: l0 ++ xs', which is clearly impossible.It may be possible to save the lemma by ruling out this case (e.g., by requiring
xs <> []).