diff --git a/specification/src/arithmetization-overview.md b/specification/src/arithmetization-overview.md
index cfa9a9888..c1f8470bc 100644
--- a/specification/src/arithmetization-overview.md
+++ b/specification/src/arithmetization-overview.md
@@ -15,9 +15,9 @@
| [CascadeTable](cascade-table.md) | 6 | 2 | 12 |
| [LookupTable](lookup-table.md) | 4 | 2 | 10 |
| [U32Table](u32-table.md) | 10 | 1 | 13 |
-| DegreeLowering | 223 | 36 | 331 |
+| DegreeLowering | 216 | 36 | 324 |
| Randomizers | 0 | 1 | 3 |
-| **TOTAL** | **372** | **86** | **630** |
+| **TOTAL** | **365** | **86** | **623** |
## Constraints
@@ -34,7 +34,7 @@ Before automatic degree lowering:
| table name | #initial | #consistency | #transition | #terminal | max degree |
|:-----------------------------------------------|---------:|-------------:|------------:|----------:|-----------:|
| [ProgramTable](program-table.md) | 6 | 4 | 10 | 2 | 4 |
-| [ProcessorTable](processor-table.md) | 29 | 10 | 69 | 1 | 19 |
+| [ProcessorTable](processor-table.md) | 29 | 10 | 49 | 1 | 19 |
| [OpStackTable](operational-stack-table.md) | 3 | 0 | 5 | 0 | 4 |
| [RamTable](random-access-memory-table.md) | 7 | 0 | 12 | 1 | 5 |
| [JumpStackTable](jump-stack-table.md) | 6 | 0 | 6 | 0 | 4 |
@@ -43,14 +43,14 @@ Before automatic degree lowering:
| [LookupTable](lookup-table.md) | 3 | 1 | 4 | 1 | 3 |
| [U32Table](u32-table.md) | 1 | 15 | 22 | 2 | 12 |
| [Grand Cross-Table Argument](table-linking.md) | 0 | 0 | 0 | 14 | 1 |
-| **TOTAL** | **79** | **76** | **178** | **23** | **19** |
+| **TOTAL** | **79** | **76** | **158** | **23** | **19** |
After automatically lowering degree to 4:
| table name | #initial | #consistency | #transition | #terminal |
|:-----------------------------------------------|---------:|-------------:|------------:|----------:|
| [ProgramTable](program-table.md) | 6 | 4 | 10 | 2 |
-| [ProcessorTable](processor-table.md) | 31 | 10 | 258 | 1 |
+| [ProcessorTable](processor-table.md) | 31 | 10 | 231 | 1 |
| [OpStackTable](operational-stack-table.md) | 3 | 0 | 5 | 0 |
| [RamTable](random-access-memory-table.md) | 7 | 0 | 13 | 1 |
| [JumpStackTable](jump-stack-table.md) | 6 | 0 | 6 | 0 |
@@ -59,5 +59,5 @@ After automatically lowering degree to 4:
| [LookupTable](lookup-table.md) | 3 | 1 | 4 | 1 |
| [U32Table](u32-table.md) | 1 | 26 | 34 | 2 |
| [Grand Cross-Table Argument](table-linking.md) | 0 | 0 | 0 | 14 |
-| **TOTAL** | **81** | **94** | **417** | **23** |
+| **TOTAL** | **81** | **94** | **390** | **23** |
diff --git a/specification/src/instruction-specific-transition-constraints.md b/specification/src/instruction-specific-transition-constraints.md
index 72a63ec7f..f9fbb1afe 100644
--- a/specification/src/instruction-specific-transition-constraints.md
+++ b/specification/src/instruction-specific-transition-constraints.md
@@ -27,41 +27,41 @@ In addition to its [instruction groups](instruction-groups.md), this instruction
### Description
-1. If `i` is 0, then `st0` is put on top of the stack.
-1. If `i` is 1, then `st1` is put on top of the stack.
-1. If `i` is 2, then `st2` is put on top of the stack.
-1. If `i` is 3, then `st3` is put on top of the stack.
-1. If `i` is 4, then `st4` is put on top of the stack.
-1. If `i` is 5, then `st5` is put on top of the stack.
-1. If `i` is 6, then `st6` is put on top of the stack.
-1. If `i` is 7, then `st7` is put on top of the stack.
-1. If `i` is 8, then `st8` is put on top of the stack.
-1. If `i` is 9, then `st9` is put on top of the stack.
-1. If `i` is 10, then `st10` is put on top of the stack.
-1. If `i` is 11, then `st11` is put on top of the stack.
-1. If `i` is 12, then `st12` is put on top of the stack.
-1. If `i` is 13, then `st13` is put on top of the stack.
-1. If `i` is 14, then `st14` is put on top of the stack.
-1. If `i` is 15, then `st15` is put on top of the stack.
+1. If `i` is 0, then `st0` is put on top of the stack and
+ if `i` is 1, then `st1` is put on top of the stack and
+ if `i` is 2, then `st2` is put on top of the stack and
+ if `i` is 3, then `st3` is put on top of the stack and
+ if `i` is 4, then `st4` is put on top of the stack and
+ if `i` is 5, then `st5` is put on top of the stack and
+ if `i` is 6, then `st6` is put on top of the stack and
+ if `i` is 7, then `st7` is put on top of the stack and
+ if `i` is 8, then `st8` is put on top of the stack and
+ if `i` is 9, then `st9` is put on top of the stack and
+ if `i` is 10, then `st10` is put on top of the stack and
+ if `i` is 11, then `st11` is put on top of the stack and
+ if `i` is 12, then `st12` is put on top of the stack and
+ if `i` is 13, then `st13` is put on top of the stack and
+ if `i` is 14, then `st14` is put on top of the stack and
+ if `i` is 15, then `st15` is put on top of the stack.
### Polynomials
-1. `ind_0(hv3, hv2, hv1, hv0)·(st0' - st0)`
-1. `ind_1(hv3, hv2, hv1, hv0)·(st0' - st1)`
-1. `ind_2(hv3, hv2, hv1, hv0)·(st0' - st2)`
-1. `ind_3(hv3, hv2, hv1, hv0)·(st0' - st3)`
-1. `ind_4(hv3, hv2, hv1, hv0)·(st0' - st4)`
-1. `ind_5(hv3, hv2, hv1, hv0)·(st0' - st5)`
-1. `ind_6(hv3, hv2, hv1, hv0)·(st0' - st6)`
-1. `ind_7(hv3, hv2, hv1, hv0)·(st0' - st7)`
-1. `ind_8(hv3, hv2, hv1, hv0)·(st0' - st8)`
-1. `ind_9(hv3, hv2, hv1, hv0)·(st0' - st9)`
-1. `ind_10(hv3, hv2, hv1, hv0)·(st0' - st10)`
-1. `ind_11(hv3, hv2, hv1, hv0)·(st0' - st11)`
-1. `ind_12(hv3, hv2, hv1, hv0)·(st0' - st12)`
-1. `ind_13(hv3, hv2, hv1, hv0)·(st0' - st13)`
-1. `ind_14(hv3, hv2, hv1, hv0)·(st0' - st14)`
-1. `ind_15(hv3, hv2, hv1, hv0)·(st0' - st15)`
+1. `ind_0(hv3, hv2, hv1, hv0)·(st0' - st0)`
+ `+ ind_1(hv3, hv2, hv1, hv0)·(st0' - st1)`
+ `+ ind_2(hv3, hv2, hv1, hv0)·(st0' - st2)`
+ `+ ind_3(hv3, hv2, hv1, hv0)·(st0' - st3)`
+ `+ ind_4(hv3, hv2, hv1, hv0)·(st0' - st4)`
+ `+ ind_5(hv3, hv2, hv1, hv0)·(st0' - st5)`
+ `+ ind_6(hv3, hv2, hv1, hv0)·(st0' - st6)`
+ `+ ind_7(hv3, hv2, hv1, hv0)·(st0' - st7)`
+ `+ ind_8(hv3, hv2, hv1, hv0)·(st0' - st8)`
+ `+ ind_9(hv3, hv2, hv1, hv0)·(st0' - st9)`
+ `+ ind_10(hv3, hv2, hv1, hv0)·(st0' - st10)`
+ `+ ind_11(hv3, hv2, hv1, hv0)·(st0' - st11)`
+ `+ ind_12(hv3, hv2, hv1, hv0)·(st0' - st12)`
+ `+ ind_13(hv3, hv2, hv1, hv0)·(st0' - st13)`
+ `+ ind_14(hv3, hv2, hv1, hv0)·(st0' - st14)`
+ `+ ind_15(hv3, hv2, hv1, hv0)·(st0' - st15)`
## Instruction `swap` + `i`
@@ -70,37 +70,37 @@ In addition to its [instruction groups](instruction-groups.md), this instruction
### Description
-1. Argument `i` is not 0.
-1. If `i` is 1, then `st0` is moved into `st1`.
-1. If `i` is 2, then `st0` is moved into `st2`.
-1. If `i` is 3, then `st0` is moved into `st3`.
-1. If `i` is 4, then `st0` is moved into `st4`.
-1. If `i` is 5, then `st0` is moved into `st5`.
-1. If `i` is 6, then `st0` is moved into `st6`.
-1. If `i` is 7, then `st0` is moved into `st7`.
-1. If `i` is 8, then `st0` is moved into `st8`.
-1. If `i` is 9, then `st0` is moved into `st9`.
-1. If `i` is 10, then `st0` is moved into `st10`.
-1. If `i` is 11, then `st0` is moved into `st11`.
-1. If `i` is 12, then `st0` is moved into `st12`.
-1. If `i` is 13, then `st0` is moved into `st13`.
-1. If `i` is 14, then `st0` is moved into `st14`.
-1. If `i` is 15, then `st0` is moved into `st15`.
-1. If `i` is 1, then `st1` is moved into `st0`.
-1. If `i` is 2, then `st2` is moved into `st0`.
-1. If `i` is 3, then `st3` is moved into `st0`.
-1. If `i` is 4, then `st4` is moved into `st0`.
-1. If `i` is 5, then `st5` is moved into `st0`.
-1. If `i` is 6, then `st6` is moved into `st0`.
-1. If `i` is 7, then `st7` is moved into `st0`.
-1. If `i` is 8, then `st8` is moved into `st0`.
-1. If `i` is 9, then `st9` is moved into `st0`.
-1. If `i` is 10, then `st10` is moved into `st0`.
-1. If `i` is 11, then `st11` is moved into `st0`.
-1. If `i` is 12, then `st12` is moved into `st0`.
-1. If `i` is 13, then `st13` is moved into `st0`.
-1. If `i` is 14, then `st14` is moved into `st0`.
-1. If `i` is 15, then `st15` is moved into `st0`.
+1. Argument `i` is not 0 and
+ if `i` is 1, then `st0` is moved into `st1` and
+ if `i` is 2, then `st0` is moved into `st2` and
+ if `i` is 3, then `st0` is moved into `st3` and
+ if `i` is 4, then `st0` is moved into `st4` and
+ if `i` is 5, then `st0` is moved into `st5` and
+ if `i` is 6, then `st0` is moved into `st6` and
+ if `i` is 7, then `st0` is moved into `st7` and
+ if `i` is 8, then `st0` is moved into `st8` and
+ if `i` is 9, then `st0` is moved into `st9` and
+ if `i` is 10, then `st0` is moved into `st10` and
+ if `i` is 11, then `st0` is moved into `st11` and
+ if `i` is 12, then `st0` is moved into `st12` and
+ if `i` is 13, then `st0` is moved into `st13` and
+ if `i` is 14, then `st0` is moved into `st14` and
+ if `i` is 15, then `st0` is moved into `st15`.
+1. If `i` is 1, then `st1` is moved into `st0` and
+ if `i` is 2, then `st2` is moved into `st0` and
+ if `i` is 3, then `st3` is moved into `st0` and
+ if `i` is 4, then `st4` is moved into `st0` and
+ if `i` is 5, then `st5` is moved into `st0` and
+ if `i` is 6, then `st6` is moved into `st0` and
+ if `i` is 7, then `st7` is moved into `st0` and
+ if `i` is 8, then `st8` is moved into `st0` and
+ if `i` is 9, then `st9` is moved into `st0` and
+ if `i` is 10, then `st10` is moved into `st0` and
+ if `i` is 11, then `st11` is moved into `st0` and
+ if `i` is 12, then `st12` is moved into `st0` and
+ if `i` is 13, then `st13` is moved into `st0` and
+ if `i` is 14, then `st14` is moved into `st0` and
+ if `i` is 15, then `st15` is moved into `st0`.
1. If `i` is not 1, then `st1` does not change.
1. If `i` is not 2, then `st2` does not change.
1. If `i` is not 3, then `st3` does not change.
@@ -121,37 +121,37 @@ In addition to its [instruction groups](instruction-groups.md), this instruction
### Polynomials
-1. `ind_0(hv3, hv2, hv1, hv0)`
-1. `ind_1(hv3, hv2, hv1, hv0)·(st1' - st0)`
-1. `ind_2(hv3, hv2, hv1, hv0)·(st2' - st0)`
-1. `ind_3(hv3, hv2, hv1, hv0)·(st3' - st0)`
-1. `ind_4(hv3, hv2, hv1, hv0)·(st4' - st0)`
-1. `ind_5(hv3, hv2, hv1, hv0)·(st5' - st0)`
-1. `ind_6(hv3, hv2, hv1, hv0)·(st6' - st0)`
-1. `ind_7(hv3, hv2, hv1, hv0)·(st7' - st0)`
-1. `ind_8(hv3, hv2, hv1, hv0)·(st8' - st0)`
-1. `ind_9(hv3, hv2, hv1, hv0)·(st9' - st0)`
-1. `ind_10(hv3, hv2, hv1, hv0)·(st10' - st0)`
-1. `ind_11(hv3, hv2, hv1, hv0)·(st11' - st0)`
-1. `ind_12(hv3, hv2, hv1, hv0)·(st12' - st0)`
-1. `ind_13(hv3, hv2, hv1, hv0)·(st13' - st0)`
-1. `ind_14(hv3, hv2, hv1, hv0)·(st14' - st0)`
-1. `ind_15(hv3, hv2, hv1, hv0)·(st15' - st0)`
-1. `ind_1(hv3, hv2, hv1, hv0)·(st0' - st1)`
-1. `ind_2(hv3, hv2, hv1, hv0)·(st0' - st2)`
-1. `ind_3(hv3, hv2, hv1, hv0)·(st0' - st3)`
-1. `ind_4(hv3, hv2, hv1, hv0)·(st0' - st4)`
-1. `ind_5(hv3, hv2, hv1, hv0)·(st0' - st5)`
-1. `ind_6(hv3, hv2, hv1, hv0)·(st0' - st6)`
-1. `ind_7(hv3, hv2, hv1, hv0)·(st0' - st7)`
-1. `ind_8(hv3, hv2, hv1, hv0)·(st0' - st8)`
-1. `ind_9(hv3, hv2, hv1, hv0)·(st0' - st9)`
-1. `ind_10(hv3, hv2, hv1, hv0)·(st0' - st10)`
-1. `ind_11(hv3, hv2, hv1, hv0)·(st0' - st11)`
-1. `ind_12(hv3, hv2, hv1, hv0)·(st0' - st12)`
-1. `ind_13(hv3, hv2, hv1, hv0)·(st0' - st13)`
-1. `ind_14(hv3, hv2, hv1, hv0)·(st0' - st14)`
-1. `ind_15(hv3, hv2, hv1, hv0)·(st0' - st15)`
+1. `ind_0(hv3, hv2, hv1, hv0)`
+ `+ ind_1(hv3, hv2, hv1, hv0)·(st1' - st0)`
+ `+ ind_2(hv3, hv2, hv1, hv0)·(st2' - st0)`
+ `+ ind_3(hv3, hv2, hv1, hv0)·(st3' - st0)`
+ `+ ind_4(hv3, hv2, hv1, hv0)·(st4' - st0)`
+ `+ ind_5(hv3, hv2, hv1, hv0)·(st5' - st0)`
+ `+ ind_6(hv3, hv2, hv1, hv0)·(st6' - st0)`
+ `+ ind_7(hv3, hv2, hv1, hv0)·(st7' - st0)`
+ `+ ind_8(hv3, hv2, hv1, hv0)·(st8' - st0)`
+ `+ ind_9(hv3, hv2, hv1, hv0)·(st9' - st0)`
+ `+ ind_10(hv3, hv2, hv1, hv0)·(st10' - st0)`
+ `+ ind_11(hv3, hv2, hv1, hv0)·(st11' - st0)`
+ `+ ind_12(hv3, hv2, hv1, hv0)·(st12' - st0)`
+ `+ ind_13(hv3, hv2, hv1, hv0)·(st13' - st0)`
+ `+ ind_14(hv3, hv2, hv1, hv0)·(st14' - st0)`
+ `+ ind_15(hv3, hv2, hv1, hv0)·(st15' - st0)`
+1. `ind_1(hv3, hv2, hv1, hv0)·(st0' - st1)`
+ `+ ind_2(hv3, hv2, hv1, hv0)·(st0' - st2)`
+ `+ ind_3(hv3, hv2, hv1, hv0)·(st0' - st3)`
+ `+ ind_4(hv3, hv2, hv1, hv0)·(st0' - st4)`
+ `+ ind_5(hv3, hv2, hv1, hv0)·(st0' - st5)`
+ `+ ind_6(hv3, hv2, hv1, hv0)·(st0' - st6)`
+ `+ ind_7(hv3, hv2, hv1, hv0)·(st0' - st7)`
+ `+ ind_8(hv3, hv2, hv1, hv0)·(st0' - st8)`
+ `+ ind_9(hv3, hv2, hv1, hv0)·(st0' - st9)`
+ `+ ind_10(hv3, hv2, hv1, hv0)·(st0' - st10)`
+ `+ ind_11(hv3, hv2, hv1, hv0)·(st0' - st11)`
+ `+ ind_12(hv3, hv2, hv1, hv0)·(st0' - st12)`
+ `+ ind_13(hv3, hv2, hv1, hv0)·(st0' - st13)`
+ `+ ind_14(hv3, hv2, hv1, hv0)·(st0' - st14)`
+ `+ ind_15(hv3, hv2, hv1, hv0)·(st0' - st15)`
1. `(1 - ind_1(hv3, hv2, hv1, hv0))·(st1' - st1)`
1. `(1 - ind_2(hv3, hv2, hv1, hv0))·(st2' - st2)`
1. `(1 - ind_3(hv3, hv2, hv1, hv0))·(st3' - st3)`
diff --git a/triton-vm/src/table/processor_table.rs b/triton-vm/src/table/processor_table.rs
index 13aed1c68..e5b79c921 100644
--- a/triton-vm/src/table/processor_table.rs
+++ b/triton-vm/src/table/processor_table.rs
@@ -1389,22 +1389,22 @@ impl ExtProcessorTable {
};
let specific_constraints = vec![
- indicator_poly(0) * (next_base_row(ST0) - curr_base_row(ST0)),
- indicator_poly(1) * (next_base_row(ST0) - curr_base_row(ST1)),
- indicator_poly(2) * (next_base_row(ST0) - curr_base_row(ST2)),
- indicator_poly(3) * (next_base_row(ST0) - curr_base_row(ST3)),
- indicator_poly(4) * (next_base_row(ST0) - curr_base_row(ST4)),
- indicator_poly(5) * (next_base_row(ST0) - curr_base_row(ST5)),
- indicator_poly(6) * (next_base_row(ST0) - curr_base_row(ST6)),
- indicator_poly(7) * (next_base_row(ST0) - curr_base_row(ST7)),
- indicator_poly(8) * (next_base_row(ST0) - curr_base_row(ST8)),
- indicator_poly(9) * (next_base_row(ST0) - curr_base_row(ST9)),
- indicator_poly(10) * (next_base_row(ST0) - curr_base_row(ST10)),
- indicator_poly(11) * (next_base_row(ST0) - curr_base_row(ST11)),
- indicator_poly(12) * (next_base_row(ST0) - curr_base_row(ST12)),
- indicator_poly(13) * (next_base_row(ST0) - curr_base_row(ST13)),
- indicator_poly(14) * (next_base_row(ST0) - curr_base_row(ST14)),
- indicator_poly(15) * (next_base_row(ST0) - curr_base_row(ST15)),
+ indicator_poly(0) * (next_base_row(ST0) - curr_base_row(ST0))
+ + indicator_poly(1) * (next_base_row(ST0) - curr_base_row(ST1))
+ + indicator_poly(2) * (next_base_row(ST0) - curr_base_row(ST2))
+ + indicator_poly(3) * (next_base_row(ST0) - curr_base_row(ST3))
+ + indicator_poly(4) * (next_base_row(ST0) - curr_base_row(ST4))
+ + indicator_poly(5) * (next_base_row(ST0) - curr_base_row(ST5))
+ + indicator_poly(6) * (next_base_row(ST0) - curr_base_row(ST6))
+ + indicator_poly(7) * (next_base_row(ST0) - curr_base_row(ST7))
+ + indicator_poly(8) * (next_base_row(ST0) - curr_base_row(ST8))
+ + indicator_poly(9) * (next_base_row(ST0) - curr_base_row(ST9))
+ + indicator_poly(10) * (next_base_row(ST0) - curr_base_row(ST10))
+ + indicator_poly(11) * (next_base_row(ST0) - curr_base_row(ST11))
+ + indicator_poly(12) * (next_base_row(ST0) - curr_base_row(ST12))
+ + indicator_poly(13) * (next_base_row(ST0) - curr_base_row(ST13))
+ + indicator_poly(14) * (next_base_row(ST0) - curr_base_row(ST14))
+ + indicator_poly(15) * (next_base_row(ST0) - curr_base_row(ST15)),
];
[
specific_constraints,
@@ -1430,37 +1430,37 @@ impl ExtProcessorTable {
};
let specific_constraints = vec![
- indicator_poly(0),
- indicator_poly(1) * (next_base_row(ST1) - curr_base_row(ST0)),
- indicator_poly(2) * (next_base_row(ST2) - curr_base_row(ST0)),
- indicator_poly(3) * (next_base_row(ST3) - curr_base_row(ST0)),
- indicator_poly(4) * (next_base_row(ST4) - curr_base_row(ST0)),
- indicator_poly(5) * (next_base_row(ST5) - curr_base_row(ST0)),
- indicator_poly(6) * (next_base_row(ST6) - curr_base_row(ST0)),
- indicator_poly(7) * (next_base_row(ST7) - curr_base_row(ST0)),
- indicator_poly(8) * (next_base_row(ST8) - curr_base_row(ST0)),
- indicator_poly(9) * (next_base_row(ST9) - curr_base_row(ST0)),
- indicator_poly(10) * (next_base_row(ST10) - curr_base_row(ST0)),
- indicator_poly(11) * (next_base_row(ST11) - curr_base_row(ST0)),
- indicator_poly(12) * (next_base_row(ST12) - curr_base_row(ST0)),
- indicator_poly(13) * (next_base_row(ST13) - curr_base_row(ST0)),
- indicator_poly(14) * (next_base_row(ST14) - curr_base_row(ST0)),
- indicator_poly(15) * (next_base_row(ST15) - curr_base_row(ST0)),
- indicator_poly(1) * (next_base_row(ST0) - curr_base_row(ST1)),
- indicator_poly(2) * (next_base_row(ST0) - curr_base_row(ST2)),
- indicator_poly(3) * (next_base_row(ST0) - curr_base_row(ST3)),
- indicator_poly(4) * (next_base_row(ST0) - curr_base_row(ST4)),
- indicator_poly(5) * (next_base_row(ST0) - curr_base_row(ST5)),
- indicator_poly(6) * (next_base_row(ST0) - curr_base_row(ST6)),
- indicator_poly(7) * (next_base_row(ST0) - curr_base_row(ST7)),
- indicator_poly(8) * (next_base_row(ST0) - curr_base_row(ST8)),
- indicator_poly(9) * (next_base_row(ST0) - curr_base_row(ST9)),
- indicator_poly(10) * (next_base_row(ST0) - curr_base_row(ST10)),
- indicator_poly(11) * (next_base_row(ST0) - curr_base_row(ST11)),
- indicator_poly(12) * (next_base_row(ST0) - curr_base_row(ST12)),
- indicator_poly(13) * (next_base_row(ST0) - curr_base_row(ST13)),
- indicator_poly(14) * (next_base_row(ST0) - curr_base_row(ST14)),
- indicator_poly(15) * (next_base_row(ST0) - curr_base_row(ST15)),
+ indicator_poly(0)
+ + indicator_poly(1) * (next_base_row(ST1) - curr_base_row(ST0))
+ + indicator_poly(2) * (next_base_row(ST2) - curr_base_row(ST0))
+ + indicator_poly(3) * (next_base_row(ST3) - curr_base_row(ST0))
+ + indicator_poly(4) * (next_base_row(ST4) - curr_base_row(ST0))
+ + indicator_poly(5) * (next_base_row(ST5) - curr_base_row(ST0))
+ + indicator_poly(6) * (next_base_row(ST6) - curr_base_row(ST0))
+ + indicator_poly(7) * (next_base_row(ST7) - curr_base_row(ST0))
+ + indicator_poly(8) * (next_base_row(ST8) - curr_base_row(ST0))
+ + indicator_poly(9) * (next_base_row(ST9) - curr_base_row(ST0))
+ + indicator_poly(10) * (next_base_row(ST10) - curr_base_row(ST0))
+ + indicator_poly(11) * (next_base_row(ST11) - curr_base_row(ST0))
+ + indicator_poly(12) * (next_base_row(ST12) - curr_base_row(ST0))
+ + indicator_poly(13) * (next_base_row(ST13) - curr_base_row(ST0))
+ + indicator_poly(14) * (next_base_row(ST14) - curr_base_row(ST0))
+ + indicator_poly(15) * (next_base_row(ST15) - curr_base_row(ST0)),
+ indicator_poly(1) * (next_base_row(ST0) - curr_base_row(ST1))
+ + indicator_poly(2) * (next_base_row(ST0) - curr_base_row(ST2))
+ + indicator_poly(3) * (next_base_row(ST0) - curr_base_row(ST3))
+ + indicator_poly(4) * (next_base_row(ST0) - curr_base_row(ST4))
+ + indicator_poly(5) * (next_base_row(ST0) - curr_base_row(ST5))
+ + indicator_poly(6) * (next_base_row(ST0) - curr_base_row(ST6))
+ + indicator_poly(7) * (next_base_row(ST0) - curr_base_row(ST7))
+ + indicator_poly(8) * (next_base_row(ST0) - curr_base_row(ST8))
+ + indicator_poly(9) * (next_base_row(ST0) - curr_base_row(ST9))
+ + indicator_poly(10) * (next_base_row(ST0) - curr_base_row(ST10))
+ + indicator_poly(11) * (next_base_row(ST0) - curr_base_row(ST11))
+ + indicator_poly(12) * (next_base_row(ST0) - curr_base_row(ST12))
+ + indicator_poly(13) * (next_base_row(ST0) - curr_base_row(ST13))
+ + indicator_poly(14) * (next_base_row(ST0) - curr_base_row(ST14))
+ + indicator_poly(15) * (next_base_row(ST0) - curr_base_row(ST15)),
(one() - indicator_poly(1)) * (next_base_row(ST1) - curr_base_row(ST1)),
(one() - indicator_poly(2)) * (next_base_row(ST2) - curr_base_row(ST2)),
(one() - indicator_poly(3)) * (next_base_row(ST3) - curr_base_row(ST3)),