Nuprl Definition : map-sig
map-sig{i:l}(Key;Value) ==
  "map":{m:Type| (valueall-type(m)) supposing (valueall-type(Value) and valueall-type(Key))} 
  "eqKey":EqDecider(Key)
  "find":Key ─→ self."map" ─→ (Value?)
  "inDom":{f:Key ─→ self."map" ─→ 𝔹| ∀k:Key. ∀m:self."map".  (↑(f k m) 
⇐⇒ ↑isl(self."find" k m))} 
  "empty":{m:self."map"| ∀k:Key. (¬↑(self."inDom" k m))} 
  "isEmpty":{f:self."map" ─→ 𝔹| ∀m:self."map". (↑(f m) 
⇐⇒ ∀k:Key. (¬↑(self."inDom" k m)))} 
  "update":{f:Key ─→ Value ─→ self."map" ─→ self."map"| 
            ∀m:self."map". ∀k1,k2:Key. ∀v:Value.
              ((self."find" k1 (f k2 v m)) = if self."eqKey" k1 k2 then inl v else self."find" k1 m fi  ∈ (Value?))} 
  "add":{f:Key ─→ Value ─→ self."map" ─→ self."map"| 
         ∀m:self."map". ∀k1,k2:Key. ∀v:Value.
           ((self."find" k1 (f k2 v m))
           = if (self."eqKey" k1 k2) ∧b (¬b(self."inDom" k2 m)) then inl v else self."find" k1 m fi 
           ∈ (Value?))} 
  "remove":{f:Key ─→ self."map" ─→ self."map"| 
            ∀m:self."map". ∀k1,k2:Key.
              ((self."find" k1 (f k2 m)) = if self."eqKey" k1 k2 then inr ⋅  else self."find" k1 m fi  ∈ (Value?))} 
Definitions occuring in Statement : 
deq: EqDecider(T)
, 
band: p ∧b q
, 
valueall-type: valueall-type(T)
, 
bnot: ¬bb
, 
assert: ↑b
, 
ifthenelse: if b then t else f fi 
, 
isl: isl(x)
, 
bool: 𝔹
, 
it: ⋅
, 
uimplies: b supposing a
, 
top: Top
, 
all: ∀x:A. B[x]
, 
iff: P 
⇐⇒ Q
, 
not: ¬A
, 
unit: Unit
, 
set: {x:A| B[x]} 
, 
apply: f a
, 
function: x:A ─→ B[x]
, 
inr: inr x 
, 
inl: inl x
, 
union: left + right
, 
token: "$token"
, 
universe: Type
, 
equal: s = t ∈ T
, 
record-select: r.x
, 
record+: record+, 
record: record(x.T[x])
FDL editor aliases : 
map-sig
map-sig\{i:l\}(Key;Value)  ==
    "map":\{m:Type|  (valueall-type(m))  supposing  (valueall-type(Value)  and  valueall-type(Key))\} 
    "eqKey":EqDecider(Key)
    "find":Key  {}\mrightarrow{}  self."map"  {}\mrightarrow{}  (Value?)
    "inDom":\{f:Key  {}\mrightarrow{}  self."map"  {}\mrightarrow{}  \mBbbB{}|  \mforall{}k:Key.  \mforall{}m:self."map".    (\muparrow{}(f  k  m)  \mLeftarrow{}{}\mRightarrow{}  \muparrow{}isl(self."find"  k  m))\} 
    "empty":\{m:self."map"|  \mforall{}k:Key.  (\mneg{}\muparrow{}(self."inDom"  k  m))\} 
    "isEmpty":\{f:self."map"  {}\mrightarrow{}  \mBbbB{}|  \mforall{}m:self."map".  (\muparrow{}(f  m)  \mLeftarrow{}{}\mRightarrow{}  \mforall{}k:Key.  (\mneg{}\muparrow{}(self."inDom"  k  m)))\} 
    "update":\{f:Key  {}\mrightarrow{}  Value  {}\mrightarrow{}  self."map"  {}\mrightarrow{}  self."map"| 
                        \mforall{}m:self."map".  \mforall{}k1,k2:Key.  \mforall{}v:Value.
                            ((self."find"  k1  (f  k2  v  m))
                            =  if  self."eqKey"  k1  k2  then  inl  v  else  self."find"  k1  m  fi  )\} 
    "add":\{f:Key  {}\mrightarrow{}  Value  {}\mrightarrow{}  self."map"  {}\mrightarrow{}  self."map"| 
                  \mforall{}m:self."map".  \mforall{}k1,k2:Key.  \mforall{}v:Value.
                      ((self."find"  k1  (f  k2  v  m))
                      =  if  (self."eqKey"  k1  k2)  \mwedge{}\msubb{}  (\mneg{}\msubb{}(self."inDom"  k2  m))
                          then  inl  v
                          else  self."find"  k1  m
                          fi  )\} 
    "remove":\{f:Key  {}\mrightarrow{}  self."map"  {}\mrightarrow{}  self."map"| 
                        \mforall{}m:self."map".  \mforall{}k1,k2:Key.
                            ((self."find"  k1  (f  k2  m))
                            =  if  self."eqKey"  k1  k2  then  inr  \mcdot{}    else  self."find"  k1  m  fi  )\} 
Date html generated:
2015_07_17-AM-08_21_59
Last ObjectModification:
2014_07_30-PM-02_34_34
Home
Index