pub struct Unfold<State> {
pub kernel: fn(&mut TrieFnState<(i64, State), State>, (i64, State)) -> State,
}Expand description
Combinator struct for kernels that use the TrieFnState DSL (sample_at and trace_at) and automatically implement the GFI.
Supports memory-efficient extension via the GfDiff::Extend flag (eg. as passed during a ParticleSystem::step).
Fields§
§kernel: fn(&mut TrieFnState<(i64, State), State>, (i64, State)) -> StateA random kernel that takes in a mutable reference to a TrieFnState<A,T> and some State, effectfully mutates it, and produces a new State.
Trait Implementations§
Source§impl<State: Clone> GenFn<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>> for Unfold<State>
impl<State: Clone> GenFn<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>> for Unfold<State>
Source§fn simulate(
&self,
T_and_args: (i64, State),
) -> Trace<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>>
fn simulate( &self, T_and_args: (i64, State), ) -> Trace<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>>
Execute the generative function and return a sampled trace.
Source§fn generate(
&self,
T_and_args: (i64, State),
vec_constraints: Vec<Trie<(Rc<dyn Any>, f64)>>,
) -> (Trace<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>>, f64)
fn generate( &self, T_and_args: (i64, State), vec_constraints: Vec<Trie<(Rc<dyn Any>, f64)>>, ) -> (Trace<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>>, f64)
Execute the generative function consistent with
constraints.
Return the log probability
log[p(t; args) / q(t; constraints, args)]Source§fn update(
&self,
vec_trace: Trace<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>>,
T_and_args: (i64, State),
diff: GfDiff,
vec_constraints: Vec<Trie<(Rc<dyn Any>, f64)>>,
) -> (Trace<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>>, Vec<Trie<(Rc<dyn Any>, f64)>>, f64)
fn update( &self, vec_trace: Trace<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>>, T_and_args: (i64, State), diff: GfDiff, vec_constraints: Vec<Trie<(Rc<dyn Any>, f64)>>, ) -> (Trace<(i64, State), Vec<Trie<(Rc<dyn Any>, f64)>>, Vec<State>>, Vec<Trie<(Rc<dyn Any>, f64)>>, f64)
Update a trace
Auto Trait Implementations§
impl<State> Freeze for Unfold<State>
impl<State> RefUnwindSafe for Unfold<State>
impl<State> Send for Unfold<State>
impl<State> Sync for Unfold<State>
impl<State> Unpin for Unfold<State>
impl<State> UnwindSafe for Unfold<State>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.