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

Create iprover_smtcomp.sh #96

Merged
merged 42 commits into from
Jun 18, 2024
Merged

Conversation

konstantin-korovin
Copy link
Contributor

To run iProver please use

cd bin
iprover_smtcomp.sh

"cd bin" is needed as paths in scripts are relative to bin.

To run iProver please use

cd bin
iprover_smtcomp.sh <problem>

"cd bin" is needed as paths in scripts are relative to bin.
@mbromber
Copy link
Contributor

Hi Konstantin, please run make check and then commit and push again. Our CI is a bit nitpicky about trailing whitespaces and with make check this should be fixed automatically. The CI should then also run some tests automatically, so you can see whether your solver will run on our execution platform.

@konstantin-korovin
Copy link
Contributor Author

Hi Martin,
After some struggle with poetry and python3 I got the following list of errors when run make check
Is there some other way to fix the whitespace issue ?

Thanks
Konstantin

make check
🚀 Checking for obsolete submissions/Readme.md
✅ submissions/Readme.md is up to date
🚀 Checking Poetry lock file consistency with 'pyproject.toml': Running poetry lock --check
All set!
🚀 Linting code: Running pre-commit
check for case conflicts.................................................Passed
check for merge conflicts................................................Passed
check toml...............................................................Passed
check yaml...............................................................Passed
fix end of files.........................................................Passed
trim trailing whitespace.................................................Passed
black....................................................................Passed
prettier.................................................................Passed
🚀 Static type checking: Running mypy
smtcomp/unpack.py:42: error: Unexpected keyword argument "filter" for "extractall" of "TarFile" [call-arg]
smtcomp/defs.py:10: error: Cannot find implementation or library stub for module named "pydantic" [import]
smtcomp/defs.py:11: error: Cannot find implementation or library stub for module named "pydantic.networks" [import]
smtcomp/defs.py:62: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:90: error: Unexpected keyword argument "extra" for "init_subclass" of "object" [call-arg]
smtcomp/defs.py:90: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:101: error: Unexpected keyword argument "extra" for "init_subclass" of "object" [call-arg]
smtcomp/defs.py:101: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:120: error: Type of variable becomes "Optional[Any]" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1039: error: Base type RootModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1067: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1076: error: Type of variable becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1086: error: Unexpected keyword argument "extra" for "init_subclass" of "object" [call-arg]
smtcomp/defs.py:1086: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1128: error: Unexpected keyword argument "extra" for "init_subclass" of "object" [call-arg]
smtcomp/defs.py:1128: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1137: error: Unexpected keyword argument "extra" for "init_subclass" of "object" [call-arg]
smtcomp/defs.py:1137: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1197: error: Base type RootModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1223: error: Unexpected keyword argument "extra" for "init_subclass" of "object" [call-arg]
smtcomp/defs.py:1223: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1231: error: Type of variable becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1232: error: Type of variable becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1258: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1315: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1320: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1326: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1331: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/defs.py:1341: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/results.py:4: error: Cannot find implementation or library stub for module named "polars" [import]
smtcomp/results.py:8: error: Cannot find implementation or library stub for module named "pydantic" [import]
smtcomp/results.py:13: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/results.py:34: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/results.py:85: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/results.py:132: error: Return type becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/results.py:137: error: Return type becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/results.py:138: error: Returning Any from function declared to return "object" [no-any-return]
smtcomp/submission.py:8: error: Cannot find implementation or library stub for module named "github" [import]
smtcomp/submission.py:9: error: Cannot find implementation or library stub for module named "github.Repository" [import]
smtcomp/submission.py:10: error: Cannot find implementation or library stub for module named "github.ContentFile" [import]
smtcomp/submission.py:13: error: Cannot find implementation or library stub for module named "git" [import]
smtcomp/submission.py:17: error: Returning Any from function declared to return "Submission" [no-any-return]
smtcomp/submission.py:106: error: Return type becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/submission.py:106: error: Argument 1 to "smtcomp_repo" becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/submission.py:110: error: Return type becomes "Optional[Any]" due to an unfollowed import [no-any-unimported]
smtcomp/submission.py:110: error: Argument 1 to "commit_exists" becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/submission.py:122: error: Returning Any from function declared to return "object" [no-any-return]
smtcomp/selection.py:9: error: Cannot find implementation or library stub for module named "pydantic" [import]
smtcomp/selection.py:10: error: Cannot find implementation or library stub for module named "polars" [import]
smtcomp/benchmarks.py:10: error: Cannot find implementation or library stub for module named "git" [import]
smtcomp/benchmarks.py:11: error: Cannot find implementation or library stub for module named "gitlab" [import]
smtcomp/benchmarks.py:18: error: Base type RemoteProgress becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/benchmarks.py:137: error: Argument 1 to "update" of "Progress" has incompatible type "Optional[TaskID]"; expected "TaskID" [arg-type]
smtcomp/convert_csv.py:7: error: Library stubs not installed for "requests" [import]
smtcomp/convert_csv.py:7: note: Hint: "python3 -m pip install types-requests"
smtcomp/convert_csv.py:7: note: (or run "mypy --install-types" to install all missing stub packages)
smtcomp/convert_csv.py:9: error: Cannot find implementation or library stub for module named "pydantic.networks" [import]
smtcomp/convert_csv.py:10: error: Cannot find implementation or library stub for module named "option" [import]
smtcomp/convert_csv.py:93: error: Return type becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/convert_csv.py:93: error: Argument 1 to "find_archive_id" becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/convert_csv.py:111: error: Return type becomes "Tuple[Any, Any]" due to an unfollowed import [no-any-unimported]
smtcomp/convert_csv.py:111: error: Argument 1 to "find_archive" becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/benchexec.py:6: error: Cannot find implementation or library stub for module named "yattag" [import]
smtcomp/benchexec.py:6: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
smtcomp/benchexec.py:10: error: Cannot find implementation or library stub for module named "pydantic" [import]
smtcomp/benchexec.py:40: error: Base type BaseModel becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/scramble_benchmarks.py:8: error: Cannot find implementation or library stub for module named "polars" [import]
smtcomp/scramble_benchmarks.py:57: error: Return type becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/scramble_benchmarks.py:57: error: Argument 1 to "create_scramble_id" becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/scramble_benchmarks.py:63: error: Argument 1 to "scramble_lazyframe" becomes "Any" due to an unfollowed import [no-any-unimported]
smtcomp/main.py:11: error: Cannot find implementation or library stub for module named "typer" [import]
smtcomp/main.py:12: error: Cannot find implementation or library stub for module named "pydantic" [import]
smtcomp/main.py:16: error: Cannot find implementation or library stub for module named "polars" [import]
Found 70 errors in 10 files (checked 18 source files)
make: *** [Makefile:16: check] Error 1
korovin@vip2:~/smt-comp.github.io$

