Changeset 2677 for src/RTLabs/RTLabs_abstract.ma
- Timestamp:
- Feb 19, 2013, 12:23:50 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/RTLabs/RTLabs_abstract.ma
r2601 r2677 35 35 match state with 36 36 [ State f fs m ⇒ All2 … (λfr,b. find_funct_ptr ? ge b = Some ? (Internal ? (func fr))) (f::fs) fn_stack 37 | Callstate fd _ _ fs _ ⇒37 | Callstate _ fd _ _ fs _ ⇒ 38 38 match fn_stack with 39 39 [ nil ⇒ False … … 58 58 eval_statement ge s = Value ??? 〈t,s'〉 → RTLabs_ext_state ge ≝ 59 59 λge,s,s',t,EX. mk_RTLabs_ext_state ge s' 60 (match s' return λs'. eval_statement ge s = Value ??? 〈t,s'〉 → ? with [ State _ _ _ ⇒ λ_. Ras_fn_stack … s | Callstate _ _ _ _ _ ⇒ λEX. func_block_of_exec … EX::Ras_fn_stack … s | Returnstate _ _ _ _ ⇒ λ_. tail … (Ras_fn_stack … s) | Finalstate _ ⇒ λ_. [ ] ] EX)60 (match s' return λs'. eval_statement ge s = Value ??? 〈t,s'〉 → ? with [ State _ _ _ ⇒ λ_. Ras_fn_stack … s | Callstate _ _ _ _ _ _ ⇒ λEX. func_block_of_exec … EX::Ras_fn_stack … s | Returnstate _ _ _ _ ⇒ λ_. tail … (Ras_fn_stack … s) | Finalstate _ ⇒ λ_. [ ] ] EX) 61 61 ?. 62 62 cases s' in EX ⊢ %; … … 67 67 | @M2 ] 68 68 | #ge' #f1 #fs1 #m1 #fd #args #f' #dst #F #b #FFP #E1 #E2 #E3 #E4 destruct 69 | #ge' # fn #locals #next #nok #sp #fs0 #m0 #args #dst #m' #E1 #E2 #E3 #E4 destruct69 | #ge' #vf #fn #locals #next #nok #sp #fs0 #m0 #args #dst #m' #E1 #E2 #E3 #E4 destruct 70 70 whd cases stk in mtc ⊢ %; [ * ] 71 71 #hd #tl #H @H … … 76 76 | #ge' #r #dst #m0 #E1 #E2 #E3 #E4 destruct 77 77 ] 78 | -s' # fd #args #dst #fs #m #EX whd in ⊢ (???%); cases (func_block_of_exec … EX) #func_block #FFP78 | -s' #vf #fd #args #dst #fs #m #EX whd in ⊢ (???%); cases (func_block_of_exec … EX) #func_block #FFP 79 79 whd % // -func_block cases s in EX ⊢ %; -s #s #stk #mtc #EX inversion (eval_preserves … EX) 80 80 [ #ge' #f1 #f2 #fs' #m1 #m2 #F #E1 #E2 #E3 #E4 destruct 81 | #ge' # f1 #fs1 #m1 #fd' #args' #f' #dst' #F #b #FFP #E1 #E2 #E3 #E4 destruct81 | #ge' #vf1 #f1 #fs1 #m1 #fd' #args' #f' #dst' #F #b #FFP #E1 #E2 #E3 #E4 destruct 82 82 cases stk in mtc; [ * ] #b1 #bs * #M1 #M2 % 83 83 [ inversion F #H1 #H2 #H3 #H4 #H5 #H6 #H7 #H8 #H9 #H10 #H11 #H12 destruct // | @M2 ] … … 111 111 | _ ⇒ cl_other 112 112 ] 113 | Callstate _ _ _ _ _ ⇒ cl_call113 | Callstate _ _ _ _ _ _ ⇒ cl_call 114 114 | Returnstate _ _ _ _ ⇒ cl_return 115 115 | Finalstate _ ⇒ cl_other … … 179 179 match s' return λs'. Ras_Fn_Match ? s' ? → ? with 180 180 [ State f fs m ⇒ match stk return λstk. Ras_Fn_Match ?? stk → ? with [ nil ⇒ λmtc. ⊥ | cons b _ ⇒ λ_. rapc_state b (next … f) ] 181 | Callstate _ _ _ fs _ ⇒ match stk return λstk. Ras_Fn_Match ?? stk → ? with [ nil ⇒ λmtc. ⊥ | cons b _ ⇒ λ_. rapc_call (match fs with [ nil ⇒ None ? | cons f _ ⇒ Some ? (next f) ]) b ]181 | Callstate _ _ _ _ fs _ ⇒ match stk return λstk. Ras_Fn_Match ?? stk → ? with [ nil ⇒ λmtc. ⊥ | cons b _ ⇒ λ_. rapc_call (match fs with [ nil ⇒ None ? | cons f _ ⇒ Some ? (next f) ]) b ] 182 182 | Returnstate _ _ _ _ ⇒ match stk with [ nil ⇒ λ_. rapc_ret (None ?) | cons b _ ⇒ λ_. rapc_ret (Some ? b) ] 183 183 | Finalstate _ ⇒ λmtc. rapc_fin … … 206 206 [ mk_Sig s p ⇒ 207 207 match s return λs. Some ? (RTLabs_classify s) = Some ? cl_call → ? with 208 [ Callstate fd args dst stk m ⇒208 [ Callstate _ fd args dst stk m ⇒ 209 209 λ_. match s' with 210 210 [ State f fs m ⇒ match stk with [ nil ⇒ False | cons h t ⇒ … … 233 233 [ mk_RTLabs_ext_state s' stk mtc0 ⇒ 234 234 match s' return λs'. Ras_Fn_Match ? s' ? → Some ? (RTLabs_classify s') = Some ? cl_call → ident with 235 [ Callstate fd _ _ _ _ ⇒235 [ Callstate _ fd _ _ _ _ ⇒ 236 236 match stk return λstk. Ras_Fn_Match ?? stk → ? → ident with 237 237 [ nil ⇒ λmtc. ⊥ … … 304 304 try (% #E' destruct) 305 305 cases (NONE ?) assumption 306 | # fd #args #dst #fs #m #stk #mtc %306 | #vf #fd #args #dst #fs #m #stk #mtc % 307 307 [ #E normalize in E; destruct 308 308 | whd in ⊢ (% → ?); whd in ⊢ (?(??%?) → ?); whd in match (as_pc_of ??);
Note: See TracChangeset
for help on using the changeset viewer.