Constraint networks with a commutative aggregate #
Local contributions multiply in a finite commutative monoid. The final acceptance predicate may inspect the product. No cancellation or inverses are required.
A local constraint network augmented with one commutative aggregate.
- fst : E → V
- snd : E → V
- portVertex : Fin n → V
- port_incident (j : Fin n) : j ∈ self.read → self.fst (self.portEdge j) = self.portVertex j ∨ self.snd (self.portEdge j) = self.portVertex j
- contribution : V → (E → Bool) → M
The contribution made at a vertex.
- contribution_local (v : V) (α β : E → Bool) : (∀ (e : E), self.fst e = v ∨ self.snd e = v → α e = β e) → self.contribution v α = self.contribution v β
A contribution depends only on incident edge values.
- Accept : M → Prop
The test on the final aggregate.
Instances For
Aggregate of contributions from a set of processed vertices.
Equations
- N.accumulated L α = ∏ v ∈ L, N.contribution v α
Instances For
A satisfying edge assignment obeys the local network and global aggregate test.
Equations
- N.Satisfies x α = (N.Satisfies x α ∧ N.Accept (N.accumulated Finset.univ α))
Instances For
The network accepts exactly the true inputs of the Boolean function.
Instances For
Past inputs compatible with a cut assignment and an exact past aggregate.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Future inputs compatible with the past aggregate and final acceptance.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The past set uses only the edge values on the cut.
The future set uses only the edge values on the cut.
A satisfying input supplies a member of its own past set.
A satisfying input supplies a member of its own future set.
The empty past has at most one assignment, for any aggregate.
Combining compatible sides is sound because contributions are local and commute.
Advancing one vertex multiplies the accumulator by its local contribution.