{ "_comment": "Generated from FRET JSON export. Ready for ltlsynt synthesis.", "spec_name": "PWR_Hybrid_DRC", "source_file": "specs/fretRequirementsVariables.json", "inputs": [ "startup", "t_dot_exceeded", "t_max_exceeded", "t_power_min" ], "outputs": [ "cold_shutdown", "heatup", "load_follow", "op_mode", "scram" ], "requirements": [ { "req_id": "PWR-0100", "fulltext": "If SCRAM DRC shall immediately satisfy !OP_MODE", "project": "PWR_Hybrid", "component": "DRC", "ltl": "((G (((! scram) & (X scram)) -> (X (! op_mode)))) & (scram -> (! op_mode)))", "ltl_original": "((G (((! SCRAM) & (X SCRAM)) -> (X (! OP_MODE)))) & (SCRAM -> (! OP_MODE)))", "variables": [ "SCRAM", "OP_MODE" ] }, { "req_id": "PWR-0202", "fulltext": "While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)", "project": "PWR_Hybrid", "component": "DRC", "ltl": "(G ((! op_mode) -> (heatup | load_follow)))", "ltl_original": "(G ((! OP_MODE) -> (Heatup | Load_Follow)))", "variables": [ "OP_MODE", "Heatup", "Load_Follow" ] }, { "req_id": "PWR-0201", "fulltext": "When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)", "project": "PWR_Hybrid", "component": "DRC", "ltl": "((G (((! op_mode) & (X op_mode)) -> (X (G ((heatup | load_follow) & (! (scram | cold_shutdown))))))) & (op_mode -> (G ((heatup | load_follow) & (! (scram | cold_shutdown))))))", "ltl_original": "((G (((! OP_MODE) & (X OP_MODE)) -> (X (G ((Heatup | Load_Follow) & (! (SCRAM | Cold_Shutdown))))))) & (OP_MODE -> (G ((Heatup | Load_Follow) & (! (SCRAM | Cold_Shutdown))))))", "variables": [ "OP_MODE", "Heatup", "Load_Follow", "SCRAM", "Cold_Shutdown" ] }, { "req_id": "PWR-0200", "fulltext": "While OP_MODE DRC shall always satisfy Heatup | Load_Follow", "project": "PWR_Hybrid", "component": "DRC", "ltl": "(G (op_mode -> (heatup | load_follow)))", "ltl_original": "(G (OP_MODE -> (Heatup | Load_Follow)))", "variables": [ "OP_MODE", "Heatup", "Load_Follow" ] }, { "req_id": "PWR-3002", "fulltext": "if t_max_exceeded DRC shall at the next timepoint satisfy SCRAM", "project": "PWR_Hybrid", "component": "DRC", "ltl": "((G (((! t_max_exceeded) & (X t_max_exceeded)) -> (X (X scram)))) & (t_max_exceeded -> (X scram)))", "ltl_original": "((G (((! t_max_exceeded) & (X t_max_exceeded)) -> (X (X SCRAM)))) & (t_max_exceeded -> (X SCRAM)))", "variables": [ "t_max_exceeded", "SCRAM" ] }, { "req_id": "PWR-3001", "fulltext": "While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM", "project": "PWR_Hybrid", "component": "DRC", "ltl": "((G ((! ((! heatup) & (X heatup))) | (X (((heatup & (X (! heatup))) V (((! t_dot_exceeded) & ((X t_dot_exceeded) & (! (heatup & (X (! heatup)))))) -> ((X ((heatup & (X (! heatup))) | (X scram))) & (! (heatup & (X (! heatup))))))) & (t_dot_exceeded -> ((heatup & (X (! heatup))) | (X scram))))))) & (heatup -> (((heatup & (X (! heatup))) V (((! t_dot_exceeded) & ((X t_dot_exceeded) & (! (heatup & (X (! heatup)))))) -> ((X ((heatup & (X (! heatup))) | (X scram))) & (! (heatup & (X (! heatup))))))) & (t_dot_exceeded -> ((heatup & (X (! heatup))) | (X scram))))))", "ltl_original": "((G ((! ((! Heatup) & (X Heatup))) | (X (((Heatup & (X (! Heatup))) V (((! t_dot_exceeded) & ((X t_dot_exceeded) & (! (Heatup & (X (! Heatup)))))) -> ((X ((Heatup & (X (! Heatup))) | (X SCRAM))) & (! (Heatup & (X (! Heatup))))))) & (t_dot_exceeded -> ((Heatup & (X (! Heatup))) | (X SCRAM))))))) & (Heatup -> (((Heatup & (X (! Heatup))) V (((! t_dot_exceeded) & ((X t_dot_exceeded) & (! (Heatup & (X (! Heatup)))))) -> ((X ((Heatup & (X (! Heatup))) | (X SCRAM))) & (! (Heatup & (X (! Heatup))))))) & (t_dot_exceeded -> ((Heatup & (X (! Heatup))) | (X SCRAM))))))", "variables": [ "Heatup", "t_dot_exceeded", "SCRAM" ] }, { "req_id": "PWR-2001", "fulltext": "While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup", "project": "PWR_Hybrid", "component": "DRC", "ltl": "((G ((! (scram & (X (! scram)))) | (X ((((! scram) & (X scram)) V (((! (cold_shutdown & startup)) & ((X (cold_shutdown & startup)) & (! ((! scram) & (X scram))))) -> ((X (((! scram) & (X scram)) | (X (op_mode & heatup)))) & (! ((! scram) & (X scram)))))) & ((cold_shutdown & startup) -> (((! scram) & (X scram)) | (X (op_mode & heatup)))))))) & ((! scram) -> ((((! scram) & (X scram)) V (((! (cold_shutdown & startup)) & ((X (cold_shutdown & startup)) & (! ((! scram) & (X scram))))) -> ((X (((! scram) & (X scram)) | (X (op_mode & heatup)))) & (! ((! scram) & (X scram)))))) & ((cold_shutdown & startup) -> (((! scram) & (X scram)) | (X (op_mode & heatup)))))))", "ltl_original": "((G ((! (SCRAM & (X (! SCRAM)))) | (X ((((! SCRAM) & (X SCRAM)) V (((! (Cold_Shutdown & STARTUP)) & ((X (Cold_Shutdown & STARTUP)) & (! ((! SCRAM) & (X SCRAM))))) -> ((X (((! SCRAM) & (X SCRAM)) | (X (OP_MODE & Heatup)))) & (! ((! SCRAM) & (X SCRAM)))))) & ((Cold_Shutdown & STARTUP) -> (((! SCRAM) & (X SCRAM)) | (X (OP_MODE & Heatup)))))))) & ((! SCRAM) -> ((((! SCRAM) & (X SCRAM)) V (((! (Cold_Shutdown & STARTUP)) & ((X (Cold_Shutdown & STARTUP)) & (! ((! SCRAM) & (X SCRAM))))) -> ((X (((! SCRAM) & (X SCRAM)) | (X (OP_MODE & Heatup)))) & (! ((! SCRAM) & (X SCRAM)))))) & ((Cold_Shutdown & STARTUP) -> (((! SCRAM) & (X SCRAM)) | (X (OP_MODE & Heatup)))))))", "variables": [ "SCRAM", "Cold_Shutdown", "STARTUP", "OP_MODE", "Heatup" ] }, { "req_id": "PWR-3003", "fulltext": "While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)", "project": "PWR_Hybrid", "component": "DRC", "ltl": "((G ((! ((! heatup) & (X heatup))) | (X (((heatup & (X (! heatup))) V (((! t_power_min) & ((X t_power_min) & (! (heatup & (X (! heatup)))))) -> ((X ((heatup & (X (! heatup))) | (X (load_follow & (! heatup))))) & (! (heatup & (X (! heatup))))))) & (t_power_min -> ((heatup & (X (! heatup))) | (X (load_follow & (! heatup))))))))) & (heatup -> (((heatup & (X (! heatup))) V (((! t_power_min) & ((X t_power_min) & (! (heatup & (X (! heatup)))))) -> ((X ((heatup & (X (! heatup))) | (X (load_follow & (! heatup))))) & (! (heatup & (X (! heatup))))))) & (t_power_min -> ((heatup & (X (! heatup))) | (X (load_follow & (! heatup))))))))", "ltl_original": "((G ((! ((! Heatup) & (X Heatup))) | (X (((Heatup & (X (! Heatup))) V (((! t_power_min) & ((X t_power_min) & (! (Heatup & (X (! Heatup)))))) -> ((X ((Heatup & (X (! Heatup))) | (X (Load_Follow & (! Heatup))))) & (! (Heatup & (X (! Heatup))))))) & (t_power_min -> ((Heatup & (X (! Heatup))) | (X (Load_Follow & (! Heatup))))))))) & (Heatup -> (((Heatup & (X (! Heatup))) V (((! t_power_min) & ((X t_power_min) & (! (Heatup & (X (! Heatup)))))) -> ((X ((Heatup & (X (! Heatup))) | (X (Load_Follow & (! Heatup))))) & (! (Heatup & (X (! Heatup))))))) & (t_power_min -> ((Heatup & (X (! Heatup))) | (X (Load_Follow & (! Heatup))))))))", "variables": [ "Heatup", "t_power_min", "Load_Follow" ] }, { "req_id": "PWR-0000", "fulltext": "DRC shall initially satisfy (Cold_Shutdown & !SCRAM)", "project": "PWR_Hybrid", "component": "DRC", "ltl": "(cold_shutdown & (! scram))", "ltl_original": "(Cold_Shutdown & (! SCRAM))", "variables": [ "Cold_Shutdown", "SCRAM" ] }, { "req_id": "PWR-0102", "fulltext": "If SCRAM DRC shall always satisfy SCRAM", "project": "PWR_Hybrid", "component": "DRC", "ltl": "((G (((! scram) & (X scram)) -> (X (G scram)))) & (scram -> (G scram)))", "ltl_original": "((G (((! SCRAM) & (X SCRAM)) -> (X (G SCRAM)))) & (SCRAM -> (G SCRAM)))", "variables": [ "SCRAM" ] } ], "liveness_constraints": [ "F(heatup)" ], "conjoined_ltl": "(((G (((! scram) & (X scram)) -> (X (! op_mode)))) & (scram -> (! op_mode)))) & ((G ((! op_mode) -> (heatup | load_follow)))) & (((G (((! op_mode) & (X op_mode)) -> (X (G ((heatup | load_follow) & (! (scram | cold_shutdown))))))) & (op_mode -> (G ((heatup | load_follow) & (! (scram | cold_shutdown))))))) & ((G (op_mode -> (heatup | load_follow)))) & (((G (((! t_max_exceeded) & (X t_max_exceeded)) -> (X (X scram)))) & (t_max_exceeded -> (X scram)))) & (((G ((! ((! heatup) & (X heatup))) | (X (((heatup & (X (! heatup))) V (((! t_dot_exceeded) & ((X t_dot_exceeded) & (! (heatup & (X (! heatup)))))) -> ((X ((heatup & (X (! heatup))) | (X scram))) & (! (heatup & (X (! heatup))))))) & (t_dot_exceeded -> ((heatup & (X (! heatup))) | (X scram))))))) & (heatup -> (((heatup & (X (! heatup))) V (((! t_dot_exceeded) & ((X t_dot_exceeded) & (! (heatup & (X (! heatup)))))) -> ((X ((heatup & (X (! heatup))) | (X scram))) & (! (heatup & (X (! heatup))))))) & (t_dot_exceeded -> ((heatup & (X (! heatup))) | (X scram))))))) & (((G ((! (scram & (X (! scram)))) | (X ((((! scram) & (X scram)) V (((! (cold_shutdown & startup)) & ((X (cold_shutdown & startup)) & (! ((! scram) & (X scram))))) -> ((X (((! scram) & (X scram)) | (X (op_mode & heatup)))) & (! ((! scram) & (X scram)))))) & ((cold_shutdown & startup) -> (((! scram) & (X scram)) | (X (op_mode & heatup)))))))) & ((! scram) -> ((((! scram) & (X scram)) V (((! (cold_shutdown & startup)) & ((X (cold_shutdown & startup)) & (! ((! scram) & (X scram))))) -> ((X (((! scram) & (X scram)) | (X (op_mode & heatup)))) & (! ((! scram) & (X scram)))))) & ((cold_shutdown & startup) -> (((! scram) & (X scram)) | (X (op_mode & heatup)))))))) & (((G ((! ((! heatup) & (X heatup))) | (X (((heatup & (X (! heatup))) V (((! t_power_min) & ((X t_power_min) & (! (heatup & (X (! heatup)))))) -> ((X ((heatup & (X (! heatup))) | (X (load_follow & (! heatup))))) & (! (heatup & (X (! heatup))))))) & (t_power_min -> ((heatup & (X (! heatup))) | (X (load_follow & (! heatup))))))))) & (heatup -> (((heatup & (X (! heatup))) V (((! t_power_min) & ((X t_power_min) & (! (heatup & (X (! heatup)))))) -> ((X ((heatup & (X (! heatup))) | (X (load_follow & (! heatup))))) & (! (heatup & (X (! heatup))))))) & (t_power_min -> ((heatup & (X (! heatup))) | (X (load_follow & (! heatup))))))))) & ((cold_shutdown & (! scram))) & (((G (((! scram) & (X scram)) -> (X (G scram)))) & (scram -> (G scram)))) & (F(heatup))" }