src/HOL/Tools/Function/function_lib.ML
changeset 67149 e61557884799
parent 63011 301e631666a0
child 69593 3dda49e08b9d
equal deleted inserted replaced
67148:d24dcac5eb4c 67149:e61557884799
    48 fun plural sg pl [x] = sg
    48 fun plural sg pl [x] = sg
    49   | plural sg pl _ = pl
    49   | plural sg pl _ = pl
    50 
    50 
    51 
    51 
    52 (* Removes all quantifiers from a term, replacing bound variables by frees. *)
    52 (* Removes all quantifiers from a term, replacing bound variables by frees. *)
    53 fun dest_all_all (t as (Const (@{const_name Pure.all},_) $ _)) =
    53 fun dest_all_all (t as (Const (\<^const_name>\<open>Pure.all\<close>,_) $ _)) =
    54   let
    54   let
    55     val (v,b) = Logic.dest_all t |> apfst Free
    55     val (v,b) = Logic.dest_all t |> apfst Free
    56     val (vs, b') = dest_all_all b
    56     val (vs, b') = dest_all_all b
    57   in
    57   in
    58     (v :: vs, b')
    58     (v :: vs, b')
   127          THEN resolve_tac ctxt [Drule.reflexive_thm] 1))
   127          THEN resolve_tac ctxt [Drule.reflexive_thm] 1))
   128  end
   128  end
   129 
   129 
   130 (* instance for unions *)
   130 (* instance for unions *)
   131 fun regroup_union_conv ctxt =
   131 fun regroup_union_conv ctxt =
   132   regroup_conv ctxt @{const_abbrev Set.empty} @{const_name Lattices.sup}
   132   regroup_conv ctxt \<^const_abbrev>\<open>Set.empty\<close> \<^const_name>\<open>Lattices.sup\<close>
   133     (map (fn t => t RS eq_reflection)
   133     (map (fn t => t RS eq_reflection)
   134       (@{thms Un_ac} @ @{thms Un_empty_right} @ @{thms Un_empty_left}))
   134       (@{thms Un_ac} @ @{thms Un_empty_right} @ @{thms Un_empty_left}))
   135 
   135 
   136 
   136 
   137 fun inst_constrs_of ctxt (Type (name, Ts)) =
   137 fun inst_constrs_of ctxt (Type (name, Ts)) =