norm_subst : (hol_type,hol_type) subst 
        -> (term,term) subst -> (term,term)subst
- val (S,(T,_)) = raw_match [] empty_varset 
                    (Term `\x:'a. x = f (y:'b)`)
                    (Term `\a.    a = ~p`) ([],([],[]));
> val S = [{redex = `(f :'b -> 'a)`, residue = `$~`},
           {redex = `(y :'b)`,       residue = `(p :bool)`}] : ...
  val T = [{redex = `:'b`, residue = `:bool`}, 
           {redex = `:'a`, residue = `:bool`}] : ...
- norm_subst T S;
> val it =
    [{redex = `(y :bool)`, residue = `(p :bool)`},
     {redex = `(f :bool -> bool)`, residue = `$~`}] 
  : {redex : term, residue : term} list