src/HOLCF/ex/Stream.ML
changeset 12484 7ad150f5fc10
parent 12036 49f6c49454c2
child 13454 01e2496dee05
equal deleted inserted replaced
12483:0a01efff43e9 12484:7ad150f5fc10
    26 by (etac contrapos_pp 1);
    26 by (etac contrapos_pp 1);
    27 by (safe_tac (claset() addSIs stream.con_rews));
    27 by (safe_tac (claset() addSIs stream.con_rews));
    28 qed "scons_eq_UU";
    28 qed "scons_eq_UU";
    29 
    29 
    30 Goal "[| a && x = UU; a ~= UU |] ==> R";
    30 Goal "[| a && x = UU; a ~= UU |] ==> R";
    31 by (dresolve_tac [stream_con_rew2] 1);
    31 by (dtac stream_con_rew2 1);
    32 by (contr_tac 1);
    32 by (contr_tac 1);
    33 qed "scons_not_empty";
    33 qed "scons_not_empty";
    34 
    34 
    35 Goal "(x ~= UU) = (EX a y. a ~= UU &  x = a && y)";
    35 Goal "(x ~= UU) = (EX a y. a ~= UU &  x = a && y)";
    36 by (cut_facts_tac [stream.exhaust] 1);
    36 by (cut_facts_tac [stream.exhaust] 1);
   532 
   532 
   533 Goal "stream_finite t ==> \
   533 Goal "stream_finite t ==> \
   534 \!s. #(s::'a::flat stream) = #t &  s << t --> s = t";
   534 \!s. #(s::'a::flat stream) = #t &  s << t --> s = t";
   535 by (etac stream_finite_ind 1);
   535 by (etac stream_finite_ind 1);
   536 by  (fast_tac (claset() addDs [eq_UU_iff RS iffD2]) 1);
   536 by  (fast_tac (claset() addDs [eq_UU_iff RS iffD2]) 1);
   537 by (Safe_tac);
   537 by Safe_tac;
   538 by (stream_case_tac "sa" 1);
   538 by (stream_case_tac "sa" 1);
   539 by  (dtac sym 1);
   539 by  (dtac sym 1);
   540 by  (Asm_full_simp_tac 1);
   540 by  (Asm_full_simp_tac 1);
   541 by (safe_tac (claset() addSDs [stream_flat_prefix]));
   541 by (safe_tac (claset() addSDs [stream_flat_prefix]));
   542 by (rtac cfun_arg_cong 1);
   542 by (rtac cfun_arg_cong 1);