Daira Hopwood
424a2748d1
Clarify a comment
2022-04-19 12:36:02 +01:00
Daira Hopwood
84f5c26b7f
[book] Add description of selector combining optimization.
...
fixes #466
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-04-18 20:19:26 +01:00
str4d
221766986b
Merge pull request #532 from zcash/bench-lookup-mockprover
...
Bench heavily padded lookup in MockProver.
2022-04-18 12:45:30 +02:00
str4d
19b2b3b7e2
Fix clippy lints
2022-04-18 12:25:58 +02:00
str4d
dc2e454aa2
Merge pull request #549 from zcash/patch-cost-model-lookup
...
cost-model.rs: Correct lookup required degree calculation.
2022-04-18 11:52:47 +02:00
ying tong
066bd15d7e
cost-model.rs: Correct lookup required degree calculation.
2022-04-14 16:25:52 +02:00
ying tong
8cb9226670
[book] Use more intuitive expression for vanishing poly degree
2022-04-10 17:10:51 +02:00
str4d
1e6bb51790
Merge pull request #540 from zcash/release-0.1.0-beta.4
...
Release halo2_proofs 0.1.0-beta.4
2022-04-06 12:23:23 +01:00
therealyingtong
75b5c1e923
halo2_gadgets 0.1.0-beta.3
2022-04-06 12:28:36 +08:00
therealyingtong
a11cb9796e
halo2_proofs 0.1.0-beta.4
2022-04-06 12:24:28 +08:00
str4d
95df0af86d
Merge pull request #537 from zcash/fix-stack-overflow
...
Reduce depth of AST by special casing the application of Horner's rule
2022-04-04 23:13:30 +01:00
Sean Bowe
6a31a0e6a1
Apply @str4d's review suggestions.
2022-04-04 14:07:31 -06:00
Sean Bowe
fa069a7455
Use unwrap_or_default() instead of unwrap_or(HashMap::new())
2022-04-03 10:06:19 -06:00
Sean Bowe
fd7e9ddbb0
rustfmt
2022-04-02 15:38:46 -06:00
Sean Bowe
4163b8765a
Reduce depth of AST by special casing the application of Horner's rule.
...
The existing code will fold together a very deep AST that applies Horner's
rule to each gate in a proof -- which could include multiple circuits and
so for some applications will quickly grow such that when we recursively
descend later during evaluation the stack will easily overflow.
This change special cases the application of Horner's rule to a
"DistributePowers" AST node to keep the tree depth from exploding in size.
2022-04-02 13:13:46 -06:00
Jack Grigg
0946bdb455
dev: Enable `VerifyFailure::Permutation` to point to region offsets
2022-03-30 01:39:50 +00:00
therealyingtong
51d34c12a2
Bench heavily padded lookup in MockProver.
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-03-24 22:02:29 +08:00
str4d
406f622e33
Merge pull request #531 from zcash/release-0.1.0-beta.3
...
Release `halo2_proofs 0.1.0-beta.3`
2022-03-22 20:29:09 +00:00
Jack Grigg
11dcfb88ba
halo2_gadgets 0.1.0-beta.2
2022-03-22 20:04:14 +00:00
Jack Grigg
8acd4abfb3
halo2_proofs 0.1.0-beta.3
2022-03-22 19:59:10 +00:00
Jack Grigg
e39c8e94d2
Update changelogs
2022-03-22 19:55:53 +00:00
str4d
8abd7b74db
Merge pull request #417 from zcash/fix-assigned-usage
...
Expand `Assigned<F>` APIs
2022-03-22 19:46:51 +00:00
ying tong
084ecf185a
Merge pull request #523 from zcash/therealyingtong-patch-1
...
[book] Correct typo in Q_0 of protocol description.
2022-03-18 12:56:36 +08:00
str4d
642efc1536
Merge pull request #521 from zcash/reconstruct-selectors
...
Remove selector_map from pinned verification key and remove VerificationKey serialization
2022-03-18 00:14:36 +00:00
str4d
31b68fab25
Merge pull request #524 from zcash/fix-docs-rs-build
...
Fix docs.rs build
2022-03-17 19:34:52 +00:00
Jack Grigg
c6b4fcaf34
Fix docs.rs build
...
The published source code for each package needs to include the required
header file, and the path to that header file needs to be relative to
the package source (not the repository source). We therefore need to
have the header file present in each workspace package.
Closes zcash/halo2#506 .
2022-03-17 19:14:11 +00:00
Jack Grigg
d3f2980349
Remove VerifyingKey serialization from sha256 gadget benchmark
2022-03-17 18:58:53 +00:00
ying tong
2194973aa8
[book] Correct typo in protocol description.
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-03-17 21:35:06 +08:00
Sean Bowe
f46d77763e
Remove logic for reading and writing VerificationKey to/from buffers.
2022-03-16 14:19:33 -06:00
Sean Bowe
819bc3c2f5
Stop placing the selector_map (which is an internal API detail) in the pinned verification key.
2022-03-16 14:19:13 -06:00
Sean Bowe
e10f4e1d0e
Add mechanism for generating a new proof in test.
2022-03-16 12:53:04 -06:00
Daira Hopwood
b48b032041
Minor simplification
2022-02-16 17:14:41 +00:00
Jack Grigg
57596cab36
dev: Add a custom `VerifyFailure::CellNotAssigned` emitter
...
The `dev::tests::unassigned_cell` test case, shown via `assert_eq!(err, Ok(()))`:
```
left: `Err([CellNotAssigned { gate: Gate { index: 0, name: "Equality check" }, region: Region { index: 0, name: "Faulty synthesis" }, gate_offset: 1, column: Column { index: 1, column_type: Advice }, offset: 1 }])`,
right: `Ok(())`',
```
Via `impl Display for VerifyFailure`:
```
Region 0 ('Faulty synthesis') uses Gate 0 ('Equality check') at offset 1, which requires cell in column Column { index: 1, column_type: Advice } at offset 1 to be assigned.
```
Via `VerifyFailure::emit`:
```
error: cell not assigned
Cell layout in region 'Faulty synthesis':
| Offset | A0 | A1 |
+--------+----+----+
| 0 | x0 | |
| 1 | | X | <--{ X marks the spot! 🦜
Gate 'Equality check' (applied at offset 1) queries these cells.
```
2022-02-16 13:57:53 +00:00
Jack Grigg
369ff521d3
dev: Store gate offset in `VerifyFailure::CellNotAssigned`
2022-02-16 13:57:53 +00:00
Jack Grigg
c19a1ade2a
dev: Add a custom `VerifyFailure::Lookup` emitter
...
The `dev::tests::bad_lookup` test case, shown via `assert_eq!(err, Ok(()))`:
```
left: `Err([Lookup { lookup_index: 0, location: InRegion { region: Region { index: 2, name: "Faulty synthesis" }, offset: 1 } }])`,
right: `Ok(())`',
```
Via `impl Display for VerifyFailure`:
```
Lookup 0 is not satisfied in Region 2 ('Faulty synthesis') at offset 1
```
Via `VerifyFailure::emit`:
```
error: lookup input does not exist in table
(L0) ∉ (F0)
Lookup inputs:
L0 = x1 * x0 + (1 - x1) * 0x2
^
| Cell layout in region 'Faulty synthesis':
| | Offset | A0 | F1 |
| +--------+----+----+
| | 1 | x0 | x1 | <--{ Lookup inputs queried here
|
| Assigned cell values:
| x0 = 0x5
| x1 = 1
```
2022-02-16 13:56:17 +00:00
Jack Grigg
62eea4c457
dev: Move cell loaders into `dev::util`
2022-02-16 13:56:17 +00:00
Jack Grigg
44e3cf8c61
dev: Move expression stringifier into `dev::failure::emitter`
2022-02-16 13:56:17 +00:00
Jack Grigg
212e3d07ce
dev: Move cell layout emitter into a submodule
2022-02-16 13:56:17 +00:00
Jack Grigg
8e1fb87a33
dev: Add a custom `VerifyFailure::ConstraintNotSatisfied` emitter
...
An example failure, shown via `assert_eq!(err, Ok(()))`:
```
left: `Err([ConstraintNotSatisfied { constraint: Constraint { gate: Gate { index: 0, name: "R1CS constraint" }, index: 0, name: "buggy R1CS" }, location: InRegion { region: Region { index: 0, name: "Example region" }, offset: 1 }, cell_values: [(VirtualCell { name: "", column: Column { column_type: Advice, index: 0 }, rotation: 0 }, "0x2"), (VirtualCell { name: "", column: Column { column_type: Advice, index: 1 }, rotation: -1 }, "0x4"), (VirtualCell { name: "", column: Column { column_type: Advice, index: 2 }, rotation: 1 }, "0x8")] }])`,
right: `Ok(())`',
```
Via `impl Display for VerifyFailure`:
```
Constraint 0 ('buggy R1CS') in gate 0 ('R1CS constraint') is not satisfied in Region 0 ('Example region') at offset 1
- Column('Advice', 0)@0 = 0x2
- Column('Advice', 1)@-1 = 0x4
- Column('Advice', 2)@1 = 0x8
```
Via `VerifyFailure::emit`:
```
error: constraint not satisfied
Cell layout in region 'Example region':
| Offset | A0 | A1 | A2 |
+--------+----+----+----+
| 0 | | x1 | |
| 1 | x0 | | | <--{ Gate 'R1CS constraint' applied here
| 2 | | | x2 |
Constraint 'buggy R1CS':
S0 * (x0 * x1 + x2) = 0
Assigned cell values:
x0 = 0x2
x1 = 0x4
x2 = 0x8
```
2022-02-16 13:56:17 +00:00
Jack Grigg
5cdc029bb4
dev: Add `MockProver::assert_satisfied`
...
This is equivalent to `assert_eq!(mock_prover.verify(), Ok(()))`, but
pretty-prints the verification failures instead of debug-printing them.
In its initial state, it just prints the `Display` impl.
2022-02-16 13:56:17 +00:00
Jack Grigg
0e08903669
dev: Move `VerifyFailure` and `FailureLocation` into submodule
2022-02-16 13:55:29 +00:00
str4d
c12620c598
Merge pull request #505 from zcash/ci-updates
...
CI updates
2022-02-16 13:54:19 +00:00
Jack Grigg
82bb4e6141
CI: Test against Windows and macOS in addition to Ubuntu
2022-02-15 23:35:11 +00:00
Jack Grigg
e2932427ed
CI: Update `codecov/codecov-action` to v2.1.0
2022-02-15 23:34:43 +00:00
str4d
c63828b51a
Merge pull request #504 from zcash/release-0.1.0-beta.2
...
`halo2 0.1.0-beta.2` etc.
2022-02-15 01:57:34 +00:00
Daira Hopwood
c5cdea1eb0
Merge pull request #487 from daira/book-improve-incomplete-addition
...
Improve the explanation of incomplete addition
2022-02-15 01:05:00 +00:00
Daira Hopwood
e7ffefdbe2
MockProver: Optimize repetitions of the last usable row, not the zero row.
...
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-15 00:30:54 +00:00
Daira Hopwood
7107b8353a
MockProver: Use a sorted scan to check that lookup inputs
...
are contained in the table, fixing a performance regression.
This includes an optimization for "fill rows", which are
assumed in this commit to be all-zeros.
closes #398
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-14 23:54:06 +00:00
Jack Grigg
80953d02c2
halo2 0.1.0-beta.2
2022-02-14 22:03:40 +00:00
Jack Grigg
c9852c61ec
halo2_gadgets 0.1.0-beta.1
2022-02-14 21:58:20 +00:00