added convenience function
authorblanchet
Tue, 12 Nov 2013 13:47:24 +0100
changeset 5577640382f65bc80
parent 55775 5d1b7ee6070e
child 55777 9f0f1152c875
added convenience function
src/HOL/Tools/ctr_sugar.ML
     1.1 --- a/src/HOL/Tools/ctr_sugar.ML	Tue Nov 12 13:47:24 2013 +0100
     1.2 +++ b/src/HOL/Tools/ctr_sugar.ML	Tue Nov 12 13:47:24 2013 +0100
     1.3 @@ -36,6 +36,7 @@
     1.4    val transfer_ctr_sugar: Proof.context -> ctr_sugar -> ctr_sugar
     1.5    val ctr_sugar_of: Proof.context -> string -> ctr_sugar option
     1.6    val ctr_sugars_of: Proof.context -> ctr_sugar list
     1.7 +  val ctr_sugar_of_case: Proof.context -> string -> ctr_sugar option
     1.8    val register_ctr_sugar: string -> ctr_sugar -> local_theory -> local_theory
     1.9    val register_ctr_sugar_global: string -> ctr_sugar -> theory -> theory
    1.10  
    1.11 @@ -140,6 +141,9 @@
    1.12  fun ctr_sugars_of ctxt =
    1.13    Symtab.fold (cons o transfer_ctr_sugar ctxt o snd) (Data.get (Context.Proof ctxt)) [];
    1.14  
    1.15 +fun ctr_sugar_of_case ctxt s =
    1.16 +  find_first (fn {casex = Const (s', _), ...} => s' = s | _ => false) (ctr_sugars_of ctxt);
    1.17 +
    1.18  fun register_ctr_sugar key ctr_sugar =
    1.19    Local_Theory.declaration {syntax = false, pervasive = true}
    1.20      (fn phi => Data.map (Symtab.default (key, morph_ctr_sugar phi ctr_sugar)));