View source on GitHub |
Creates a concatenation of multiple tff.templates.MeasuredProcess
es.
tff.templates.concatenate_measured_processes(
measured_processes: collections.OrderedDict[str, MeasuredProcess]
) -> tff.templates.MeasuredProcess
For example, given y = f(x)
and z = g(y)
, this produces a new
<y, z> = <f(x), g(y)>
that concatenates the two MeasuredProcess
es.
Guidance for Concatenation
Two MeasuredProcess
es F(x) and G(y) can be concatenated into a new
MeasuredProcess
called C with the following properties, each is the
concatenation of that of input MeasuredProcess
es as an OrderedDict
:
C.state == <F=F.state, G=G.state>
.C.next(C.state, <x, y>).result == <F=F.next(F.state, x).result, G=G.next(G.state, y).result>
.C.measurements == <F=F.measurements, G=G.measurements>
.
The resulting concatenation C would have the following type signatures:
initialize: ( -> <F=F.initialize, G=G.initialize>)
next: (<<F=F.state, G=G.state>, <F=F.input, G=G.input>> ->
<state=<F=F.state, G=G.state>,
result=<F=F.result, G=G.result>,
measurements=<F=F.measurements, G=G.measurements>>)
Note that the guidance for concatenation is not strict and details are allowed to differ.
Args | |
---|---|
measured_processes
|
An OrderedDict of MeasuredProcess es with keys as the
process name and values as the corresponding MeasuredProcess .
|
Returns | |
---|---|
A MeasuredProcess of the concatenation of input MeasuredProcess es.
|
Raises | |
---|---|
TypeError
|
If the MeasuredProcess es have the state at different placement
(e.g. F.state@SERVER, G.state@CLIENTS).
|