Fixpoint extendr {A} (l : list A) ls :=
match l, ls with
| x :: xs, y :: ys => (y ++ [x]) :: extendr xs ys
| _, _ => ls
end.

Lemma readable_share_list_join : forall sh shs sh', sepalg_list.list_join sh shs sh' ->
readable_share sh \/ Exists readable_share shs -> readable_share sh'.