Encoding Covid-19 rules using Basic Event Calculus in s(CASP)

tags
s(CASP) Jason Morris

Notes

Event Calculus is a way of reasoning about events, and their consequences

NOTER_PAGE: (1 . 0.44926350245499186)

discrete event calculus treats moments in time as being discrete points

NOTER_PAGE: (1 . 0.7004909983633388)

if you have two events, and the amount of time that passes between them is 1, you no longer need to check for any intervening events.

NOTER_PAGE: (1 . 0.8756137479541736)

trade expressiveness for speed

An event is intuitive. It is a type of thing that happens at a specific point in time.

NOTER_PAGE: (2 . 0.5818330605564649)

A “fluent” is a thing that may or may not be true at a given point in time, depending on which events have occurred.

NOTER_PAGE: (2 . 0.6497545008183306)

which events initiate which fluents, and which events terminate which fluents.

NOTER_PAGE: (2 . 0.8199672667757775)

an event has a consequence, but not immediately, there is a way of specifying when the thing will happen called a trajectory.

NOTER_PAGE: (2 . 0.8878887070376432)

Arias’ encoding divides “holds” and “not holds” into to different questions.

NOTER_PAGE: (5 . 0.5572831423895254)

Because s(CASP) is a constraint programming tool, it is perfectly happy to reason about things like “time A greater than 3”

NOTER_PAGE: (6 . 0.5032733224222586)

saying “3, 4, 5…” infinitely is not the same thing, and it is not how people think about such things

NOTER_PAGE: (6 . 0.5646481178396072)

event calculus itself is an attempt to model inside the computer things that are almost never worth explicitly saying to a human being

NOTER_PAGE: (7 . 0.8592471358428806)

s(CASP) helpfully gives us the option of reducing the explanations to focus only on the things that were true in the explanation

NOTER_PAGE: (8 . 0.24549918166939444)

is incorrect. It is true only about the specific model that the explanation is covering, which is the model in which the time is 3 or more. The true statement is that a work from home order always causes the requirement to be true. That’s what we said. But that fact is not stated in the explanation because of how the variables are unified.

NOTER_PAGE: (8 . 0.7487725040916531)

override the general explanations for event calculus with more specific explanation for the domain

NOTER_PAGE: (9 . 0.05810147299509002)

we are getting three answers to two questions, instead of one answer to one question. The one question we would be interested in is when did the value of the fluent change?

NOTER_PAGE: (11 . 0.09410801963993454)

you may want to give it a set of facts and ask it what the current obligations are. That would be deductive logic.

NOTER_PAGE: (12 . 0.23404255319148937)

maybe you want someone to be obliged to do something, and you want to give the software a set of known facts, and a desired outcome, and then ask it to generate a plan to make that happen. That is abductive logic

NOTER_PAGE: (12 . 0.2905073649754501)

It doesn’t account for the possibility that I am required, but I haven’t been told that yet. And it doesn’t deal with how the facts might have changed over time.

NOTER_PAGE: (13 . 0.25040916530278234)
NOTER_PAGE: (14 . 0.6227495908346973)

OPA is an example of one way of dealing with something akin to event calculus in a way that imposes a minimum of work on the user.

NOTER_PAGE: (15 . 0.058919803600654665)