Skip to content

Commit b07c984

Browse files
committed
Release Program Reduction 101 v1.0
0 parents  commit b07c984

43 files changed

Lines changed: 4446 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/pages.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Publish Quarto Book
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
env:
14+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
15+
16+
concurrency:
17+
group: pages
18+
cancel-in-progress: false
19+
20+
jobs:
21+
build:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: Check out repository
25+
uses: actions/checkout@v6
26+
27+
- name: Set up Quarto
28+
uses: quarto-dev/quarto-actions/setup@v2
29+
30+
- name: Install TinyTeX
31+
run: |
32+
quarto install tool tinytex --no-prompt --log-level warning
33+
echo "$HOME/bin" >> "$GITHUB_PATH"
34+
35+
- name: Check Quarto installation
36+
run: quarto check
37+
38+
- name: Render book
39+
run: quarto render
40+
41+
- name: Package Pages artifact
42+
run: tar --dereference --hard-dereference --directory _book -czf github-pages.tar.gz .
43+
44+
- name: Upload Pages artifact
45+
uses: actions/upload-artifact@v6
46+
with:
47+
name: github-pages
48+
path: github-pages.tar.gz
49+
if-no-files-found: error
50+
retention-days: 1
51+
52+
deploy:
53+
environment:
54+
name: github-pages
55+
url: ${{ steps.deployment.outputs.page_url }}
56+
runs-on: ubuntu-latest
57+
needs: build
58+
steps:
59+
- name: Deploy to GitHub Pages
60+
id: deployment
61+
uses: actions/deploy-pages@v5

.gitignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/.quarto/
2+
/_book/
3+
/.DS_Store
4+
5+
6+
**/*.quarto_ipynb
7+
8+
# Root-level PDF/LaTeX build artifacts
9+
/Program-Reduction-101.pdf
10+
/index.pdf
11+
/index.aux
12+
/index.fdb_latexmk
13+
/index.fls
14+
/index.log
15+
/index.toc
16+
/index.tex
17+
/.texmf-var/
18+
/.texmf-config/

CONTRIBUTING.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Contributing
2+
3+
Program Reduction 101 is a living book. Contributions are welcome when they make the book clearer, more accurate, more reproducible, or more useful to readers.
4+
5+
## Useful Contributions
6+
7+
- Fix factual errors.
8+
- Improve explanations.
9+
- Add missing citations.
10+
- Report broken commands or links.
11+
- Suggest clearer diagrams.
12+
- Add runnable labs.
13+
- Contribute small reduction case studies.
14+
- Improve glossary definitions.
15+
16+
## Contribution Principles
17+
18+
- Keep Perses and program reduction at the center.
19+
- Prefer precise technical explanations over promotional language.
20+
- Do not add claims without citations or clear evidence.
21+
- Keep examples small enough to run and inspect.
22+
- When adding commands, include expected output or validation steps.
23+
- When adding a lab, make sure the files match the commands in the book.
24+
25+
## Reporting Issues
26+
27+
When reporting an issue, include:
28+
29+
- the page or chapter;
30+
- the specific sentence, command, or example;
31+
- what is wrong or unclear;
32+
- a suggested fix if you have one.
33+
34+
## Adding Citations
35+
36+
When adding or correcting citations, update `bibliography/references.bib` and check that the rendered reference page displays names correctly.
37+

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Program Reduction 101
2+
3+
Program Reduction 101 is a practical, research-oriented introduction to program reduction: the craft of turning large failure-inducing inputs into small, useful bug reports.
4+
5+
The book starts with Delta Debugging, then moves through Perses and syntax-guided reduction, reducer evaluation, robust oracles, compiler-bug reduction, and the Perses-family research line.
6+
7+
Read the book online:
8+
9+
<https://yqtian-se.github.io/program-reduction-101/>
10+
11+
## What Is Included
12+
13+
- Quarto book source in `index.qmd` and `chapters/`
14+
- Bibliography in `bibliography/references.bib`
15+
- Styling in `assets/`
16+
- Small runnable examples in `examples/`
17+
- GitHub Pages workflow in `.github/workflows/pages.yml`
18+
19+
## Build Locally
20+
21+
Install Quarto, then run:
22+
23+
```bash
24+
quarto render
25+
```
26+
27+
Or use the official Quarto Docker image:
28+
29+
```bash
30+
docker run --rm \
31+
-v "$PWD:/project" \
32+
-w /project \
33+
ghcr.io/quarto-dev/quarto \
34+
quarto render
35+
```
36+
37+
## Questions and Suggestions
38+
39+
For questions, suggestions, or corrections, please contact:
40+
41+
`yongqiang.tian@monash.edu`

_quarto.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
project:
2+
type: book
3+
4+
book:
5+
title: "Program Reduction 101"
6+
subtitle: "From Delta Debugging to Perses and Syntax-Guided Reducers"
7+
author: "Yongqiang Tian"
8+
date: 2026-05-12
9+
description: "A practical and research-oriented introduction to program reduction, from Delta Debugging to Perses and syntax-guided reducers."
10+
repo-url: https://github.com/yqtian-se/program-reduction-101
11+
page-footer:
12+
center: "Questions or suggestions? Contact yongqiang.tian@monash.edu."
13+
chapters:
14+
- index.qmd
15+
- chapters/preface.qmd
16+
- part: "Foundations and Motivation"
17+
chapters:
18+
- chapters/01-why-program-reduction.qmd
19+
- chapters/02-meet-perses.qmd
20+
- chapters/03-test-oracles.qmd
21+
- chapters/04-your-first-perses-reduction.qmd
22+
- part: "How Program Reduction Works"
23+
chapters:
24+
- chapters/05-delta-debugging.qmd
25+
- chapters/06-perses-and-syntax-guided-reduction.qmd
26+
- chapters/07-the-perses-family.qmd
27+
- chapters/08-reduction-problem-and-minimality.qmd
28+
- chapters/09-evaluating-reducers.qmd
29+
- part: "Related Tools and Algorithms"
30+
chapters:
31+
- chapters/10-hierarchical-delta-debugging.qmd
32+
- chapters/11-c-reduce-and-compiler-testcase-reduction.qmd
33+
- chapters/12-picireny-and-grammar-based-reduction.qmd
34+
- chapters/13-minimality-search-and-transformation-power.qmd
35+
- part: "Practice"
36+
chapters:
37+
- chapters/14-writing-robust-oracles.qmd
38+
- chapters/15-handling-flaky-or-slow-failures.qmd
39+
- chapters/16-reducing-compiler-and-interpreter-bugs.qmd
40+
- chapters/17-adding-language-support.qmd
41+
- part: "Research Map"
42+
chapters:
43+
- chapters/18-open-problems.qmd
44+
- chapters/glossary.qmd
45+
- chapters/citing-this-book-and-perses.qmd
46+
- chapters/references.qmd
47+
48+
bibliography: bibliography/references.bib
49+
50+
format:
51+
html:
52+
theme:
53+
light: [cosmo, assets/custom.scss]
54+
dark: [darkly, assets/custom.scss]
55+
toc: true
56+
code-copy: true
57+
number-sections: true
58+
pdf:
59+
documentclass: scrreprt
60+
61+
execute:
62+
freeze: auto

0 commit comments

Comments
 (0)