| B.Appl (_, v, t) ->
step st {m with s = (m.e, v) :: m.s} t
| B.Bind (a, B.Abst (n, w), t) ->
-(* if not !G.cc && st.S.si && N.to_string st.S.lenv n = "0" then begin
- if !G.summary then O.add ~upsilon:1 ();
- let e = B.push m.e m.e a B.Void in
- step st {m with e = e} t
- end else *) begin match m.s with
+ if !G.si || N.is_not_zero st n then begin match m.s with
| [] ->
let i = tsteps m in
if i = 0 then m, x, None else
let v = if assert_tstep m false then B.Cast (E.empty_node, w, v) else v in
let e = B.push m.e c a (B.abbr v) in
step st {m with e = e; s = s} t
+ end else begin
+ if !G.summary then O.add ~upsilon:1 ();
+ let e = B.push m.e m.e a B.Void in
+ step st {m with e = e} t
end
| B.Bind (a, b, t) ->
if !G.summary then O.add ~theta:(List.length m.s) ();
let env_size = 1300
-let zero = Fin 0
-
let warn s = L.warn level s
+let zero = Fin 0
+
let string_of_value k = function
| Inf -> ""
| Fin i -> string_of_int i
if b && k1 <> J.null_mark && k2 <> J.null_mark then begin
n1.v <- Ref (k2, 0); if !G.trace >= level then pp_table st
end; b end
+
+let is_not_zero st n =
+ let _, n = resolve_layer st n in n.v <> zero