Parameter split_token : nat -> t -> t*t.

(* Specifications: *)
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.
Axiom factoryOverlap : forall f1 f2 n1 n2,
isTokenFactory f1 n1 -> isTokenFactory f2 n2 -> glb f1 f2 <> bot.
Axiom fullFactory : forall x, isTokenFactory x 0 <-> x = top.
Axiom identityToken : forall x, isToken x 0 <-> x = bot.
Axiom nonidentityToken : forall x n, (n > 0)%nat -> isToken x n -> x <> bot.
Axiom nonidentityFactory : forall x n, isTokenFactory x n -> x <> bot.
Parameter rel : t -> t -> t.