(* ---------------------------------------------------------------------- *) (* List *) (* ---------------------------------------------------------------------- *)(* }}} *) let LIST_REWRITES = ref [ NOT_CONS_NIL; HD; TL; CONS_11; LENGTH; LAST; list_CASES; NOT_NIL; ];; let LIST_SIMP_TAC = REWRITE_TAC ( !LIST_REWRITES );; let extend_list_rewrites l = LIST_REWRITES := !LIST_REWRITES @ l;; BASIC_REWRITES := !LIST_REWRITES @ !BASIC_REWRITES;;let NOT_NIL =prove_by_refinement( `!l. ~(l = []) <=> ?(h:A) t. l = CONS h t`,