proposition: Lemma mul_parent_does_not_join2 : forall (c0 : Config) (s1 s2 s3 s4 : Site), legal c0 -> legal (rec_copy3_trans c0 s1 s2) -> mul_parent (rec_copy3_trans c0 s1 s2) s3 s4 -> rt c0 s2 = false -> first Message (bm c0 s1 s2) = value Message copy -> s3 <> s2.
proof: Proof. intros. elim H1. intros. generalize (not_reflexive (rec_copy3_trans c0 s1 s2) H0 s0 s5 H5). intro. cut (s0 <> owner). intro. generalize (positive_st (rec_copy3_trans c0 s1 s2) s0 s5 H7 H0 H5). intro. generalize (st_rt (rec_copy3_trans c0 s1 s2) s0 H0 H7 H8). intro. generalize H4; simpl in |- *; intro. generalize H8; simpl in |- *. intro. generalize (st_rt c0 s0 H H7 H11); intro. unfold not in |- *; intro. rewrite H13 in H12. rewrite H12 in H2; discriminate. apply (not_owner_inc3 (rec_copy3_trans c0 s1 s2) s5 owner H0). auto. Qed.
imports: DistributedReferenceCounting.machine4.invariant0 DistributedReferenceCounting.machine4.invariant1 DistributedReferenceCounting.machine4.invariant2 DistributedReferenceCounting.machine4.invariant3 DistributedReferenceCounting.machine4.invariant4