Partial assignments #
A partial assignment of the coordinates ι fixes some of them and leaves the others free: a map
ρ : ι → Option Bool with ρ i = some b when coordinate i is fixed to b. In circuit complexity
it is called a restriction, Jukna's ρ : ι → {0, 1, *} Jukna, Section 1.6,
[Has86]. Restricting a function f on ι → Bool by ρ gives f ∘ ρ.fill, Jukna's f↾ρ,
where ρ.fill x takes the fixed coordinates from ρ and the free ones from x.
The subfunctions of f on a set Y of coordinates are its restrictions by the partial
assignments that fix exactly the coordinates outside Y (subfunctions, mem_subfunctions_iff);
counting them is the method of Nechiporuk.
Main definitions #
Cslib.BitString.PartialAssignment: partial assignments of the coordinatesι, andCslib.BitString.PartialAssignment.emptythe one fixing nothing.Cslib.BitString.PartialAssignment.fill: complete an input by the fixed coordinates.Cslib.BitString.PartialAssignment.Agrees: an input agrees with a partial assignment.Cslib.BitString.PartialAssignment.free,Cslib.BitString.PartialAssignment.support: the free and the fixed coordinates.Cslib.BitString.PartialAssignment.assign,Cslib.BitString.PartialAssignment.unassign: fix the coordinates of a set to the values of a word, and free the coordinates of a set.Cslib.BitString.PartialAssignment.outside: the partial assignment fixing the coordinates outside a set to the values of a word.Cslib.BitString.PartialAssignment.Extends: the information order on partial assignments.Cslib.BitString.subfunctions: the subfunctions of a function on a set of coordinates.
Main results #
Cslib.BitString.PartialAssignment.agrees_iff_fill_eq: an input agrees with a partial assignment when filling it changes nothing.Cslib.BitString.PartialAssignment.extends_iff_ofOption_le: extension is the pointwise order ofPart Bool.Cslib.BitString.PartialAssignment.Extends.update_some,Cslib.BitString.PartialAssignment.Extends.update_none: updating a free coordinate ofρ₀preserves extendingρ₀.Cslib.BitString.mem_subfunctions_iff: subfunctions are restrictions.
References #
A partial assignment (a restriction, in circuit complexity) of the coordinates ι: some b
fixes a coordinate to b, and none leaves it free.
Being an abbreviation of ι → Option Bool, a partial assignment inherits the pointwise order of
the order of core on Option Bool, in which none < some false < some true. That order is not the
information order: ρ ≤ ρ' does not say that ρ' extends ρ. The information order is
PartialAssignment.Extends, the pointwise order on Part Bool
(PartialAssignment.extends_iff_ofOption_le).
Instances For
The partial assignment fixing nothing.
Instances For
Complete x by the coordinates fixed by ρ.
Instances For
At a coordinate left free by ρ, ρ.fill x takes the bit of x.
fill_empty, for the partial assignment fixing nothing written as a function.
Agreement #
The input x agrees with ρ: it takes the value fixed by ρ at every fixed coordinate.
Instances For
Agreement with a partial assignment of finitely many coordinates is decidable.
An input agrees with ρ exactly when filling it from ρ does not change it.
A filled input agrees with the partial assignment it was filled from.
Fixing and freeing coordinates #
Filling after fixing coordinate i to b updates the filled input at i.
Fixing a single coordinate i to b in the empty partial assignment updates the input at
i.
Filling after fixing one more free coordinate is filling twice.
Changing a fixed coordinate does not change the filled input.
Changing a free coordinate changes the filled input there.
Fix the coordinates of S to their values in a.
Instances For
ρ.assign S a fixes each coordinate of S to its value in a.
ρ.assign S a agrees with ρ outside S.
Fixing the coordinates of S twice keeps the values of the second assignment.
Fixing coordinates to the values they already have changes nothing.
Free the coordinates of S.
Instances For
ρ.unassign S leaves the coordinates of S free.
ρ.unassign S agrees with ρ outside S.
Freeing no coordinates changes nothing.
The partial assignment fixing the coordinates outside Y to their values in z.
Instances For
Free coordinates #
The coordinates left free by ρ.
Instances For
A coordinate is free in ρ exactly when ρ maps it to none.
The partial assignment fixing nothing leaves every coordinate free.
free_empty, for the partial assignment fixing nothing written as a function.
The coordinates fixed by ρ, the complement of its free coordinates (compl_free).
Instances For
The free coordinates are those outside the support.
The coordinates outside the support are the free coordinates.
Fixing coordinate i removes it from the free coordinates.
Freeing coordinate i adds it to the free coordinates.
Fixing the coordinates of S removes them from the free coordinates.
Fixing free coordinates to the values of x does not change the input filled from x.
Fixing free coordinates and freeing them again gives back the partial assignment.
Restricting f ∘ ρ.fill by fixing a free coordinate i of ρ to b is restricting f by
update ρ i (some b).
Extensions #
ρ' extends ρ: it fixes every coordinate that ρ fixes, to the same value. This is the
information order on partial assignments; the order on Option in core is a different one.
Instances For
Extension of partial assignments of finitely many coordinates is decidable.
Every partial assignment extends itself.
Extension is transitive: an extension of an extension of ρ extends ρ.
The information order: ρ' extends ρ exactly when it is above ρ pointwise in the
order of Part Bool, where an undefined value is below every value and distinct values are
incomparable.
Every partial assignment extends the one fixing nothing.
An input agreeing with ρ' agrees with every partial assignment that ρ' extends.
Filling from an extension of ρ is not changed by filling from ρ.
A free coordinate of an extension is free in the partial assignment it extends.
Fixing free coordinates extends a partial assignment.
Fixing a coordinate of ρ that is free in ρ₀ preserves extending ρ₀.
Freeing a coordinate of ρ that is free in ρ₀ preserves extending ρ₀.
Subfunctions #
The subfunctions of f on the coordinates Y: for each assignment z of the other
coordinates, the function that reads the coordinates in Y from its input and the others from
z.
Instances For
g is a subfunction of f on Y exactly when, for some assignment z, g reads the
coordinates in Y from its input and the others from z before applying f.
The subfunctions on Y are the restrictions by the partial assignments fixing exactly the
coordinates outside Y.