Changeset 3104 for src/ASM/ASM.ma
- Timestamp:
- Apr 6, 2013, 6:37:17 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ASM/ASM.ma
r3082 r3104 1177 1177 (foldl_strong ? 1178 1178 (λprefix. 1179 Σres: nat × (BitVectorTrie Byte 16).1180 let 〈i, mem〉 ≝ res in1181 i = |prefix| ∧ 1179 Σres: nat × Word × (BitVectorTrie Byte 16). 1180 let 〈i,bvi,mem〉 ≝ res in 1181 i = |prefix| ∧ bvi = bitvector_of_nat … i ∧ 1182 1182 (i ≤ 2^16 → 1183 1183 ∀pc. ∀pc_ok: pc < |prefix|. … … 1185 1185 program 1186 1186 (λprefix,v,tl,prf,i_mem. 1187 let 〈i,mem〉 ≝ i_mem in 1188 〈S i,insert … (bitvector_of_nat … i) v mem〉) 1189 〈0,Stub Byte 16〉). 1190 [3: cases (foldl_strong ? (λprefix.Σres.?) ???) * #i #mem * #H1 >H1 #H2 @H2 1191 | % // #_ #pc #abs @⊥ @(absurd … abs (not_le_Sn_O …)) 1192 | cases i_mem in p; * #i' #mem' #H #EQ destruct(EQ) cases H -H #H1 #H2 % 1193 [ >length_append >H1 normalize // 1187 let 〈i,bvi,mem〉 ≝ i_mem in 1188 〈S i,increment … bvi,insert … bvi v mem〉) 1189 〈0,zero ?,Stub Byte 16〉). 1190 [3: cases (foldl_strong ? (λprefix.Σres.?) ???) ** #i #bvi #mem ** #H1 #H3 >H1 #H2 @H2 1191 | % // % // (*#_ #pc #abs @⊥ @(absurd … abs (not_le_Sn_O …))*) 1192 | cases i_mem in p; ** #i' #bvi' #mem' normalize nodelta #H #EQ destruct(EQ) 1193 cases H -H * #H1 #H3 #H2 destruct (p1) % 1194 [ % [ >length_append >H1 normalize // 1195 | >increment_zero_bitvector_of_nat_1 >H3 <add_bitvector_of_nat % ] 1194 1196 | #LE #pc #pc_ok 1195 1197 cases (le_to_or_lt_eq … pc_ok) … … 1198 1200 #pc_ok <nth_safe_prepend [2: //] whd in ⊢ (??%?); 1199 1201 <H1 <plus_n_O whd in ⊢ (???%); // 1200 | >length_append <plus_n_Sm <plus_n_O #LT <shift_nth_prefix [2: /2/] 1202 | >length_append <plus_n_Sm <plus_n_O #LT <shift_nth_prefix 1203 [2: /2 by lt_plus_to_lt_l/] 1201 1204 >H2 [2: @(transitive_le … LE) //] 1202 1205 cut (pc ≠ i) [ >H1 @lt_to_not_eq @lt_S_S_to_lt //] #NEQ 1203 whd in ⊢ (??%%); @sym_eq @lookup_insert_miss >eq_bv_false % 1206 whd in ⊢ (??%%); @sym_eq @lookup_insert_miss >eq_bv_false % >H3 1204 1207 #EQ @(absurd ?? NEQ) @(eq_bitvector_of_nat_to_eq … EQ) try assumption 1205 1208 @(transitive_lt … LE) >H1 @lt_S_S_to_lt //]]
Note: See TracChangeset
for help on using the changeset viewer.