Definition locvisible_of mu := join (foreign_of mu) (local_of mu) .
Definition extvisible_of mu := join (extern_of mu) (pub_of mu).

(* Specifications: *)
Lemma locvisible_sharedprivate: forall mu,
locvisible_of mu = join (shared_of mu) (priv_of mu).
Lemma shared_in_locvisible: forall mu,
inject_incr (shared_of mu) (locvisible_of mu).
Lemma local_in_locvisible: forall mu (WD: SM_wd mu),
inject_incr (local_of mu) (locvisible_of mu).
Lemma private_in_locvisible: forall mu (WD: SM_wd mu),
inject_incr (priv_of mu) (locvisible_of mu).
Lemma pub_in_locvisible: forall mu (WD: SM_wd mu),
inject_incr (pub_of mu) (locvisible_of mu).
Lemma extvisible_sharedunknown: forall mu (WD: SM_wd mu),
extvisible_of mu = join (shared_of mu) (unknown_of mu).
Lemma shared_in_extvisible: forall mu( WD: SM_wd mu),
inject_incr (shared_of mu) (extvisible_of mu).
Lemma unknown_in_extvisible: forall mu (WD: SM_wd mu),
inject_incr (unknown_of mu) (extvisible_of mu).
Lemma locvisible_sharedprivate: forall mu,
locvisible_of mu = join (shared_of mu) (priv_of mu).
Lemma shared_in_locvisible: forall mu,
inject_incr (shared_of mu) (locvisible_of mu).
Lemma local_in_locvisible: forall mu (WD: SM_wd mu),
inject_incr (local_of mu) (locvisible_of mu).
Lemma private_in_locvisible: forall mu (WD: SM_wd mu),
inject_incr (priv_of mu) (locvisible_of mu).
Lemma pub_in_locvisible: forall mu (WD: SM_wd mu),
inject_incr (pub_of mu) (locvisible_of mu).
Lemma extvisible_sharedunknown: forall mu (WD: SM_wd mu),
extvisible_of mu = join (shared_of mu) (unknown_of mu).
Lemma shared_in_extvisible: forall mu( WD: SM_wd mu),
inject_incr (shared_of mu) (extvisible_of mu).
Lemma unknown_in_extvisible: forall mu (WD: SM_wd mu),
inject_incr (unknown_of mu) (extvisible_of mu).