nominal program_a = () nominal epoch_4 = () nominal qubit_a = () nominal branch_zero = () nominal branch_one = () nominal measured = () nominal corrected = () union measurement program epoch qubit branch state = | Measurement :: forall program epoch qubit branch state. string -> measurement program epoch qubit branch state union classical_bit program epoch branch state = | Bit :: forall program epoch branch state. string -> classical_bit program epoch branch state union correction program epoch qubit branch state = | Correction :: forall program epoch qubit branch state. string -> correction program epoch qubit branch state inl feed_forward forall program epoch qubit branch. (measurement : measurement program epoch qubit branch measured) (bit : classical_bit program epoch branch measured) : correction program epoch qubit branch corrected = Correction "ok" inl main () = inl measurement : measurement program_a epoch_4 qubit_a branch_zero measured = Measurement "m0" inl wrong : classical_bit program_a epoch_4 branch_one measured = Bit "1" feed_forward measurement wrong