src/HOL/ex/MT.ML
changeset 5143 b94cd208f073
parent 5069 3ea049f7979d
child 5148 74919e8f221c
equal deleted inserted replaced
5142:c56aa8b59dc0 5143:b94cd208f073
   572 by (REPEAT ((assume_tac 1) ORELSE (dtac infsys_p2 1)));
   572 by (REPEAT ((assume_tac 1) ORELSE (dtac infsys_p2 1)));
   573 qed "hasty_rel_elim";
   573 qed "hasty_rel_elim";
   574 
   574 
   575 (* Introduction rules for hasty *)
   575 (* Introduction rules for hasty *)
   576 
   576 
   577 Goalw [hasty_def] "!!c. c isof t ==> v_const(c) hasty t";
   577 Goalw [hasty_def] "c isof t ==> v_const(c) hasty t";
   578 by (etac hasty_rel_const_coind 1);
   578 by (etac hasty_rel_const_coind 1);
   579 qed "hasty_const";
   579 qed "hasty_const";
   580 
   580 
   581 Goalw [hasty_def,hasty_env_def] 
   581 Goalw [hasty_def,hasty_env_def] 
   582  "!!t. te |- fn ev => e ===> t & ve hastyenv te ==> v_clos(<|ev,e,ve|>) hasty t";
   582  "!!t. te |- fn ev => e ===> t & ve hastyenv te ==> v_clos(<|ev,e,ve|>) hasty t";
   590   "!!v. v hasty t ==> (!c.(v = v_const(c) --> c isof t))";  
   590   "!!v. v hasty t ==> (!c.(v = v_const(c) --> c isof t))";  
   591 by (rtac hasty_rel_elim 1);
   591 by (rtac hasty_rel_elim 1);
   592 by (ALLGOALS (blast_tac (v_ext_cs HOL_cs)));
   592 by (ALLGOALS (blast_tac (v_ext_cs HOL_cs)));
   593 qed "hasty_elim_const_lem";
   593 qed "hasty_elim_const_lem";
   594 
   594 
   595 Goal "!!c. v_const(c) hasty t ==> c isof t";
   595 Goal "v_const(c) hasty t ==> c isof t";
   596 by (dtac hasty_elim_const_lem 1);
   596 by (dtac hasty_elim_const_lem 1);
   597 by (Blast_tac 1);
   597 by (Blast_tac 1);
   598 qed "hasty_elim_const";
   598 qed "hasty_elim_const";
   599 
   599 
   600 (* Elimination on closures for hasty *)
   600 (* Elimination on closures for hasty *)