Nuprl Lemma : lookup-list-map-add-prop

∀[Key,Value:Type]. ∀[deqKey:EqDecider(Key)]. ∀[key2:Key]. ∀[val:Value]. ∀[m:lookup-list-map-type(Key;Value)].
∀[key1:Key].
  (lookup-list-map-find(deqKey;key1;lookup-list-map-add(deqKey;key2;val;m))
  = if (deqKey key1 key2) ∧b (¬blookup-list-map-inDom(deqKey;key2;m))
    then inl val
    else lookup-list-map-find(deqKey;key1;m)
    fi 
  ∈ (Value?))


Proof




Definitions occuring in Statement :  lookup-list-map-add: lookup-list-map-add(deqKey;key;val;m),  lookup-list-map-inDom: lookup-list-map-inDom(deqKey;key;m),  lookup-list-map-find: lookup-list-map-find(deqKey;key;m),  lookup-list-map-type: lookup-list-map-type(Key;Value),  deq: EqDecider(T),  band: p ∧b q,  bnot: ¬bb,  ifthenelse: if b then t else f fi ,  uall: ∀[x:A]. B[x],  unit: Unit,  apply: f a,  inl: inl x,  union: left + right,  universe: Type,  equal: s = t ∈ T
Definitions unfolded in proof :  lookup-list-map-type: lookup-list-map-type(Key;Value),  uall: ∀[x:A]. B[x],  member: t ∈ T,  so_lambda: λ2x.t[x],  deq: EqDecider(T),  so_apply: x[s],  implies: P ⇒ Q,  all: ∀x:A. B[x],  prop: ℙ,  lookup-list-map-find: lookup-list-map-find(deqKey;key;m),  lookup-list-map-add: lookup-list-map-add(deqKey;key;val;m),  apply-alist: apply-alist(eq;L;x),  update-alist: update-alist(eq;L;x;z;v.f[v]),  so_lambda: so_lambda(x,y,z.t[x; y; z]),  top: Top,  so_apply: x[s1;s2;s3],  pi1: fst(t),  pi2: snd(t),  exposed-bfalse: exposed-bfalse,  bool: 𝔹,  unit: Unit,  it: ⋅,  btrue: tt,  uiff: uiff(P;Q),  and: P ∧ Q,  uimplies: b supposing a,  eqof: eqof(d),  ifthenelse: if b then t else f fi ,  band: p ∧b q,  bnot: ¬bb,  lookup-list-map-inDom: lookup-list-map-inDom(deqKey;key;m),  list_ind: list_ind,  nil: [],  bfalse: ff,  exists: ∃x:A. B[x],  or: P ∨ Q,  sq_type: SQType(T),  guard: {T},  assert: ↑b,  false: False,  not: ¬A,  bor: p ∨bq

Latex:
\mforall{}[Key,Value:Type].  \mforall{}[deqKey:EqDecider(Key)].  \mforall{}[key2:Key].  \mforall{}[val:Value].
\mforall{}[m:lookup-list-map-type(Key;Value)].  \mforall{}[key1:Key].
    (lookup-list-map-find(deqKey;key1;lookup-list-map-add(deqKey;key2;val;m))
    =  if  (deqKey  key1  key2)  \mwedge{}\msubb{}  (\mneg{}\msubb{}lookup-list-map-inDom(deqKey;key2;m))
        then  inl  val
        else  lookup-list-map-find(deqKey;key1;m)
        fi  )



Date html generated: 2016_05_17-PM-01_51_29
Last ObjectModification: 2015_12_28-PM-08_51_53

Theory : datatype-signatures


Home Index