tcasts = 0; tappls = 0; tabsts = 0; tabbrs = 0
}
+IFDEF SUMMARY THEN
+
let rec count_term_binder f c = function
| Z.Abst w ->
let c = {c with tabsts = succ c.tabsts} in
count_term f c t
let count_entity f c = function
- | _, _, _, E.Abst w ->
+ | _, _, _, E.Abst (_, w) ->
let c = {c with eabsts = succ c.eabsts} in
count_term f c w
- | _, _, _, E.Abbr v ->
+ | _, _, _, E.Abbr (_, v) ->
let c = {c with eabbrs = succ c.eabbrs} in
count_term f c v
- | _, _, _, E.Void -> assert false
+ | _, _, _, E.Void -> assert false
let print_counters f c =
let terms =
L.warn level (KP.sprintf " Total binder locations: %7u" locations);
f ()
+END
+
let name err och a =
let f n = function
| true -> KP.fprintf och "%s" n
KP.fprintf och "{%a}.%a" (pp_term st c) u (pp_term st c) t
| Z.Appl (v, t) ->
KP.fprintf och "(%a).%a" (pp_term st c) v (pp_term st c) t
- | Z.Bind (a, l, Z.Abst w, t) ->
+ | Z.Bind (y, l, Z.Abst w, t) ->
let f cc =
- KP.fprintf och "[%t:%a].%a" (res a l) (pp_term st c) w (pp_term st cc) t
+ KP.fprintf och "[%t:%a].%a" (res y l) (pp_term st c) w (pp_term st cc) t
in
- Z.push "output abst" f c a l (Z.Abst w)
- | Z.Bind (a, l, Z.Abbr v, t) ->
+ Z.push "output abst" f c y l (Z.Abst w)
+ | Z.Bind (y, l, Z.Abbr v, t) ->
let f cc =
- KP.fprintf och "[%t=%a].%a" (res a l) (pp_term st c) v (pp_term st cc) t
+ KP.fprintf och "[%t=%a].%a" (res y l) (pp_term st c) v (pp_term st cc) t
in
- Z.push "output abbr" f c a l (Z.Abbr v)
- | Z.Bind (a, l, Z.Void, t) ->
- let f cc = KP.fprintf och "[%t].%a" (res a l) (pp_term st cc) t in
- Z.push "output void" f c a l Z.Void
+ Z.push "output abbr" f c y l (Z.Abbr v)
+ | Z.Bind (y, l, Z.Void, t) ->
+ let f cc = KP.fprintf och "[%t].%a" (res y l) (pp_term st cc) t in
+ Z.push "output void" f c y l Z.Void
let pp_lenv st och c =
let pp_entry och = function
- | a, l, Z.Abst w ->
- KP.fprintf och "%t : %a\n" (res a l) (pp_term st c) w
- | a, l, Z.Abbr v ->
- KP.fprintf och "%t = %a\n" (res a l) (pp_term st c) v
- | a, l, Z.Void ->
- KP.fprintf och "%t\n" (res a l)
+ | y, l, Z.Abst w ->
+ KP.fprintf och "%t : %a\n" (res y l) (pp_term st c) w
+ | y, l, Z.Abbr v ->
+ KP.fprintf och "%t = %a\n" (res y l) (pp_term st c) v
+ | y, l, Z.Void ->
+ KP.fprintf och "%t\n" (res y l)
in
let iter map och l = List.iter (map och) l in
let f es = KP.fprintf och "%a" (iter pp_entry) (List.rev es) in
L.pp_term = pp_term; L.pp_lenv = pp_lenv
}
+IFDEF OBJECTS THEN
+
(* term xml printing ********************************************************)
let export_term st =
ZD.crg_of_bag (XD.export_term st)
+
+END