prove semantics_typeset
prove up to has_meaning_Comb

has_meaning seems to require an extra assumption that the types of all
free variables in the term have a meaning... since we restrict attention
to valuations that close over the term, this prevents a term with bad
types having a meaning vacuously...