wrong context passed around.
let rec eat_branch n ctx ty pat =
match (ty, pat) with
| NCic.Prod (name, s, t), _ when n > 0 ->
let rec eat_branch n ctx ty pat =
match (ty, pat) with
| NCic.Prod (name, s, t), _ when n > 0 ->
- eat_branch (pred n) ((name,NCic.Decl s)::ctx) t pat
+ eat_branch (pred n) ctx t pat
| NCic.Prod (_, _, t), NCic.Lambda (name, s, t') ->
let cv, rhs = eat_branch 0 ((name,NCic.Decl s)::ctx) t t' in
(Ast.Ident (name,None), Some (k ~context:ctx s)) :: cv, rhs
| NCic.Prod (_, _, t), NCic.Lambda (name, s, t') ->
let cv, rhs = eat_branch 0 ((name,NCic.Decl s)::ctx) t t' in
(Ast.Ident (name,None), Some (k ~context:ctx s)) :: cv, rhs