Skip to content

Discuss state space generation performance bottleneck #682

@AndreaPuffo

Description

@AndreaPuffo

Our activity synthesis chain generates the state space at step 4. This can be time-consuming, especially when most variables are unrelated / "don't-cares" for the activity (but are related to other activities). This is particularly annoying given that in steps 6 and 7 we minimize the state space, which again becomes time-consuming with a large state space, and slows down the language equivalence check, which also computes the state space.

Current solution: the user manually specifies the values of all variables in the activity preconditions. This is error-prone and annoying for a user, but gets the job done. Ideally, we would avoid this.

The performance difference can be quite staggering. For instance, the LSAT bowling ball example contains 8 low-level activities (out of a total of 10 activities) that are loosely correlated, i.e. the variables used in one activity practically do not overlap with the ones of another. Synthesizing with "liberal" preconditions the total time is around 1000 seconds, with "strict" preconditions is around 14 seconds.

Possible future directions:

  • Before synthesis, automatically detect unrelated variables and give them a value: quick-and-dirty solution, should not be too much work to implement;
  • Use a symbolic state space explorer: definitely the way to go, but I believe much more time-consuming.

Metadata

Metadata

Assignees

No one assigned

    Labels

    synthesisImprovements to synthesis capabilities

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions