Формализация задач в условиях дедуктивного синтеза

The construction and transformation of formulations of constructive problems in the paradigm of the deductive synthesis of their solutions is described. An approach to constructing a formalization of a constructive problem is proposed, when both the informal formulation of the problem and the informal idea of its solution are already roughly known. In this situation, a system of concepts is developed from the informal formulation of the problem and the informal idea of its solution, which forms the basis of ontology: the types of objects in the most common form for this task, constructive attribute properties, constructive relations and specifications of the source and target functions and operators. By deductive synthesis in the present paper we understand the logical inference of solutions of constructive problems from their formal statements in certain systems of inference. By solving constructive problems, we mean the construction of algorithms, data structures, and objects containing both data and algorithms. Moreover, the task can be expanded so that parts of solutions can be both physical objects and people's competences. Such decisions can be called physic-anthropic-technical. At the same time, the very system for constructing such solutions may turn out to be physic-anthropic-technical, which is what the present work calculates. Instead of traditional languages of logical formulas, task specification languages are considered that are more suitable for describing the subject area in computer science. The role of evidence languages here is played by special deductive programming languages. The concept closest to them in logic is proof as a term — an expression that, generally speaking, can be calculated (carried out). Task setting is preceded by a study of the subject area and the identification of problems associated with it. To formulate problems of solving identified problems, a certain terminological system is built. For the successful use of the existing traditional apparatus of constructive deductive synthesis, the terminological system must have a definite structure of constructive ontology. It consists in the fact that all terms are divided into three classes: terms denoting types of values, terms denoting predictions, and terms denoting constructive functions.  We consider terms denoting initial types of values, all initial values must be constructive objects, that is, uniquely defined by finite strings of characters from a pre-selected finite alphabet, each such term is associated with a meaningful description in a language natural to humans values between the performers of problem solving. We also consider terms denoting constructive predicates: constructive properties and constructive relations. Constructiveness here means that properties and relations must have realizations — special values, constructive objects confirming the corresponding properties and relations. Thus the properties are in essence attributes. For the transfer of these values, the corresponding procedures must be specified, and for the predicates - the corresponding informal descriptions. In addition, for each predicate, quantities should be fixed and the types of all its arguments. We can assume that a predicate is a procedure that produces a certain type of values for a given argument, we can assume that an empty type is associated with a false value of the predicate. Sometimes, when solving problems related to error handling, it is convenient to assume that the type of a false value is not empty, but it consists solely of error messages. At last we consider terms denoting constructive functions (mappings, functionals, operators), functions can be both natural objects of the domain, and artificial objects built when solving a problem value (see the description of the example language below), the function is supplied with a non-formal description. Required specifications of source types, predicates, operators are written in special languages. The formulation of the constructive task as the task of constructing constructive functions (functionals, operators) is also written in such a language and in addition is supplied with a non-formal description. The formal formulation is called the specification of a constructive task. More complex tasks are possible, including the construction of not only new operators, but also new types and predicates. As a rule, these are modeling tasks.