src/Pure/Syntax/syn_trans.ML
changeset 42086 74bf78db0d87
parent 42085 2ba15af46cb7
child 42152 6c17259724b2
equal deleted inserted replaced
42085:2ba15af46cb7 42086:74bf78db0d87
     8 sig
     8 sig
     9   val eta_contract_default: bool Unsynchronized.ref
     9   val eta_contract_default: bool Unsynchronized.ref
    10   val eta_contract_raw: Config.raw
    10   val eta_contract_raw: Config.raw
    11   val eta_contract: bool Config.T
    11   val eta_contract: bool Config.T
    12   val atomic_abs_tr': string * typ * term -> term * term
    12   val atomic_abs_tr': string * typ * term -> term * term
       
    13   val const_abs_tr': term -> term
    13   val mk_binder_tr: string * string -> string * (term list -> term)
    14   val mk_binder_tr: string * string -> string * (term list -> term)
    14   val mk_binder_tr': string * string -> string * (term list -> term)
    15   val mk_binder_tr': string * string -> string * (term list -> term)
    15   val preserve_binder_abs_tr': string -> string -> string * (term list -> term)
    16   val preserve_binder_abs_tr': string -> string -> string * (term list -> term)
    16   val preserve_binder_abs2_tr': string -> string -> string * (term list -> term)
    17   val preserve_binder_abs2_tr': string -> string -> string * (term list -> term)
    17   val dependent_tr': string * string -> term list -> term
    18   val dependent_tr': string * string -> term list -> term
   313 
   314 
   314 fun abs_ast_tr' asts =
   315 fun abs_ast_tr' asts =
   315   (case Ast.unfold_ast_p "_abs" (Ast.Appl (Ast.Constant "_abs" :: asts)) of
   316   (case Ast.unfold_ast_p "_abs" (Ast.Appl (Ast.Constant "_abs" :: asts)) of
   316     ([], _) => raise Ast.AST ("abs_ast_tr'", asts)
   317     ([], _) => raise Ast.AST ("abs_ast_tr'", asts)
   317   | (xs, body) => Ast.Appl [Ast.Constant "_lambda", Ast.fold_ast "_pttrns" xs, body]);
   318   | (xs, body) => Ast.Appl [Ast.Constant "_lambda", Ast.fold_ast "_pttrns" xs, body]);
       
   319 
       
   320 fun const_abs_tr' t =
       
   321   (case eta_abs t of
       
   322     Abs (_, _, t') =>
       
   323       if Term.is_dependent t' then raise Match
       
   324       else incr_boundvars ~1 t'
       
   325   | _ => raise Match);
   318 
   326 
   319 
   327 
   320 (* binders *)
   328 (* binders *)
   321 
   329 
   322 fun mk_binder_tr' (name, syn) =
   330 fun mk_binder_tr' (name, syn) =