@konstantin-korovin
Copy link
Contributor Author

PS I don't have any logic specific command lines. Just:

cd bin
iprover_smtcomp.sh <problem_file>

for the specified logics in the json file.

@mbromber
Copy link
Contributor

You are missing some imports. The quickest solution would be that you try to commit and push it again and then we will see if the CI that has all the imports still detects any errors.

@mbromber
Copy link
Contributor

Now it looks much better. I just now noticed that your submission ending is .sh but should be .json
That is also why the CI doesn't download and test your solver on some trivial benchmarks. Please do that too.

@mbromber
Copy link
Contributor

And parallel and cloud tracks must be in a separate submission.

@mbromber mbromber added the submission Submissions for SMT-COMP label Jun 13, 2024
@konstantin-korovin
Copy link
Contributor Author

konstantin-korovin commented Jun 13, 2024 via email

@mbromber
Copy link
Contributor

Your submission file is no longer tracked by git. You need to do a "git add" if you renamed it without "git mv"

@mbromber
Copy link
Contributor

The CI has found the next bug in your submission.

"logics" : [
            "ALIA, ANIA, AUFDTLIA, AUFDTLIRA, AUFDTNIRA, AUFLIA, AUFLIRA, AUFNIA, AUFNIRA, LIA, LRA, NIA, NRA, UF, UFDT, UFDTLIA, UFDTLIRA, UFDTNIA, UFDTNIRA, UFIDL, UFLIA, UFLRA, UFNIA, UFNIRA"
         ],

should be

