TermProject patterns simplify projection of sub-terms. A strategy application inside a match pattern selects the corresponding sub-term and applies s to it. For example, instead of writing A : Typed(Var(x),_) -> x it is now possible to write A = ?Typed(Var(),_) This feature can also be used to perform tests on subterm in a match pattern, e.g., the pattern ?[x | ] binds the head of a list to =x=, checks that the tail is not empty and produces the tail as result.