Flipping bits #
BitString.flipOn T x flips the bits of the Boolean vector x at the positions in T. Flipping
one bit is Function.update x i (!x i) (BitString.flipOn_singleton), and flipping twice at the
same positions changes nothing (BitString.flipOn_flipOn). Flips are the moves of sensitivity and
block sensitivity, and they span the subcubes of the Boolean cube.
On Fin n, flipOn is definitionally equal to CSLib's BitString.flipBlock.
Sensitivity and certificate measures use CSLib's Computability.QueryComplexity.Measures.
An input x of a Boolean function g is isolated when flipping any one of its bits changes the
value of g (BitString.isolatedInputs). A formula in disjunctive normal form needs a term for
each isolated true input, and parity has only isolated inputs.
Main definitions #
Cslib.BitString.flipOn: flip the bits at a set of positions.Cslib.BitString.isolatedInputs: the isolated inputs of a Boolean function with a given value.
Main results #
Cslib.BitString.flipOn_singleton: flipping one bit.Cslib.BitString.flipOn_flipOn,Cslib.BitString.flipOn_involutive: flipping is an involution.
References #
Flip the bits of x at the positions in T.
Instances For
At a position outside T, flipOn T x has the bit of x.
Flipping at no positions changes nothing.
Flipping one bit.
Flipping twice at the same positions changes nothing.
Flipping at a fixed set of positions is an involution.
The isolated inputs of g with value b: the inputs x with g x = b at which flipping
any one bit changes the value of g.
Instances For
x is an isolated input of g with value b exactly when g x = b and flipping any one bit
of x gives the value !b.
The isolated inputs of the negation of g with value b are those of g with value !b.