Springer Nature is making SARS-CoV-2 and COVID-19 research free. View research | View latest news | Sign up for updates

Knowledge-based programs


 Reasoning about activities in a distributed computer system at the level of the knowledge of individuals and groups allows us to abstract away from many concrete details of the system we are considering. In this paper, we make use of two notions introduced in our recent book to facilitate designing and reasoning about systems in terms of knowledge. The first notion is that of a knowledge-based program. A knowledge-based program is a syntactic object: a program with tests for knowledge. The second notion is that of a context, which captures the setting in which a program is to be executed. In a given context, a standard program (one without tests for knowledge) is represented by (i.e., corresponds in a precise sense to) a unique system. A knowledge-based program, on the other hand, may be represented by no system, one system, or many systems. In this paper, we provide a sufficient condition for a knowledge-based program to be represented in a unique way in a given context. This condition applies to many cases of interest, and covers many of the knowledge-based programs considered in the literature. We also completely characterize the complexity of determining whether a given knowledge-based program has a unique representation, or any representation at all, in a given finite-state context.

This is a preview of subscription content, log in to check access.

Author information

Additional information

Received: October 1995 / Accepted: February 1997

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Fagin, R., Halpern, J., Moses, Y. et al. Knowledge-based programs. Distrib Comput 10, 199–225 (1997). https://doi.org/10.1007/s004460050038

Download citation

  • Key words: Knowledge-based program
  • Protocol
  • Reasoning about knowledge
  • multi-agent system