Information on the distributed sources
======================================

Author: Enrico Iurlano
Last Updated: 2025-11-30
Version: Pre-Alpha
Disclaimer: There is no warranty of any kind, express or implied.

How to use the scripts?
=======================

External software needed to reproduce experiments:
https://github.com/pysathq/pysat
https://github.com/audemard/glucose
https://github.com/marijnheule/drat-trim

The general procedure for carrying out experiments is the following:
- Generate all subgroups required for experimentation and store them in, say, `subgroups.sqlite` by using the script `subgroup_generation.jl`
- Generate the experiment-constellations of interest by sroting them in, say, `experiments_collection.sqlite` by using the script `experiments_preparation.jl`
- Run (a subselection of) experiments by running the function `steer_experim_viaSQL` provided in `search_family.jl` on the relevant `experiments_collection.sqlite`

Here a minimal example:
```
include("subgroup_generation.jl")
prestore_all_subgroups("prestorage_subgroups.sqlite", [5], [[12,6,4,3,2,1]])

include("experiments_preparation.jl")
PRESTORE_DB_PATH = "prestorage_subgroups.sqlite"
TARGET_DB_PATH = "experiments_collection.sqlite"

n=5
gen_all_subgroups_experims_given_card_alphabet_size_strength(PRESTORE_DB_PATH, TARGET_DB_PATH, 12, n, 4, 3, "glucose421")

include("search_family.jl")
steer_experim_viaSQL(TARGET_DB_PATH, "SELECT * FROM constellations WHERE meant_for_leftcoset_approach=1", 1000, true)
```


Selected experiments are designed to output a CNF in DIMACS file format.
This output can be manually passed to glucose (e.g., in proof-logging modality):
```
glucose-4.2.1/glucose-simp model.cnf -vbyte -certified -certified-output=nonexistence.proof.out
```

The proof can then be validated by calling
```
drat-trim model.cnf nonexistence.proof.out > validation_output.txt -t 1000000 # 10^6 seconds timelimit
```
