proposition: Lemma ocon_sepcon_i {A: Type} {JA: Join A} {SA: Sep_alg A} {PA : Perm_alg A} {AG : ageable A} {AA : Age_alg A}: forall P Q, disjointed P Q -> ocon P Q |-- P * Q.
proof: Proof. unfold ocon, sepcon, disjointed, derives; simpl. intros. destruct H0 as [h1 [h2 [h3 [h12 [h23 [? [? [? [? ?]]]]]]]]]. destruct (H h1 h2 h3 h12 h23 H0 H1 H3 H4) as [? ?]. apply join_comm in H0. apply H5 in H0. apply H5 in H1. subst. exists h12, h23. auto. Qed.
imports: VST.msl.msl_standard VST.msl.corable CertiGraph.msl_ext.ramify_tactics CertiGraph.msl_ext.msl_ext CertiGraph.msl_ext.sepalg