Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generic static properties + asynchronous inference algorithm #48

Merged
merged 16 commits into from
Sep 1, 2024

Conversation

ondrej33
Copy link
Member

@ondrej33 ondrej33 commented Sep 1, 2024

In this PR, we are introducing two main concepts:

  1. We are adding support for writing custom static properties as first-order formulas. There is a new tokenizer, parser, and evaluator for these formulas. They are directly added to the inference process, and also to the consistency validation check.
    We will make a guide on formula writing in the future. Just as an example of how one can reason about uninterpreted or update functions:

    • \exists x, y: f(0, x) ^ h(x, y) to describe some complex relationship between functions f and h
    • \forall x, y: f_v3(0, x, y) => f_v3(1, x, y) to say variable v1 activates v3 (if we have a variable v3 with three regulators v1, v2, v3)
  2. The whole inference computation now runs completely asynchronously. This means it no longer blocks the main backend thread. It now also reports progress to the front end and is partially cancellable (in particular checkpoints, such as just before starting the evaluation of some property). We also added error handling to the inference process. The symbolic context for each computation is now created automatically based on the properties. Different symbolic contexts are used for different kinds of properties.

@ondrej33 ondrej33 merged commit 858d498 into main Sep 1, 2024
6 checks passed
@ondrej33 ondrej33 deleted the dev-static-properties branch September 1, 2024 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant