{ "_comment": "Generated by parse_smv.py. Review and edit variable roles before synthesis.", "spec_name": "DRC", "variables": { "Cold_Shutdown": { "role": "conflict", "input_reasons": [ "DRCSpec_PWR-2001: condition in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\"" ], "output_reasons": [ "DRCSpec_PWR-0000: satisfaction in \"DRC shall initially satisfy (Cold_Shutdown & !SCRAM)\"", "DRCSpec_PWR-0201: satisfaction in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"" ] }, "Heatup": { "role": "conflict", "input_reasons": [ "DRCSpec_PWR-3001: condition in \"While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM\"", "DRCSpec_PWR-3003: condition in \"While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)\"" ], "output_reasons": [ "DRCSpec_PWR-0200: satisfaction in \"While OP_MODE DRC shall always satisfy Heatup | Load_Follow\"", "DRCSpec_PWR-0201: satisfaction in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"", "DRCSpec_PWR-0202: satisfaction in \"While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)\"", "DRCSpec_PWR-2001: satisfaction in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\"", "DRCSpec_PWR-3003: satisfaction in \"While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)\"" ] }, "Load_Follow": { "role": "output", "input_reasons": [], "output_reasons": [ "DRCSpec_PWR-0200: satisfaction in \"While OP_MODE DRC shall always satisfy Heatup | Load_Follow\"", "DRCSpec_PWR-0201: satisfaction in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"", "DRCSpec_PWR-0202: satisfaction in \"While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)\"", "DRCSpec_PWR-3003: satisfaction in \"While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)\"" ] }, "OP_MODE": { "role": "conflict", "input_reasons": [ "DRCSpec_PWR-0200: condition in \"While OP_MODE DRC shall always satisfy Heatup | Load_Follow\"", "DRCSpec_PWR-0201: condition in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"", "DRCSpec_PWR-0202: condition in \"While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)\"" ], "output_reasons": [ "DRCSpec_PWR-0100: satisfaction in \"If SCRAM DRC shall immediately satisfy !OP_MODE\"", "DRCSpec_PWR-2001: satisfaction in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\"" ] }, "SCRAM": { "role": "conflict", "input_reasons": [ "DRCSpec_PWR-0100: condition in \"If SCRAM DRC shall immediately satisfy !OP_MODE\"", "DRCSpec_PWR-0102: condition in \"If SCRAM DRC shall always satisfy SCRAM\"", "DRCSpec_PWR-2001: condition in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\"" ], "output_reasons": [ "DRCSpec_PWR-0000: satisfaction in \"DRC shall initially satisfy (Cold_Shutdown & !SCRAM)\"", "DRCSpec_PWR-0102: satisfaction in \"If SCRAM DRC shall always satisfy SCRAM\"", "DRCSpec_PWR-0201: satisfaction in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"", "DRCSpec_PWR-3001: satisfaction in \"While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM\"", "DRCSpec_PWR-3002: satisfaction in \"if t_max_exceeded DRC shall at the next timepoint satisfy SCRAM\"" ] }, "STARTUP": { "role": "input", "input_reasons": [ "DRCSpec_PWR-2001: condition in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\"" ], "output_reasons": [] }, "t_dot_exceeded": { "role": "input", "input_reasons": [ "DRCSpec_PWR-3001: condition in \"While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM\"" ], "output_reasons": [] }, "t_max_exceeded": { "role": "input", "input_reasons": [ "DRCSpec_PWR-3002: condition in \"if t_max_exceeded DRC shall at the next timepoint satisfy SCRAM\"" ], "output_reasons": [] }, "t_power_min": { "role": "input", "input_reasons": [ "DRCSpec_PWR-3003: condition in \"While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)\"" ], "output_reasons": [] } }, "requirements": [ { "req_id": "DRCSpec_PWR-0000", "fretish": "DRC shall initially satisfy (Cold_Shutdown & !SCRAM)", "ltl": "(Cold_Shutdown & !SCRAM)" }, { "req_id": "DRCSpec_PWR-0100", "fretish": "If SCRAM DRC shall immediately satisfy !OP_MODE", "ltl": "G((SCRAM) -> X(!OP_MODE))" }, { "req_id": "DRCSpec_PWR-0102", "fretish": "If SCRAM DRC shall always satisfy SCRAM", "ltl": "G(SCRAM)" }, { "req_id": "DRCSpec_PWR-0200", "fretish": "While OP_MODE DRC shall always satisfy Heatup | Load_Follow", "ltl": "G((OP_MODE) -> (Heatup | Load_Follow))" }, { "req_id": "DRCSpec_PWR-0201", "fretish": "When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)", "ltl": "G((OP_MODE) -> X(G((Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown))))" }, { "req_id": "DRCSpec_PWR-0202", "fretish": "While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)", "ltl": "G((!OP_MODE) -> ((Heatup | Load_Follow)))" }, { "req_id": "DRCSpec_PWR-2001", "fretish": "While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup", "ltl": "G(((!SCRAM) & (Cold_Shutdown & STARTUP)) -> X(OP_MODE & Heatup))" }, { "req_id": "DRCSpec_PWR-3001", "fretish": "While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM", "ltl": "G(((Heatup) & (t_dot_exceeded)) -> X(SCRAM))" }, { "req_id": "DRCSpec_PWR-3002", "fretish": "if t_max_exceeded DRC shall at the next timepoint satisfy SCRAM", "ltl": "G((t_max_exceeded) -> X(SCRAM))" }, { "req_id": "DRCSpec_PWR-3003", "fretish": "While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)", "ltl": "G(((Heatup) & (t_power_min)) -> X((Load_Follow & !Heatup)))" } ] }