let apply : ('a -> 'b) repr -> 'a repr -> 'b repr = fun f_repr x ->
let annot_f = AF.get_functional_provenance f_repr in
let annot_x = AF.get_provenance x in
match AF.get_file f_repr with
| Lambda f ->
f (AF.get_file x) |> AF.with_provenance "apply" [
"function", annot_f x;
"argument", annot_x;
]
| _ -> assert false