Task is a fundamental concept when interacting with ImandraX. When the ImandraX server processes a request, it spawns tasks to perform the work.
Task kinds
- Task kinds:
Task_unspecified,Task_eval,Task_check_po,Task_proof_check,Task_decomp - Three common task kinds:
Task_check_po: check the proof obligation- from
theorem,lemma,verify, orinstancedefinitions in IML. - from all
let recdefinitions: termination proofs
- from
Task_decomp: decompose the proof obligation- from
[@@decomp top ()]attributes or directdecompose/decompose_fullendpoint calls
- from
Task_eval: evaluate the expression- from
eval <expr>commands
- from
Timeout
tasks have timeouts. see timeouts
Caching
- Tasks are cached by the server
- Task cache is keyed by the task itself
- One common way to invalidate a task is renaming identifiers.