src/Pure/variable.ML
changeset 55635 00e900057b38
parent 55014 a93f496f6c30
child 55948 bb21b380f65d
equal deleted inserted replaced
55634:306ff289da3a 55635:00e900057b38
    30   val bind_term: indexname * term option -> Proof.context -> Proof.context
    30   val bind_term: indexname * term option -> Proof.context -> Proof.context
    31   val expand_binds: Proof.context -> term -> term
    31   val expand_binds: Proof.context -> term -> term
    32   val lookup_const: Proof.context -> string -> string option
    32   val lookup_const: Proof.context -> string -> string option
    33   val is_const: Proof.context -> string -> bool
    33   val is_const: Proof.context -> string -> bool
    34   val declare_const: string * string -> Proof.context -> Proof.context
    34   val declare_const: string * string -> Proof.context -> Proof.context
    35   val next_bound: string * typ -> Proof.context -> string * Proof.context
    35   val next_bound: string * typ -> Proof.context -> term * Proof.context
    36   val revert_bounds: Proof.context -> term -> term
    36   val revert_bounds: Proof.context -> term -> term
    37   val is_fixed: Proof.context -> string -> bool
    37   val is_fixed: Proof.context -> string -> bool
    38   val newly_fixed: Proof.context -> Proof.context -> string -> bool
    38   val newly_fixed: Proof.context -> Proof.context -> string -> bool
    39   val fixed_ord: Proof.context -> string * string -> order
    39   val fixed_ord: Proof.context -> string * string -> order
    40   val intern_fixed: Proof.context -> string -> string
    40   val intern_fixed: Proof.context -> string -> string
   311 
   311 
   312 fun next_bound (a, T) ctxt =
   312 fun next_bound (a, T) ctxt =
   313   let
   313   let
   314     val b = Name.bound (#1 (#bounds (rep_data ctxt)));
   314     val b = Name.bound (#1 (#bounds (rep_data ctxt)));
   315     val ctxt' = ctxt |> map_bounds (fn (next, bounds) => (next + 1, ((b, T), a) :: bounds));
   315     val ctxt' = ctxt |> map_bounds (fn (next, bounds) => (next + 1, ((b, T), a) :: bounds));
   316   in (b, ctxt') end;
   316   in (Free (b, T), ctxt') end;
   317 
   317 
   318 fun revert_bounds ctxt t =
   318 fun revert_bounds ctxt t =
   319   (case #2 (#bounds (rep_data ctxt)) of
   319   (case #2 (#bounds (rep_data ctxt)) of
   320     [] => t
   320     [] => t
   321   | bounds =>
   321   | bounds =>