# Programmability {#programmability} Fill in a secret index or payload after the key exists, rewrite an updatable leaf, or commit to a vector before choosing which coordinate to open. | Mechanism | What it does | | --- | --- | | [dpf::wildcard_value](@ref dpf/wildcard.hpp) | Placeholder input or leaf. Eval throws until you assign. | | Leaf assign | `compute_and_get_blinded_output_share`, `reconstruct_correction_word`, `async_assign_leaf`, `assign_cmp` — see [wildcard assign](@ref wildcard_assign). | | [dpf::updatable](@ref dpf/placement.hpp) | Beaver leaf so a later rewrite replaces the payload without regenerating the spine. | | [dpf::ppvc](@ref ppvc_manual) | Point-programmable vector commitment: bind `(Z/2^s Z)^n`, then open one hidden coordinate (or the sum). | | [dpf::at](@ref dpf/placement.hpp) / `idpf` | Plant values on public prefixes as well as the leaf. | ```cpp auto [k0, k1] = dpf::make_dpf( std::uint8_t{12}, dpf::wildcard_value{}); // assign the payload later; eval before assign throws using scheme = dpf::ppvc; const auto pp = scheme::setup(); const auto [com, st] = scheme::commit(pp); const auto op = scheme::open(st, 0, 0x5a, std::uint8_t{40}); ``` **Go deeper:** [guided tour — wildcards](@ref tour_outputs), [PPVC](@ref tour_ppvc), [PPVC manual](@ref ppvc_manual), [input types](@ref input_types), [output types](@ref output_types).