Definition splittable {A} {JA: Join A}{PA: Perm_alg A}{agA: ageable A}{AgeA: Age_alg A} (Q: Share.t -> pred A) := 
  forall (sh1 sh2 sh3: Share.t) (rsh1: readable_share sh1) (rsh2: readable_share sh2),
    join sh1 sh2 sh3 ->
    Q sh1 * Q sh2 = Q sh3.

Lemma slice_resource_share_join: forall sh1 sh2 sh r, join sh1 sh2 sh -> resource_share r = Some sh -> join (slice_resource sh1 r) (slice_resource sh2 r) r.