src/HOL/Library/rewrite.ML
changeset 60054 ef4878146485
parent 60053 0e9895ffab1d
child 60055 aa3d2a6dd99e
equal deleted inserted replaced
60053:0e9895ffab1d 60054:ef4878146485
    75   in inner end
    75   in inner end
    76 
    76 
    77 val fun_rewr_cconv : subterm_position = fn rewr => CConv.fun_cconv oo rewr
    77 val fun_rewr_cconv : subterm_position = fn rewr => CConv.fun_cconv oo rewr
    78 val arg_rewr_cconv : subterm_position = fn rewr => CConv.arg_cconv oo rewr
    78 val arg_rewr_cconv : subterm_position = fn rewr => CConv.arg_cconv oo rewr
    79 val imp_rewr_cconv : subterm_position = fn rewr => CConv.concl_cconv 1 oo rewr
    79 val imp_rewr_cconv : subterm_position = fn rewr => CConv.concl_cconv 1 oo rewr
       
    80 val with_prems_rewr_cconv : subterm_position = fn rewr => CConv.with_prems_cconv ~1 oo rewr
    80 
    81 
    81 
    82 
    82 (* focus terms *)
    83 (* focus terms *)
    83 
    84 
    84 fun ft_abs ctxt (s,T) (tyenv, u, pos) =
    85 fun ft_abs ctxt (s,T) (tyenv, u, pos) =
   152 fun ft_concl ctxt (ft as (_, t, _) : focusterm) =
   153 fun ft_concl ctxt (ft as (_, t, _) : focusterm) =
   153   case t of
   154   case t of
   154     (Const (@{const_name "Pure.imp"}, _) $ _) $ _ => (ft_concl ctxt o ft_imp ctxt) ft
   155     (Const (@{const_name "Pure.imp"}, _) $ _) $ _ => (ft_concl ctxt o ft_imp ctxt) ft
   155   | _ => ft
   156   | _ => ft
   156 
   157 
   157 fun ft_assm ctxt (ft as (_, t, _) : focusterm) =
   158 fun ft_assm _ (tyenv, (Const (@{const_name "Pure.imp"}, _) $ l) $ _, pos) =
   158   case t of
   159       (tyenv, l, pos o with_prems_rewr_cconv)
   159     (Const (@{const_name "Pure.imp"}, _) $ _) $ _ => (ft_arg ctxt o ft_fun ctxt) ft
   160   | ft_assm _ (_, t, _) = raise TERM ("ft_assm", [t])
   160   | _ => raise TERM ("ft_assm", [t])
       
   161 
   161 
   162 fun ft_judgment ctxt (ft as (_, t, _) : focusterm) =
   162 fun ft_judgment ctxt (ft as (_, t, _) : focusterm) =
   163   if Object_Logic.is_judgment ctxt t
   163   if Object_Logic.is_judgment ctxt t
   164   then ft_arg ctxt ft
   164   then ft_arg ctxt ft
   165   else ft
   165   else ft