"Every program containing symbolic expressions maps to a sequence of statements in a 3-operand-statement normal form with call-by-value-return move-semantics on slots and bindings. Every "point" (inbetween normalized statements) in a program has a typestate. Two typestates are therefore defined for each statement: its prestate and its poststate. A typestate is formally a set of N-ary boolean predicates over visible slots. Typestates form a semilattice ordered by subset-inclusion (x < y means x is a subset of y), where 'join' means 'set intersection'. When N statements lead to a single point, the point's typestate is the pairwise join of the N poststates of preCeding statements."