_def]     \\ qpat_x_assum `IS_SOME _ ==> _` mp_tac     \\ rpt (IF_CASES_TAC \\ fs [ws_to_chars_def])     \\ intLib.COOPER_TAC)   THEN0    (fs [copy_array_def] \\ fs [ws_to_chars_def]     \\ reverse IF_CASES_TAC THEN0 (fs [] \\ intLib.COOPER_TAC)     \\ reverse IF_CASES_TAC THEN0 (fs [] \\ intLib.COOPER_TAC)     \\ fs [Unit_def,EVAL ``tuple_tag``] \\ rveq \\ fs []     \\ fs [state_rel_def,store_rel_def]     \\ strip_tac \\ last_x_assum (qspec_then `i` mp_tac)     \\ fs [FLOOKUP_UPDATE,EL_LUPDATE]     \\ IF_CASES_TAC \\ fs []     \\ Cases_on `i=dst