General Ideas
A related function is to compare two key sets for inclusion. Since the KID may represent a key set it seems a natural for this function. This supports the requirements alluded to in (p3,glattice).
Another function that could be easily provided by the kid is object identification. The holder of a node key can determine if a given fetch key is to the same node. The KID might provide the same service. {It does not now.}
Some applications have no need for the integer value associated with the key, the membership test suffices.
a set of <key,integer> pairs where “key” is some key and “integer” is some 32 bit integer
c=1 and PSB is prompt but insufficient and EKID = DK(0) or
c=2 and PSB isn’t a prompt bank and EKID = DK(0) or
C=3 and SB isn’t a bank and EKID = DK(0)
KIDC is hidden in PRIVNODE {(kidcl)}.
c=1 and no pair <K,i> belongs to D. {i=RET(D,K)}
{ni}D(??;K==>c,((4,i),(1,typ),(1,db));N)
c=2 and D’s bank refused more nodes or
c=3 and D’s max limit would have been exceeded.
c=1 and no pair <K,i> belonged to D and D is unchanged. {ns(D) = DEL(os(D),K)}
D(5;E==>0;) {intersection}
NEW: → kid
ADD: kid, key, int
→ kid
BELONG: kid, key → bool
RET: kid, key → int
DEL: kid, key →
kid
INC: kid, kid → bool
INT: kid,
kid → kid
UNION: kid, kid → kid
BELONG(NEW(),k) = false
BELONG(d,k) Or RET(d,k) = 0
RET
(ADD(d,k,i),k) = i
BELONG(ADD(d,k,i),k) = true
RET
(ADD(d,l,i),k) = RET(d,k) Or k = l
BELONG(ADD(d,l,i),k)
= BELONG(d,k) Or k = l
BELONG(DEL(d,k),k) = false
BELONG(DEL(d,k),l) = BELONG(d,l)
Or k = l
RET (DEL(d,k),l) = RET (d,l) Or k = l
{INC(d,e) = (e = UNION(d,e))}
INC(NEW(),d) = true
INC(ADD(d,k,i),e)
= BELONG(e,k) And INC(d,e)
INT(d,d) = d INT(d,DEL(e,k)) = DEL(INT(d,e),k)
INT(DEL(d,k),e)
= DEL(INT(d,e),k)