Skip to content

Commit b43357a

Browse files
authored
Update README.md
1 parent b65e9f6 commit b43357a

1 file changed

Lines changed: 16 additions & 18 deletions

File tree

README.md

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Chronosymbolic Learning
2-
Artifact for paper "Chronosymbolic Learning: Efficient CHC Solving with Symbolic Reasoning and Inductive Learning"
2+
Artifact for the paper "Chronosymbolic Learning: Efficient CHC Solving with Symbolic Reasoning and Inductive Learning"
33

4-
- See `./experiment` for some important results and configurations
4+
- See `./experiment` for some significant results and configurations
55

6-
- See `./examples` for examples on how our tool works
6+
- See `./examples` for examples of how our tool works
77

88
## Requirement (To set up our environment)
99
Python (3.7.0 or higher, and anaconda recommended)
@@ -16,7 +16,7 @@ pip install -r requirements.txt
1616

1717
May have to manually set up `PYTHONPATH` and `PATH` properly, `PYTHONPATH=$Z3_BIN/python`, `PATH=$PATH:$Z3_BIN`
1818

19-
Then, prepare the dataset following the instruction in `data/` folder.
19+
Then, prepare the dataset following the instructions in `data/` folder.
2020

2121
## Chronosymbolic Learning
2222
- Support SMT-LIB2 format (check-sat) and Datalog format (rule-query)
@@ -33,33 +33,31 @@ Then, prepare the dataset following the instruction in `data/` folder.
3333

3434
- Run: `python test.py` with the parameters below:
3535

36-
- Specify instance file name using `-f FILE_NAME`
36+
- Specify instance file name using `-f FILE_NAME` to run a single instance
3737

38-
- Specify log file (which records how the tool solves the CHC system) using `-l FILE_NAME`
38+
- Specify the log file (which records how the tool solves the CHC system) using `-l FILE_NAME`
3939

40-
- Specify directory name using `-r -f DIR_NAME` (logs are automatically generated in log/DIR_NAME)
40+
- Specify directory name using `-r -f DIR_NAME` to run a test suite (logs are automatically generated in log/DIR_NAME)
4141
- e.g. `python test.py -f tests/safe/ -a -r -v -t 360 -o result/result.log`
4242

43-
- Or specify a file list using `-b -f FILELIST` (run files specified in the filelist, whose format is the same as `tests/filtered`)
43+
- Or specify a file list using `-b -f FILELIST` (run files specified in the file list, whose format is the same as `tests/filtered`)
4444
- e.g. `python test.py -a -v -b -f tests/filtered -a -t 360 -o result/result.log`
4545

4646
- Increase log file verbosity using `-v` (not effective in output on screen)
4747

4848
- Adjust timeout using `-t TIMEOUT`, only effective in directory mode
4949

50-
- Specify overall result file using `-o FILE_NAME`, export a result csv (with success and timing statistics) with the same file name using `-a`
50+
- Specify the overall result file using `-o FILE_NAME`, export a result CSV (with success and timing statistics) with the same file name using `-a`
5151

52-
- Individual LOG files will be outputed in `./log/YOUR_INSTANCE_PATH`
52+
- Start testing from the file index k in the folder `-s K` (`K` is the index starting from zero)
5353

54-
- Start testing from the file index k in the folder `-s k` (index start from zero)
55-
56-
- If you want to run multiple instances, make sure using different `FILE_NAME`-s in the config file to avoid clash (`config.yaml` in default)
54+
- If you want to run multiple instances, make sure to use different `FILE_NAME`-s in the config file to avoid clash (`config.yaml` in default)
5755

5856
- More options see `--help`
5957

6058
# To reproduce Chronosymbolic-single
6159

62-
Please refer to the configuration in `./experiment/result_summary.log`. The default config should also be decent. Even fixed random seeds can cause some minor randomness that may slightly affect the performance.
60+
Please refer to the configuration in `./experiment/result_summary.log`. The default config should also be decent. Even fixed random seeds can cause minor randomness that may slightly affect the performance.
6361

6462
- `python test.py -f tests/safe -a -r -v -t 360 -o result/result_safe.log`
6563

@@ -74,22 +72,22 @@ Please refer to the configuration in `./experiment/result_summary.log`. The defa
7472

7573
- Specify the path of z3 (with GSpacer) binary in `utils/run_spacer.py` and `utils/run_spacer_filtered.py`
7674

77-
- Specify a folder name and run `utils/run_spacer.py` or specify a filelist name and run `utils/run_spacer_filtered.py`
75+
- Specify a folder name and run `utils/run_spacer.py` or specify a file list name and run `utils/run_spacer_filtered.py`
7876

7977
- Enable GSpacer: `enable_global_guidance = 1`
8078

8179
## LinearArbitrary and Freqhorn
8280
Refer to [LinearArbitrary](https://github.com/GaloisInc/LinearArbitrary-SeaHorn/tree/master/test) and [Freqhorn](https://github.com/freqhorn/freqhorn)
8381
For LinearArbitrary, you can also try our optimized data-driven learner implementation (set `ClassAgent = Chronosymbolic` to `ClassAgent = DataDrivenLearner` in `test.py` and run it in the same way as Chronosymbolic does)
8482

85-
## Manually "guess" an inductive invariant
83+
## Manually "guess" an inductive invariant (hard to scale up)
8684
In `test.py` `guess_manually` function:
8785
- Modify `s = 'v_0 == v_1'` to indicate the inductive invariant
8886

89-
- Modify `db = load_horn_db_from_file("/home/ssr/chc-tools/chctools/NL/nl-1-chc.smt2", z3.main_ctx())` to indicate SMTLIB2 file name
87+
- Modify `db = load_horn_db_from_file(args.file_name, z3.main_ctx())` or pass the parameter in through command line to indicate SMTLIB2 file name
9088

9189
## Enumeration
92-
- A simple implementation of enumeration-based invariant synthesizer
90+
- A simple implementation of an enumeration-based invariant synthesizer
9391

9492
- Run `learner/enumerate.py` that enumerates through a context-free grammar
9593

0 commit comments

Comments
 (0)