Essential Inputs #
This module defines the notion of essential (non-redundant) input variables for a Boolean function.
Main definitions #
IsEssentialInput— a function depends on a particular input variableessentialInputs— the set of essential input variables
A function f depends on input variable i if flipping that bit
can change some output.
Equations
- Complexity.IsEssentialInput f i = ∃ (x : Complexity.BitString N), f x ≠ f (Function.update x i !x i)
Instances For
@[implicit_reducible]
instance
Complexity.instDecidableIsEssentialInput
{N M : ℕ}
{f : BitString N → BitString M}
{i : Fin N}
:
Decidable (IsEssentialInput f i)
IsEssentialInput f i is decidable, since it is an existential over the
finite type BitString N with a decidable body.
The set of input variables that f depends on.