let unused_premise = "UNUSED"
+let mk_exp_args hd tl classes =
+ let meta id = C.AImplicit (id, None) in
+ let map v (cl, b) =
+ if I.S.mem 0 cl && b then v else meta ""
+ in
+ let rec aux = function
+ | [] -> []
+ | hd :: tl -> if hd = meta "" then aux tl else List.rev (hd :: tl)
+ in
+ let args = List.rev_map2 map tl classes in
+ let args = aux args in
+ if args = [] then hd else C.AAppl ("", hd :: args)
+
let convert st ?name v =
match get_inner_types st v with
| None -> []
T.Intros (Some count, List.rev st.intros, "") :: script
let mk_arg st = function
- | C.ARel (_, _, _, name) as what -> convert st ~name what
+ | C.ARel (_, _, _, name) as what -> [] (* convert st ~name what *)
| _ -> []
let mk_fwd_rewrite st dtext name tl direction =
[T.Elim (where, using, e, dtext ^ text); T.Branch (qs, "")]
| None ->
let qs = proc_bkd_proofs (next st) synth classes tl in
+ let hd = mk_exp_args hd tl classes in
script @ [T.Apply (hd, dtext ^ text); T.Branch (qs, "")]
else
[T.Apply (what, dtext)]