The Muller C-element (C-gate, Hysteresis flip-flop or sometimes, coincident flip-flop, two-hand safety circuit) is a small digital block widely used in design of asynchronous circuits and systems. It has been specified formally in 1955 by David E. Muller and first used in ILLIAC II computer. In terms of the theory of lattices, the C-element is a semimodular distributive circuit, whose operation in time is described by a Hasse diagram. The C-element is closely related to the Rendezvous and Join elements, where an input is not allowed to change twice in succession. For asynchronous circuits, where relations between some delays are known in advance, the requirements for C-element can be less stiff. Earlier techniques for implementing the C-element include Schmidt trigger, Eccles-Jordan flip-flop and last moving point flip-flop.
For two input signals the C-element is defined by the equation , which corresponds to the following truth table:
This table can be turned into a circuit using the Karnaugh map. However, the obtained implementation is naïve, since nothing is said about delay assumptions. To understand under what conditions the obtained circuit is workable, it is necessary to do additional analysis, which reveals that