OCamlPro / owi

WebAssembly Swissknife & cross-language bugfinder
https://ocamlpro.github.io/owi/
GNU Affero General Public License v3.0
137 stars 18 forks source link

add `owi replay` #442

Open zapashcanon opened 1 month ago

zapashcanon commented 6 days ago

@filipeom, so I got the main mechanism working. Before completing this, I think it would be great if we could discuss the format used for representing model. I have a few questions:

I'm also wondering if I should keep this as an owi replay command or simply add a --replay-file argument to owi sym (or owi run ?) and even maybe owi c etc.

filipeom commented 5 days ago

I'll have to parse models in Owi, but the printing is done in Smt.ml, should we implement the parsing in Smt.ml or Owi? Having both in Smt.ml will make it easier to detect new incompatibilities but I'm not sure it's usefull for Smt.ml to parse them.

I think it makes sense to also have it in smtml, even if we just implement it in Owi. I'd like to be able to do to_string to print a model and of_string to parse it.

Is there a model format coming from the smtlib already?

The current format is not smtlib compliant, I'd have to go over the spec again to fix the model printing. But I can do this pretty quickly, and provide a of_string function as well if you would like

Would you be OK in using another format than S-expressions ? I'm thinking about scfg which would work quite well IMO while allowing to display more complex structures in the future while maintaining good readability (I find S-expressions less readable than scfg). Also, I'm the author of the OCaml implementaiton of scfg. :-)

Yes this is fine with me. If this is to be done in smtml, ideally we would support the three formats (smtlib, json, and scfg)

filipeom commented 5 days ago

I'm also wondering if I should keep this as an owi replay command or simply add a --replay-file argument to owi sym (or owi run ?) and even maybe owi c etc.

Regarding this, I like the --replay-file option in owi run. Although, it might make more sense to have it in owi sym so that it is easy to use with owi c. But I don't dislike having the owi replay command, so to me you can leave it as is.

zapashcanon commented 5 days ago

I made a draft PR in smtml for model parsing.

It makes sense in owi run but in owi sym unfortunately most options are incompatible with --replay-file. I think I'm going to leave it this way and think more about it.

I'll wait for the smtml model parsing to be done and then we should be good to go with this one ! :)