reaction create_share
when
T.create[f]
then
some t : Token | P.share[f,t]
reaction access_revoke
when
P.access[t]
then
P.revoke[t]
reaction access_delete
when
P.access[t]
where
t in f.shared
then
T.delete[f]
reaction access_empty
when
P.access[t]
then
T.empty[]
reaction share_error
when
P.share[f,t]
where
f not in uploaded or some f.shared
then
error
reaction delete_error
when
T.delete[f]
where
some f.shared and f.shared not in P.accessed
then
error
reaction revoke_error
when
P.revoke[t]
where
t not in P.accessed
then
error