Phenomena
Phenomena in Phenesthe can be either user defined or input. For each application a definition file must created that contains the user definitions and the input phenomena declarations.
User defined phenomena
Definitions of phenomena in Phenesthe can be of three types:
- Event definitions
- State definitions
- Dynamic temporal phenomena definitions
Events
Events are defined using instant formulae of the language and via the use of the event_phenomenon
keyword. An example definition from the Alice and Bob sample is the following:
%gain when picking up and not dropping
event_phenomenon gain(Person) :=
pickup(Person, _Object) and
tnot drop(Person,_).
States
States are defined using disjoint interval formulae of the language and the state_phenomenon
keyword. An example from the maritime domain is the following:
state_phenomenon moored(V,P) := stopped(V) intersection in_port(V,P).
Dynamic temporal phenomena
Dynamic temporal phenomena are defined using non-disjoint interval formulae of the language and the dynamic_phenomenon
keyword. An example from the meal preparation scenario is the following:
dynamic_phenomenon mealPrep(P) :=
stirfryPrep(P) finishes steaksPrep(P).
Input phenomena
Input phenomena declarations should have the following form:
- Events
input_phenomenon(event_name(_,...,_),event).
- States
input_phenomenon(state_name(_,...,_),state).
- Dynamic temporal phenomena
input_phenomenon(dyn_temp_phe_name(_,...,_),dynamic).