The authors describe a language called FLEX, which makes it possible to program real-time systems that can respond to dynamic environments. In the worst case, when certain resources are not available, the program can produce approximate, imprecise results. This ability to write programs that are flexible in their execution time is provided by using constraints to express timing requirements, and sieves and imprecise values to obtain imprecise results. The authors discuss the semantic aspects of computing with imprecise values.