private void CreateFaultList()
        {
            faultList = new List<IntermediateGateFault>();

            foreach (int input in inputs)
            {
                IntermediateGateFault fault_0 = new IntermediateGateFault();
                IntermediateGateFault fault_1 = new IntermediateGateFault();
                //Stuck at 0
                fault_0.net_no = input;
                fault_0.stuck_at_fault = 0;

                //Stuck at 1
                fault_1.net_no = input;
                fault_1.stuck_at_fault = 1;

                faultList.Add(fault_0);
                faultList.Add(fault_1);
            }

            foreach (LogicRecord logicRecord in logicRecords)
            {
                int signalNumber = logicRecord._output;

                if ((faultList.Find(obj => obj.net_no == signalNumber) == null))
                {
                    IntermediateGateFault fault_0 = new IntermediateGateFault();
                    IntermediateGateFault fault_1 = new IntermediateGateFault();
                    //Stuck at 0
                    fault_0.net_no = signalNumber;
                    fault_0.stuck_at_fault = 0;

                    //Stuck at 1
                    fault_1.net_no = signalNumber;
                    fault_1.stuck_at_fault = 1;

                    faultList.Add(fault_0);
                    faultList.Add(fault_1);

                }

            }
        }
        /// <summary>
        /// Event Handler for when the RUN button is clicked to
        /// run the input string on the logic ciruit
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RunButton_Click(object sender, RoutedEventArgs e)
        {
            CreateInputStringDictionary();

            outputMasterDictionary = new Dictionary<int, int>();

            foreach (int output in outputs)
            {
                outputMasterDictionary.Add(output, GetSimplExp(output));
            }

            outputFinalList = new List<IntermediateGateFault>();
            foreach (IntermediateGateFault fault in faultList)
            {
                inputSignalsDict = null;
                CreateInputStringDictionary();

                if (inputSignalsDict.ContainsKey(fault.net_no))
                {
                    inputSignalsDict.Remove(fault.net_no);
                }

                inputSignalsDict.Add(fault.net_no, fault.stuck_at_fault);

                Dictionary<int, int> intermediateOutputs = new Dictionary<int, int>();
                foreach (int output in outputs)
                {
                    intermediateOutputs.Add(output, GetSimplExp(output));
                }

                bool success = CompareWithMasterDictionary(intermediateOutputs);
                if (success == false)
                {
                    IntermediateGateFault faultWrite = new IntermediateGateFault();
                    faultWrite.net_no = fault.net_no;
                    faultWrite.stuck_at_fault = fault.stuck_at_fault;
                    outputFinalList.Add(faultWrite);

                }

            }

            outputFinalList.Sort((a, b) => a.net_no.CompareTo(b.net_no));
            WriteToOutputDisplay();
        }