src/HOL/Codatatype/Tools/bnf_sugar_tactics.ML
author blanchet
Thu, 30 Aug 2012 09:47:46 +0200
changeset 49022 005ce926a932
parent 49020 f379cf5d71bd
child 49028 487427a02bee
permissions -rw-r--r--
define selectors and discriminators

(*  Title:      HOL/Codatatype/Tools/bnf_sugar_tactics.ML
    Author:     Jasmin Blanchette, TU Muenchen
    Copyright   2012

Tactics for sugar on top of a BNF.
*)

signature BNF_SUGAR_TACTICS =
sig
  val mk_nchotomy_tac: int -> thm -> tactic
end;

structure BNF_Sugar_Tactics : BNF_SUGAR_TACTICS =
struct

open BNF_FP_Util

fun mk_nchotomy_tac n exhaust =
  (rtac allI THEN' rtac exhaust THEN'
   EVERY' (maps (fn k => [rtac (mk_disjIN n k), REPEAT_DETERM o rtac exI, atac]) (1 upto n))) 1;

end;