lean4-htt/tests
George Rennie 34c0535844
refactor: encode constants as inversions of false in AIG framework (#7649)
This PR changes the AIG representation of constants from `const (b :
Bool)` to a single constructor `false`. Since #7381 `Ref` contains an
`invert` flag meaning the constant `true` can be represented as a `Ref`
to `false` with `invert` set, so no expressivity is lost.

The main advantage to this representation is that it allows pattern
matching on constants to match just on the `invert` field rather than on
both `invert` and the constant value or having to XOR the two together.
This representation is also standard in other AIG frameworks, such as
the [Aiger standard](https://fmv.jku.at/aiger/FORMAT.aiger).

This PR also generalizes the idempotency rule in `mkGateCached` from `(a
/\ b) = a` when `(a = b)` to also cover `(¬a /\ ¬b) = ¬a` when `a = b`
as it was not covered.
2025-03-24 10:43:00 +00:00
..
bench chore: more core proof benchmarks 2025-03-21 15:59:14 +01:00
compiler
elabissues
ir
lean refactor: encode constants as inversions of false in AIG framework (#7649) 2025-03-24 10:43:00 +00:00
pkg feat: debug_assert! (#7256) 2025-03-03 16:34:44 +00:00
playground
plugin
simpperf
.gitignore
common.sh chore: fix fsanitize preset (#7651) 2025-03-24 09:17:45 +00:00
lean-toolchain