the problem is sym.deSkolemize doesn't have an inverse, so you can't easily determine the skolems list
`for sym in skolems. TR(pre, sym, as) -> TR(NoPrefix, sym.deSkolemize, args)`
`skolems = {sym | sym.deSkolemize in tparams}`

the only way I can see to express this as a substitution is to 
 - generalize the from/to arguments of the substitution to a function
 - or get a list of all symbols in the type to transform