Nuprl Lemma : C_DVALUEp-ext
C_DVALUEp() ≡ lbl:Atom × if lbl =a "Null" then Unit
                         if lbl =a "Int" then ℤ
                         if lbl =a "Pointer" then C_LVALUE()?
                         if lbl =a "Array" then lower:ℤ × upper:ℤ × ({lower..upper-} ─→ C_DVALUEp())
                         if lbl =a "Struct" then lbls:Atom List × ({a:Atom| (a ∈ lbls)}  ─→ C_DVALUEp())
                         else Void
                         fi 
Proof
Definitions occuring in Statement : 
C_DVALUEp: C_DVALUEp()
, 
C_LVALUE: C_LVALUE()
, 
l_member: (x ∈ l)
, 
list: T List
, 
int_seg: {i..j-}
, 
ifthenelse: if b then t else f fi 
, 
eq_atom: x =a y
, 
ext-eq: A ≡ B
, 
unit: Unit
, 
set: {x:A| B[x]} 
, 
function: x:A ─→ B[x]
, 
product: x:A × B[x]
, 
union: left + right
, 
int: ℤ
, 
token: "$token"
, 
atom: Atom
, 
void: Void
Lemmas : 
C_DVALUEpco-ext, 
eq_atom_wf, 
bool_wf, 
eqtt_to_assert, 
assert_of_eq_atom, 
subtype_base_sq, 
atom_subtype_base, 
unit_wf2, 
unit_subtype_base, 
it_wf, 
eqff_to_assert, 
equal_wf, 
bool_cases_sqequal, 
bool_subtype_base, 
assert-bnot, 
neg_assert_of_eq_atom, 
C_LVALUE_wf, 
value-type-has-value, 
int-value-type, 
sum-partial-has-value, 
assert_of_le_int, 
subtract_wf, 
zero-le-nat, 
le_wf, 
not-le-2, 
condition-implies-le, 
minus-add, 
minus-one-mul, 
add-swap, 
add-commutes, 
sq_stable__le, 
less-iff-le, 
add_functionality_wrt_le, 
add-associates, 
le-add-cancel, 
C_DVALUEpco_size_wf, 
bool_cases, 
iff_transitivity, 
assert_wf, 
bnot_wf, 
not_wf, 
iff_weakening_uiff, 
assert_of_bnot, 
less_than_transitivity1, 
less_than_irreflexivity, 
lelt_wf, 
int_seg_wf, 
trivial-int-eq1, 
has-value_wf-partial, 
nat_wf, 
set-value-type, 
C_DVALUEp_wf, 
less_than_wf, 
length_wf, 
equal-wf-base-T, 
select_wf, 
l_member_wf, 
length_wf_nat, 
list-subtype, 
list_wf, 
subtype_rel_dep_function, 
C_DVALUEpco_wf, 
set_wf, 
add-nat, 
false_wf, 
sum-nat, 
le_int_wf, 
C_DVALUEp_size_wf, 
nat_properties, 
and_wf, 
squash_wf, 
value-type_wf, 
partial_wf
C\_DVALUEp()  \mequiv{}  lbl:Atom  \mtimes{}  if  lbl  =a  "Null"  then  Unit
                                                  if  lbl  =a  "Int"  then  \mBbbZ{}
                                                  if  lbl  =a  "Pointer"  then  C\_LVALUE()?
                                                  if  lbl  =a  "Array"  then  lower:\mBbbZ{}  \mtimes{}  upper:\mBbbZ{}  \mtimes{}  (\{lower..upper\msupminus{}\}  {}\mrightarrow{}  C\_DVALUEp())
                                                  if  lbl  =a  "Struct"
                                                      then  lbls:Atom  List  \mtimes{}  (\{a:Atom|  (a  \mmember{}  lbls)\}    {}\mrightarrow{}  C\_DVALUEp())
                                                  else  Void
                                                  fi 
Date html generated:
2015_07_17-AM-07_44_06
Last ObjectModification:
2015_01_29-PM-04_39_27
Home
Index