| T.Inst (t, vs) ->
let tt = T.Appl (List.rev vs, t) in
contract f tt
- | T.Impl (false, id, w, t) ->
- let tt = T.Bind (T.Abst [id, false, w], t) in
+ | T.Impl (n, false, id, w, t) ->
+ let tt = T.Bind (n, T.Abst [id, false, w], t) in
contract f tt
- | T.Impl (true, id, w, t) ->
+ | T.Impl (n, true, id, w, t) ->
let f = function
- | T.Bind (T.Abst [xw], T.Bind (T.Abst xws, tt)) ->
- f (T.Bind (T.Abst (xw :: xws), tt))
+ | T.Bind (n, T.Abst [xw], T.Bind (_, T.Abst xws, tt)) ->
+ f (T.Bind (n, T.Abst (xw :: xws), tt))
| tt -> f tt
in
- let tt = T.Impl (false, id, w, t) in
+ let tt = T.Impl (n, false, id, w, t) in
contract f tt
| T.Sort _
| T.NSrt _
let f tt vvs = f (T.Appl (vvs, tt)) in
let f tt = C.list_map (f tt) contract vs in
contract f t
- | T.Bind (b, t) ->
- let f tt bb = f (T.Bind (bb, tt)) in
+ | T.Bind (n, b, t) ->
+ let f tt bb = f (T.Bind (n, bb, tt)) in
let f tt = contract_binder (f tt) b in
contract f t