Drule.pp : thmpos_dtype.match_position -> thm -> thm
Any theorem whose top level operator (after universal quantifiers are stripped away) is an implication can be viewed as being of the form
∀v1 .. vn. p1 /\ p2 /\ .. pn ==> c
∀va .. vk. pi ==> ∀vx .. vz. pa /\ pb ... /\ pj ==> c
After promotion some cleanup is performed. If a contrapositive was taken, double negations in the promoted premise are removed, and in all cases, universal quantifiers of variables not present in the promoted premise are pushed down to govern other premises.
> sortingTheory.ALL_DISTINCT_PERM; val it = ⊢ ∀l1 l2. PERM l1 l2 ⇒ (ALL_DISTINCT l1 ⇔ ALL_DISTINCT l2) > it |> iffLR |> pp (Pos last); val it = ⊢ ∀l1. ALL_DISTINCT l1 ⇒ ∀l2. PERM l1 l2 ⇒ ALL_DISTINCT l2: thm