Describe the bug
The 21 Java datasets contain 42 java_points_to*.cnf files, but fall into two groups:
| Datasets |
Grammar templates |
Downloaded graphs |
| 14: avrora, batik, eclipse, fop, h2, jython, luindex, lusearch, pmd, sunflow, tomcat, tradebeans, tradesoap, xalan |
Use load/store and unindexed intermediate nonterminals |
Indexed forward edges; no reverse edges |
| 7: commons_io, commons_lang3, gson, guava, jackson, junit5, mockito |
Use _i for indexed terminals and intermediate nonterminals |
Indexed forward edges and already-added reverse edges |
The documentation assigns reverse-edge augmentation to the user. The absence of reverse edges in the first group is expected. Their presence in the second group means that applying cfpq_data.add_reverse_edges() also reverses edges that are already reverse edges. For example, a graph containing load_2 and load_r_2 gains load_2_r and load_r_2_r.
To Reproduce
- With CFPQ_Data 5.0.0, download
avrora and gson using cfpq_data.download(...).
- Inspect their graph labels and both supplied
java_points_to*.cnf files.
- Observe that
avrora has only forward edges, while gson already has reverse edges such as load_r_2.
- Apply
cfpq_data.add_reverse_edges() to the gson graph and inspect the resulting labels.
Expected behavior
Synchronize the Java graph archives, grammar conventions, and documentation. If users are expected to add reverse edges, downloaded graphs should consistently contain only forward edges, so augmentation is applied exactly once. Document how both grammar-template notations are materialized and which reverse-label naming convention should be used.
Desktop
- OS: Fedora Linux 44 (Sway), x86_64
- CPU: AMD Ryzen 5 5500U
- RAM: 14 GiB
- CFPQ_Data: 5.0.0
- Python in project
.venv: 3.13.13
Screenshots

Describe the bug
The 21 Java datasets contain 42
java_points_to*.cnffiles, but fall into two groups:load/storeand unindexed intermediate nonterminals_ifor indexed terminals and intermediate nonterminalsThe documentation assigns reverse-edge augmentation to the user. The absence of reverse edges in the first group is expected. Their presence in the second group means that applying
cfpq_data.add_reverse_edges()also reverses edges that are already reverse edges. For example, a graph containingload_2andload_r_2gainsload_2_randload_r_2_r.To Reproduce
avroraandgsonusingcfpq_data.download(...).java_points_to*.cnffiles.avrorahas only forward edges, whilegsonalready has reverse edges such asload_r_2.cfpq_data.add_reverse_edges()to thegsongraph and inspect the resulting labels.Expected behavior
Synchronize the Java graph archives, grammar conventions, and documentation. If users are expected to add reverse edges, downloaded graphs should consistently contain only forward edges, so augmentation is applied exactly once. Document how both grammar-template notations are materialized and which reverse-label naming convention should be used.
Desktop
.venv: 3.13.13Screenshots