ML objects that get recorded need to be promoted
- and the promoted subgoal package commands don't work for unpromoted ML objects
- implementor needs to write promotion functions for each type shape
- implementor needs to apply these promotion functions to lots of tactics/thms
- user needs to promote their own stuff, e.g. their own rules/thms

Tactic proofs with embedded arbitrary ML are problematic
- sometimes this can still get recorded, and if so then exported ML will work
- but exported ML is unlikely to faithfully reproduce original ML text

Limitations in HOL Light's pretty printer for HOL terms
- it outputs ambiguous expressions without type annotations
- this is used by my ML exporter

However, in practice the appraoch works well
- the same old pool of 100 tactics, 100 rules, 1000 theorems get used
- and any promotion that needs doing is easy anyway
- hand tweaks are occasionally required for aribitrary ML and type annotations
