Nuprl Lemma : C_DVALUEp_ind_wf
∀[A:Type]. ∀[R:A ⟶ C_DVALUEp() ⟶ ℙ]. ∀[v:C_DVALUEp()]. ∀[Null:x:Unit ⟶ {x1:A| R[x1;DVp_Null(x)]} ].
∀[Int:int:ℤ ⟶ {x:A| R[x;DVp_Int(int)]} ]. ∀[Pointer:ptr:(C_LVALUE()?) ⟶ {x:A| R[x;DVp_Pointer(ptr)]} ].
∀[Array:lower:ℤ
        ⟶ upper:ℤ
        ⟶ arr:({lower..upper-} ⟶ C_DVALUEp())
        ⟶ (u:{lower..upper-} ⟶ {x:A| R[x;arr u]} )
        ⟶ {x:A| R[x;DVp_Array(lower;upper;arr)]} ]. ∀[Struct:lbls:(Atom List)
                                                             ⟶ struct:({a:Atom| (a ∈ lbls)}  ⟶ C_DVALUEp())
                                                             ⟶ (u:{a:Atom| (a ∈ lbls)}  ⟶ {x:A| R[x;struct u]} )
                                                             ⟶ {x:A| R[x;DVp_Struct(lbls;struct)]} ].
  (C_DVALUEp_ind(v;
                 DVp_Null(x)
⇒ Null[x];
                 DVp_Int(int)
⇒ Int[int];
                 DVp_Pointer(ptr)
⇒ Pointer[ptr];
                 DVp_Array(lower,upper,arr)
⇒ rec1.Array[lower;upper;arr;rec1];
                 DVp_Struct(lbls,struct)
⇒ rec2.Struct[lbls;struct;rec2])  ∈ {x:A| R[x;v]} )
Proof
Definitions occuring in Statement : 
C_DVALUEp_ind: C_DVALUEp_ind, 
DVp_Struct: DVp_Struct(lbls;struct)
, 
DVp_Array: DVp_Array(lower;upper;arr)
, 
DVp_Pointer: DVp_Pointer(ptr)
, 
DVp_Int: DVp_Int(int)
, 
DVp_Null: DVp_Null(x)
, 
C_DVALUEp: C_DVALUEp()
, 
C_LVALUE: C_LVALUE()
, 
l_member: (x ∈ l)
, 
list: T List
, 
int_seg: {i..j-}
, 
uall: ∀[x:A]. B[x]
, 
prop: ℙ
, 
so_apply: x[s1;s2;s3;s4]
, 
so_apply: x[s1;s2;s3]
, 
so_apply: x[s1;s2]
, 
so_apply: x[s]
, 
unit: Unit
, 
member: t ∈ T
, 
set: {x:A| B[x]} 
, 
apply: f a
, 
function: x:A ⟶ B[x]
, 
union: left + right
, 
int: ℤ
, 
atom: Atom
, 
universe: Type
Definitions unfolded in proof : 
uall: ∀[x:A]. B[x]
, 
member: t ∈ T
, 
C_DVALUEp_ind: C_DVALUEp_ind, 
so_apply: x[s1;s2;s3]
, 
so_apply: x[s1;s2;s3;s4]
, 
so_apply: x[s]
, 
so_apply: x[s1;s2]
, 
C_DVALUEp-definition, 
C_DVALUEp-induction, 
uniform-comp-nat-induction, 
C_DVALUEp-ext, 
eq_atom: x =a y
, 
it: ⋅
, 
bool_cases_sqequal, 
eqff_to_assert, 
any: any x
, 
btrue: tt
, 
bfalse: ff
, 
top: Top
, 
all: ∀x:A. B[x]
, 
implies: P 
⇒ Q
, 
has-value: (a)↓
, 
so_lambda: so_lambda(x,y,z,w.t[x; y; z; w])
, 
so_lambda: λ2x.t[x]
, 
uimplies: b supposing a
, 
strict4: strict4(F)
, 
and: P ∧ Q
, 
prop: ℙ
, 
guard: {T}
, 
or: P ∨ Q
, 
squash: ↓T
, 
subtype_rel: A ⊆r B
Lemmas referenced : 
C_DVALUEp-definition, 
C_DVALUEp-induction, 
uniform-comp-nat-induction, 
C_DVALUEp-ext, 
bool_cases_sqequal, 
eqff_to_assert, 
set_wf, 
all_wf, 
DVp_Struct_wf, 
l_member_wf, 
list_wf, 
DVp_Array_wf, 
int_seg_wf, 
DVp_Pointer_wf, 
C_LVALUE_wf, 
DVp_Int_wf, 
DVp_Null_wf, 
unit_wf2, 
C_DVALUEp_wf, 
base_wf, 
lifting-strict-atom_eq, 
is-exception_wf, 
has-value_wf_base, 
top_wf
Rules used in proof : 
sqequalSubstitution, 
sqequalTransitivity, 
computationStep, 
sqequalReflexivity, 
isect_memberFormation, 
introduction, 
cut, 
sqequalRule, 
isect_memberEquality, 
voidElimination, 
voidEquality, 
thin, 
lemma_by_obid, 
hypothesis, 
lambdaFormation, 
because_Cache, 
sqequalSqle, 
divergentSqle, 
callbyvalueDecide, 
sqequalHypSubstitution, 
unionEquality, 
unionElimination, 
sqleReflexivity, 
equalityEquality, 
equalityTransitivity, 
equalitySymmetry, 
hypothesisEquality, 
dependent_functionElimination, 
independent_functionElimination, 
decideExceptionCases, 
axiomSqleEquality, 
exceptionSqequal, 
baseApply, 
closedConclusion, 
baseClosed, 
isectElimination, 
independent_isectElimination, 
independent_pairFormation, 
inrFormation, 
imageMemberEquality, 
imageElimination, 
inlFormation, 
instantiate, 
extract_by_obid, 
applyEquality, 
lambdaEquality, 
isectEquality, 
functionEquality, 
cumulativity, 
universeEquality, 
setEquality, 
intEquality, 
atomEquality, 
setElimination, 
rename, 
dependent_set_memberEquality, 
axiomEquality
Latex:
\mforall{}[A:Type].  \mforall{}[R:A  {}\mrightarrow{}  C\_DVALUEp()  {}\mrightarrow{}  \mBbbP{}].  \mforall{}[v:C\_DVALUEp()].
\mforall{}[Null:x:Unit  {}\mrightarrow{}  \{x1:A|  R[x1;DVp\_Null(x)]\}  ].  \mforall{}[Int:int:\mBbbZ{}  {}\mrightarrow{}  \{x:A|  R[x;DVp\_Int(int)]\}  ].
\mforall{}[Pointer:ptr:(C\_LVALUE()?)  {}\mrightarrow{}  \{x:A|  R[x;DVp\_Pointer(ptr)]\}  ].
\mforall{}[Array:lower:\mBbbZ{}
                {}\mrightarrow{}  upper:\mBbbZ{}
                {}\mrightarrow{}  arr:(\{lower..upper\msupminus{}\}  {}\mrightarrow{}  C\_DVALUEp())
                {}\mrightarrow{}  (u:\{lower..upper\msupminus{}\}  {}\mrightarrow{}  \{x:A|  R[x;arr  u]\}  )
                {}\mrightarrow{}  \{x:A|  R[x;DVp\_Array(lower;upper;arr)]\}  ].  \mforall{}[Struct:lbls:(Atom  List)
                                                                                                                          {}\mrightarrow{}  struct:(\{a:Atom|  (a  \mmember{}  lbls)\} 
                                                                                                                                              {}\mrightarrow{}  C\_DVALUEp())
                                                                                                                          {}\mrightarrow{}  (u:\{a:Atom|  (a  \mmember{}  lbls)\}    {}\mrightarrow{}  \{x:A| 
                                                                                                                                                                                  R[x;struct 
                                                                                                                                                                                          u]\}  )
                                                                                                                          {}\mrightarrow{}  \{x:A| 
                                                                                                                                  R[x;DVp\_Struct(lbls;struct)]\}  ].
    (C\_DVALUEp\_ind(v;
                                  DVp\_Null(x){}\mRightarrow{}  Null[x];
                                  DVp\_Int(int){}\mRightarrow{}  Int[int];
                                  DVp\_Pointer(ptr){}\mRightarrow{}  Pointer[ptr];
                                  DVp\_Array(lower,upper,arr){}\mRightarrow{}  rec1.Array[lower;upper;arr;rec1];
                                  DVp\_Struct(lbls,struct){}\mRightarrow{}  rec2.Struct[lbls;struct;rec2])    \mmember{}  \{x:A|  R[x;v]\}  )
Date html generated:
2016_05_16-AM-08_51_03
Last ObjectModification:
2016_01_17-AM-09_44_15
Theory : C-semantics
Home
Index