General protocols with bounded rounds and message alphabets #
Each message is an element of M; card M ≤ 2^m expresses an m-bit
per-message cost bound. Both coordinate orientations are allowed at leaves.
The index bounds the number of messages on every path, with early termination.
A general deterministic KW protocol with message alphabet M and at
most d rounds. The speaker may depend on the preceding messages. An answer
is a coordinate determined by the transcript, with no further input dependence.
- answer
{ι : Type u_1}
{M : Type u_2}
{d : ℕ}
(index : ι)
: RoundProtocol ι M d
Terminate with a coordinate, possibly before exhausting the round budget.
- alice
{ι : Type u_1}
{M : Type u_2}
{d : ℕ}
(send : (ι → Bool) → M)
(next : M → RoundProtocol ι M d)
: RoundProtocol ι M (d + 1)
Alice sends one message computed from her input.
- bob
{ι : Type u_1}
{M : Type u_2}
{d : ℕ}
(send : (ι → Bool) → M)
(next : M → RoundProtocol ι M d)
: RoundProtocol ι M (d + 1)
Bob sends one message computed from his input.
Instances For
The coordinate output by a protocol on the two inputs.
Equations
- (Complexity.KarchmerWigderson.RoundProtocol.answer i).run x✝¹ x✝ = i
- (Complexity.KarchmerWigderson.RoundProtocol.alice send next).run x✝¹ x✝ = (next (send x✝¹)).run x✝¹ x✝
- (Complexity.KarchmerWigderson.RoundProtocol.bob send next).run x✝¹ x✝ = (next (send x✝)).run x✝¹ x✝
Instances For
Every pair in the input rectangle differs at the protocol's output coordinate.
Equations
Instances For
Solve the general KW game of a Boolean function: Alice has a zero-input, Bob a one-input, and the protocol must output a differing coordinate.
Equations
Instances For
Swap the players throughout the protocol without changing its round or message bounds.
Equations
- (Complexity.KarchmerWigderson.RoundProtocol.answer i).swapPlayers = Complexity.KarchmerWigderson.RoundProtocol.answer i
- (Complexity.KarchmerWigderson.RoundProtocol.alice send next).swapPlayers = Complexity.KarchmerWigderson.RoundProtocol.bob send fun (a : M) => (next a).swapPlayers
- (Complexity.KarchmerWigderson.RoundProtocol.bob send next).swapPlayers = Complexity.KarchmerWigderson.RoundProtocol.alice send fun (a : M) => (next a).swapPlayers