- Timestamp:
- May 27, 2011, 1:26:34 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ASM/AssemblyProof.ma
r851 r852 15 15 *) 16 16 17 let rec foldl_strong 17 let rec foldl_strong_internal 18 18 (A: Type[0]) (P: list A → Prop) (l: list A) 19 19 (H: ∀prefix. ∀hd. ∀tl. l = prefix @ [hd] @ tl → P prefix → P (prefix @ [hd])) … … 26 26 [ > (append_nil ?) 27 27 @ acc 28 | applyS (foldl_strong A P l H (prefix @ [hd]) tl ? ?)28 | applyS (foldl_strong_internal A P l H (prefix @ [hd]) tl ? ?) 29 29 [ @ (H prefix hd tl prf acc) 30 30 | applyS prf … … 32 32 ] 33 33 qed. 34 35 definition foldl_strong ≝ 36 λA: Type[0]. 37 λP: list A → Prop. 38 λl: list A. 39 λH: ∀prefix. ∀hd. ∀tl. l = prefix @ [hd] @ tl → P prefix → P (prefix @ [hd]). 40 λsuffix: list A. 41 λacc: P [ ]. 42 foldl_strong_internal A P l H [ ] suffix acc. 43 44 definition bit_elim: ∀P: bool → bool. bool ≝ 45 λP. 46 P true ∧ P false. 47 48 definition bitvector_elim: ∀P: ∀n. BitVector n → bool. ∀n: nat. bool ≝ 49 λP. 50 λn. 51 P n. 52 53 34 54 35 55 (* > append_cons_commute
Note: See TracChangeset
for help on using the changeset viewer.