The addition is logical, in that "guaranteed to produce the same result for add PRNG states" is meta-information about a sampler that can easily be available, is obviously useful, and is not efficiently derivable from the existing suite of standard metadata (namely, log density and various kernels).
The particular use case prompting this now is trying to write select_random_single_site_subproblem, which would really like to filter out deterministic SP applications from its set of candidates, so as to avoid wasting time on them. Also, empirically, selecting deterministic applications occasionally selects sticky SPs like make_elementary_sp, which seem to trigger various bugs in the extant scaffold construction procedures.
It might also be useful for kernels, especially constraint kernels, to expose an is_deterministic bit, but I do not yet have a concrete thing I would do with it.
Why file a ticket rather than just doing it? To give @vkmvkmvkmvkm the opportunity to weigh in on the aesthetic and design considerations.
Specific action plan:
[x] Decide whether to add is_deterministic to venture.mite.sp.VentureSP as a method, or how to expose that information to queries by metaprograms otherwise (use the generic metadata mechanism?). Default "not deterministic".
[x] Define how _make_elementary_sp, make_full_sp, and LiteSP expose the determinism bit to the above interface.
[x] Annotate all standard Mite SPs with determinism bits.
[x] Adjust random_site to filter out applications of deterministic SPs (which is the one thing that bit is currently used for in Lite).
The addition is logical, in that "guaranteed to produce the same result for add PRNG states" is meta-information about a sampler that can easily be available, is obviously useful, and is not efficiently derivable from the existing suite of standard metadata (namely, log density and various kernels).
The particular use case prompting this now is trying to write
select_random_single_site_subproblem
, which would really like to filter out deterministic SP applications from its set of candidates, so as to avoid wasting time on them. Also, empirically, selecting deterministic applications occasionally selects sticky SPs likemake_elementary_sp
, which seem to trigger various bugs in the extant scaffold construction procedures.It might also be useful for kernels, especially constraint kernels, to expose an
is_deterministic
bit, but I do not yet have a concrete thing I would do with it.Why file a ticket rather than just doing it? To give @vkmvkmvkmvkm the opportunity to weigh in on the aesthetic and design considerations.
Specific action plan:
is_deterministic
toventure.mite.sp.VentureSP
as a method, or how to expose that information to queries by metaprograms otherwise (use the generic metadata mechanism?). Default "not deterministic"._make_elementary_sp
,make_full_sp
, andLiteSP
expose the determinism bit to the above interface.random_site
to filter out applications of deterministic SPs (which is the one thing that bit is currently used for in Lite).