equal
deleted
inserted
replaced
53 let val ((e, c2), c1) = cv e |>> seq cvs |
53 let val ((e, c2), c1) = cv e |>> seq cvs |
54 in (e, Argo_Proof.mk_then_conv c1 c2) end |
54 in (e, Argo_Proof.mk_then_conv c1 c2) end |
55 |
55 |
56 fun on_args f (Argo_Expr.E (k, es)) = |
56 fun on_args f (Argo_Expr.E (k, es)) = |
57 let val (es, cs) = split_list (f es) |
57 let val (es, cs) = split_list (f es) |
58 in (Argo_Expr.E (k, es), Argo_Proof.mk_args_conv cs) end |
58 in (Argo_Expr.E (k, es), Argo_Proof.mk_args_conv k cs) end |
59 |
59 |
60 fun args cv e = on_args (map cv) e |
60 fun args cv e = on_args (map cv) e |
61 |
61 |
62 fun all_args cv k (e as Argo_Expr.E (k', _)) = if k = k' then args (all_args cv k) e else cv e |
62 fun all_args cv k (e as Argo_Expr.E (k', _)) = if k = k' then args (all_args cv k) e else cv e |
63 |
63 |