let catenate c1 c2 =
  { over_inputs =
      Zone.join
        c1.over_inputs
        (Zone.diff c2.over_inputs c1.under_outputs);
    under_outputs = Zone.link c1.under_outputs c2.under_outputs }