Step * 1 1 of Lemma C_Struct_vs_DVALp


1. store C_STOREp()@i
2. fields (Atom × C_TYPE()) List@i
3. (∀u∈fields.let u1,u2 
              in ∀env:C_TYPE_env(). ∀dval:C_DVALUEp().
                   (C_STOREp-welltyped(env;store)
                    (↑C_Struct?(u2))
                    C_TYPE_vs_DVALp(env;u2) dval 
                      if DVp_Struct?(dval)
                        then (∀p∈map(λp.<fst(p), C_TYPE_vs_DVALp(env;snd(p))>;C_Struct-fields(u2)).
                                let a,wt 
                                in a ∈b DVp_Struct-lbls(dval)) ∧b (wt (DVp_Struct-struct(dval) a)))_b
                        else ff
                        fi ))@i
4. env C_TYPE_env()@i
5. lbls Atom List
6. d2 {a:Atom| (a ∈ lbls)}  ─→ C_DVALUEp()
7. C_STOREp-welltyped(env;store)@i
8. True@i
9. True
⊢ ∀i:ℕ||fields||. (↑eval fst(fields[i]) in a ∈b lbls) ∧b (let v2,v3 fields[i] in C_TYPE_vs_DVALp(env;v3) (d2 a)))
⇐⇒ (∀p∈map(λp.<fst(p), C_TYPE_vs_DVALp(env;snd(p))>;fields).↑let a,wt 
                                                              in a ∈b lbls) ∧b (wt (d2 a)))
BY
All Thin }

1
1. fields (Atom × C_TYPE()) List@i
2. env C_TYPE_env()@i
3. lbls Atom List
4. d2 {a:Atom| (a ∈ lbls)}  ─→ C_DVALUEp()
⊢ ∀i:ℕ||fields||. (↑eval fst(fields[i]) in a ∈b lbls) ∧b (let v2,v3 fields[i] in C_TYPE_vs_DVALp(env;v3) (d2 a)))
⇐⇒ (∀p∈map(λp.<fst(p), C_TYPE_vs_DVALp(env;snd(p))>;fields).↑let a,wt 
                                                              in a ∈b lbls) ∧b (wt (d2 a)))


Latex:



1.  store  :  C\_STOREp()@i
2.  fields  :  (Atom  \mtimes{}  C\_TYPE())  List@i
3.  (\mforall{}u\mmember{}fields.let  u1,u2  =  u 
                            in  \mforall{}env:C\_TYPE\_env().  \mforall{}dval:C\_DVALUEp().
                                      (C\_STOREp-welltyped(env;store)
                                      {}\mRightarrow{}  (\muparrow{}C\_Struct?(u2))
                                      {}\mRightarrow{}  C\_TYPE\_vs\_DVALp(env;u2)  dval 
                                            =  if  DVp\_Struct?(dval)
                                                then  (\mforall{}p\mmember{}map(\mlambda{}p.<fst(p),  C\_TYPE\_vs\_DVALp(env;snd(p))>C\_Struct-fields(u2)).
                                                                let  a,wt  =  p 
                                                                in  a  \mmember{}\msubb{}  DVp\_Struct-lbls(dval))
                                                                      \mwedge{}\msubb{}  (wt  (DVp\_Struct-struct(dval)  a)))\_b
                                                else  ff
                                                fi  ))@i
4.  env  :  C\_TYPE\_env()@i
5.  lbls  :  Atom  List
6.  d2  :  \{a:Atom|  (a  \mmember{}  lbls)\}    {}\mrightarrow{}  C\_DVALUEp()
7.  C\_STOREp-welltyped(env;store)@i
8.  True@i
9.  True
\mvdash{}  \mforall{}i:\mBbbN{}||fields||
        (\muparrow{}eval  a  =  fst(fields[i])  in
            a  \mmember{}\msubb{}  lbls)  \mwedge{}\msubb{}  (let  v2,v3  =  fields[i]  in  C\_TYPE\_vs\_DVALp(env;v3)  (d2  a)))
\mLeftarrow{}{}\mRightarrow{}  (\mforall{}p\mmember{}map(\mlambda{}p.<fst(p),  C\_TYPE\_vs\_DVALp(env;snd(p))>fields).\muparrow{}let  a,wt  =  p 
                                                                                                                            in  a  \mmember{}\msubb{}  lbls)  \mwedge{}\msubb{}  (wt  (d2  a)))


By

All  Thin




Home Index