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