Notice

This is not the latest version of this item. The latest version can be found at:https://dspace.mit.edu/handle/1721.1/134213.2

Show simple item record

dc.contributor.authorAtkinson, Eric
dc.contributor.authorCarbin, Michael
dc.date.accessioned2021-10-27T20:04:01Z
dc.date.available2021-10-27T20:04:01Z
dc.date.issued2020
dc.identifier.urihttps://hdl.handle.net/1721.1/134213
dc.description.abstract© 2020 Owner/Author. Computer programs are increasingly being deployed in partially-observable environments. A partially observable environment is an environment whose state is not completely visible to the program, but from which the program receives partial observations. Developers typically deal with partial observability by writing a state estimator that, given observations, attempts to deduce the hidden state of the environment. In safety-critical domains, to formally verify safety properties developers may write an environment model. The model captures the relationship between observations and hidden states and is used to prove the software correct. In this paper, we present a new methodology for writing and verifying programs in partially observable environments. We present belief programming, a programming methodology where developers write an environment model that the program runtime automatically uses to perform state estimation. A belief program dynamically updates and queries a belief state that captures the possible states the environment could be in. To enable verification, we present Epistemic Hoare Logic that reasons about the possible belief states of a belief program the same way that classical Hoare logic reasons about the possible states of a program. We develop these concepts by defining a semantics and a program logic for a simple core language called BLIMP. In a case study, we show how belief programming could be used to write and verify a controller for the Mars Polar Lander in BLIMP. We present an implementation of BLIMP called CBLIMP and evaluate it to determine the feasibility of belief programming.en_US
dc.language.isoen
dc.publisherAssociation for Computing Machinery (ACM)en_US
dc.relation.isversionof10.1145/3428268en_US
dc.rightsCreative Commons Attribution NonCommercial License 4.0en_US
dc.rights.urihttps://creativecommons.org/licenses/by-nc/4.0/en_US
dc.sourceACMen_US
dc.titleProgramming and reasoning with partial observabilityen_US
dc.typeArticleen_US
dc.relation.journalProceedings of the ACM on Programming Languagesen_US
dc.eprint.versionFinal published versionen_US
dc.type.urihttp://purl.org/eprint/type/ConferencePaperen_US
eprint.statushttp://purl.org/eprint/status/NonPeerRevieweden_US
dc.date.updated2021-09-27T14:38:11Z
dspace.orderedauthorsAtkinson, E; Carbin, Men_US
dspace.date.submission2021-09-27T14:38:12Z
mit.journal.volume4en_US
mit.journal.issueOOPSLAen_US
mit.licensePUBLISHER_CC
mit.metadata.statusAuthority Work and Publication Information Neededen_US
mit.metadata.statusAuthority Work and Publication Information Needed


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record

VersionItemDateSummary

*Selected version