DEFINITION weight_map()
TYPE =
       (natnat)Tnat
BODY =
FIXweight_map{
         weight_map:(natnat)Tnat
         :=λf:natnat
           .λt:T
             .<λt1:T.nat>
               CASE t OF
                 TSort O
               | TLRef nf n
               | THead k u t0
                     <λk1:K.nat>
                       CASE k OF
                         Bind b
                             <λb1:B.nat>
                               CASE b OF
                                 Abbr
                                     S
                                       plus
                                         weight_map f u
                                         weight_map (wadd f (S (weight_map f u))) t0
                               | AbstS (plus (weight_map f u) (weight_map (wadd f O) t0))
                               | VoidS (plus (weight_map f u) (weight_map (wadd f O) t0))
                       | Flat S (plus (weight_map f u) (weight_map f t0))
         }