proposition: Lemma owand_ocon_adjoint_d {A} {JA: Join A}{PA: Perm_alg A}: forall P Q R, ocon P Q |-- R <-> P |-- owand Q R.
proof: Proof. intros. rewrite ocon_comm_d. unfold ocon, owand, derives. simpl. split; intros. + apply H. exists h1, h2, h3, h12, a. repeat split; auto. + destruct H0 as [h1 [h2 [h3 [h12 [h23 [? [? [? [? ?]]]]]]]]]. specialize (H h23 H4). specialize (H h1 h2 h3 h12 a). apply H; auto. Qed.
imports: CertiGraph.msl_ext.ramify_tactics CertiGraph.msl_ext.msl_ext VST.msl.msl_direct CertiGraph.msl_ext.sepalg