Module Type SHARE_MODEL.
Include BA_FACTS.
Parameter EqDec_share: EqDec t.
Existing Instance EqDec_share.
(* Splittability *)
Parameter split : t -> t * t.
(* Token factories *)
Parameter isTokenFactory : t -> nat -> Prop.
Parameter isToken : t -> nat -> Prop.
Parameter create_token : nat -> t -> (t*t).
Parameter split_token : nat -> t -> t*t.

Axiom split_token_correct : forall n1 n2 tok tok1 tok2,
isToken tok (n1+n2) ->
split_token n1 tok = (tok1,tok2) ->
isToken tok1 n1 /\
isToken tok2 n2 /\
join tok1 tok2 tok.