input-output-hk / input-output-hk/Lean-blaster

Emit proof steps for the decide-of-equality reductions

Open
#217 0 comments 0 reactions 1 assignee Claimed by @felipeperet View on GitHub
area: proof reconstruction
Dominant language
Lean
Stars
57
Forks
11
Avg merge
1d 5h
Merged PRs (30d)
10

Description

**Goal:** Emit proof steps for the decide-of-equality reductions (`optimizeDecideEq` in `OptimizeEq.lean`), acceptance in `DecideEq.lean` plus the `DecideEqTrue`/`DecideEqFalse` cases in `NominalDecide.lean`. `DecideEq.lean` also holds ITE/dite and BEq families, which are separate reductions, so sort those out first.

**Scope:**
```
true = decide' e ==> e
false = decide' e ==> ¬ e
decide' e1 = decide' e2 ==> e1 = e2
decide' e1 = e2 ==> e1 = (true = e2)
(true = p) = (true = q) ==> p = q
```

**Out of scope:** the ITE/dite normalization families (`TrueEqIte` / `FalseEqIte` / `TrueEqDite` / `FalseEqDite`) and the BEq families (`EqBoolBeq` / `EqTrueBeq` / `EqFalseBeq`), which are separate reductions. Also the non-decide Eq hardening (#180, #181).

**DoD:**
- [ ] `DecideEq.lean` split into in-scope decide-of-equality tests vs the ITE/dite and BEq families.
- [ ] Each in-scope decide-of-equality rule pushes its proof step.
- [ ] Every reconstructing in-scope test in `DecideEq.lean` and the `NominalDecide.lean` decide-eq cases carries the `proof` flag.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.