Instance list_PCM (P : Ghost) : Ghost := { valid a := True; Join_G := list_join }.

Lemma list_join_singleton : forall {P : Ghost} n a c l
(Hn : (n < length l)%nat) (Hjoin: join (Some a) (nth n l None) (Some c)),
list_join (list_singleton n a) l (replace_nth n l (Some c)).