Nuprl Lemma : C_Array-elem_vs_DVALp

store:C_STOREp(). ∀ctyp:C_TYPE(). ∀env:C_TYPE_env(). ∀dval:C_DVALUEp(). ∀n:ℤ.
  (C_STOREp-welltyped(env;store)
   (↑C_Array?(ctyp))
   (0 ≤ n)
   n < C_Array-length(ctyp)
   (↑(C_TYPE_vs_DVALp(env;ctyp) dval))
   (↑(C_TYPE_vs_DVALp(env;C_Array-elems(ctyp)) (DVp_Array-arr(dval) (DVp_Array-lower(dval) n)))))


Proof




Definitions occuring in Statement :  C_STOREp-welltyped: C_STOREp-welltyped(env;store) C_STOREp: C_STOREp() C_TYPE_vs_DVALp: C_TYPE_vs_DVALp(env;ctyp) DVp_Array-arr: DVp_Array-arr(v) DVp_Array-lower: DVp_Array-lower(v) C_DVALUEp: C_DVALUEp() C_TYPE_env: C_TYPE_env() C_Array-elems: C_Array-elems(v) C_Array-length: C_Array-length(v) C_Array?: C_Array?(v) C_TYPE: C_TYPE() assert: b less_than: a < b le: A ≤ B all: x:A. B[x] implies:  Q apply: a add: m natural_number: $n int:
Definitions unfolded in proof :  all: x:A. B[x] implies:  Q ext-eq: A ≡ B and: P ∧ Q member: t ∈ T subtype_rel: A ⊆B uall: [x:A]. B[x] bool: 𝔹 unit: Unit it: btrue: tt uiff: uiff(P;Q) uimplies: supposing a sq_type: SQType(T) guard: {T} eq_atom: =a y ifthenelse: if then else fi  C_Void: C_Void() C_Array-length: C_Array-length(v) pi2: snd(t) C_Array?: C_Array?(v) pi1: fst(t) assert: b bfalse: ff C_Array-elems: C_Array-elems(v) false: False exists: x:A. B[x] prop: or: P ∨ Q bnot: ¬bb C_Int: C_Int() C_Struct: C_Struct(fields) C_Array: C_Array(length;elems) C_Pointer: C_Pointer(to) nat: C_TYPE_vs_DVALp: C_TYPE_vs_DVALp(env;ctyp) C_TYPE_ind: C_TYPE_ind DVp_Null: DVp_Null(x) DVp_Array?: DVp_Array?(v) DVp_Array-lower: DVp_Array-lower(v) DVp_Array-upper: DVp_Array-upper(v) DVp_Array-arr: DVp_Array-arr(v) DVp_Int: DVp_Int(int) DVp_Pointer: DVp_Pointer(ptr) DVp_Array: DVp_Array(lower;upper;arr) DVp_Struct: DVp_Struct(lbls;struct) let: let band: p ∧b q le: A ≤ B so_lambda: λ2x.t[x] int_seg: {i..j-} lelt: i ≤ j < k ge: i ≥  decidable: Dec(P) satisfiable_int_formula: satisfiable_int_formula(fmla) not: ¬A top: Top so_apply: x[s] iff: ⇐⇒ Q rev_implies:  Q l_all: (∀x∈L.P[x])
Lemmas referenced :  select-upto length_upto assert-bl-all assert_of_band iff_weakening_uiff iff_transitivity l_all_wf2 int_subtype_base equal-wf-T-base lelt_wf int_formula_prop_eq_lemma int_formula_prop_less_lemma intformeq_wf intformless_wf decidable__lt int_formula_prop_wf int_term_value_constant_lemma int_term_value_var_lemma int_term_value_subtract_lemma int_formula_prop_le_lemma int_formula_prop_not_lemma int_formula_prop_and_lemma itermConstant_wf itermVar_wf itermSubtract_wf intformle_wf intformnot_wf intformand_wf satisfiable-full-omega-tt decidable__le nat_properties add-member-int_seg1 l_member_wf upto_wf int_seg_wf bl-all_wf assert_of_eq_int subtract_wf eq_int_wf C_DVALUEp-ext C_STOREp_wf C_TYPE_wf C_TYPE_env_wf C_DVALUEp_wf C_STOREp-welltyped_wf C_Array?_wf le_wf nat_wf C_Array-length_wf less_than_wf C_TYPE_vs_DVALp_wf assert_wf neg_assert_of_eq_atom assert-bnot bool_subtype_base bool_cases_sqequal equal_wf eqff_to_assert it_wf unit_subtype_base atom_subtype_base subtype_base_sq assert_of_eq_atom eqtt_to_assert bool_wf eq_atom_wf C_TYPE-ext
Rules used in proof :  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity lambdaFormation cut lemma_by_obid promote_hyp sqequalHypSubstitution productElimination thin hypothesis_subsumption hypothesis hypothesisEquality applyEquality sqequalRule isectElimination tokenEquality unionElimination equalityElimination equalityTransitivity equalitySymmetry independent_isectElimination instantiate cumulativity atomEquality dependent_functionElimination independent_functionElimination because_Cache voidElimination dependent_pairFormation equalityEquality lambdaEquality setElimination rename natural_numberEquality intEquality dependent_set_memberEquality independent_pairFormation int_eqEquality isect_memberEquality voidEquality computeAll setEquality productEquality baseApply closedConclusion baseClosed

Latex:
\mforall{}store:C\_STOREp().  \mforall{}ctyp:C\_TYPE().  \mforall{}env:C\_TYPE\_env().  \mforall{}dval:C\_DVALUEp().  \mforall{}n:\mBbbZ{}.
    (C\_STOREp-welltyped(env;store)
    {}\mRightarrow{}  (\muparrow{}C\_Array?(ctyp))
    {}\mRightarrow{}  (0  \mleq{}  n)
    {}\mRightarrow{}  n  <  C\_Array-length(ctyp)
    {}\mRightarrow{}  (\muparrow{}(C\_TYPE\_vs\_DVALp(env;ctyp)  dval))
    {}\mRightarrow{}  (\muparrow{}(C\_TYPE\_vs\_DVALp(env;C\_Array-elems(ctyp)) 
                (DVp\_Array-arr(dval)  (DVp\_Array-lower(dval)  +  n)))))



Date html generated: 2016_05_16-AM-08_51_42
Last ObjectModification: 2016_01_17-AM-09_43_38

Theory : C-semantics


Home Index