One of the typical problems in engineering and scientific applications is as follows: we know the values x1,...,xn of some quantities, we are interested in the values of some other quantities y1,...,ym, and we know the relationships between xi, yj, and, maybe, some auxiliary physical quantities z1,...,zk. For example, we may know an algorithm to compute y2 from x_1, x3, and y1; we may also know an equation F(x1,x2,y1)=0 that relates these values, etc. The question is: can we compute the values of yj, and, if we can, how to do it?
At first glance, this is a problem of numerical mathematics, and, indeed, there exist numerical methods to solve it. These methods use the equations from the very beginning; these equations can be very complicated and therefore, processing them can be very time-consuming. E. Tyugu proposed a two-stage ("lazy computations") approach to solving these problems, and implemented it in a system PRIZ. First, we consider only which quantities are computable from which. Based on this information only (and not using the specific algorithms or relationships of the type F(x1,x2,y1)=0) we find out, whether it is possible to compute yj, and, if it is possible, what steps should we follow. For example, in the above example we first compute y1 from x1 and x2 by solving the equation F(x1,x2,y1)=0, and then use the resulting value y1 and the known value x3 to compute y2. On the second step we actually perform these computations.
G. Mints showed that the problems of PRIZ's first step can be reformulated in logical terms. He also showed that using the related logical algorithms instead of the original PRIZ's ones can improve the system. However, there are cases when this approach does not work: for example, when we have two equations with two unknowns. No known logic is applicable to this case.
We propose a new logic (motivated by fuzzy logic) that is specially tailored for these problems, show its decidability, analyze its properties, and propose a special resolution rule for it. This new logic allows us to use a two-stage ("lazy computations") approach in the most general case.
The usefulness of a non-classical (fuzzy-type) logic in program design shows that its non-classical features are extremely important not only in the soft area of representing human reasoning, but also in the hard parts of computer science.