"logics" : [
            "ALIA", "ANIA", "AUFDTLIA", "AUFDTLIRA", "AUFDTNIRA", "AUFLIA", "AUFLIRA", "AUFNIA", "AUFNIRA", "LIA", "LRA", "NIA", "NRA", "UF", "UFDT", "UFDTLIA", "UFDTLIRA", "UFDTNIA", "UFDTNIRA", "UFIDL", "UFLIA", "UFLRA", "UFNIA", "UFNIRA"
         ],

And if you add something in the field divison, then you are automatically registered to all logics in that division! So maybe you want to remove that field?

Copy link

Summary of modified submissions

iProver v3.9

@mbromber
Copy link
Contributor

Next issue is that the link does not point to an archive. It should be https://zenodo.org/records/11636244/files/iprover_v3.9_smt_comp_2024.zip

@konstantin-korovin
Copy link
Contributor Author

konstantin-korovin commented Jun 13, 2024 via email

@mbromber
Copy link
Contributor

As far as I know, you can't. The first argument of command is supposed to be a script or binary in your folder and is not even executed from your base folder directly. You will need to query in your script(s) the current directory path.

@mbromber
Copy link
Contributor

So the command should be "bin/iprover_smtcomp.sh" and you need to modify your scripts so you can run the script from anywhere.

@konstantin-korovin
Copy link
Contributor Author

konstantin-korovin commented Jun 13, 2024 via email

@konstantin-korovin
Copy link
Contributor Author

konstantin-korovin commented Jun 13, 2024 via email

@konstantin-korovin
Copy link
Contributor Author

konstantin-korovin commented Jun 14, 2024 via email

@mbromber
Copy link
Contributor

@konstantin-korovin We have executed the latest version of iProver on a randomly chosen subset of 20 single-query benchmarks from each logic where it participates. The benchmarks are also scrambled by the competition scrambler (with seed 1). You can find the results here: https://www.fi.muni.cz/~xjonas/smtcomp/iprover.table.html#/table

Quick explanation:

  • Green status means that the result agrees with the (set-info :status _) annotation from the benchmark.
  • Blue status means that the benchmark has annotation (set-info :status unknown).
  • By clicking on the result (e.g. false, true, ABORTED, …) you can see the command-line arguments with which your solver was called and its output on the benchmark.
  • By clicking on the benchmark name (i.e., scrambled.yml), you can see the details of the benchmark including its contents (by clicking on the file link in input_files) and the name of the original bennchmark before scrambling (e.g., # original_files: 'non-incremental/AUFBVFP/20210301-Alive2-partial-undef/ph7/583_ph7.smt2').

Please check whether there are some discrepancies, such as missing/extra logics, unexpected aborts or unknowns, and similar.

@mbromber
Copy link
Contributor

mbromber commented Jun 14, 2024

Hi Martin, I noticed that behaviour on the smt-comp server and our local server is different. In particular, ./iprover_smtcomp.sh UF.sat.smt2 is solved locally but not solved on smtcomp. I also added dbg output and can see iProver scripts run differently on smt-comp server compared locally. After some investigation I see that smt-comp has old python3 version 3.10.12 We rely on python 3.11. Although we are using cx_Freeze to get an executable from python scripts and packagies I suspect 3.10.12 is still too old. Any chance upgrading python ? I tried to run the submitted version on a "fresh" Ubuntu laptop and it runs as expected. Note that currently upload is a dbg version to investigate this issue. Thanks, Konstantin

I don't think we can update it. But we have a meeting in 15 minutes and we will discuss whether this is possible there.

@mbromber
Copy link
Contributor

Hi Konstantin, it is not in our power to change the python version that is used on the cluster nodes. But you could add and use a virtual environment in your archive. There you can pick any python version you want independent of what we have installed. See https://docs.python.org/3/library/venv.html and https://stackoverflow.com/questions/1534210/use-different-python-version-with-virtualenv

@konstantin-korovin
Copy link
Contributor Author

konstantin-korovin commented Jun 14, 2024 via email

@martinjonas martinjonas mentioned this pull request Jun 18, 2024
@martinjonas martinjonas merged commit bbc54b4 into SMT-COMP:master Jun 18, 2024
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
submission Submissions for SMT-COMP
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants