# Function differential_dataflow::algorithms::graphs::propagate::propagate_core

source · ```
pub fn propagate_core<G, N, L, Tr, F, R>(
edges: &Arranged<G, Tr>,
nodes: &Collection<G, (N, L), R>,
logic: F
) -> Collection<G, (N, L), R>where
G: Scope<Timestamp = Tr::Time>,
N: ExchangeData + Hash,
R: ExchangeData + Abelian + Multiply<R, Output = R> + From<i8>,
L: ExchangeData,
Tr: for<'a> TraceReader<Key<'a> = &'a N, Val<'a> = &'a N, Diff = R> + Clone + 'static,
F: Fn(&L) -> u64 + Clone + 'static,
```

## Expand description

Propagates labels forward, retaining the minimum label.

This variant takes a pre-arranged edge collection, to facilitate re-use, and allows
a method `logic`

to specify the rounds in which we introduce various labels. The output
of `logic should be a number in the interval [0,64],