A Python Implementation of the Fussell, Henry, and Marshall (1974) Minimal Cut Set Algorithm, with Worked Examples That Reproduce the Results of the Original ANCR-1156 Report
The MOCUS algorithm, introduced by Fussell, Henry, and Marshall in 1974, is the foundational top-down method for obtaining minimal cut sets and minimal path sets from a fault tree. It works by replacing each gate with its inputs in a list of cut sets, extending rows for AND gates and branching new rows for OR gates, then eliminating duplicate events and supersets. The original implementation was written in FORTRAN IV for the IBM 360/75 computer at the National Reactor Testing Station. This paper presents a faithful Python reimplementation of that algorithm in approximately 250 lines of code, exercises it on the worked example from Figure 1 of ANCR-1156, reproduces the published minimal cut sets {1,2}, {2,3}, {1,4} and minimal path sets {1,2}, {1,3}, {2,4}, and further verifies the implementation against the more complex five-event tree of Appendix A of the report, including correct handling of house events. The Python code is provided as a companion module, mocus.py, that can be audited line by line against Section III.2 of the original paper and used as a reference oracle for verifying the output of commercial fault tree analysis tools.
