Definition before_symbol_cancel (P Q: list mpred) (res: option mpred): Prop :=
match res with
| Some R => fold_right_sepcon P |-- fold_right_sepcon Q * R
| None => fold_right_sepcon P |-- fold_right_sepcon Q
end.

Lemma symbolic_cancel_setup: forall P P' Q Q' Q'' Qr,
construct_fold_right_sepcon P P' ->
construct_fold_right_sepcon Q Q' ->
fold_abnormal_mpred Q' Q'' Qr ->
before_symbol_cancel P' Q'' Qr ->
P |-- Q.