src/Provers/splitter.ML
changeset 20237 5daab2c78b8e
parent 20217 25b068a99d2b
child 20664 ffbc5a57191a
equal deleted inserted replaced
20236:54e15870444b 20237:5daab2c78b8e
   254     in (mtch Vartab.empty args; true) handle MATCH => false end;
   254     in (mtch Vartab.empty args; true) handle MATCH => false end;
   255 end  (* local *)
   255 end  (* local *)
   256 
   256 
   257 (* (string * (Term.typ * Term.term * Thm.thm * Term.typ * int) list) list -> Context.theory -> Term.typ list -> Term.term ->
   257 (* (string * (Term.typ * Term.term * Thm.thm * Term.typ * int) list) list -> Context.theory -> Term.typ list -> Term.term ->
   258   (Thm.thm * (Term.typ * Term.typ * int list) list * int list * Term.typ * Term.term) list *)
   258   (Thm.thm * (Term.typ * Term.typ * int list) list * int list * Term.typ * Term.term) list *)
   259 fun split_posns cmap sg Ts t =
   259 fun split_posns (cmap : (string * (typ * term * thm * typ * int) list) list) sg Ts t =
   260   let
   260   let
   261     val T' = fastype_of1 (Ts, t);
   261     val T' = fastype_of1 (Ts, t);
   262     fun posns Ts pos apsns (Abs (_, T, t)) =
   262     fun posns Ts pos apsns (Abs (_, T, t)) =
   263           let val U = fastype_of1 (T::Ts,t)
   263           let val U = fastype_of1 (T::Ts,t)
   264           in posns (T::Ts) (0::pos) ((T, U, pos)::apsns) t end
   264           in posns (T::Ts) (0::pos) ((T, U, pos)::apsns) t end