src/HOL/Nominal/nominal_fresh_fun.ML
changeset 56253 83b3c110f22d
parent 56230 3e449273942a
child 58318 f95754ca7082
equal deleted inserted replaced
56252:b72e0a9d62b9 56253:83b3c110f22d
    85 fun get_inner_fresh_fun (Bound j) = NONE
    85 fun get_inner_fresh_fun (Bound j) = NONE
    86   | get_inner_fresh_fun (v as Free _) = NONE
    86   | get_inner_fresh_fun (v as Free _) = NONE
    87   | get_inner_fresh_fun (v as Var _)  = NONE
    87   | get_inner_fresh_fun (v as Var _)  = NONE
    88   | get_inner_fresh_fun (Const _) = NONE
    88   | get_inner_fresh_fun (Const _) = NONE
    89   | get_inner_fresh_fun (Abs (_, _, t)) = get_inner_fresh_fun t
    89   | get_inner_fresh_fun (Abs (_, _, t)) = get_inner_fresh_fun t
    90   | get_inner_fresh_fun (Const ("Nominal.fresh_fun",Type("fun",[Type ("fun",[Type (T,_),_]),_])) $ u)
    90   | get_inner_fresh_fun (Const (@{const_name Nominal.fresh_fun},
    91                            = SOME T
    91       Type(@{type_name fun},[Type (@{type_name fun},[Type (T,_),_]),_])) $ u) = SOME T
    92   | get_inner_fresh_fun (t $ u) =
    92   | get_inner_fresh_fun (t $ u) =
    93      let val a = get_inner_fresh_fun u in
    93      let val a = get_inner_fresh_fun u in
    94      if a = NONE then get_inner_fresh_fun t else a
    94      if a = NONE then get_inner_fresh_fun t else a
    95      end;
    95      end;
    96 
    96