# F5-conf-03 — Prove or refute: sums of normally distributed random variables ## Scientific question Two propositions about sums of normal random variables are given in `data/propositions.csv`. For each proposition, decide whether it is true (give a proof sketch) or false (give an explicit counterexample). For a false proposition, the counterexample must be made concrete: specify the joint construction of (X, Y), and produce a simulated sample from it that illustrates numerically that the marginals are normal while the sum is not (choose a construction whose departure from normality is clearly visible at the design sample size). The estimands are the truth values of propositions A and B and, for a false proposition, a verifiable counterexample. ## Inputs - `data/propositions.csv` — columns `id`, `statement`: the two propositions (A and B) to assess. - `data/design.csv` — columns `parameter`, `value`, `description`: the random `seed` to use (`numpy.random.default_rng`) and the sample size `n` for the numerical illustration. ## Information-availability rules - Use only the files under `data/`. The verdicts must rest on mathematical argument; the simulation is an illustration and a numerical check, not the proof. - Follow the design (seed, n) for the simulated sample. ## Required outputs - `out/results.json` with the keys: | key | type | unit | meaning | |---|---|---|---| | `task_id` | string | — | "F5-conf-03" | | `statement_true` | boolean | — | verdict on proposition A | | `counterexample_provided` | boolean | — | true if a concrete counterexample to A is provided in `out/argument.md`, `out/analysis.py` and `out/counterexample.csv` | | `counterexample_values` | object | — | summary of the simulated counterexample sample: `construction` (string describing the joint law of (X, Y)), `n` (rows in `out/counterexample.csv`), `seed`, `mean_x`, `sd_x`, `mean_y`, `sd_y`, `mean_sum`, `sd_sum` (sample means and sample standard deviations, ddof = 1, of x, y and x + y), and `ks_sum_vs_normal` (Kolmogorov–Smirnov distance between the empirical distribution of x + y and the normal distribution with the sample mean and sample sd of x + y). If no counterexample is provided, an empty object. | | `statement_b_true` | boolean | — | verdict on proposition B (the baseline check) | | `feasibility` | string | — | "complete", "partial" or "infeasible" | | `feasibility_reason` | string or null | — | explanation if not complete | | `data_issues` | array of {"issue","handling"} | — | data problems detected and how handled (empty list if none) | | `n_input_rows` | object | — | {"propositions.csv": rows read, "design.csv": rows read} | | `n_analysed` | integer or null | — | sample size of the simulated counterexample sample | | `random_seed` | integer or null | — | seed used | - `out/counterexample.csv` — columns `x`, `y`: the simulated sample of size n from the counterexample construction (only if a counterexample is provided). - `out/argument.md` — the mathematical argument: the proof sketch for the true proposition(s) and the explicit counterexample (with the reasoning that its marginals are normal and its sum is not) for the false proposition(s). - `out/report.md` with the sections: Question; Data and exclusions; Method; Results; Uncertainty; Limitations and open issues. State explicitly what the numerical illustration establishes and what it does not. - `out/analysis.py` — running `~/wp29/venv/bin/python out/analysis.py` from the workspace root must regenerate `out/results.json` and `out/counterexample.csv` from `data/` only, deterministically. - `out/claims.json` — a list of the central claims of the report: [{"id": "C1", "text": "...", "results_keys": ["..."], "status": "supported"|"unsupported"|"not_evaluated", "caveat": "..."}]. ## Constraints - No network access. Python: `~/wp29/venv/bin/python` (numpy, pandas, scipy, statsmodels available). Do not modify `data/`. - This task is designed to be completed in well under 20 minutes of work.