“…Similar to dependent types [12], specifications can include arbitrary constants and types can encode precomputed function tables. This specification mechanism is Turing complete in general [14], but in practice we use some restrictions, rendering the existence of terms for the type inhabitation problem decidable. In the current version, (CL)S accepts specifications in almost mathematical notation, allowing to state the example for Γ above as: v a l Gamma = Map( " s t a r t " −> ' Pos ( ' 3 , ' 4 ) , "up" −> ( ' Pos ( ' 3 , ' 4 ) =>: ' Pos ( ' 3 , ' 3 ) ) : & : ( ' Pos ( ' 3 , ' 3 ) =>: ' Pos ( ' 3 , ' 2 ) ) )…”