#import "@preview/fletcher:0.5.1" as fletcher: diagram, node, edge #import fletcher.shapes: diamond #diagram( node-stroke: 1pt, edge-stroke: 1pt, //node-inset: 2pt, node((0,0), [PUF], corner-radius: 2pt, name: ), edge(, , "->", $nu$), node((1,0), [Initial quantization], name: , width: 10em), edge(, , "->", $k$), node((2,0), [Encoding], name: , width: 8em), node((1,1), [Helper data\ generation], name: , width: 10em), edge(, , "->"), node((2.25, -0.5), [Enrollment], name: , stroke: none), node(enclose: (, , ), stroke: (dash: "dashed"), inset: 10pt), node((0, 2), [PUF], corner-radius: 2pt, name: ), node((1, 2), [Repeated quantization], name: ), node((2, 2), [Error correction], name: ), node((3, 1), [$kappa = kappa^*$?],name: ), node((2, 1), [Error correction helper data], name: , width: 8em), node((2.25, 2.5), [Reconstruction], stroke: none, name: ), node(enclose: (, , ), stroke: (dash: "dashed"), inset: 10pt), edge(, , "->", $h$), edge(, , "->", $nu^*$), edge(, , "->", $k^*$), edge(, , "->"), edge(, "r,d", "->", $kappa$, label-pos: 0.3), edge(, "r,u", "->", $kappa^*$, label-pos: 0.4), edge(, , "->") )