Hiding the inputs of a constraint network #
A constraint network on the inputs ι ⊕ κ hides the inputs in κ (Network.hide) by
quantifying them existentially in each local constraint, on the same multigraph. Since each
hidden input is read at no more than one vertex, local witnesses for the hidden inputs assemble
into one global witness (Network.satisfies_hide_iff). So the hidden network accepts exactly the
projection of the accepted set (Network.accepted_hide). Witnesses need not be unique.
Hiding keeps the multigraph, and with it every degree, frontier and width; it only forgets the
hidden inputs, so it reads no more inputs than before. Inputs can also be renamed along an
equivalence (Network.reindex), for instance to hide the last k of n + k inputs.
Main definitions #
Cslib.Circuits.Frontier.Network.reindex: renaming the inputs of a network.Cslib.Circuits.Frontier.Network.hide: hiding the inputs inκof a network onι ⊕ κ.
Main results #
Cslib.Circuits.Frontier.Network.accepted_reindex: renaming the inputs renames the accepted set.Cslib.Circuits.Frontier.Network.satisfies_hide_iff: local witnesses assemble into a global one.Cslib.Circuits.Frontier.Network.accepted_hide: hiding inputs projects the accepted set.Cslib.Circuits.Frontier.Network.ncard_readAt_hide_le,Cslib.Circuits.Frontier.Network.ncard_read_hide_le: hiding inputs reads fewer inputs.
Renaming inputs #
Rename the inputs of a network along an equivalence e : ι ≃ ι': the input e i is read
where i was, and the constraints see an input x on ι' as the input x ∘ e on ι.
Instances For
Hiding inputs #
Hiding inputs. The network on the inputs ι obtained from a network on ι ⊕ κ by
quantifying the inputs in κ existentially in each local constraint, on the same multigraph.
The visible inputs are read where they were.
Instances For
Local witnesses assemble into a global one. An assignment satisfies the hidden network
on x exactly when it satisfies the original network on x and some values of the hidden
inputs. Each hidden input is read at no more than one vertex, so it takes the value that the
witness of that vertex gives it.