PRUNE_SOME_CONV : (string list -> conv)
"?l1 ... lr. t1 /\ ... /\ eqni1 /\ ... /\ eqnik /\ ... /\ tp"
|- (?l1 ... lr. t1 /\ ... /\ eqni1 /\ ... /\ eqnik /\ ... /\ tp) = (?li(k+1) ... lir. t1 /\ ... /\ tp)
"!y1 ... ym. lij x1 ... xn = b"
{{li1,...,lik}} u {{li(k+1),...,lir}} = {{l1,...,lr}}
If there is more than one line with a specified name (but with different types), the one that appears outermost in the existential quantifications is pruned. If such a line name is mentioned twice in the list, the two outermost occurrences of lines with that name will be pruned, and so on.
#PRUNE_SOME_CONV [`l1`;`l2`] # "?l3 l2 l1. # (!(x:num). l1 x = F) /\ (!x. l2 x = ~(l3 x)) /\ (!(x:num). l3 x = T)";; |- (?l3 l2 l1. (!x. l1 x = F) /\ (!x. l2 x = ~l3 x) /\ (!x. l3 x = T)) = (?l3. !x. l3 x = T)