Support defining predicates using #[thrust::predicate] attribute with fn statements
#23
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This feature recognizes functions annotated with
#[thrust::predicate]as predicates and inserts correspondingdefine-fundefinitions—derived from their names and arguments—into the.smt2file. The first string literal that appears in a function's body is inserted as the predicate body.Compared with
#![thrust::raw_command], Thrust can assign a predicate name automatically and later leverage that name to connect the predicate to relevant traits(for example,SomeTrait::pred->(define-fun some_trait_pred)).If a user writes the following:
the appropriate definitions are inserted into the .smt2 file.